Skip to content
/ ffad Public

FFAD (Functional Flow Artifact Diagram) is a semi-formal diagram designed to describe complex technical systems

Notifications You must be signed in to change notification settings

go-donew/ffad

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 

Repository files navigation

Functional Flow Artifact Diagram (FFAD)

What is an FFAD?

FFAD (Functional Flow Artifact Diagram) is a semi-formal diagram designed to describe complex technical systems.

What constitutes an FFAD?

FFAD (Functional Flow Artifact Diagram) is a semi-formal diagram that shows how functions exchange explicit artifacts (data, energy, materials) via acyclic forward flows and explicit feedback channels, bridging functional and contextual modeling across disciplines. FFADs integrate functional flows with explicit artifact exchanges. In an FFAD, each block represents a function or capability (a noun phrase describing what the system does), and each directed arrow represents a flow labeled with both a verb and the artifact being produced, consumed, or reported (e.g., provides map, issues motor commands, reports status). Subgraphs group related functions into higher-level capabilities or contexts. Forward flows (e.g., provides, issues, powers, replenishes) are acyclic, while feedback flows (e.g., reports X) are explicitly distinguished. FFADs make visible not only the sequence of functions but also the tangible data, material, or energy artifacts exchanged across multidisciplinary boundaries, providing a lightweight, accessible, and domain-agnostic complement to notations such as SysML, UML, FFBD, and DDD context maps.

FFAD Examples

Robot vaccum cleaner

%%{init: {"themeVariables": { "fontSize": "18px", "fontFamily": "Arial"}}}%%
graph TD

subgraph Navigation
Mapping
PathPlanning
Localization
end

subgraph Cleaning
Suction
Brush
Dustbin
end

subgraph Power
Battery
ChargingDock
end

subgraph Perception
ObstacleDetection
DirtDetection
end

subgraph Control
MotionControl
end

Mapping -- provides map --> PathPlanning
Localization -- provides position --> PathPlanning
PathPlanning -- issues motor commands --> MotionControl
ObstacleDetection -- provides obstacle data --> PathPlanning
DirtDetection -- provides dirt locations --> PathPlanning
MotionControl -- powers movement --> Brush
MotionControl -- powers movement --> Suction
Suction -- provides suction --> Dustbin
Brush -- provides debris --> Dustbin
Battery -- powers Suction --> Suction
Battery -- powers Brush --> Brush
Battery -- powers MotionControl --> MotionControl
ChargingDock -- replenishes power --> Battery

MotionControl -- reports odometry --> Localization
Dustbin -- reports fill level --> PathPlanning
Battery -- reports charge level --> PathPlanning
ObstacleDetection -- reports environment status --> Mapping

style Navigation fill:#777777,stroke:black
style Cleaning fill:#777777,stroke:black
style Power fill:#777777,stroke:black
style Perception fill:#777777,stroke:black
style Control fill:#777777,stroke:black
Loading

Customer Relationship Management (CRM)

%%{init: {"themeVariables": { "fontSize": "18px", "fontFamily": "Arial"}}}%%
graph TD
subgraph CustomerManagement
  ContactDatabase
  CustomerProfiles
  InteractionHistory
end
subgraph SalesManagement
  LeadTracking
  OpportunityPipeline
  QuotationEngine
end
subgraph MarketingAutomation
  CampaignManager
  EmailAutomation
  SocialMediaIntegration
end
subgraph ServiceManagement
  SupportTickets
  KnowledgeBase
  ChatSupport
end
subgraph AnalyticsandReporting
  ReportingEngine
  Dashboard
end
ContactDatabase -- provides customer records --> CustomerProfiles
CustomerProfiles -- provides customer insights --> LeadTracking
InteractionHistory -- provides engagement history --> OpportunityPipeline
LeadTracking -- provides lead data --> OpportunityPipeline
OpportunityPipeline -- provides deal updates --> QuotationEngine
CampaignManager -- provides campaign data --> EmailAutomation
CampaignManager -- provides posts --> SocialMediaIntegration
EmailAutomation -- reports open rates --> ReportingEngine
SocialMediaIntegration -- reports engagement metrics --> ReportingEngine
SupportTickets -- provides issue details --> ChatSupport
ChatSupport -- reports chat transcripts --> KnowledgeBase
KnowledgeBase -- provides solutions --> SupportTickets
ReportingEngine -- provides reports --> Dashboard
OpportunityPipeline -- reports pipeline status --> ReportingEngine
SupportTickets -- reports resolution status --> ReportingEngine
CampaignManager -- reports campaign performance --> ReportingEngine
style CustomerManagement fill:#777777,stroke:black
style SalesManagement fill:#777777,stroke:black
style MarketingAutomation fill:#777777,stroke:black
style ServiceManagement fill:#777777,stroke:black
style AnalyticsandReporting fill:#777777,stroke:black
Loading

