Frequently Asked Questions
1. What is the difference between system, app, and component?
- A
systemrepresents a macro-level software platform (e.g.Payment Gateway System). - An
apprepresents a distinct deployable application or API within that system (e.g.Payment REST API). - A
componentis an internal handler, worker, or module inside an application (e.g.Tokenization Handler).
2. Can an entity have multiple parent systems using composed_of?
No. An entity can only be the destination of at most one composed_of relationship. If a shared component or service is consumed by multiple upstream systems, use depends_on or serves.
3. How do I link capabilities to value stream stages?
Use the realizes verb on the capability pointing to the stage:
capability cap_kyc "Automated KYC" {
relationships {
this realizes stage_identity_verification
}
}
4. Can I define custom properties not built into the language?
Yes! Use the attr keyword with optional namespaces:
attr finops:cost_center "FIN-102"
attr aws:arn "arn:aws:sqs:us-east-1:123456:payments"
5. Why must all identifiers use snake_case?
snake_case ensures consistent lexing, cross-platform compatibility, case-sensitive compiler symbol lookups, and clear separation between identifiers and display names.