@documentation-robotics/cli 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -2
- package/dist/analysis/relationship-classifier.js +2 -9
- package/dist/analysis/relationship-classifier.js.map +2 -2
- package/dist/analyzers/call-graph-utils.js +2 -2
- package/dist/analyzers/call-graph-utils.js.map +2 -2
- package/dist/analyzers/cards/build.js +171 -0
- package/dist/analyzers/cards/build.js.map +7 -0
- package/dist/analyzers/cards/classify.js +42 -0
- package/dist/analyzers/cards/classify.js.map +7 -0
- package/dist/analyzers/cards/edge-index.js +44 -0
- package/dist/analyzers/cards/edge-index.js.map +7 -0
- package/dist/analyzers/cards/facts.js +46 -0
- package/dist/analyzers/cards/facts.js.map +7 -0
- package/dist/analyzers/cards/graph.js +42 -0
- package/dist/analyzers/cards/graph.js.map +7 -0
- package/dist/analyzers/cards/index.js +8 -0
- package/dist/analyzers/cards/index.js.map +7 -0
- package/dist/analyzers/cards/tier0.js +18 -0
- package/dist/analyzers/cards/tier0.js.map +7 -0
- package/dist/analyzers/cards/types.js +1 -0
- package/dist/analyzers/cards/types.js.map +7 -0
- package/dist/analyzers/cbm-analyzer.js +195 -171
- package/dist/analyzers/cbm-analyzer.js.map +2 -2
- package/dist/analyzers/cbm-responses.js +336 -0
- package/dist/analyzers/cbm-responses.js.map +7 -0
- package/dist/analyzers/edge-relationships.js +45 -0
- package/dist/analyzers/edge-relationships.js.map +7 -0
- package/dist/analyzers/mapping-loader.js +9 -0
- package/dist/analyzers/mapping-loader.js.map +2 -2
- package/dist/analyzers/tier0-rules.js +153 -0
- package/dist/analyzers/tier0-rules.js.map +7 -0
- package/dist/analyzers/types.js.map +1 -1
- package/dist/audit/relationships/ai/prompts.js +10 -10
- package/dist/audit/relationships/ai/prompts.js.map +2 -2
- package/dist/audit/relationships/analysis/layer-templates.js +52 -52
- package/dist/audit/relationships/analysis/layer-templates.js.map +1 -1
- package/dist/cli.js +12 -2
- package/dist/cli.js.map +2 -2
- package/dist/coding-agents/default-permissions.js +31 -1
- package/dist/coding-agents/default-permissions.js.map +2 -2
- package/dist/coding-agents/drbot-mcp.js +167 -0
- package/dist/coding-agents/drbot-mcp.js.map +7 -0
- package/dist/commands/add.js +3 -2
- package/dist/commands/add.js.map +2 -2
- package/dist/commands/analyzer.js +117 -14
- package/dist/commands/analyzer.js.map +2 -2
- package/dist/commands/changeset-verify.js +55 -0
- package/dist/commands/changeset-verify.js.map +7 -0
- package/dist/commands/changeset.js +43 -22
- package/dist/commands/changeset.js.map +2 -2
- package/dist/commands/delete.js +10 -4
- package/dist/commands/delete.js.map +2 -2
- package/dist/commands/farm.js +176 -60
- package/dist/commands/farm.js.map +2 -2
- package/dist/commands/mcp.js +19 -4
- package/dist/commands/mcp.js.map +2 -2
- package/dist/commands/relationship.js +207 -26
- package/dist/commands/relationship.js.map +2 -2
- package/dist/commands/update.js +42 -23
- package/dist/commands/update.js.map +2 -2
- package/dist/commands/upgrade.js +99 -11
- package/dist/commands/upgrade.js.map +3 -3
- package/dist/commands/version.js +1 -1
- package/dist/commands/visualize.js +4 -3
- package/dist/commands/visualize.js.map +2 -2
- package/dist/core/catalog-migration.js +33 -0
- package/dist/core/catalog-migration.js.map +7 -0
- package/dist/core/changeset-analysis.js +421 -0
- package/dist/core/changeset-analysis.js.map +7 -0
- package/dist/core/changeset-base-index.js +153 -0
- package/dist/core/changeset-base-index.js.map +7 -0
- package/dist/core/changeset-brief-delta.js +102 -0
- package/dist/core/changeset-brief-delta.js.map +7 -0
- package/dist/core/changeset-graph.js +281 -0
- package/dist/core/changeset-graph.js.map +7 -0
- package/dist/core/changeset-only-guard.js +32 -0
- package/dist/core/changeset-only-guard.js.map +7 -0
- package/dist/core/changeset-summary.js +68 -0
- package/dist/core/changeset-summary.js.map +7 -0
- package/dist/core/changeset-validator.js +66 -20
- package/dist/core/changeset-validator.js.map +2 -2
- package/dist/core/changeset-verify.js +518 -0
- package/dist/core/changeset-verify.js.map +7 -0
- package/dist/core/changeset.js +56 -9
- package/dist/core/changeset.js.map +2 -2
- package/dist/core/element-type-migration.js +145 -0
- package/dist/core/element-type-migration.js.map +7 -0
- package/dist/core/farm-manifest.js +12 -6
- package/dist/core/farm-manifest.js.map +2 -2
- package/dist/core/farm-sync-engine.js +1 -1
- package/dist/core/farm-sync-engine.js.map +2 -2
- package/dist/core/farm-sync-state.js +10 -2
- package/dist/core/farm-sync-state.js.map +2 -2
- package/dist/core/migration-registry.js +75 -46
- package/dist/core/migration-registry.js.map +2 -2
- package/dist/core/model-upgrade.js +102 -0
- package/dist/core/model-upgrade.js.map +7 -0
- package/dist/core/model.js +82 -30
- package/dist/core/model.js.map +2 -2
- package/dist/core/mutation-handler.js +71 -6
- package/dist/core/mutation-handler.js.map +2 -2
- package/dist/core/relationship-migration-table.js +6639 -0
- package/dist/core/relationship-migration-table.js.map +7 -0
- package/dist/core/relationship-migration.js +272 -0
- package/dist/core/relationship-migration.js.map +7 -0
- package/dist/core/relationship-prune.js +49 -0
- package/dist/core/relationship-prune.js.map +7 -0
- package/dist/core/relationship-staging.js +68 -0
- package/dist/core/relationship-staging.js.map +7 -0
- package/dist/core/relationships.js +26 -4
- package/dist/core/relationships.js.map +2 -2
- package/dist/core/report-data-model.js +7 -13
- package/dist/core/report-data-model.js.map +2 -2
- package/dist/core/staged-changeset-storage.js +64 -17
- package/dist/core/staged-changeset-storage.js.map +2 -2
- package/dist/core/staged-source-reference.js +28 -0
- package/dist/core/staged-source-reference.js.map +7 -0
- package/dist/core/staging-area.js +83 -18
- package/dist/core/staging-area.js.map +2 -2
- package/dist/core/virtual-projection.js +13 -5
- package/dist/core/virtual-projection.js.map +2 -2
- package/dist/export/archimate-exporter.js +1 -0
- package/dist/export/archimate-exporter.js.map +2 -2
- package/dist/generated/compiled-validators.js +2 -2
- package/dist/generated/compiled-validators.js.map +2 -2
- package/dist/generated/layer-registry.js +16 -16
- package/dist/generated/layer-registry.js.map +2 -2
- package/dist/generated/node-types.js +186 -168
- package/dist/generated/node-types.js.map +2 -2
- package/dist/generated/relationship-index.js +2236 -7790
- package/dist/generated/relationship-index.js.map +2 -2
- package/dist/integrations/claude_code/agents/dr-architect.md +16 -3
- package/dist/integrations/claude_code/agents/dr-extractor.md +1 -1
- package/dist/integrations/claude_code/commands/dr-analyzer.md +565 -0
- package/dist/integrations/claude_code/commands/dr-map.md +13 -0
- package/dist/integrations/claude_code/commands/dr-plan.md +40 -0
- package/dist/integrations/claude_code/commands/dr-relate.md +106 -96
- package/dist/integrations/claude_code/commands/dr-verify.md +45 -2
- package/dist/integrations/claude_code/docs/END_TO_END_WALKTHROUGH.md +14 -0
- package/dist/integrations/claude_code/docs/MCP_SERVER.md +26 -2
- package/dist/integrations/claude_code/docs/QUICK_START.md +37 -8
- package/dist/integrations/claude_code/docs/README.md +48 -1
- package/dist/integrations/claude_code/skills/dr_01_motivation_layer/SKILL.md +93 -72
- package/dist/integrations/claude_code/skills/dr_02_business_layer/SKILL.md +163 -126
- package/dist/integrations/claude_code/skills/dr_03_product_layer/SKILL.md +161 -126
- package/dist/integrations/claude_code/skills/dr_04_security_layer/SKILL.md +153 -133
- package/dist/integrations/claude_code/skills/dr_05_application_layer/SKILL.md +129 -100
- package/dist/integrations/claude_code/skills/dr_06_technology_layer/SKILL.md +111 -94
- package/dist/integrations/claude_code/skills/dr_07_api_layer/SKILL.md +143 -157
- package/dist/integrations/claude_code/skills/dr_08_data_model_layer/SKILL.md +117 -33
- package/dist/integrations/claude_code/skills/dr_09_dataset_layer/SKILL.md +74 -25
- package/dist/integrations/claude_code/skills/dr_10_ux_layer/SKILL.md +88 -12
- package/dist/integrations/claude_code/skills/dr_11_navigation_layer/SKILL.md +83 -24
- package/dist/integrations/claude_code/skills/dr_12_apm_layer/SKILL.md +57 -12
- package/dist/integrations/claude_code/skills/dr_13_testing_layer/SKILL.md +92 -15
- package/dist/integrations/claude_code/skills/dr_change_planning/SKILL.md +119 -0
- package/dist/integrations/claude_code/skills/dr_changeset_reviewer/SKILL.md +3 -0
- package/dist/integrations/claude_code/skills/dr_engineering_guide/SKILL.md +1 -1
- package/dist/integrations/github_copilot/agents/dr-architect.md +1 -1
- package/dist/integrations/github_copilot/skills/dr_01_motivation_layer/SKILL.md +182 -102
- package/dist/integrations/github_copilot/skills/dr_02_business_layer/SKILL.md +266 -148
- package/dist/integrations/github_copilot/skills/dr_03_product_layer/SKILL.md +547 -86
- package/dist/integrations/github_copilot/skills/dr_04_security_layer/SKILL.md +164 -169
- package/dist/integrations/github_copilot/skills/dr_05_application_layer/SKILL.md +420 -150
- package/dist/integrations/github_copilot/skills/dr_06_technology_layer/SKILL.md +331 -138
- package/dist/integrations/github_copilot/skills/dr_07_api_layer/SKILL.md +265 -201
- package/dist/integrations/github_copilot/skills/dr_08_data_model_layer/SKILL.md +181 -58
- package/dist/integrations/github_copilot/skills/dr_09_dataset_layer/SKILL.md +209 -57
- package/dist/integrations/github_copilot/skills/dr_10_ux_layer/SKILL.md +277 -112
- package/dist/integrations/github_copilot/skills/dr_11_navigation_layer/SKILL.md +219 -70
- package/dist/integrations/github_copilot/skills/dr_12_apm_layer/SKILL.md +189 -105
- package/dist/integrations/github_copilot/skills/dr_13_testing_layer/SKILL.md +222 -102
- package/dist/integrations/github_copilot/skills/dr_change_planning/SKILL.md +119 -0
- package/dist/integrations/github_copilot/skills/dr_changeset_reviewer/SKILL.md +3 -0
- package/dist/integrations/hash-utils.js.map +2 -2
- package/dist/mcp/api-key-manager.js +14 -1
- package/dist/mcp/api-key-manager.js.map +2 -2
- package/dist/mcp/changeset-only.js +34 -0
- package/dist/mcp/changeset-only.js.map +7 -0
- package/dist/mcp/tool-registry.js +19 -3
- package/dist/mcp/tool-registry.js.map +2 -2
- package/dist/mcp/tools/changeset-analysis-tools.js +78 -0
- package/dist/mcp/tools/changeset-analysis-tools.js.map +7 -0
- package/dist/mcp/tools/changeset-editing.js +184 -0
- package/dist/mcp/tools/changeset-editing.js.map +7 -0
- package/dist/mcp/tools/changeset-lifecycle.js +83 -0
- package/dist/mcp/tools/changeset-lifecycle.js.map +7 -0
- package/dist/mcp/tools/changeset-shared.js +31 -0
- package/dist/mcp/tools/changeset-shared.js.map +7 -0
- package/dist/mcp/tools/changeset-show.js +17 -1
- package/dist/mcp/tools/changeset-show.js.map +2 -2
- package/dist/mcp/tools/changeset-verify.js +43 -0
- package/dist/mcp/tools/changeset-verify.js.map +7 -0
- package/dist/mcp/tools/index.js +19 -1
- package/dist/mcp/tools/index.js.map +2 -2
- package/dist/mcp/tools/model-add.js +6 -5
- package/dist/mcp/tools/model-add.js.map +2 -2
- package/dist/mcp/tools/model-delete.js +2 -2
- package/dist/mcp/tools/model-delete.js.map +2 -2
- package/dist/mcp/tools/model-search.js +14 -0
- package/dist/mcp/tools/model-search.js.map +2 -2
- package/dist/mcp/tools/model-show.js +29 -2
- package/dist/mcp/tools/model-show.js.map +2 -2
- package/dist/mcp/tools/model-trace.js +93 -30
- package/dist/mcp/tools/model-trace.js.map +2 -2
- package/dist/mcp/tools/model-update.js +35 -19
- package/dist/mcp/tools/model-update.js.map +2 -2
- package/dist/mcp/tools/relationship-tools.js +98 -0
- package/dist/mcp/tools/relationship-tools.js.map +7 -0
- package/dist/mcp/tools/shared.js +25 -2
- package/dist/mcp/tools/shared.js.map +2 -2
- package/dist/mcp/tools/spec-type.js +90 -0
- package/dist/mcp/tools/spec-type.js.map +7 -0
- package/dist/schemas/bundled/analyzers/cbm.json +1186 -68
- package/dist/schemas/bundled/analyzers/manifest.json +2 -2
- package/dist/schemas/bundled/api.json +1029 -1658
- package/dist/schemas/bundled/apm.json +499 -734
- package/dist/schemas/bundled/application.json +735 -371
- package/dist/schemas/bundled/base.json +3 -220
- package/dist/schemas/bundled/business.json +452 -366
- package/dist/schemas/bundled/data-model.json +395 -411
- package/dist/schemas/bundled/data-store.json +334 -558
- package/dist/schemas/bundled/manifest.json +18 -18
- package/dist/schemas/bundled/motivation.json +349 -368
- package/dist/schemas/bundled/navigation.json +415 -731
- package/dist/schemas/bundled/product.json +325 -159
- package/dist/schemas/bundled/security.json +864 -1232
- package/dist/schemas/bundled/technology.json +574 -703
- package/dist/schemas/bundled/testing.json +718 -1643
- package/dist/schemas/bundled/ux.json +739 -1352
- package/dist/server/schemas.js +8 -0
- package/dist/server/schemas.js.map +2 -2
- package/dist/server/server.js +218 -34
- package/dist/server/server.js.map +2 -2
- package/dist/server-entry.js +2 -1
- package/dist/server-entry.js.map +2 -2
- package/dist/telemetry/index.js +1 -1
- package/dist/utils/ansi-suppressor.js +6 -8
- package/dist/utils/ansi-suppressor.js.map +2 -2
- package/dist/utils/attribute-patch.js +41 -0
- package/dist/utils/attribute-patch.js.map +7 -0
- package/dist/utils/error-hints.js +29 -0
- package/dist/utils/error-hints.js.map +7 -0
- package/dist/utils/errors.js +9 -3
- package/dist/utils/errors.js.map +2 -2
- package/dist/utils/project-paths.js +26 -1
- package/dist/utils/project-paths.js.map +2 -2
- package/dist/utils/source-reference.js +14 -12
- package/dist/utils/source-reference.js.map +2 -2
- package/dist/utils/spec-version.js +2 -2
- package/dist/utils/spec-version.js.map +1 -1
- package/dist/validators/composed-reference-validator.js +5 -27
- package/dist/validators/composed-reference-validator.js.map +2 -2
- package/dist/validators/reference-validator.js +0 -7
- package/dist/validators/reference-validator.js.map +2 -2
- package/dist/validators/relationship-schema-validator.js +3 -3
- package/dist/validators/relationship-schema-validator.js.map +2 -2
- package/dist/validators/schema-validator.js +27 -9
- package/dist/validators/schema-validator.js.map +2 -2
- package/dist/validators/types.js.map +1 -1
- package/dist/viewer/README.md +6 -6
- package/dist/viewer/assets/main-CxzcuU_o.js +84 -0
- package/dist/viewer/assets/main-j-7ULYpm.css +1 -0
- package/dist/viewer/index.html +2 -2
- package/dist/viewer/manifest.json +10 -10
- package/dist/viewer/version.json +1 -1
- package/package.json +2 -1
- package/dist/viewer/assets/main-B7AOQXXX.js +0 -81
- package/dist/viewer/assets/main-vdrFrG7q.css +0 -1
|
@@ -6,6 +6,7 @@ triggers:
|
|
|
6
6
|
"product",
|
|
7
7
|
"feature",
|
|
8
8
|
"persona",
|
|
9
|
+
"software capability",
|
|
9
10
|
"capability",
|
|
10
11
|
"milestone",
|
|
11
12
|
"user workflow",
|
|
@@ -20,7 +21,7 @@ version: 0.8.4
|
|
|
20
21
|
|
|
21
22
|
**Layer Number:** 03
|
|
22
23
|
**Specification:** Metadata Model Spec v0.8.4
|
|
23
|
-
**Purpose:** Defines product personas, capabilities, features, user workflows, and milestones that represent what the product does and for whom.
|
|
24
|
+
**Purpose:** Defines product personas, software capabilities, features, user workflows, and milestones that represent what the product does and for whom.
|
|
24
25
|
|
|
25
26
|
---
|
|
26
27
|
|
|
@@ -29,7 +30,7 @@ version: 0.8.4
|
|
|
29
30
|
The Product Layer captures the **product management dimension** of architecture:
|
|
30
31
|
|
|
31
32
|
- **WHO** - Personas and target user archetypes
|
|
32
|
-
- **WHAT** -
|
|
33
|
+
- **WHAT** - Software capabilities and features the product delivers
|
|
33
34
|
- **HOW** - User workflows describing how users accomplish goals
|
|
34
35
|
- **WHEN** - Milestones representing delivery roadmap
|
|
35
36
|
- **WHY** - Linkage to business goals and requirements
|
|
@@ -45,13 +46,14 @@ This layer uses a **custom specification** designed for product planning, priori
|
|
|
45
46
|
> **CLI Introspection:** Run `dr schema types product` for the authoritative, always-current list of node types.
|
|
46
47
|
> Run `dr schema node <type-id>` for full attribute details on any type.
|
|
47
48
|
|
|
48
|
-
| Entity Type
|
|
49
|
-
|
|
|
50
|
-
| **Persona**
|
|
51
|
-
| **
|
|
52
|
-
| **Feature**
|
|
53
|
-
| **UserWorkflow**
|
|
54
|
-
| **
|
|
49
|
+
| Entity Type | Description | Key Attributes |
|
|
50
|
+
| ---------------------- | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
|
|
51
|
+
| **Persona** | User archetype with shared goals, behaviors, pain points | category (primary, secondary, served, negative), proficiency (novice, intermediate, advanced, expert) |
|
|
52
|
+
| **SoftwareCapability** | Ability of the software platform, independent of implementation (not a business capability) | status (proposed, planned, developing, delivered, deprecated), properties |
|
|
53
|
+
| **Feature** | User-visible unit of functionality delivering software capabilities | priority (critical, high, medium, low, informational), status, size (xs, s, m, l, xl) |
|
|
54
|
+
| **UserWorkflow** | Sequence of user-facing steps to accomplish a goal | complexity (simple, moderate, complex), properties |
|
|
55
|
+
| **WorkflowStep** | One ordered, user-facing step within a UserWorkflow | sequence, action, outcome, optional, properties |
|
|
56
|
+
| **Milestone** | Time-bound delivery target grouping features and software capabilities | status (proposed, planned, active, completed, cancelled) |
|
|
55
57
|
|
|
56
58
|
---
|
|
57
59
|
|
|
@@ -59,54 +61,56 @@ This layer uses a **custom specification** designed for product planning, priori
|
|
|
59
61
|
|
|
60
62
|
The Product layer models product structure and planning via these core relationships:
|
|
61
63
|
|
|
62
|
-
| Source
|
|
63
|
-
|
|
|
64
|
-
|
|
|
65
|
-
|
|
|
66
|
-
|
|
|
67
|
-
|
|
|
68
|
-
|
|
|
69
|
-
|
|
|
70
|
-
|
|
|
71
|
-
|
|
|
72
|
-
|
|
|
64
|
+
| Source Type | Predicate | Target Type | Example |
|
|
65
|
+
| ------------------ | ------------- | ------------------ | --------------------------------------------------------------- |
|
|
66
|
+
| SoftwareCapability | aggregates | SoftwareCapability | "Authentication" aggregates "Multi-Factor Auth" |
|
|
67
|
+
| SoftwareCapability | depends-on | SoftwareCapability | "Order Tracking" depends on "Send Email" |
|
|
68
|
+
| SoftwareCapability | scheduled-for | Milestone | "Customer Segmentation" scheduled for "Q3 2024 Release" |
|
|
69
|
+
| Feature | realizes | SoftwareCapability | "Two-Factor Login" realizes "Authentication" |
|
|
70
|
+
| Feature | serves | Persona | "CSV Export" serves "Data Analyst" |
|
|
71
|
+
| Feature | scheduled-for | Milestone | "Live Cursor Tracking" scheduled for "Q4 Collaboration Release" |
|
|
72
|
+
| Feature | depends-on | Feature | "Scheduled Reports" depends on "Custom Dashboards" |
|
|
73
|
+
| Milestone | precedes | Milestone | "Q3 Security Release" precedes "Q4 Collaboration Release" |
|
|
74
|
+
| UserWorkflow | composes | WorkflowStep | "Password Reset" composes "Request Reset Link" |
|
|
75
|
+
| UserWorkflow | serves | Persona | "Checkout" serves "Busy Parent" |
|
|
76
|
+
| WorkflowStep | flows-to | WorkflowStep | "Request Reset Link" flows to "Receive Reset Email" |
|
|
77
|
+
| WorkflowStep | uses | Feature | "Choose New Password" uses "Password Reset" |
|
|
73
78
|
|
|
74
79
|
---
|
|
75
80
|
|
|
76
81
|
## Cross-Layer References
|
|
77
82
|
|
|
78
|
-
### Outgoing References (Product →
|
|
79
|
-
|
|
80
|
-
Product
|
|
81
|
-
|
|
82
|
-
|
|
|
83
|
-
|
|
|
84
|
-
|
|
|
85
|
-
|
|
|
86
|
-
|
|
|
87
|
-
|
|
|
88
|
-
|
|
|
89
|
-
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
|
99
|
-
|
|
|
100
|
-
| `
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
- API → Feature: API operations expose features
|
|
83
|
+
### Outgoing References (Product → Other Layers)
|
|
84
|
+
|
|
85
|
+
Product elements point to Motivation to justify product decisions, and to Business to align with organizational services and roles:
|
|
86
|
+
|
|
87
|
+
| Source Type | Predicate | Target Type | Example |
|
|
88
|
+
| ------------------ | ---------- | --------------------------- | ---------------------------------------------------- |
|
|
89
|
+
| Persona | references | `motivation.stakeholder` | "Busy Parent" realizes "Retail Customers" |
|
|
90
|
+
| Feature | satisfies | `motivation.requirement` | "Two-Factor Login" satisfies "User Account Security" |
|
|
91
|
+
| Feature | delivers | `motivation.value` | "One-Click Reorder" delivers "Customer Convenience" |
|
|
92
|
+
| SoftwareCapability | supports | `motivation.goal` | "Authentication" supports "Customer Trust" |
|
|
93
|
+
| SoftwareCapability | satisfies | `motivation.requirement` | "Data Export" satisfies "Data Portability" |
|
|
94
|
+
| UserWorkflow | delivers | `motivation.outcome` | "Checkout" delivers "Cart Abandonment Reduced 15%" |
|
|
95
|
+
| SoftwareCapability | realizes | `business.businessfunction` | "Subscription Billing" realizes "Billing" |
|
|
96
|
+
| UserWorkflow | realizes | `business.businessprocess` | "Checkout" aggregates "Order Fulfillment" |
|
|
97
|
+
| Persona | references | `business.businessrole` | "Power User" serves "Data Analyst" role |
|
|
98
|
+
|
|
99
|
+
### Incoming References (Other Layers → Product)
|
|
100
|
+
|
|
101
|
+
Other layers reference Product elements to record what implements, exposes or verifies them:
|
|
102
|
+
|
|
103
|
+
| Source Type | Predicate | Target Type | Example |
|
|
104
|
+
| -------------------------------- | --------- | ------------------ | --------------------------------------------------------- |
|
|
105
|
+
| `application.applicationservice` | realizes | SoftwareCapability | "EmailService" realizes "Send Email" |
|
|
106
|
+
| `technology.technologyservice` | realizes | SoftwareCapability | "SMTP Relay" realizes "Send Email" |
|
|
107
|
+
| `application.applicationservice` | realizes | Feature | "ExportService" realizes "CSV Export" |
|
|
108
|
+
| `api.operation` | exposes | Feature | "GET /reports/{id}/csv" exposes "CSV Export" |
|
|
109
|
+
| `ux.view` | realizes | Feature | "Cart Page" realizes "Shopping Cart" |
|
|
110
|
+
| `navigation.navigationflow` | realizes | UserWorkflow | "password-reset" flow realizes "Password Reset" |
|
|
111
|
+
| `navigation.flowstep` | realizes | WorkflowStep | "/reset/new-password" step realizes "Choose New Password" |
|
|
112
|
+
| `testing.testcasesketch` | tests | Feature | "MFA login happy path" tests "Two-Factor Login" |
|
|
113
|
+
| `testing.testcoveragetarget` | covers | Feature | "Export coverage target" covers "CSV Export" |
|
|
110
114
|
|
|
111
115
|
---
|
|
112
116
|
|
|
@@ -140,7 +144,7 @@ Persona: "Sales Representative"
|
|
|
140
144
|
├── category: primary
|
|
141
145
|
├── proficiency: intermediate
|
|
142
146
|
├── realizes → Stakeholder: "Sales Team"
|
|
143
|
-
├──
|
|
147
|
+
├── serves → BusinessRole: "Sales Representative"
|
|
144
148
|
└── pain-points:
|
|
145
149
|
- Time-consuming manual data entry
|
|
146
150
|
- Limited visibility into customer interactions
|
|
@@ -148,14 +152,21 @@ Persona: "Sales Representative"
|
|
|
148
152
|
|
|
149
153
|
---
|
|
150
154
|
|
|
151
|
-
##
|
|
155
|
+
## SoftwareCapability Definition
|
|
156
|
+
|
|
157
|
+
A SoftwareCapability is an **ability of the software platform**, stated as what the software can do (for example "Save documents to files" or "Full-text search"), independent of the features that expose it and the services that implement it. Features realize software capabilities, and a software capability realizes the business function it carries out: "Save documents to files" realizes the business function "Share data".
|
|
158
|
+
|
|
159
|
+
**Distinction from BusinessCapability (Business layer):**
|
|
160
|
+
|
|
161
|
+
- **BusinessCapability** - an ability the _organization_ has ("Share data with partners"), which would remain if different software, or none, provided it. Business functions and processes realize it. It is ArchiMate's Capability.
|
|
162
|
+
- **SoftwareCapability** - an ability of the _software platform_ ("Save documents to files"). It reaches the business layer by realizing business functions, which in turn realize business capabilities.
|
|
152
163
|
|
|
153
|
-
|
|
164
|
+
If removing the software would remove the ability, it is a software capability; if the organization would still need the ability and find another way to provide it, it is a business capability.
|
|
154
165
|
|
|
155
166
|
**Distinction from BusinessFunction (Business layer):**
|
|
156
167
|
|
|
157
|
-
- **BusinessFunction** -
|
|
158
|
-
- **
|
|
168
|
+
- **BusinessFunction** - a standing area of organizational work, performed by roles
|
|
169
|
+
- **SoftwareCapability** - what the software can do that carries such work out
|
|
159
170
|
|
|
160
171
|
**Lifecycle Statuses:**
|
|
161
172
|
|
|
@@ -166,15 +177,15 @@ A Capability is an **ability the product possesses**, independent of how it's im
|
|
|
166
177
|
- **Deprecated** - No longer supported
|
|
167
178
|
|
|
168
179
|
**Decomposition:**
|
|
169
|
-
|
|
180
|
+
Software capabilities decompose into narrower software capabilities via `aggregates` relationships.
|
|
170
181
|
|
|
171
182
|
**Example:**
|
|
172
183
|
|
|
173
184
|
```
|
|
174
|
-
|
|
185
|
+
SoftwareCapability: "Customer Data Management"
|
|
175
186
|
├── status: developing
|
|
176
|
-
├── aggregates →
|
|
177
|
-
├── aggregates →
|
|
187
|
+
├── aggregates → SoftwareCapability: "Customer CRUD"
|
|
188
|
+
├── aggregates → SoftwareCapability: "Customer Segmentation"
|
|
178
189
|
├── realizes → BusinessFunction: "Customer Lifecycle Management"
|
|
179
190
|
└── supports → Goal: "Improve Customer Retention"
|
|
180
191
|
```
|
|
@@ -183,7 +194,7 @@ Capability: "Customer Data Management"
|
|
|
183
194
|
|
|
184
195
|
## Feature Definition
|
|
185
196
|
|
|
186
|
-
A Feature is a **user-visible unit of functionality** that delivers one or more capabilities and is the primary unit of product planning.
|
|
197
|
+
A Feature is a **user-visible unit of functionality** that delivers one or more software capabilities and is the primary unit of product planning.
|
|
187
198
|
|
|
188
199
|
**Distinction from Requirement (Motivation layer):**
|
|
189
200
|
|
|
@@ -213,7 +224,7 @@ Feature: "Two-Factor Authentication"
|
|
|
213
224
|
├── priority: high
|
|
214
225
|
├── status: developing
|
|
215
226
|
├── size: m
|
|
216
|
-
├── realizes →
|
|
227
|
+
├── realizes → SoftwareCapability: "Account Security"
|
|
217
228
|
├── serves → Persona: "Security-Conscious User"
|
|
218
229
|
├── satisfies → Requirement: "Support TOTP and SMS 2FA"
|
|
219
230
|
└── scheduled-for → Milestone: "Q3 Security Release"
|
|
@@ -259,9 +270,31 @@ Steps:
|
|
|
259
270
|
|
|
260
271
|
---
|
|
261
272
|
|
|
273
|
+
**Steps as elements (WorkflowStep):**
|
|
274
|
+
|
|
275
|
+
Model the steps as `product.workflowstep` elements when you need to trace which features each step
|
|
276
|
+
relies on, or to link steps to navigation routes. A workflow reaches features, and through them software
|
|
277
|
+
capabilities, only through its steps: the workflow composes steps, each step `uses` the features it
|
|
278
|
+
exercises, and those features realize software capabilities. Example: the _Password reset_ workflow
|
|
279
|
+
composes steps, and the platform's _Send email_ capability is reached through the feature that uses it:
|
|
280
|
+
|
|
281
|
+
```
|
|
282
|
+
UserWorkflow: "Password Reset"
|
|
283
|
+
├── composes → WorkflowStep 1 "Request reset link" (uses → Feature: Password Reset)
|
|
284
|
+
├── composes → WorkflowStep 2 "Receive reset email" (uses → Feature: Reset Email)
|
|
285
|
+
├── composes → WorkflowStep 3 "Choose new password" (uses → Feature: Password Reset)
|
|
286
|
+
└── realizes ← NavigationFlow: "password-reset" (its FlowSteps realize the WorkflowSteps)
|
|
287
|
+
|
|
288
|
+
Feature: "Reset Email" → realizes SoftwareCapability: "Send Email"
|
|
289
|
+
SoftwareCapability: "Send Email" ← realizes application.applicationservice "EmailService"
|
|
290
|
+
← realizes technology.technologyservice "SMTP relay"
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
262
295
|
## Milestone Definition
|
|
263
296
|
|
|
264
|
-
A Milestone is a **time-bound delivery target** grouping features or capabilities.
|
|
297
|
+
A Milestone is a **time-bound delivery target** grouping features or software capabilities.
|
|
265
298
|
|
|
266
299
|
**Lifecycle Statuses:**
|
|
267
300
|
|
|
@@ -283,9 +316,9 @@ Milestone: "Q3 2024 Release"
|
|
|
283
316
|
│ ├── Feature: "Two-Factor Authentication"
|
|
284
317
|
│ ├── Feature: "Audit Logging"
|
|
285
318
|
│ └── Feature: "API Rate Limiting"
|
|
286
|
-
├── scheduled-capabilities:
|
|
287
|
-
│ ├──
|
|
288
|
-
│ └──
|
|
319
|
+
├── scheduled-software-capabilities:
|
|
320
|
+
│ ├── SoftwareCapability: "Account Security"
|
|
321
|
+
│ └── SoftwareCapability: "System Reliability"
|
|
289
322
|
├── precedes → Milestone: "Q4 2024 Release"
|
|
290
323
|
└── includes → Outcome: "Improved User Trust"
|
|
291
324
|
```
|
|
@@ -316,7 +349,7 @@ if feature_flags.is_enabled("new_checkout", rollout_percentage=10):
|
|
|
316
349
|
```python
|
|
317
350
|
# TODO: Implement user segmentation for Q3 milestone
|
|
318
351
|
# Feature: "User Segmentation" (priority: high)
|
|
319
|
-
#
|
|
352
|
+
# SoftwareCapability: "Customer Segmentation"
|
|
320
353
|
# Milestone: "Q3 2024 Release"
|
|
321
354
|
def segment_users_by_behavior():
|
|
322
355
|
pass
|
|
@@ -325,7 +358,7 @@ def segment_users_by_behavior():
|
|
|
325
358
|
**Maps to:**
|
|
326
359
|
|
|
327
360
|
- Feature: "User Segmentation" (priority: high)
|
|
328
|
-
-
|
|
361
|
+
- SoftwareCapability: "Customer Segmentation"
|
|
329
362
|
- Milestone: "Q3 2024 Release"
|
|
330
363
|
|
|
331
364
|
### Pattern 3: User Role / Persona References
|
|
@@ -362,10 +395,10 @@ const workflowByPersona = {
|
|
|
362
395
|
- UserWorkflow: "Basic Checkout Flow" (complexity: simple) → serves → Persona: "Basic User"
|
|
363
396
|
- UserWorkflow: "Power User Ordering" (complexity: complex) → serves → Persona: "Power User"
|
|
364
397
|
|
|
365
|
-
### Pattern 4: Capability Requirements
|
|
398
|
+
### Pattern 4: Software Capability Requirements
|
|
366
399
|
|
|
367
400
|
```yaml
|
|
368
|
-
#
|
|
401
|
+
# Software capability definition
|
|
369
402
|
capabilities:
|
|
370
403
|
authentication:
|
|
371
404
|
- password-based
|
|
@@ -381,8 +414,8 @@ capabilities:
|
|
|
381
414
|
|
|
382
415
|
**Maps to:**
|
|
383
416
|
|
|
384
|
-
-
|
|
385
|
-
-
|
|
417
|
+
- SoftwareCapability: "Authentication" → aggregates → [Password-Based Auth, OAuth2, SAML, Multi-Factor Auth]
|
|
418
|
+
- SoftwareCapability: "Reporting" → aggregates → [Real-Time Dashboards, Scheduled Reports, Custom Queries, Data Export]
|
|
386
419
|
|
|
387
420
|
### Pattern 5: Persona Attributes in Code
|
|
388
421
|
|
|
@@ -428,19 +461,19 @@ dr add product persona "admin" \
|
|
|
428
461
|
--attributes '{"category":"primary","proficiency":"expert"}'
|
|
429
462
|
```
|
|
430
463
|
|
|
431
|
-
### Step 2: Define
|
|
464
|
+
### Step 2: Define Software Capabilities
|
|
432
465
|
|
|
433
466
|
```bash
|
|
434
467
|
# Product-level abilities (outcome-focused)
|
|
435
|
-
dr add product
|
|
468
|
+
dr add product softwarecapability "user-authentication" \
|
|
436
469
|
--description "Authenticate and authorize users" \
|
|
437
470
|
--attributes '{"status":"planned"}'
|
|
438
471
|
|
|
439
|
-
dr add product
|
|
472
|
+
dr add product softwarecapability "data-export" \
|
|
440
473
|
--description "Export user data in multiple formats" \
|
|
441
474
|
--attributes '{"status":"proposed"}'
|
|
442
475
|
|
|
443
|
-
dr add product
|
|
476
|
+
dr add product softwarecapability "real-time-collaboration" \
|
|
444
477
|
--description "Enable multiple users to collaborate simultaneously" \
|
|
445
478
|
--attributes '{"status":"developing"}'
|
|
446
479
|
```
|
|
@@ -462,18 +495,18 @@ dr add product feature "live-cursor-tracking" \
|
|
|
462
495
|
--attributes '{"priority":"high","size":"l","status":"proposed"}'
|
|
463
496
|
```
|
|
464
497
|
|
|
465
|
-
### Step 4: Map Features to Capabilities
|
|
498
|
+
### Step 4: Map Features to Software Capabilities
|
|
466
499
|
|
|
467
500
|
```bash
|
|
468
|
-
# Features realize capabilities
|
|
501
|
+
# Features realize software capabilities
|
|
469
502
|
dr relationship add product.feature.multi-factor-authentication \
|
|
470
|
-
product.
|
|
503
|
+
product.softwarecapability.user-authentication --predicate realizes
|
|
471
504
|
|
|
472
505
|
dr relationship add product.feature.csv-export \
|
|
473
|
-
product.
|
|
506
|
+
product.softwarecapability.data-export --predicate realizes
|
|
474
507
|
|
|
475
508
|
dr relationship add product.feature.live-cursor-tracking \
|
|
476
|
-
product.
|
|
509
|
+
product.softwarecapability.real-time-collaboration --predicate realizes
|
|
477
510
|
```
|
|
478
511
|
|
|
479
512
|
### Step 5: Map Features to Personas
|
|
@@ -507,15 +540,18 @@ dr add product user-workflow "collaboration-session" \
|
|
|
507
540
|
--attributes '{"complexity":"complex"}'
|
|
508
541
|
```
|
|
509
542
|
|
|
510
|
-
### Step 7: Map Workflows to Features
|
|
543
|
+
### Step 7: Map Workflows to Features Through Steps
|
|
511
544
|
|
|
512
545
|
```bash
|
|
513
|
-
#
|
|
514
|
-
dr
|
|
515
|
-
|
|
546
|
+
# A workflow composes its steps; each step uses the features it exercises
|
|
547
|
+
dr add product workflowstep "enter-verification-code" \
|
|
548
|
+
--description "The user enters the code sent to their phone"
|
|
549
|
+
|
|
550
|
+
dr relationship add product.userworkflow.secure-authentication-flow \
|
|
551
|
+
product.workflowstep.enter-verification-code --predicate composes
|
|
516
552
|
|
|
517
|
-
dr relationship add product.
|
|
518
|
-
product.feature.
|
|
553
|
+
dr relationship add product.workflowstep.enter-verification-code \
|
|
554
|
+
product.feature.multi-factor-authentication --predicate uses
|
|
519
555
|
```
|
|
520
556
|
|
|
521
557
|
### Step 8: Define Milestones
|
|
@@ -549,15 +585,16 @@ dr relationship add product.feature.live-cursor-tracking \
|
|
|
549
585
|
dr relationship add product.feature.multi-factor-authentication \
|
|
550
586
|
motivation.requirement.user-account-security --predicate satisfies
|
|
551
587
|
|
|
552
|
-
dr relationship add product.
|
|
588
|
+
dr relationship add product.softwarecapability.user-authentication \
|
|
553
589
|
motivation.goal.customer-trust --predicate supports
|
|
554
590
|
|
|
555
|
-
# Link to Business layer
|
|
556
|
-
dr relationship add product.
|
|
557
|
-
business.
|
|
591
|
+
# Link to Business layer: software capabilities realize the business functions they carry out
|
|
592
|
+
dr relationship add product.softwarecapability.data-export \
|
|
593
|
+
business.businessfunction.data-sharing --predicate realizes
|
|
558
594
|
|
|
595
|
+
# A persona references the business role it stands for
|
|
559
596
|
dr relationship add product.persona.power-user \
|
|
560
|
-
business.
|
|
597
|
+
business.businessrole.data-analyst --predicate references
|
|
561
598
|
```
|
|
562
599
|
|
|
563
600
|
---
|
|
@@ -567,13 +604,13 @@ dr relationship add product.persona.power-user \
|
|
|
567
604
|
### Pattern 1: Feature Hierarchy
|
|
568
605
|
|
|
569
606
|
```
|
|
570
|
-
|
|
571
|
-
├── aggregates →
|
|
572
|
-
│ └── realizes
|
|
573
|
-
├── aggregates →
|
|
574
|
-
│ └── realizes
|
|
575
|
-
└── aggregates →
|
|
576
|
-
└── realizes
|
|
607
|
+
SoftwareCapability: "Order Management"
|
|
608
|
+
├── aggregates → SoftwareCapability: "Order Placement"
|
|
609
|
+
│ └── realizes ← Feature: "Shopping Cart"
|
|
610
|
+
├── aggregates → SoftwareCapability: "Order Tracking"
|
|
611
|
+
│ └── realizes ← Feature: "Order History"
|
|
612
|
+
└── aggregates → SoftwareCapability: "Order Fulfillment"
|
|
613
|
+
└── realizes ← Feature: "Shipment Tracking"
|
|
577
614
|
```
|
|
578
615
|
|
|
579
616
|
### Pattern 2: Persona-Driven Features
|
|
@@ -581,9 +618,9 @@ Capability: "Order Management"
|
|
|
581
618
|
```
|
|
582
619
|
Persona: "Enterprise Administrator"
|
|
583
620
|
├── proficiency: expert
|
|
584
|
-
├──
|
|
585
|
-
├──
|
|
586
|
-
├──
|
|
621
|
+
├── serves ← Feature: "Bulk User Import"
|
|
622
|
+
├── serves ← Feature: "Advanced Reporting"
|
|
623
|
+
├── serves ← Feature: "API Key Management"
|
|
587
624
|
└── serves → BusinessRole: "IT Operations"
|
|
588
625
|
```
|
|
589
626
|
|
|
@@ -591,14 +628,12 @@ Persona: "Enterprise Administrator"
|
|
|
591
628
|
|
|
592
629
|
```
|
|
593
630
|
Milestone: "Q1 2025 MVP"
|
|
594
|
-
├── scheduled-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
├──
|
|
599
|
-
|
|
600
|
-
│ │ ├── Feature: "Advanced Search"
|
|
601
|
-
│ │ └── Feature: "Real-Time Notifications"
|
|
631
|
+
├── scheduled-for ← Feature: "User Authentication"
|
|
632
|
+
├── scheduled-for ← Feature: "Basic Search"
|
|
633
|
+
├── scheduled-for ← Feature: "Profile Management"
|
|
634
|
+
└── precedes → Milestone: "Q2 2025 Enhancement"
|
|
635
|
+
├── scheduled-for ← Feature: "Advanced Search"
|
|
636
|
+
└── scheduled-for ← Feature: "Real-Time Notifications"
|
|
602
637
|
```
|
|
603
638
|
|
|
604
639
|
### Pattern 4: Workflow with Multiple Features
|
|
@@ -619,8 +654,8 @@ UserWorkflow: "Power User Data Analysis"
|
|
|
619
654
|
## Best Practices
|
|
620
655
|
|
|
621
656
|
1. **Start with Personas, End with Workflows** - Understand users first, model journeys last
|
|
622
|
-
2. **Features
|
|
623
|
-
3. **Capabilities Support Goals** - Link capabilities to motivation layer goals for justification
|
|
657
|
+
2. **Features Realize Software Capabilities** - Every feature should realize at least one software capability
|
|
658
|
+
3. **Software Capabilities Support Goals** - Link software capabilities to motivation layer goals for justification
|
|
624
659
|
4. **Milestones Sequence Logically** - Plan dependencies and prerequisites
|
|
625
660
|
5. **Workflows are User-Centric** - Name them from the user's perspective, not system perspective
|
|
626
661
|
6. **Complexity Reflects User Experience** - Complex workflows should have features to manage that complexity
|
|
@@ -633,15 +668,15 @@ UserWorkflow: "Power User Data Analysis"
|
|
|
633
668
|
|
|
634
669
|
## Validation Tips
|
|
635
670
|
|
|
636
|
-
| Issue | Cause
|
|
637
|
-
| ------------------- |
|
|
638
|
-
| Orphaned Feature | Feature doesn't realize a capability
|
|
639
|
-
| Unused Persona | Persona serves no features
|
|
640
|
-
| Unmapped Capability |
|
|
641
|
-
| Incomplete Workflow | Workflow has no features
|
|
642
|
-
| Future Milestone | Milestone has no scheduled features
|
|
643
|
-
| Vague Persona | Persona lacks proficiency or category
|
|
644
|
-
| Unlinked Feature | Feature doesn't satisfy a requirement
|
|
671
|
+
| Issue | Cause | Fix |
|
|
672
|
+
| ------------------- | --------------------------------------------- | ------------------------------------- |
|
|
673
|
+
| Orphaned Feature | Feature doesn't realize a software capability | Add one or remove feature |
|
|
674
|
+
| Unused Persona | Persona serves no features | Add features for persona or remove |
|
|
675
|
+
| Unmapped Capability | SoftwareCapability doesn't support a goal | Link to Motivation goal or remove |
|
|
676
|
+
| Incomplete Workflow | Workflow has no features | Add feature composition or simplify |
|
|
677
|
+
| Future Milestone | Milestone has no scheduled features | Add features or mark as candidate |
|
|
678
|
+
| Vague Persona | Persona lacks proficiency or category | Define proficiency level and category |
|
|
679
|
+
| Unlinked Feature | Feature doesn't satisfy a requirement | Add requirement link or remove |
|
|
645
680
|
|
|
646
681
|
---
|
|
647
682
|
|
|
@@ -651,7 +686,7 @@ UserWorkflow: "Power User Data Analysis"
|
|
|
651
686
|
|
|
652
687
|
```bash
|
|
653
688
|
dr add product persona <name> --description <desc> --attributes '{"category":"<category>","proficiency":"<proficiency>"}'
|
|
654
|
-
dr add product
|
|
689
|
+
dr add product softwarecapability <name> --description <desc> --attributes '{"status":"<status>"}'
|
|
655
690
|
dr add product feature <name> --description <desc> --attributes '{"priority":"<priority>","status":"<status>","size":"<size>"}'
|
|
656
691
|
dr add product user-workflow <name> --description <desc> --attributes '{"complexity":"<complexity>"}'
|
|
657
692
|
dr add product milestone <name> --description <desc> --attributes '{"status":"<status>"}'
|
|
@@ -660,8 +695,8 @@ dr add product milestone <name> --description <desc> --attributes '{"status":"<s
|
|
|
660
695
|
**Relationship Commands:**
|
|
661
696
|
|
|
662
697
|
```bash
|
|
663
|
-
dr relationship add <capability> <capability> --predicate aggregates
|
|
664
|
-
dr relationship add <feature> <capability> --predicate realizes
|
|
698
|
+
dr relationship add <software-capability> <software-capability> --predicate aggregates
|
|
699
|
+
dr relationship add <feature> <software-capability> --predicate realizes
|
|
665
700
|
dr relationship add <feature> <persona> --predicate serves
|
|
666
701
|
dr relationship add <workflow> <feature> --predicate composes
|
|
667
702
|
dr relationship add <feature> <milestone> --predicate scheduled-for
|
|
@@ -673,7 +708,7 @@ dr relationship add <milestone> <milestone> --predicate precedes
|
|
|
673
708
|
```bash
|
|
674
709
|
dr relationship add <persona> <stakeholder> --predicate realizes
|
|
675
710
|
dr relationship add <feature> <requirement> --predicate satisfies
|
|
676
|
-
dr relationship add <capability> <goal> --predicate supports
|
|
711
|
+
dr relationship add <software-capability> <goal> --predicate supports
|
|
677
712
|
dr relationship add <workflow> <outcome> --predicate delivers
|
|
678
713
|
dr relationship add <feature> <business-service> --predicate realizes
|
|
679
714
|
```
|