Creating an FFAD

To make it easy for you to use FFADs, here is a custom GPT you can use (free to use) to generate mermaid code for an FFAD. FFAD Creator AI Tool

Here are steps to create it more methodically, manually.

Step 1. Clarify the system

Write a one-sentence problem statement, e.g. "A robot vacuum cleaner must sense its environment, build a map, plan paths, actuate cleaning, and maintain power."

Step 2. Identify capabilities

List 6-10 top-level functional areas. Example: Sensing, Localization Mapping, Planning, Actuation, Power, User Interface, Maintenance, Docking. These become subgraphs.

Step 3. Identify artifacts

Within each capability, list the core artifacts/components it owns. Example: Sensing owns Observations, Planning owns Commands. These become nodes inside subgraphs.

Step 4. Define forward flows

Decide what artifacts move forward and who consumes them. Phrase each as: [Source] provides [artifact] → [Target]. This becomes your acyclic backbone.

Step 5. Define feedback flows

Add telemetry, monitoring, and reporting. Phrase as: [Source] reports [artifact] → [Target]. These are the feedback channels that close the loop without breaking acyclicity.

Step 6. Prune and check

Every artifact must have one owner. No redundant arrows. No merged noun+verb blocks. Forward path is acyclic. Feedback is only via reports.

Step 7. Render in Mermaid

Capabilities → subgraphs Artifacts → nodes inside subgraphs Interactions → arrows labeled verb + artifact

Step 8. Validate with scenarios

Walk through 2-3 use cases (e.g., "Clean room", "Return to dock") to confirm the diagram covers all flows.

FFAD specification

Please review the draft specification at ffad-spec

Report an issue or a request

For issues or feature requests in the custom GPT or in the spec, please open a new issue in the Issues section of this repository. In case of any other questions, lease email us at [email protected]

Acknowledgement of AI Use

While the authors have been using this format earlier, the inspiration to turn it into a specification came from AI's ability to generate code, especially Mermaid diagrams. This is what powers the AI powered FFAD creator tool. While everything presented here are entirely the work of the authors, we acknowledge using an AI language model to help polish language, streamline structure, and explore alternative expressions. Any AI-generated text has been carefully reviewed, edited, and approved by the authors to ensure accuracy, clarity, and consistency with our scholarly intent.

License

Functional Flow Artifact Diagram (FFAD) Copyright (c) 2025 DoNew Innovations

All specifications, documentation, diagrams, and written artifacts in this repository are licensed under the Creative Commons Attribution 4.0 International License (CC BY 4.0).

You are free to:

  • Share: copy and redistribute the material in any medium or format
  • Adapt: remix, transform, and build upon the material for any purpose, even commercially

Under the following terms:

  • Attribution: You must give appropriate credit, provide a link to the license, and indicate if changes were made.
  • No additional restrictions: You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.

Full license text: https://creativecommons.org/licenses/by/4.0/

Examples of attribution: If you use or reference the FFAD specification in research, documentation, or tools, you must provide attribution.

  1. Always include the full project name: Functional Flow Artifact Diagram (FFAD) Specification
  2. Credit the author(s) or organization: © 2025 DoNew Innovations
  3. Include the license: CC BY 4.0
  4. Provide a link to the official repository or spec release.
  5. If adapted or modified, explicitly state: "Adapted from…"

In text: "This work builds on the Functional Flow Artifact Diagram (FFAD) Specification © 2025 DoNew Innovations, licensed under CC BY 4.0."

In a figure caption: "Diagram adapted from FFAD Specification, © 2025 DoNew Innovations, CC BY 4.0."

In academic papers:

  • DoNew Innovations (2025). Functional Flow Artifact Diagram (FFAD) Specification, Version 1.0. Available at https://github.com/go-donew/ffad. Licensed under CC BY 4.0.
  • [1] [DoNew Innovations], "Functional Flow Artifact Diagram (FFAD) Specification," Version 1.0, 2025. [Online]. Available: https://github.com/go-donew/ffad. Licensed under CC BY 4.0.

About

FFAD (Functional Flow Artifact Diagram) is a semi-formal diagram designed to describe complex technical systems

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published