@rse/specbook 1.2.1 → 1.2.3

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.
@@ -169,7 +169,7 @@
169
169
  Why the solution exists.
170
170
  - name: TARGET-AUDIENCE
171
171
  desc: >
172
- Who the solution serves.
172
+ Whom the solution serves.
173
173
  - name: SOLUTION
174
174
  desc: >
175
175
  What the solution is, in a single sentence naming its kind or
@@ -223,7 +223,7 @@
223
223
  https://doi.org/10.1109/52.62930
224
224
  diagram:
225
225
  type: grid
226
- nodes: "[[REQS:SP.PREMISE:*]]"
226
+ nodes: "[[PREMISE:*]]"
227
227
  properties:
228
228
  - TYPE
229
229
  - LIKELIHOOD
@@ -301,7 +301,7 @@
301
301
  https://www.domainlanguage.com/ddd/
302
302
  diagram:
303
303
  type: grid
304
- nodes: "[[REQS:DG.TERM:*]]"
304
+ nodes: "[[TERM:*]]"
305
305
  properties:
306
306
  - TYPE
307
307
  config:
@@ -327,8 +327,7 @@
327
327
  diagram:
328
328
  type: hub
329
329
  center: self
330
- nodes: "[[REQS:DG.TERM:*]], [[REQS:SP.PREMISE:*]], [[REQS:DR.RULE:*]], [[DATA:DM.ENTITY:*]],
331
- [[REQS:UP.PERSONA:*]]"
330
+ nodes: "[[TERM:*]], [[PREMISE:*]], [[RULE:*]], [[DM.ENTITY:*]], [[PERSONA:*]]"
332
331
  labeled: true
333
332
  qualified: true
334
333
  config:
@@ -355,7 +354,7 @@
355
354
  that the terms form a hierarchy in which a rule governing the broader term
356
355
  covers the narrower ones, too; at most one broader term, keeping the
357
356
  hierarchy a tree.
358
- value: "[[REQS:DG.TERM:*]]"
357
+ value: "[[TERM:*]]"
359
358
  optional: true
360
359
  acyclic: true
361
360
  - name: DISTINCT-FROM
@@ -363,7 +362,7 @@
363
362
  Comma-separated references to the GLOSSARY terms easily confused with this
364
363
  one but deliberately *not* synonymous, listed on both terms of each pair,
365
364
  with the distinction stated in the definitions.
366
- value: list([[REQS:DG.TERM:*]])
365
+ value: list([[TERM:*]])
367
366
  optional: true
368
367
  symmetric: true
369
368
  - name: PREMISES
@@ -372,7 +371,7 @@
372
371
  term, i.e. the assumptions, dependencies, and risks concerning the thing
373
372
  or party it denotes (e.g. the dependency on the external system an
374
373
  `Actor` term names), anchoring every premise in the ubiquitous language.
375
- value: list([[REQS:SP.PREMISE:*]])
374
+ value: list([[PREMISE:*]])
376
375
  optional: true
377
376
 
378
377
  - kind: REQS
@@ -393,7 +392,7 @@
393
392
  https://www.sciencedirect.com/book/9780125662512/the-persona-lifecycle
394
393
  diagram:
395
394
  type: grid
396
- nodes: "[[REQS:UP.PERSONA:*]]"
395
+ nodes: "[[PERSONA:*]]"
397
396
  properties:
398
397
  - TYPE
399
398
  - ROLE
@@ -411,7 +410,7 @@
411
410
  format:
412
411
  maxTableColumns: 5
413
412
  referenced:
414
- - "[[DATA:AM.ROLE:*]]"
413
+ - "[[ROLE:*]]"
415
414
  props:
416
415
  - name: TYPE
417
416
  desc: >
@@ -442,7 +441,7 @@
442
441
  Comma-separated references to the GLOSSARY terms the persona embodies, i.e.
443
442
  the domain roles it acts in and the domain concepts it primarily deals
444
443
  with, so that every persona is anchored in the ubiquitous language.
445
- value: list([[REQS:DG.TERM:*]])
444
+ value: list([[TERM:*]])
446
445
  optional: true
447
446
  - name: PROFICIENCY
448
447
  desc: >
@@ -466,7 +465,7 @@
466
465
  (usually a `Stakeholder`) vouches for, i.e. whose assumption it confirms,
467
466
  whose dependency agreement it holds, or whose risk mitigation it owns;
468
467
  omitted when the persona is accountable for no premise.
469
- value: list([[REQS:SP.PREMISE:*]])
468
+ value: list([[PREMISE:*]])
470
469
  optional: true
471
470
 
472
471
  - kind: REQS
@@ -488,7 +487,7 @@
488
487
  https://www.thisisservicedesigndoing.com/
489
488
  diagram:
490
489
  type: grid
491
- nodes: "[[REQS:UJ.JOURNEY:*]]"
490
+ nodes: "[[JOURNEY:*]]"
492
491
  properties:
493
492
  - ACTORS
494
493
  childs:
@@ -501,7 +500,7 @@
501
500
  desc: >
502
501
  Comma-separated references to the User Personas objects experiencing the
503
502
  journey.
504
- value: list([[REQS:UP.PERSONA:*]])
503
+ value: list([[PERSONA:*]])
505
504
  childs:
506
505
  - kind: STEP
507
506
  desc: >
@@ -564,7 +563,7 @@
564
563
  https://www.agilebusiness.org/dsdm-project-framework/moscow-prioritisation.html
565
564
  diagram:
566
565
  type: grid
567
- nodes: "[[REQS:FR.REQUIREMENT:*]]"
566
+ nodes: "[[FR.REQUIREMENT:*]]"
568
567
  properties:
569
568
  - PRIORITY
570
569
  config:
@@ -586,7 +585,7 @@
586
585
  format:
587
586
  maxTableColumns: 6
588
587
  referenced:
589
- - "[[REQS:UC.USE-CASE:*]]"
588
+ - "[[USE-CASE:*]]"
590
589
  props:
591
590
  - name: PRIORITY
592
591
  desc: >
@@ -601,7 +600,7 @@
601
600
  Comma-separated references to the SOLUTION-PREMISES objects the
602
601
  requirement rests on, i.e. the assumptions, dependencies, and risks whose
603
602
  failure calls for revisiting it.
604
- value: list([[REQS:SP.PREMISE:*]])
603
+ value: list([[PREMISE:*]])
605
604
  optional: true
606
605
 
607
606
  - kind: REQS
@@ -622,7 +621,7 @@
622
621
  - Doran: There's a S.M.A.R.T. Way to Write Management's Goals and Objectives, Management Review 70(11) (1981)
623
622
  diagram:
624
623
  type: grid
625
- nodes: "[[REQS:NR.REQUIREMENT:*]]"
624
+ nodes: "[[NR.REQUIREMENT:*]]"
626
625
  properties:
627
626
  - PRIORITY
628
627
  - CATEGORY
@@ -663,14 +662,14 @@
663
662
  desc: >
664
663
  Comma-separated references to the FUNCTIONAL-REQUIREMENTS objects whose
665
664
  capability the requirement bounds or constrains.
666
- value: list([[REQS:FR.*]])
665
+ value: list([[FR.*]])
667
666
  optional: true
668
667
  - name: PREMISES
669
668
  desc: >
670
669
  Comma-separated references to the SOLUTION-PREMISES objects the
671
670
  requirement rests on, i.e. the assumptions, dependencies, and risks whose
672
671
  failure calls for revisiting it.
673
- value: list([[REQS:SP.PREMISE:*]])
672
+ value: list([[PREMISE:*]])
674
673
  optional: true
675
674
  - name: METRIC
676
675
  desc: >
@@ -697,7 +696,7 @@
697
696
  https://www.omg.org/spec/DMN/
698
697
  diagram:
699
698
  type: grid
700
- nodes: "[[REQS:DR.RULE:*]]"
699
+ nodes: "[[RULE:*]]"
701
700
  properties:
702
701
  - CATEGORY
703
702
  - SOURCE
@@ -730,7 +729,7 @@
730
729
  format:
731
730
  maxTableColumns: 5
732
731
  referenced:
733
- - "[[TEST:TC.TEST-CASE:*]]"
732
+ - "[[TEST-CASE:*]]"
734
733
  props:
735
734
  - name: CATEGORY
736
735
  desc: >
@@ -763,20 +762,20 @@
763
762
  Comma-separated references to the GLOSSARY terms the rule governs, i.e.
764
763
  the domain terms its statement is about, so that every rule is anchored in
765
764
  the ubiquitous language and every term shows the rules that hold for it.
766
- value: list([[REQS:DG.TERM:*]])
765
+ value: list([[TERM:*]])
767
766
  optional: true
768
767
  - name: CONSTRAINS
769
768
  desc: >
770
769
  Comma-separated references to the FUNCTIONAL-REQUIREMENTS or
771
770
  NON-FUNCTIONAL-REQUIREMENTS objects the rule constrains.
772
- value: list([[REQS:FR.*]], [[REQS:NR.*]])
771
+ value: list([[FR.*]], [[NR.*]])
773
772
  optional: true
774
773
  - name: PREMISES
775
774
  desc: >
776
775
  Comma-separated references to the SOLUTION-PREMISES objects the rule
777
776
  rests on, i.e. the assumptions, dependencies, and risks whose failure
778
777
  calls for revisiting it.
779
- value: list([[REQS:SP.PREMISE:*]])
778
+ value: list([[PREMISE:*]])
780
779
  optional: true
781
780
 
782
781
  - kind: REQS
@@ -800,7 +799,7 @@
800
799
  https://link.springer.com/book/10.1007/978-3-662-49851-4
801
800
  diagram:
802
801
  type: grid
803
- nodes: "[[REQS:DW.WORKFLOW:*]]"
802
+ nodes: "[[WORKFLOW:*]]"
804
803
  properties:
805
804
  - ACTORS
806
805
  config:
@@ -832,7 +831,7 @@
832
831
  final: FINAL
833
832
  diagram:
834
833
  type: graph
835
- edges: "[[REQS:DW.WORKFLOW:*.HANDOFF:*]]"
834
+ edges: "[[HANDOFF:*]]"
836
835
  edgeSource: FROM
837
836
  edgeTarget: TO
838
837
  onlyConnected: true
@@ -846,13 +845,13 @@
846
845
  Comma-separated references to the User Personas objects taking part in the
847
846
  workflow, in the order of their first appearance, so that every `ACTOR` of
848
847
  an activity is listed here.
849
- value: list([[REQS:UP.PERSONA:*]])
848
+ value: list([[PERSONA:*]])
850
849
  - name: OWNER
851
850
  desc: >
852
851
  Reference to the User Personas object (usually a `Stakeholder`) accountable
853
852
  for the workflow as a whole, i.e. for its outcome and its rules, as opposed
854
853
  to the actors performing its activities.
855
- value: "[[REQS:UP.PERSONA:*]]"
854
+ value: "[[PERSONA:*]]"
856
855
  optional: true
857
856
  - name: TRIGGER
858
857
  desc: >
@@ -867,20 +866,20 @@
867
866
  Comma-separated references to the User Journey objects the workflow spans,
868
867
  i.e. the per-persona experiences of which the workflow is the cross-persona
869
868
  counterpart.
870
- value: list([[REQS:UJ.JOURNEY:*]])
869
+ value: list([[JOURNEY:*]])
871
870
  optional: true
872
871
  - name: TERMS
873
872
  desc: >
874
873
  Comma-separated references to the GLOSSARY terms of type `Activity` the
875
874
  workflow realizes, anchoring it in the ubiquitous language.
876
- value: list([[REQS:DG.TERM:*]])
875
+ value: list([[TERM:*]])
877
876
  optional: true
878
877
  - name: RULES
879
878
  desc: >
880
879
  Comma-separated references to the DOMAIN-RULES objects governing the
881
880
  workflow as a whole (e.g. a deadline or an approval policy), while a rule
882
881
  checked at a single handoff is referenced from the handoff instead.
883
- value: list([[REQS:DR.RULE:*]])
882
+ value: list([[RULE:*]])
884
883
  optional: true
885
884
  childs:
886
885
  - kind: ACTIVITY
@@ -901,7 +900,7 @@
901
900
  sending the invitations) or `Time` for a waiting period ending with
902
901
  a deadline; several parties are given only for an activity they
903
902
  perform jointly, as a change of the acting party is a handoff.
904
- value: list([[REQS:UP.PERSONA:*]], enum(System,Time))
903
+ value: list([[PERSONA:*]], enum(System,Time))
905
904
  - name: INITIAL
906
905
  desc: >
907
906
  Whether the activity is the initial one, i.e. the single activity
@@ -933,11 +932,11 @@
933
932
  props:
934
933
  - name: FROM
935
934
  desc: The activity (of the same workflow) the handoff departs from.
936
- value: "[[REQS:DW.WORKFLOW:*.ACTIVITY:*]]"
935
+ value: "[[ACTIVITY:*]]"
937
936
  local: true
938
937
  - name: TO
939
938
  desc: The activity (of the same workflow) the handoff arrives at.
940
- value: "[[REQS:DW.WORKFLOW:*.ACTIVITY:*]]"
939
+ value: "[[ACTIVITY:*]]"
941
940
  local: true
942
941
  - name: CONDITION
943
942
  desc: >
@@ -950,7 +949,7 @@
950
949
  desc: >
951
950
  Comma-separated references to the DOMAIN-RULES objects the
952
951
  handoff enforces, usually through its `CONDITION`.
953
- value: list([[REQS:DR.RULE:*]])
952
+ value: list([[RULE:*]])
954
953
  optional: true
955
954
 
956
955
  - kind: REQS
@@ -971,7 +970,7 @@
971
970
  https://www.ivarjacobson.com/publications/white-papers/use-case-20-e-book
972
971
  diagram:
973
972
  type: grid
974
- nodes: "[[REQS:UC.USE-CASE:*]]"
973
+ nodes: "[[USE-CASE:*]]"
975
974
  config:
976
975
  size-node-height-scale: 4
977
976
  grid-columns-max: 4
@@ -992,9 +991,8 @@
992
991
  diagram:
993
992
  type: hub
994
993
  center: self
995
- nodes: "[[REQS:UC.USE-CASE:*]], [[REQS:UP.PERSONA:*]], [[REQS:UJ.JOURNEY:*.STEP:*]],
996
- [[REQS:DW.WORKFLOW:*.ACTIVITY:*]], [[REQS:FR.REQUIREMENT:*]], [[REQS:DR.RULE:*]],
997
- [[DATA:SM.LIFECYCLE:*.TRANSITION:*]]"
994
+ nodes: "[[USE-CASE:*]], [[PERSONA:*]], [[STEP:*]], [[ACTIVITY:*]],
995
+ [[FR.REQUIREMENT:*]], [[RULE:*]], [[TRANSITION:*]]"
998
996
  labeled: true
999
997
  qualified: true
1000
998
  config:
@@ -1005,33 +1003,33 @@
1005
1003
  desc: >
1006
1004
  Reference to the PERSONAS object denoting the primary actor pursuing the
1007
1005
  goal.
1008
- value: "[[REQS:UP.PERSONA:*]]"
1006
+ value: "[[PERSONA:*]]"
1009
1007
  - name: JOURNEYS
1010
1008
  desc: >
1011
1009
  Comma-separated references to the User Journey STEP objects the use case
1012
1010
  covers, tracing the journey into the use cases.
1013
- value: list([[REQS:UJ.JOURNEY:*.STEP:*]])
1011
+ value: list([[STEP:*]])
1014
1012
  optional: true
1015
1013
  - name: ACTIVITIES
1016
1014
  desc: >
1017
1015
  Comma-separated references to the Domain Workflow ACTIVITY objects within
1018
1016
  which the actor performs the use case, tracing the workflow into the use
1019
1017
  cases; omitted for a use case outside any workflow.
1020
- value: list([[REQS:DW.WORKFLOW:*.ACTIVITY:*]])
1018
+ value: list([[ACTIVITY:*]])
1021
1019
  optional: true
1022
1020
  - name: REQUIREMENTS
1023
1021
  desc: >
1024
1022
  Comma-separated references to the FUNCTIONAL-REQUIREMENTS objects the use
1025
1023
  case exercises, i.e. whose behavior its scenarios walk through, so that every
1026
1024
  Functional Requirement is exercised by at least one use case.
1027
- value: list([[REQS:FR.*]])
1025
+ value: list([[FR.*]])
1028
1026
  optional: true
1029
1027
  - name: RULES
1030
1028
  desc: >
1031
1029
  Comma-separated references to the DOMAIN-RULES objects the scenarios of
1032
1030
  the use case apply, i.e. whose condition a scenario step checks or enforces
1033
1031
  (e.g. an access rule in an authentication step).
1034
- value: list([[REQS:DR.RULE:*]])
1032
+ value: list([[RULE:*]])
1035
1033
  optional: true
1036
1034
  - name: INCLUDES
1037
1035
  desc: >
@@ -1040,7 +1038,7 @@
1040
1038
  invokes (e.g. `The attendee authenticates ([[USE-CASE:authenticate]]).`),
1041
1039
  factoring a flow shared by several use cases out into a use case of its own
1042
1040
  instead of restating its steps.
1043
- value: list([[REQS:UC.USE-CASE:*]])
1041
+ value: list([[USE-CASE:*]])
1044
1042
  optional: true
1045
1043
  acyclic: true
1046
1044
  - name: PRE-CONDITION
@@ -1122,8 +1120,8 @@
1122
1120
  https://www.omg.org/spec/UML/2.5.1
1123
1121
  diagram:
1124
1122
  type: graph
1125
- nodes: "[[DATA:DM.ENTITY:*]]"
1126
- edges: "[[DATA:DM.ENTITY:*.RELATION:*]]"
1123
+ nodes: "[[DM.ENTITY:*]]"
1124
+ edges: "[[RELATION:*]]"
1127
1125
  childs:
1128
1126
  - kind: ENTITY
1129
1127
  name: "[A-Z][a-zA-Z0-9]*"
@@ -1134,8 +1132,8 @@
1134
1132
  diagram:
1135
1133
  type: hub
1136
1134
  center: self
1137
- nodes: "[[DATA:DM.ENTITY:*]]"
1138
- edges: "[[DATA:DM.ENTITY:*.RELATION:*]]"
1135
+ nodes: "[[DM.ENTITY:*]]"
1136
+ edges: "[[RELATION:*]]"
1139
1137
  config:
1140
1138
  size-node-width-max: 440
1141
1139
  props:
@@ -1144,14 +1142,14 @@
1144
1142
  Comma-separated references to the FUNCTIONAL-REQUIREMENTS objects the
1145
1143
  entity supports, i.e. whose behavior needs the information it carries,
1146
1144
  tracing the requirements into the data model.
1147
- value: list([[REQS:FR.*]])
1145
+ value: list([[FR.*]])
1148
1146
  optional: true
1149
1147
  - name: TERMS
1150
1148
  desc: >
1151
1149
  Comma-separated references to the GLOSSARY terms the entity materializes,
1152
1150
  i.e. the domain terms whose information it carries, so that every entity
1153
1151
  is anchored in the ubiquitous language and every term shows its data.
1154
- value: list([[REQS:DG.TERM:*]])
1152
+ value: list([[TERM:*]])
1155
1153
  optional: true
1156
1154
  childs:
1157
1155
  - kind: ATTRIBUTE
@@ -1222,7 +1220,7 @@
1222
1220
  props:
1223
1221
  - name: TARGET
1224
1222
  desc: Reference to the DATA-MODEL entity the directed relation targets.
1225
- value: "[[DATA:DM.ENTITY:*]]"
1223
+ value: "[[DM.ENTITY:*]]"
1226
1224
  - name: KIND
1227
1225
  desc: >
1228
1226
  The kind of the directed relation: `association` for a plain
@@ -1259,7 +1257,7 @@
1259
1257
  https://www.omg.org/spec/UML/2.5.1
1260
1258
  diagram:
1261
1259
  type: grid
1262
- nodes: "[[DATA:SM.LIFECYCLE:*]]"
1260
+ nodes: "[[LIFECYCLE:*]]"
1263
1261
  properties:
1264
1262
  - ENTITY
1265
1263
  config:
@@ -1283,7 +1281,7 @@
1283
1281
  final: FINAL
1284
1282
  diagram:
1285
1283
  type: graph
1286
- edges: "[[DATA:SM.LIFECYCLE:*.TRANSITION:*]]"
1284
+ edges: "[[TRANSITION:*]]"
1287
1285
  edgeSource: FROM
1288
1286
  edgeTarget: TO
1289
1287
  onlyConnected: true
@@ -1297,7 +1295,7 @@
1297
1295
  desc: >
1298
1296
  Reference to the DATA-MODEL entity whose lifecycle this models, at most one
1299
1297
  lifecycle per entity (an entity without a lifecycle has a trivial one).
1300
- value: "[[DATA:DM.ENTITY:*]]"
1298
+ value: "[[DM.ENTITY:*]]"
1301
1299
  unique: true
1302
1300
  childs:
1303
1301
  - kind: STATE
@@ -1348,11 +1346,11 @@
1348
1346
  props:
1349
1347
  - name: FROM
1350
1348
  desc: The state (of the same lifecycle) the transition departs from.
1351
- value: "[[DATA:SM.LIFECYCLE:*.STATE:*]]"
1349
+ value: "[[STATE:*]]"
1352
1350
  local: true
1353
1351
  - name: TO
1354
1352
  desc: The state (of the same lifecycle) the transition arrives at.
1355
- value: "[[DATA:SM.LIFECYCLE:*.STATE:*]]"
1353
+ value: "[[STATE:*]]"
1356
1354
  local: true
1357
1355
  - name: ACTOR
1358
1356
  desc: >
@@ -1360,7 +1358,7 @@
1360
1358
  the transition, and/or `System` for a transition the solution
1361
1359
  triggers on its own or `Time` for one triggered by the passing of
1362
1360
  time (e.g. an expiry); omitted when the trigger is irrelevant.
1363
- value: list([[REQS:UP.PERSONA:*]], enum(System,Time))
1361
+ value: list([[PERSONA:*]], enum(System,Time))
1364
1362
  optional: true
1365
1363
  - name: GUARD
1366
1364
  desc: >
@@ -1373,7 +1371,7 @@
1373
1371
  desc: >
1374
1372
  Comma-separated references to the DOMAIN-RULES objects the
1375
1373
  transition enforces, usually through its `GUARD`.
1376
- value: list([[REQS:DR.RULE:*]])
1374
+ value: list([[RULE:*]])
1377
1375
  optional: true
1378
1376
  - name: USE-CASES
1379
1377
  desc: >
@@ -1382,7 +1380,7 @@
1382
1380
  causes the state change, tracing the transition into the use
1383
1381
  cases exercising it; omitted for a transition no use case
1384
1382
  triggers (e.g. one triggered by `Time` or by the system alone).
1385
- value: list([[REQS:UC.USE-CASE:*]])
1383
+ value: list([[USE-CASE:*]])
1386
1384
  optional: true
1387
1385
 
1388
1386
  - kind: DATA
@@ -1409,8 +1407,8 @@
1409
1407
  https://docs.oasis-open.org/xacml/3.0/xacml-3.0-core-spec-os-en.html
1410
1408
  diagram:
1411
1409
  type: graph
1412
- nodes: "[[DATA:AM.ROLE:*]], [[DATA:DM.ENTITY:*]]"
1413
- edges: "[[DATA:AM.ROLE:*.PERMISSION:*]]"
1410
+ nodes: "[[ROLE:*]], [[DM.ENTITY:*]]"
1411
+ edges: "[[PERMISSION:*]]"
1414
1412
  edgeTarget: ENTITY
1415
1413
  onlyConnected: true
1416
1414
  qualified: true
@@ -1431,8 +1429,7 @@
1431
1429
  type: hub
1432
1430
  center: self
1433
1431
  deep: true
1434
- nodes: "[[DATA:AM.ROLE:*]], [[REQS:UP.PERSONA:*]], [[REQS:DG.TERM:*]], [[DATA:DM.ENTITY:*]],
1435
- [[REQS:DR.RULE:*]]"
1432
+ nodes: "[[ROLE:*]], [[PERSONA:*]], [[TERM:*]], [[DM.ENTITY:*]], [[RULE:*]]"
1436
1433
  labeled: true
1437
1434
  qualified: true
1438
1435
  config:
@@ -1448,12 +1445,12 @@
1448
1445
  `Actor` denoting the external systems holding the role (e.g. a registration
1449
1446
  system calling the machine-facing interface), as an external system is no
1450
1447
  persona.
1451
- value: list([[REQS:UP.PERSONA:*]], [[REQS:DG.TERM:*]])
1448
+ value: list([[PERSONA:*]], [[TERM:*]])
1452
1449
  - name: TERM
1453
1450
  desc: >
1454
1451
  Reference to the GLOSSARY term of type `Actor` the role grants, anchoring
1455
1452
  the role in the ubiquitous language.
1456
- value: "[[REQS:DG.TERM:*]]"
1453
+ value: "[[TERM:*]]"
1457
1454
  optional: true
1458
1455
  - name: INHERITS
1459
1456
  desc: >
@@ -1461,7 +1458,7 @@
1461
1458
  this role holds in addition to its own (a role hierarchy, e.g. a manager
1462
1459
  inheriting the rights of a moderator), where an inherited permission is
1463
1460
  not restated.
1464
- value: list([[DATA:AM.ROLE:*]])
1461
+ value: list([[ROLE:*]])
1465
1462
  optional: true
1466
1463
  acyclic: true
1467
1464
  childs:
@@ -1481,7 +1478,7 @@
1481
1478
  props:
1482
1479
  - name: ENTITY
1483
1480
  desc: Reference to the DATA-MODEL entity the permission is granted on.
1484
- value: "[[DATA:DM.ENTITY:*]]"
1481
+ value: "[[DM.ENTITY:*]]"
1485
1482
  - name: OPERATIONS
1486
1483
  desc: >
1487
1484
  Comma-separated operations the role may perform on the entity: the
@@ -1490,14 +1487,14 @@
1490
1487
  (a state change is not an `Update`: it is granted by its transition
1491
1488
  only), where every persona named as `ACTOR` of a transition holds
1492
1489
  a role granting it.
1493
- value: list(enum(Create,Read,Update,Delete), [[DATA:SM.LIFECYCLE:*.TRANSITION:*]])
1490
+ value: list(enum(Create,Read,Update,Delete), [[TRANSITION:*]])
1494
1491
  - name: STATES
1495
1492
  desc: >
1496
1493
  Comma-separated references to the STATE-MODEL states of the entity
1497
1494
  in which the operations are granted (`Create` needs none, as a
1498
1495
  creation enters the initial state); omitted when granted in every
1499
1496
  state or when the entity has no lifecycle.
1500
- value: list([[DATA:SM.LIFECYCLE:*.STATE:*]])
1497
+ value: list([[STATE:*]])
1501
1498
  optional: true
1502
1499
  - name: CONDITION
1503
1500
  desc: >
@@ -1514,7 +1511,7 @@
1514
1511
  Comma-separated references to the DOMAIN-RULES objects justifying
1515
1512
  or bounding the permission, i.e. the rules whose statement grants
1516
1513
  or limits the right.
1517
- value: list([[REQS:DR.RULE:*]])
1514
+ value: list([[RULE:*]])
1518
1515
  optional: true
1519
1516
 
1520
1517
  - kind: APIS
@@ -1543,7 +1540,7 @@
1543
1540
  https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap12.html
1544
1541
  diagram:
1545
1542
  type: grid
1546
- nodes: "[[APIS:IM.INTERFACE:*]]"
1543
+ nodes: "[[INTERFACE:*]]"
1547
1544
  properties:
1548
1545
  - KIND
1549
1546
  - DIRECTION
@@ -1563,7 +1560,7 @@
1563
1560
  diagram:
1564
1561
  type: hub
1565
1562
  center: self
1566
- nodes: "[[APIS:IM.INTERFACE:*]], [[APIS:ID.TYPE:*]], [[APIS:IE.ENDPOINT:*]]"
1563
+ nodes: "[[INTERFACE:*]], [[TYPE:*]], [[ENDPOINT:*]]"
1567
1564
  labeled: true
1568
1565
  qualified: true
1569
1566
  config:
@@ -1603,7 +1600,7 @@
1603
1600
  Comma-separated references to the PERSONAS objects which use the interface
1604
1601
  (the external systems using it reference the interface from the
1605
1602
  CONTEXT-VIEW instead).
1606
- value: list([[REQS:UP.PERSONA:*]])
1603
+ value: list([[PERSONA:*]])
1607
1604
  optional: true
1608
1605
 
1609
1606
  - kind: APIS
@@ -1625,7 +1622,7 @@
1625
1622
  https://spec.graphql.org/October2021/
1626
1623
  diagram:
1627
1624
  type: graph
1628
- nodes: "[[APIS:ID.TYPE:*]]"
1625
+ nodes: "[[TYPE:*]]"
1629
1626
  deep: true
1630
1627
  onlyConnected: true
1631
1628
  labeled: true
@@ -1648,7 +1645,7 @@
1648
1645
  diagram:
1649
1646
  type: hub
1650
1647
  center: self
1651
- nodes: "[[APIS:ID.TYPE:*]], [[APIS:IM.INTERFACE:*]]"
1648
+ nodes: "[[TYPE:*]], [[INTERFACE:*]]"
1652
1649
  deep: true
1653
1650
  labeled: true
1654
1651
  qualified: true
@@ -1661,7 +1658,7 @@
1661
1658
  Comma-separated references to the INTERFACE-MODEL objects the type is
1662
1659
  exchanged through, i.e. the interfaces whose endpoints consume or return it,
1663
1660
  directly or through the fields of another type.
1664
- value: list([[APIS:IM.INTERFACE:*]])
1661
+ value: list([[INTERFACE:*]])
1665
1662
  - name: BASE
1666
1663
  desc: >
1667
1664
  The underlying type of a non-object (value) type: one of the primitives
@@ -1673,7 +1670,7 @@
1673
1670
  object (an alias), where several
1674
1671
  comma-separated alternatives form a named union type; omitted for
1675
1672
  an object type composed of fields.
1676
- value: list([[APIS:ID.TYPE:*]], /^(?:boolean|string|text|integer|float|decimal|uuid|bytes|date|time|datetime|duration|any|enum\((?:[A-Za-z0-9_-]+)(?:,\s*[A-Za-z0-9_-]+)*\))$/)
1673
+ value: list([[TYPE:*]], /^(?:boolean|string|text|integer|float|decimal|uuid|bytes|date|time|datetime|duration|any|enum\((?:[A-Za-z0-9_-]+)(?:,\s*[A-Za-z0-9_-]+)*\))$/)
1677
1674
  optional: true
1678
1675
  - name: EXTENDS
1679
1676
  desc: >
@@ -1683,7 +1680,7 @@
1683
1680
  envelope type, or a GraphQL type implementing interfaces), where an
1684
1681
  inherited field is not redeclared; omitted for a type carrying a
1685
1682
  `BASE`.
1686
- value: list([[APIS:ID.TYPE:*]])
1683
+ value: list([[TYPE:*]])
1687
1684
  acyclic: true
1688
1685
  optional: true
1689
1686
  - name: MATERIALIZES
@@ -1692,7 +1689,7 @@
1692
1689
  materializes (e.g. as a data transfer object carrying the
1693
1690
  attributes of one entity, or as a view flattening several
1694
1691
  entities), tracing the interface into the data model.
1695
- value: list([[DATA:DM.ENTITY:*]])
1692
+ value: list([[DM.ENTITY:*]])
1696
1693
  optional: true
1697
1694
  childs:
1698
1695
  - kind: FIELD
@@ -1715,7 +1712,7 @@
1715
1712
  enumeration `enum(XXX,YYY[,...])` (a reusable one is a `TYPE`
1716
1713
  object with an `enum(...)` base), where several comma-separated
1717
1714
  alternatives form a union type.
1718
- value: list([[APIS:ID.TYPE:*]], /^(?:boolean|string|text|integer|float|decimal|uuid|bytes|date|time|datetime|duration|any|enum\((?:[A-Za-z0-9_-]+)(?:,\s*[A-Za-z0-9_-]+)*\))$/)
1715
+ value: list([[TYPE:*]], /^(?:boolean|string|text|integer|float|decimal|uuid|bytes|date|time|datetime|duration|any|enum\((?:[A-Za-z0-9_-]+)(?:,\s*[A-Za-z0-9_-]+)*\))$/)
1719
1716
  - name: ARITY
1720
1717
  desc: >
1721
1718
  The arity (cardinality) of the field value: `0..1` or `?`
@@ -1758,7 +1755,7 @@
1758
1755
  object (a scalar, enumeration, alias, or union
1759
1756
  type carrying a `BASE`); an object type composed of fields is no
1760
1757
  value type and hence not admitted, as a literal cannot express it.
1761
- value: list([[APIS:ID.TYPE:*]], /^(?:boolean|string|text|integer|float|decimal|uuid|bytes|date|time|datetime|duration|any|enum\((?:[A-Za-z0-9_-]+)(?:,\s*[A-Za-z0-9_-]+)*\))$/)
1758
+ value: list([[TYPE:*]], /^(?:boolean|string|text|integer|float|decimal|uuid|bytes|date|time|datetime|duration|any|enum\((?:[A-Za-z0-9_-]+)(?:,\s*[A-Za-z0-9_-]+)*\))$/)
1762
1759
  - name: VALUE
1763
1760
  desc: >
1764
1761
  The literal value of the constant (e.g. `100`, `event/`), matching
@@ -1788,7 +1785,7 @@
1788
1785
  https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap12.html
1789
1786
  diagram:
1790
1787
  type: graph
1791
- nodes: "[[APIS:IE.ENDPOINT:*]], [[APIS:ID.TYPE:*]]"
1788
+ nodes: "[[ENDPOINT:*]], [[TYPE:*]]"
1792
1789
  deep: true
1793
1790
  onlyConnected: true
1794
1791
  labeled: true
@@ -1818,8 +1815,8 @@
1818
1815
  diagram:
1819
1816
  type: hub
1820
1817
  center: self
1821
- nodes: "[[APIS:IE.ENDPOINT:*]], [[APIS:ID.TYPE:*]], [[APIS:ID.TYPE:*.CONSTANT:*]], [[APIS:IM.INTERFACE:*]],
1822
- [[DATA:AM.ROLE:*.PERMISSION:*]]"
1818
+ nodes: "[[ENDPOINT:*]], [[TYPE:*]], [[CONSTANT:*]], [[INTERFACE:*]],
1819
+ [[PERMISSION:*]]"
1823
1820
  deep: true
1824
1821
  labeled: true
1825
1822
  qualified: true
@@ -1829,7 +1826,7 @@
1829
1826
  props:
1830
1827
  - name: INTERFACE
1831
1828
  desc: The INTERFACES object the endpoint belongs to and is addressed within.
1832
- value: "[[APIS:IM.INTERFACE:*]]"
1829
+ value: "[[INTERFACE:*]]"
1833
1830
  - name: PERMISSIONS
1834
1831
  desc: >
1835
1832
  Comma-separated references to the AUTHORIZATION-MODEL permission objects
@@ -1838,7 +1835,7 @@
1838
1835
  the operation, so that the authorization of every endpoint is stated
1839
1836
  rather than left to the implementation; omitted for an endpoint open to
1840
1837
  every caller.
1841
- value: list([[DATA:AM.ROLE:*.PERMISSION:*]])
1838
+ value: list([[PERMISSION:*]])
1842
1839
  optional: true
1843
1840
  - name: OPERATION
1844
1841
  desc: |
@@ -1873,7 +1870,7 @@
1873
1870
  desc: >
1874
1871
  Comma-separated references to the USE-CASES objects the endpoint
1875
1872
  realizes, tracing the requirements into the interface.
1876
- value: list([[REQS:UC.USE-CASE:*]])
1873
+ value: list([[USE-CASE:*]])
1877
1874
  optional: true
1878
1875
  childs:
1879
1876
  - kind: OPTION
@@ -1896,7 +1893,7 @@
1896
1893
  enumeration `enum(XXX,YYY[,...])` (a reusable one is a `TYPE`
1897
1894
  object with an `enum(...)` base), where several comma-separated
1898
1895
  alternatives form a union type.
1899
- value: list([[APIS:ID.TYPE:*]], /^(?:boolean|string|text|integer|float|decimal|uuid|bytes|date|time|datetime|duration|any|enum\((?:[A-Za-z0-9_-]+)(?:,\s*[A-Za-z0-9_-]+)*\))$/)
1896
+ value: list([[TYPE:*]], /^(?:boolean|string|text|integer|float|decimal|uuid|bytes|date|time|datetime|duration|any|enum\((?:[A-Za-z0-9_-]+)(?:,\s*[A-Za-z0-9_-]+)*\))$/)
1900
1897
  - name: ALIAS
1901
1898
  desc: >
1902
1899
  Comma-separated alternative names of the option in the
@@ -1945,7 +1942,7 @@
1945
1942
  inline enumeration `enum(XXX,YYY[,...])` (a reusable one is a
1946
1943
  `TYPE` object with an `enum(...)` base), where several comma-separated
1947
1944
  alternatives form a union type.
1948
- value: list([[APIS:ID.TYPE:*]], /^(?:boolean|string|text|integer|float|decimal|uuid|bytes|date|time|datetime|duration|any|enum\((?:[A-Za-z0-9_-]+)(?:,\s*[A-Za-z0-9_-]+)*\))$/)
1945
+ value: list([[TYPE:*]], /^(?:boolean|string|text|integer|float|decimal|uuid|bytes|date|time|datetime|duration|any|enum\((?:[A-Za-z0-9_-]+)(?:,\s*[A-Za-z0-9_-]+)*\))$/)
1949
1946
  - name: ARITY
1950
1947
  desc: >
1951
1948
  The arity (cardinality) of the argument:
@@ -1989,7 +1986,7 @@
1989
1986
  enumeration `enum(XXX,YYY[,...])` (a reusable one is a `TYPE`
1990
1987
  object with an `enum(...)` base), where several comma-separated
1991
1988
  alternatives form a union type.
1992
- value: list([[APIS:ID.TYPE:*]], /^(?:boolean|string|text|integer|float|decimal|uuid|bytes|date|time|datetime|duration|any|enum\((?:[A-Za-z0-9_-]+)(?:,\s*[A-Za-z0-9_-]+)*\))$/)
1989
+ value: list([[TYPE:*]], /^(?:boolean|string|text|integer|float|decimal|uuid|bytes|date|time|datetime|duration|any|enum\((?:[A-Za-z0-9_-]+)(?:,\s*[A-Za-z0-9_-]+)*\))$/)
1993
1990
  - name: ARITY
1994
1991
  desc: >
1995
1992
  The arity (cardinality) of the result:
@@ -2030,7 +2027,7 @@
2030
2027
  optional: true
2031
2028
  diagram:
2032
2029
  type: grid
2033
- nodes: "[[UXUI:IC.PRINCIPLE:*]]"
2030
+ nodes: "[[PRINCIPLE:*]]"
2034
2031
  properties:
2035
2032
  - CATEGORY
2036
2033
  config:
@@ -2049,12 +2046,11 @@
2049
2046
  it rejects is its `TRADE-OFF`), and is not verifiable by a metric (a measurable
2050
2047
  quality bound is a Non-Functional Requirement instead).
2051
2048
  referenced:
2052
- - "[[UXUI:DP.PATTERN:*]]"
2049
+ - "[[PATTERN:*]]"
2053
2050
  diagram:
2054
2051
  type: hub
2055
2052
  center: self
2056
- nodes: "[[UXUI:IC.PRINCIPLE:*]], [[REQS:UP.PERSONA:*]], [[REQS:UJ.JOURNEY:*.STEP:*]],
2057
- [[UXUI:DP.PATTERN:*]]"
2053
+ nodes: "[[PRINCIPLE:*]], [[PERSONA:*]], [[STEP:*]], [[PATTERN:*]]"
2058
2054
  labeled: true
2059
2055
  qualified: true
2060
2056
  config:
@@ -2073,14 +2069,14 @@
2073
2069
  Comma-separated references to the User Personas objects whose experience
2074
2070
  the principle governs, omitted for a principle governing the experience of
2075
2071
  all users alike.
2076
- value: list([[REQS:UP.PERSONA:*]])
2072
+ value: list([[PERSONA:*]])
2077
2073
  optional: true
2078
2074
  - name: MOTIVATED-BY
2079
2075
  desc: >
2080
2076
  Comma-separated references to the User Journey step objects whose
2081
2077
  `PAIN-POINT` or `OPPORTUNITY` the principle answers, so that a principle is
2082
2078
  grounded in the observed experience rather than in taste alone.
2083
- value: list([[REQS:UJ.JOURNEY:*.STEP:*]])
2079
+ value: list([[STEP:*]])
2084
2080
  optional: true
2085
2081
  - name: TRADE-OFF
2086
2082
  desc: >
@@ -2112,7 +2108,7 @@
2112
2108
  optional: true
2113
2109
  diagram:
2114
2110
  type: grid
2115
- nodes: "[[UXUI:LC.CONVENTION:*]]"
2111
+ nodes: "[[CONVENTION:*]]"
2116
2112
  properties:
2117
2113
  - CATEGORY
2118
2114
  config:
@@ -2144,21 +2140,21 @@
2144
2140
  Comma-separated references to the User Personas objects the convention
2145
2141
  addresses, omitted for a convention governing the text shown to all users
2146
2142
  alike.
2147
- value: list([[REQS:UP.PERSONA:*]])
2143
+ value: list([[PERSONA:*]])
2148
2144
  optional: true
2149
2145
  - name: PRINCIPLES
2150
2146
  desc: >
2151
2147
  Comma-separated references to the INTERACTION-CONCEPT objects the convention
2152
2148
  supports in wording, so that a convention is grounded in the interaction
2153
2149
  philosophy rather than in taste alone.
2154
- value: list([[UXUI:IC.PRINCIPLE:*]])
2150
+ value: list([[PRINCIPLE:*]])
2155
2151
  optional: true
2156
2152
  - name: TERMS
2157
2153
  desc: >
2158
2154
  Comma-separated references to the GLOSSARY terms whose surfacing in the
2159
2155
  user-facing text the convention governs, so that the Domain Glossary defines
2160
2156
  the term and the convention states how it is written.
2161
- value: list([[REQS:DG.TERM:*]])
2157
+ value: list([[TERM:*]])
2162
2158
  optional: true
2163
2159
  - name: EXAMPLE
2164
2160
  desc: >
@@ -2183,7 +2179,7 @@
2183
2179
  optional: true
2184
2180
  diagram:
2185
2181
  type: grid
2186
- nodes: "[[UXUI:DP.PATTERN:*]]"
2182
+ nodes: "[[PATTERN:*]]"
2187
2183
  properties:
2188
2184
  - CATEGORY
2189
2185
  config:
@@ -2205,7 +2201,7 @@
2205
2201
  diagram:
2206
2202
  type: hub
2207
2203
  center: self
2208
- nodes: "[[UXUI:DP.PATTERN:*]], [[UXUI:IC.PRINCIPLE:*]], [[UXUI:DS.STORYBOARD:*]]"
2204
+ nodes: "[[PATTERN:*]], [[PRINCIPLE:*]], [[STORYBOARD:*]]"
2209
2205
  deep: true
2210
2206
  labeled: true
2211
2207
  qualified: true
@@ -2226,7 +2222,7 @@
2226
2222
  Comma-separated references to the User Personas objects whose interaction
2227
2223
  the pattern structures, omitted for a pattern applied to the interaction of
2228
2224
  all users alike.
2229
- value: list([[REQS:UP.PERSONA:*]])
2225
+ value: list([[PERSONA:*]])
2230
2226
  optional: true
2231
2227
  - name: CONTEXT
2232
2228
  desc: >
@@ -2242,7 +2238,7 @@
2242
2238
  Comma-separated references to the INTERACTION-CONCEPT objects the pattern
2243
2239
  embodies, so that every principle is shown to be honored by at least one
2244
2240
  pattern rather than merely declared.
2245
- value: list([[UXUI:IC.PRINCIPLE:*]])
2241
+ value: list([[PRINCIPLE:*]])
2246
2242
  optional: true
2247
2243
  - name: USES
2248
2244
  desc: >
@@ -2250,7 +2246,7 @@
2250
2246
  pattern is composed of (e.g. a `Master-Detail` using an `Inline Edit` in
2251
2247
  its detail), so that the patterns form a language of related structures
2252
2248
  rather than a flat catalogue.
2253
- value: list([[UXUI:DP.PATTERN:*]])
2249
+ value: list([[PATTERN:*]])
2254
2250
  optional: true
2255
2251
  - name: TRADE-OFF
2256
2252
  desc: >
@@ -2277,7 +2273,7 @@
2277
2273
  optional: true
2278
2274
  diagram:
2279
2275
  type: grid
2280
- nodes: "[[UXUI:DS.STORYBOARD:*]]"
2276
+ nodes: "[[STORYBOARD:*]]"
2281
2277
  properties:
2282
2278
  - ACTORS
2283
2279
  config:
@@ -2295,8 +2291,7 @@
2295
2291
  diagram:
2296
2292
  type: hub
2297
2293
  center: self
2298
- nodes: "[[UXUI:DS.STORYBOARD:*]], [[REQS:UP.PERSONA:*]],
2299
- [[REQS:UC.USE-CASE:*.SCENARIO:*]], [[UXUI:DP.PATTERN:*]]"
2294
+ nodes: "[[STORYBOARD:*]], [[PERSONA:*]], [[SCENARIO:*]], [[PATTERN:*]]"
2300
2295
  deep: true
2301
2296
  labeled: true
2302
2297
  qualified: true
@@ -2310,12 +2305,12 @@
2310
2305
  storyboard tells, in the order of their appearance, so that a storyboard
2311
2306
  switching its viewpoint between actors (e.g. from a moderator to a
2312
2307
  presenter) names all of them.
2313
- value: list([[REQS:UP.PERSONA:*]])
2308
+ value: list([[PERSONA:*]])
2314
2309
  - name: SCENARIO
2315
2310
  desc: >
2316
2311
  Reference to the USE-CASES scenario object the storyboard renders as user
2317
2312
  interface, omitted for a storyboard of a flow no scenario covers.
2318
- value: "[[REQS:UC.USE-CASE:*.SCENARIO:*]]"
2313
+ value: "[[SCENARIO:*]]"
2319
2314
  optional: true
2320
2315
  childs:
2321
2316
  - kind: FRAME
@@ -2341,14 +2336,14 @@
2341
2336
  Reference to the User Personas object from whose viewpoint the frame
2342
2337
  is depicted, given whenever the storyboard names several `ACTORS`
2343
2338
  and omitted for a storyboard of a single actor.
2344
- value: "[[REQS:UP.PERSONA:*]]"
2339
+ value: "[[PERSONA:*]]"
2345
2340
  optional: true
2346
2341
  - name: PATTERNS
2347
2342
  desc: >
2348
2343
  Comma-separated references to the DIALOG-PATTERNS objects the frame
2349
2344
  instantiates, so that a pattern is shown to recur across the
2350
2345
  concrete flows rather than merely being catalogued.
2351
- value: list([[UXUI:DP.PATTERN:*]])
2346
+ value: list([[PATTERN:*]])
2352
2347
  optional: true
2353
2348
  - name: SKETCH
2354
2349
  desc: >
@@ -2383,7 +2378,7 @@
2383
2378
  optional: true
2384
2379
  diagram:
2385
2380
  type: grid
2386
- nodes: "[[UXUI:VD.ELEMENT:*]]"
2381
+ nodes: "[[ELEMENT:*]]"
2387
2382
  properties:
2388
2383
  - CATEGORY
2389
2384
  config:
@@ -2409,7 +2404,7 @@
2409
2404
  diagram:
2410
2405
  type: hub
2411
2406
  center: self
2412
- nodes: "[[UXUI:VD.ELEMENT:*]], [[REQS:UP.PERSONA:*]], [[UXUI:IC.PRINCIPLE:*]], [[UXUI:VD.MOCKUP:*]]"
2407
+ nodes: "[[ELEMENT:*]], [[PERSONA:*]], [[PRINCIPLE:*]], [[MOCKUP:*]]"
2413
2408
  labeled: true
2414
2409
  qualified: true
2415
2410
  config:
@@ -2431,14 +2426,14 @@
2431
2426
  Comma-separated references to the User Personas objects for whom the
2432
2427
  element governs the appearance, omitted for an element governing the
2433
2428
  appearance for all users alike.
2434
- value: list([[REQS:UP.PERSONA:*]])
2429
+ value: list([[PERSONA:*]])
2435
2430
  optional: true
2436
2431
  - name: PRINCIPLES
2437
2432
  desc: >
2438
2433
  Comma-separated references to the INTERACTION-CONCEPT objects the element
2439
2434
  supports in appearance, so that an element is grounded in the interaction
2440
2435
  philosophy rather than in taste alone.
2441
- value: list([[UXUI:IC.PRINCIPLE:*]])
2436
+ value: list([[PRINCIPLE:*]])
2442
2437
  optional: true
2443
2438
  - name: SOURCE
2444
2439
  desc: >
@@ -2468,20 +2463,20 @@
2468
2463
  desc: >
2469
2464
  Comma-separated references to the User Personas objects who see the
2470
2465
  depicted screen.
2471
- value: list([[REQS:UP.PERSONA:*]])
2466
+ value: list([[PERSONA:*]])
2472
2467
  - name: STORYBOARD
2473
2468
  desc: >
2474
2469
  Reference to the DIALOG-STORYBOARD object whose flow the depicted screen
2475
2470
  belongs to, so that the high-fidelity look traces back to the sketched
2476
2471
  flow, omitted for a mockup of a screen no storyboard covers.
2477
- value: "[[UXUI:DS.STORYBOARD:*]]"
2472
+ value: "[[STORYBOARD:*]]"
2478
2473
  optional: true
2479
2474
  - name: ELEMENTS
2480
2475
  desc: >
2481
2476
  Comma-separated references to the `ELEMENT` objects the mockup shows
2482
2477
  applied, so that an element is shown to be realized rather than merely
2483
2478
  declared.
2484
- value: list([[UXUI:VD.ELEMENT:*]])
2479
+ value: list([[ELEMENT:*]])
2485
2480
  - name: IMAGE
2486
2481
  desc: >
2487
2482
  An image (`![...](...)`) of the mockup, a high-fidelity rendering from
@@ -2507,9 +2502,9 @@
2507
2502
  https://www.iso.org/standard/74393.html
2508
2503
  diagram:
2509
2504
  type: hub
2510
- nodes: "[[ARCH:CV.ENTITY:*]]"
2505
+ nodes: "[[CV.ENTITY:*]]"
2511
2506
  center:
2512
- source: "[[META:TI]]"
2507
+ source: "[[TI]]"
2513
2508
  property: TITLE
2514
2509
  kind: Solution
2515
2510
  centerEdges:
@@ -2563,7 +2558,7 @@
2563
2558
  the domain (usually a term of type `Actor`, which covers an external system
2564
2559
  as a party acting in the domain), anchoring every boundary entity in the
2565
2560
  ubiquitous language.
2566
- value: list([[REQS:DG.TERM:*]])
2561
+ value: list([[TERM:*]])
2567
2562
  optional: true
2568
2563
  - name: INTERFACE
2569
2564
  desc: >
@@ -2572,7 +2567,7 @@
2572
2567
  `Provided` one) or offers (for a `Required` one); omitted when the
2573
2568
  interaction happens through the user interface or outside any modeled
2574
2569
  interface (e.g. a file exchange).
2575
- value: list([[APIS:IM.INTERFACE:*]])
2570
+ value: list([[INTERFACE:*]])
2576
2571
  optional: true
2577
2572
  - name: ACTORS
2578
2573
  desc: >
@@ -2582,7 +2577,7 @@
2582
2577
  the `Stakeholder` personas representing it, so the entity aggregates the
2583
2578
  personas instead of re-stating them; omitted when no persona stands behind
2584
2579
  the entity.
2585
- value: list([[REQS:UP.PERSONA:*]])
2580
+ value: list([[PERSONA:*]])
2586
2581
  optional: true
2587
2582
  - name: PREMISES
2588
2583
  desc: >
@@ -2591,7 +2586,7 @@
2591
2586
  structural interaction with the external party, the premise the reliance
2592
2587
  on it and the consequence of its failure, so the risky context entities
2593
2588
  are found by traversal.
2594
- value: list([[REQS:SP.PREMISE:*]])
2589
+ value: list([[PREMISE:*]])
2595
2590
  optional: true
2596
2591
  - name: DATA
2597
2592
  desc: >
@@ -2615,7 +2610,7 @@
2615
2610
  https://c4model.com/
2616
2611
  diagram:
2617
2612
  type: graph
2618
- nodes: "[[ARCH:FV.COMPONENT:*]]"
2613
+ nodes: "[[FV.COMPONENT:*]]"
2619
2614
  labeled: true
2620
2615
  properties:
2621
2616
  - KIND
@@ -2634,8 +2629,7 @@
2634
2629
  diagram:
2635
2630
  type: hub
2636
2631
  center: self
2637
- nodes: "[[ARCH:FV.COMPONENT:*]], [[REQS:FR.REQUIREMENT:*]], [[APIS:IM.INTERFACE:*]],
2638
- [[DATA:DM.ENTITY:*]]"
2632
+ nodes: "[[FV.COMPONENT:*]], [[FR.REQUIREMENT:*]], [[INTERFACE:*]], [[DM.ENTITY:*]]"
2639
2633
  labeled: true
2640
2634
  qualified: true
2641
2635
  properties:
@@ -2662,7 +2656,7 @@
2662
2656
  references the component it groups functionality within, and a component
2663
2657
  references the `Subsystem` it belongs to; omitted for a top-level
2664
2658
  component.
2665
- value: "[[ARCH:FV.COMPONENT:*]]"
2659
+ value: "[[FV.COMPONENT:*]]"
2666
2660
  optional: true
2667
2661
  acyclic: true
2668
2662
  - name: REALIZES
@@ -2670,7 +2664,7 @@
2670
2664
  Comma-separated references to the FUNCTIONAL-REQUIREMENTS objects the
2671
2665
  component realizes, i.e. whose capability its functionality delivers, so
2672
2666
  that every Functional Requirement is owned by at least one component.
2673
- value: list([[REQS:FR.*]])
2667
+ value: list([[FR.*]])
2674
2668
  optional: true
2675
2669
  - name: OWNS
2676
2670
  desc: >
@@ -2679,7 +2673,7 @@
2679
2673
  components access an owned entity through the owner's interfaces or hold
2680
2674
  derived copies only), so that every entity is owned by at most one
2681
2675
  component; omitted when the component owns no entity.
2682
- value: list([[DATA:DM.ENTITY:*]])
2676
+ value: list([[DM.ENTITY:*]])
2683
2677
  optional: true
2684
2678
  - name: PROVIDES
2685
2679
  desc: >
@@ -2687,7 +2681,7 @@
2687
2681
  provides, i.e. through which other components and external entities
2688
2682
  interact with it; omitted when the component provides no modeled interface
2689
2683
  (e.g. a user interface or an internal module).
2690
- value: list([[APIS:IM.INTERFACE:*]])
2684
+ value: list([[INTERFACE:*]])
2691
2685
  optional: true
2692
2686
  - name: CONSUMES
2693
2687
  desc: >
@@ -2696,7 +2690,7 @@
2696
2690
  `Required` interfaces offered by external entities, through which its
2697
2691
  dependencies are exercised; omitted when the component consumes no
2698
2692
  modeled interface.
2699
- value: list([[APIS:IM.INTERFACE:*]])
2693
+ value: list([[INTERFACE:*]])
2700
2694
  optional: true
2701
2695
  - name: DEPENDS-ON
2702
2696
  desc: >
@@ -2704,7 +2698,7 @@
2704
2698
  depends on at runtime, naming the target component only, while the
2705
2699
  interface through which a dependency is exercised is stated by `CONSUMES`
2706
2700
  where modeled.
2707
- value: list([[ARCH:FV.COMPONENT:*]])
2701
+ value: list([[FV.COMPONENT:*]])
2708
2702
  optional: true
2709
2703
 
2710
2704
  - kind: ARCH
@@ -2723,7 +2717,7 @@
2723
2717
  https://c4model.com/diagrams/container
2724
2718
  diagram:
2725
2719
  type: grid
2726
- nodes: "[[ARCH:TS.TIER:*]]"
2720
+ nodes: "[[TS.TIER:*]]"
2727
2721
  childs:
2728
2722
  - kind: TIER
2729
2723
  desc: |
@@ -2766,8 +2760,7 @@
2766
2760
  diagram:
2767
2761
  type: hub
2768
2762
  center: self
2769
- nodes: "[[ARCH:TS.TIER:*.COMPONENT:*]], [[ARCH:FV.COMPONENT:*]],
2770
- [[ARCH:DD.DECISION:*]]"
2763
+ nodes: "[[TS.TIER:*.COMPONENT:*]], [[FV.COMPONENT:*]], [[DECISION:*]]"
2771
2764
  labeled: true
2772
2765
  qualified: true
2773
2766
  properties:
@@ -3052,7 +3045,7 @@
3052
3045
  impact-analyzed; omitted for a component not tied to particular
3053
3046
  functional components (e.g. a language or a build tool used by
3054
3047
  all).
3055
- value: list([[ARCH:FV.COMPONENT:*]])
3048
+ value: list([[FV.COMPONENT:*]])
3056
3049
  optional: true
3057
3050
 
3058
3051
  - kind: ARCH
@@ -3074,7 +3067,7 @@
3074
3067
  https://www.informit.com/store/documenting-software-architectures-views-and-beyond-9780321552686
3075
3068
  diagram:
3076
3069
  type: grid
3077
- nodes: "[[ARCH:DA.ASPECT:*]]"
3070
+ nodes: "[[ASPECT:*]]"
3078
3071
  properties:
3079
3072
  - CATEGORY
3080
3073
  childs:
@@ -3121,7 +3114,7 @@
3121
3114
  https://www.wiley.com/en-us/Pattern+Oriented+Software+Architecture,+Volume+2,+Patterns+for+Concurrent+and+Networked+Objects-p-9781118725177
3122
3115
  diagram:
3123
3116
  type: graph
3124
- nodes: "[[ARCH:CO.UNIT:*]]"
3117
+ nodes: "[[UNIT:*]]"
3125
3118
  labeled: true
3126
3119
  properties:
3127
3120
  - KIND
@@ -3143,7 +3136,7 @@
3143
3136
  diagram:
3144
3137
  type: hub
3145
3138
  center: self
3146
- nodes: "[[ARCH:CO.UNIT:*]], [[ARCH:FV.COMPONENT:*]], [[ARCH:DV.NODE:*]]"
3139
+ nodes: "[[UNIT:*]], [[FV.COMPONENT:*]], [[NODE:*]]"
3147
3140
  labeled: true
3148
3141
  qualified: true
3149
3142
  properties:
@@ -3168,14 +3161,14 @@
3168
3161
  expressing the containment the kinds imply: a `Thread`, `Task`, `Pool`, or
3169
3162
  `EventLoop` references the `Process` it executes within, and a `Task` the
3170
3163
  `EventLoop` or `Pool` scheduling it; omitted for a top-level unit.
3171
- value: "[[ARCH:CO.UNIT:*]]"
3164
+ value: "[[UNIT:*]]"
3172
3165
  optional: true
3173
3166
  acyclic: true
3174
3167
  - name: HOSTS
3175
3168
  desc: >
3176
3169
  Comma-separated references to the FUNCTIONALITY-VIEW objects that run inside
3177
3170
  this concurrency unit; omitted when no modeled component runs inside it.
3178
- value: list([[ARCH:FV.COMPONENT:*]])
3171
+ value: list([[FV.COMPONENT:*]])
3179
3172
  optional: true
3180
3173
  - name: MULTIPLICITY
3181
3174
  desc: >
@@ -3187,7 +3180,7 @@
3187
3180
  coordinates or communicates with at runtime, naming the peer unit only
3188
3181
  (e.g. a producer names the consumer it feeds through a shared queue),
3189
3182
  while the mechanism is stated by `COORDINATION`.
3190
- value: list([[ARCH:CO.UNIT:*]])
3183
+ value: list([[UNIT:*]])
3191
3184
  optional: true
3192
3185
  - name: COORDINATION
3193
3186
  desc: >
@@ -3212,7 +3205,7 @@
3212
3205
  https://c4model.com/diagrams/deployment
3213
3206
  diagram:
3214
3207
  type: graph
3215
- nodes: "[[ARCH:DV.NODE:*]]"
3208
+ nodes: "[[NODE:*]]"
3216
3209
  labeled: true
3217
3210
  properties:
3218
3211
  - TIER
@@ -3240,7 +3233,7 @@
3240
3233
  diagram:
3241
3234
  type: hub
3242
3235
  center: self
3243
- nodes: "[[ARCH:DV.TIER:*]], [[ARCH:DV.NODE:*]]"
3236
+ nodes: "[[DV.TIER:*]], [[NODE:*]]"
3244
3237
  labeled: true
3245
3238
  qualified: true
3246
3239
  properties:
@@ -3255,7 +3248,7 @@
3255
3248
  Reference to the DEPLOYMENT-VIEW tier this tier is contained in (e.g. the
3256
3249
  `Server` and `Database` tiers reference the `Data Center` tier hosting
3257
3250
  them); omitted for a top-level tier.
3258
- value: "[[ARCH:DV.TIER:*]]"
3251
+ value: "[[DV.TIER:*]]"
3259
3252
  optional: true
3260
3253
  acyclic: true
3261
3254
  - name: LOCATION
@@ -3269,7 +3262,7 @@
3269
3262
  Reference to the TECHNOLOGY-STACK tier whose products run in this tier;
3270
3263
  omitted when the Technology Stack is absent, has no matching tier, or the
3271
3264
  tier (e.g. a data center) groups other tiers only.
3272
- value: "[[ARCH:TS.TIER:*]]"
3265
+ value: "[[TS.TIER:*]]"
3273
3266
  optional: true
3274
3267
  - kind: AREA
3275
3268
  desc: >
@@ -3290,7 +3283,7 @@
3290
3283
  diagram:
3291
3284
  type: hub
3292
3285
  center: self
3293
- nodes: "[[ARCH:DV.AREA:*]], [[ARCH:DV.NODE:*]]"
3286
+ nodes: "[[AREA:*]], [[NODE:*]]"
3294
3287
  labeled: true
3295
3288
  qualified: true
3296
3289
  properties:
@@ -3316,8 +3309,8 @@
3316
3309
  diagram:
3317
3310
  type: hub
3318
3311
  center: self
3319
- nodes: "[[ARCH:DV.TIER:*]], [[ARCH:DV.AREA:*]], [[ARCH:DV.NODE:*]],
3320
- [[ARCH:DV.NETWORK:*]], [[ARCH:FV.COMPONENT:*]], [[ARCH:CO.UNIT:*]]"
3312
+ nodes: "[[DV.TIER:*]], [[AREA:*]], [[NODE:*]], [[NETWORK:*]], [[FV.COMPONENT:*]],
3313
+ [[UNIT:*]]"
3321
3314
  labeled: true
3322
3315
  qualified: true
3323
3316
  properties:
@@ -3344,13 +3337,13 @@
3344
3337
  desc: >
3345
3338
  Reference to the DEPLOYMENT-VIEW tier the node belongs to, exactly one, as a
3346
3339
  single deployment unit never spans tiers.
3347
- value: "[[ARCH:DV.TIER:*]]"
3340
+ value: "[[DV.TIER:*]]"
3348
3341
  - name: AREA
3349
3342
  desc: >
3350
3343
  Reference to the DEPLOYMENT-VIEW area the node is dedicated to, at most one,
3351
3344
  as a single deployment unit never spans areas; omitted for a node shared by
3352
3345
  several areas or when the solution is not split vertically.
3353
- value: "[[ARCH:DV.AREA:*]]"
3346
+ value: "[[AREA:*]]"
3354
3347
  optional: true
3355
3348
  - name: PLATFORM
3356
3349
  desc: >
@@ -3364,7 +3357,7 @@
3364
3357
  expressing the nesting the kinds imply: a `Container` references the
3365
3358
  `Server` or `Cluster` running it, and a `Server` the `Cluster` it belongs
3366
3359
  to; omitted for a top-level node.
3367
- value: "[[ARCH:DV.NODE:*]]"
3360
+ value: "[[NODE:*]]"
3368
3361
  optional: true
3369
3362
  acyclic: true
3370
3363
  - name: HOSTS
@@ -3374,7 +3367,7 @@
3374
3367
  node (which themselves state the components they host), and the functional
3375
3368
  components not mapped by any concurrency unit directly. A containing node
3376
3369
  does not repeat what its `PART-OF` nodes host.
3377
- value: list([[ARCH:CO.UNIT:*]], [[ARCH:FV.COMPONENT:*]])
3370
+ value: list([[UNIT:*]], [[FV.COMPONENT:*]])
3378
3371
  optional: true
3379
3372
  - name: INSTANCES
3380
3373
  desc: >
@@ -3386,14 +3379,14 @@
3386
3379
  Comma-separated references to the DEPLOYMENT-VIEW objects this node opens
3387
3380
  network connections to at runtime, naming the target node only, while the
3388
3381
  carried protocols are stated by the `PROTOCOLS` of the shared `NETWORK`.
3389
- value: list([[ARCH:DV.NODE:*]])
3382
+ value: list([[NODE:*]])
3390
3383
  optional: true
3391
3384
  - name: NETWORKS
3392
3385
  desc: >
3393
3386
  Comma-separated references to the DEPLOYMENT-VIEW network segments the node
3394
3387
  is attached to (e.g. a public ingress and a private backend network); omitted
3395
3388
  when the topology models no network segments.
3396
- value: list([[ARCH:DV.NETWORK:*]])
3389
+ value: list([[NETWORK:*]])
3397
3390
  optional: true
3398
3391
  - kind: NETWORK
3399
3392
  desc: >
@@ -3414,7 +3407,7 @@
3414
3407
  diagram:
3415
3408
  type: hub
3416
3409
  center: self
3417
- nodes: "[[ARCH:DV.NETWORK:*]], [[ARCH:DV.NODE:*]]"
3410
+ nodes: "[[NETWORK:*]], [[NODE:*]]"
3418
3411
  labeled: true
3419
3412
  qualified: true
3420
3413
  properties:
@@ -3459,7 +3452,7 @@
3459
3452
  https://www.iso.org/standard/70636.html
3460
3453
  diagram:
3461
3454
  type: grid
3462
- nodes: "[[ARCH:OV.CONCERN:*]]"
3455
+ nodes: "[[CONCERN:*]]"
3463
3456
  properties:
3464
3457
  - CATEGORY
3465
3458
  childs:
@@ -3484,9 +3477,9 @@
3484
3477
  diagram:
3485
3478
  type: hub
3486
3479
  center: self
3487
- nodes: "[[ARCH:OV.CONCERN:*]], [[REQS:NR.REQUIREMENT:*]], [[REQS:UP.PERSONA:*]],
3488
- [[ARCH:QP.TACTIC:*]], [[ARCH:FV.COMPONENT:*]], [[ARCH:CO.UNIT:*]],
3489
- [[ARCH:DV.NODE:*]], [[DATA:DM.ENTITY:*]], [[ARCH:TS.TIER:*.COMPONENT:*]]"
3480
+ nodes: "[[CONCERN:*]], [[NR.REQUIREMENT:*]], [[PERSONA:*]], [[TACTIC:*]],
3481
+ [[FV.COMPONENT:*]], [[UNIT:*]], [[NODE:*]], [[DM.ENTITY:*]],
3482
+ [[TS.TIER:*.COMPONENT:*]]"
3490
3483
  labeled: true
3491
3484
  qualified: true
3492
3485
  properties:
@@ -3529,30 +3522,29 @@
3529
3522
  procedure, usually a `Stakeholder` persona like the operations team (a
3530
3523
  procedure performed by a `User` persona through the solution is a Use Case
3531
3524
  instead); omitted when no persona of the operating organization is modeled.
3532
- value: list([[REQS:UP.PERSONA:*]])
3525
+ value: list([[PERSONA:*]])
3533
3526
  optional: true
3534
3527
  - name: ADDRESSES
3535
3528
  desc: >
3536
3529
  Comma-separated references to the NON-FUNCTIONAL-REQUIREMENTS objects the
3537
3530
  procedure fulfills (e.g. a recovery objective, a retention obligation);
3538
3531
  omitted when the concern fulfills no stated requirement.
3539
- value: list([[REQS:NR.*]])
3532
+ value: list([[NR.*]])
3540
3533
  optional: true
3541
3534
  - name: ELEMENTS
3542
3535
  desc: >
3543
3536
  Comma-separated references to the FUNCTIONALITY-VIEW, CONCURRENCY-VIEW,
3544
3537
  DEPLOYMENT-VIEW, or DATA-MODEL objects the procedure acts upon (e.g. the
3545
3538
  nodes scaled, the units restarted, the entities backed up or migrated).
3546
- value: list([[ARCH:FV.COMPONENT:*]], [[ARCH:CO.UNIT:*]], [[ARCH:DV.TIER:*]],
3547
- [[ARCH:DV.AREA:*]], [[ARCH:DV.NODE:*]], [[ARCH:DV.NETWORK:*]],
3548
- [[DATA:DM.ENTITY:*]])
3539
+ value: list([[FV.COMPONENT:*]], [[UNIT:*]], [[DV.TIER:*]], [[AREA:*]],
3540
+ [[NODE:*]], [[NETWORK:*]], [[DM.ENTITY:*]])
3549
3541
  optional: true
3550
3542
  - name: TOOLS
3551
3543
  desc: >
3552
3544
  Comma-separated references to the TECHNOLOGY-STACK components (usually of
3553
3545
  `PHASE` `Operate-Time`) supporting the procedure; omitted when the procedure
3554
3546
  uses no modeled product.
3555
- value: list([[ARCH:TS.TIER:*.COMPONENT:*]])
3547
+ value: list([[TS.TIER:*.COMPONENT:*]])
3556
3548
  optional: true
3557
3549
 
3558
3550
  - kind: ARCH
@@ -3572,7 +3564,7 @@
3572
3564
  https://www.iso.org/standard/78176.html
3573
3565
  diagram:
3574
3566
  type: grid
3575
- nodes: "[[ARCH:QP.TACTIC:*]]"
3567
+ nodes: "[[TACTIC:*]]"
3576
3568
  properties:
3577
3569
  - QUALITY
3578
3570
  childs:
@@ -3603,9 +3595,9 @@
3603
3595
  diagram:
3604
3596
  type: hub
3605
3597
  center: self
3606
- nodes: "[[ARCH:QP.TACTIC:*]], [[REQS:NR.REQUIREMENT:*]], [[ARCH:FV.COMPONENT:*]],
3607
- [[ARCH:CO.UNIT:*]], [[ARCH:DA.ASPECT:*]], [[ARCH:DV.NODE:*]], [[DATA:DM.ENTITY:*]],
3608
- [[ARCH:OV.CONCERN:*]], [[ARCH:DD.DECISION:*]], [[ARCH:TS.TIER:*.COMPONENT:*]]"
3598
+ nodes: "[[TACTIC:*]], [[NR.REQUIREMENT:*]], [[FV.COMPONENT:*]], [[UNIT:*]],
3599
+ [[ASPECT:*]], [[NODE:*]], [[DM.ENTITY:*]], [[CONCERN:*]], [[DECISION:*]],
3600
+ [[TS.TIER:*.COMPONENT:*]]"
3609
3601
  labeled: true
3610
3602
  qualified: true
3611
3603
  properties:
@@ -3634,7 +3626,7 @@
3634
3626
  desc: >
3635
3627
  Comma-separated references to the NON-FUNCTIONAL-REQUIREMENTS objects the
3636
3628
  tactic addresses.
3637
- value: list([[REQS:NR.*]])
3629
+ value: list([[NR.*]])
3638
3630
  - name: MECHANISM
3639
3631
  desc: >
3640
3632
  The design mechanism through which the tactic is applied to achieve the
@@ -3655,9 +3647,9 @@
3655
3647
  INTERFACE-MODEL objects the tactic shapes (e.g. the components replicated,
3656
3648
  the aspects governing modifiability, the entities anonymized, the roles
3657
3649
  and interfaces secured).
3658
- value: list([[ARCH:FV.COMPONENT:*]], [[ARCH:CO.UNIT:*]], [[ARCH:DA.ASPECT:*]],
3659
- [[ARCH:DV.TIER:*]], [[ARCH:DV.AREA:*]], [[ARCH:DV.NODE:*]], [[ARCH:DV.NETWORK:*]],
3660
- [[DATA:DM.ENTITY:*]], [[DATA:AM.ROLE:*]], [[APIS:IM.INTERFACE:*]])
3650
+ value: list([[FV.COMPONENT:*]], [[UNIT:*]], [[ASPECT:*]], [[DV.TIER:*]],
3651
+ [[AREA:*]], [[NODE:*]], [[NETWORK:*]], [[DM.ENTITY:*]], [[ROLE:*]],
3652
+ [[INTERFACE:*]])
3661
3653
  optional: true
3662
3654
  - name: OPERATED-BY
3663
3655
  desc: >
@@ -3665,14 +3657,14 @@
3665
3657
  acts upon the design mechanism of the tactic (e.g. the scaling out of the
3666
3658
  replication, the restoring of the backup); omitted when no modeled procedure
3667
3659
  operates the tactic.
3668
- value: list([[ARCH:OV.CONCERN:*]])
3660
+ value: list([[CONCERN:*]])
3669
3661
  optional: true
3670
3662
  - name: TOOLS
3671
3663
  desc: >
3672
3664
  Comma-separated references to the TECHNOLOGY-STACK components realizing the
3673
3665
  tactic (e.g. the load balancer, the message broker, the CDN); omitted when
3674
3666
  the tactic uses no modeled product.
3675
- value: list([[ARCH:TS.TIER:*.COMPONENT:*]])
3667
+ value: list([[TS.TIER:*.COMPONENT:*]])
3676
3668
  optional: true
3677
3669
  - kind: ARCH
3678
3670
  name: Design Decisions
@@ -3693,7 +3685,7 @@
3693
3685
  https://adr.github.io/
3694
3686
  diagram:
3695
3687
  type: grid
3696
- nodes: "[[ARCH:DD.DECISION:*]]"
3688
+ nodes: "[[DECISION:*]]"
3697
3689
  properties:
3698
3690
  - STATUS
3699
3691
  config:
@@ -3761,14 +3753,12 @@
3761
3753
  diagram:
3762
3754
  type: hub
3763
3755
  center: self
3764
- nodes: "[[ARCH:DD.DECISION:*]], [[REQS:NR.REQUIREMENT:*]], [[REQS:SP.PREMISE:*]],
3765
- [[DATA:DM.ENTITY:*]], [[DATA:SM.LIFECYCLE:*]], [[DATA:AM.ROLE:*]],
3766
- [[APIS:IM.INTERFACE:*]], [[APIS:ID.TYPE:*]], [[APIS:IE.ENDPOINT:*]],
3767
- [[UXUI:IC.PRINCIPLE:*]], [[UXUI:LC.CONVENTION:*]], [[UXUI:DP.PATTERN:*]],
3768
- [[UXUI:DS.STORYBOARD:*]], [[UXUI:VD.ELEMENT:*]],
3769
- [[ARCH:CV.ENTITY:*]], [[ARCH:FV.COMPONENT:*]], [[ARCH:CO.UNIT:*]],
3770
- [[ARCH:DA.ASPECT:*]], [[ARCH:DV.TIER:*]], [[ARCH:DV.AREA:*]], [[ARCH:DV.NODE:*]],
3771
- [[ARCH:DV.NETWORK:*]], [[ARCH:QP.TACTIC:*]], [[ARCH:TS.TIER:*.COMPONENT:*]]"
3756
+ nodes: "[[DECISION:*]], [[NR.REQUIREMENT:*]], [[PREMISE:*]], [[DM.ENTITY:*]],
3757
+ [[LIFECYCLE:*]], [[ROLE:*]], [[INTERFACE:*]], [[TYPE:*]], [[ENDPOINT:*]],
3758
+ [[PRINCIPLE:*]], [[CONVENTION:*]], [[PATTERN:*]], [[STORYBOARD:*]],
3759
+ [[ELEMENT:*]], [[CV.ENTITY:*]], [[FV.COMPONENT:*]], [[UNIT:*]], [[ASPECT:*]],
3760
+ [[DV.TIER:*]], [[AREA:*]], [[NODE:*]], [[NETWORK:*]], [[TACTIC:*]],
3761
+ [[TS.TIER:*.COMPONENT:*]]"
3772
3762
  labeled: true
3773
3763
  qualified: true
3774
3764
  properties:
@@ -3791,7 +3781,7 @@
3791
3781
  Reference to the DESIGN-DECISIONS object that supersedes this decision,
3792
3782
  present if and only if `STATUS` is `Superseded` (which the schema cannot
3793
3783
  enforce itself).
3794
- value: "[[ARCH:DD.DECISION:*]]"
3784
+ value: "[[DECISION:*]]"
3795
3785
  optional: true
3796
3786
  acyclic: true
3797
3787
  - name: DRIVEN-BY
@@ -3801,7 +3791,7 @@
3801
3791
  obligation, the budget constraint, the dependency taken as given), anchoring
3802
3792
  the forces `WHEN` describes in prose; omitted when no modeled requirement or
3803
3793
  premise drives the decision.
3804
- value: list([[REQS:NR.*]], [[REQS:SP.PREMISE:*]])
3794
+ value: list([[NR.*]], [[PREMISE:*]])
3805
3795
  optional: true
3806
3796
  - name: AFFECTS
3807
3797
  desc: >
@@ -3813,13 +3803,11 @@
3813
3803
  context, the interface styled REST instead of GraphQL, the dialog pattern
3814
3804
  chosen over a native one, the components split, the external system
3815
3805
  integrated); omitted for a decision shaping no modeled element.
3816
- value: list([[DATA:DM.ENTITY:*]], [[DATA:SM.LIFECYCLE:*]], [[DATA:AM.ROLE:*]],
3817
- [[APIS:IM.INTERFACE:*]], [[APIS:ID.TYPE:*]], [[APIS:IE.ENDPOINT:*]],
3818
- [[UXUI:IC.PRINCIPLE:*]], [[UXUI:LC.CONVENTION:*]], [[UXUI:DP.PATTERN:*]],
3819
- [[UXUI:DS.STORYBOARD:*]], [[UXUI:VD.ELEMENT:*]],
3820
- [[ARCH:CV.ENTITY:*]], [[ARCH:FV.COMPONENT:*]], [[ARCH:CO.UNIT:*]],
3821
- [[ARCH:DA.ASPECT:*]], [[ARCH:DV.TIER:*]], [[ARCH:DV.AREA:*]], [[ARCH:DV.NODE:*]],
3822
- [[ARCH:DV.NETWORK:*]])
3806
+ value: list([[DM.ENTITY:*]], [[LIFECYCLE:*]], [[ROLE:*]], [[INTERFACE:*]],
3807
+ [[TYPE:*]], [[ENDPOINT:*]], [[PRINCIPLE:*]], [[CONVENTION:*]],
3808
+ [[PATTERN:*]], [[STORYBOARD:*]], [[ELEMENT:*]], [[CV.ENTITY:*]],
3809
+ [[FV.COMPONENT:*]], [[UNIT:*]], [[ASPECT:*]], [[DV.TIER:*]], [[AREA:*]],
3810
+ [[NODE:*]], [[NETWORK:*]])
3823
3811
  optional: true
3824
3812
  - name: DECIDES
3825
3813
  desc: >
@@ -3827,7 +3815,7 @@
3827
3815
  TECHNOLOGY-STACK components the decision chose over their alternatives,
3828
3816
  i.e. the mechanism or product which exists because of this decision; omitted
3829
3817
  when the decision chose no modeled tactic or product.
3830
- value: list([[ARCH:QP.TACTIC:*]], [[ARCH:TS.TIER:*.COMPONENT:*]])
3818
+ value: list([[TACTIC:*]], [[TS.TIER:*.COMPONENT:*]])
3831
3819
  optional: true
3832
3820
  - name: ALTERNATIVES
3833
3821
  desc: >
@@ -3885,7 +3873,7 @@
3885
3873
  - the deciding factors (which forces from the context carried the most
3886
3874
  weight, and how the chosen option satisfies them best);
3887
3875
  - the trade-off reasoning (what was optimized for and what was knowingly
3888
- sacrificed - naming the trade-off is the heart of rationale);
3876
+ sacrificed - naming the trade-off is the heart of the rationale);
3889
3877
  - why the alternatives lost (the comparative argument: "option B failed
3890
3878
  on X, option C cost too much on Y"); and
3891
3879
  - assumptions and evidence (benchmarks, prior experience, constraints, or
@@ -3938,7 +3926,7 @@
3938
3926
  https://istqb.org/certifications/certified-tester-foundation-level-ctfl-v4-0/
3939
3927
  diagram:
3940
3928
  type: grid
3941
- nodes: "[[TEST:TC.TEST-CASE:*]]"
3929
+ nodes: "[[TEST-CASE:*]]"
3942
3930
  config:
3943
3931
  size-node-width-max: 440
3944
3932
  size-node-height-scale: 2
@@ -3978,13 +3966,11 @@
3978
3966
  diagram:
3979
3967
  type: hub
3980
3968
  center: self
3981
- nodes: "[[TEST:TC.TEST-CASE:*]], [[REQS:FR.REQUIREMENT:*]], [[REQS:NR.REQUIREMENT:*]],
3982
- [[REQS:DR.RULE:*]], [[REQS:UC.USE-CASE:*.SCENARIO:*]], [[REQS:DW.WORKFLOW:*]],
3983
- [[DATA:SM.LIFECYCLE:*.TRANSITION:*]], [[DATA:DM.ENTITY:*.ATTRIBUTE:*]],
3984
- [[DATA:AM.ROLE:*.PERMISSION:*]], [[APIS:IE.ENDPOINT:*]],
3985
- [[UXUI:DS.STORYBOARD:*.FRAME:*]], [[ARCH:FV.COMPONENT:*]], [[ARCH:CO.UNIT:*]],
3986
- [[ARCH:DA.ASPECT:*]], [[ARCH:DV.NODE:*]], [[ARCH:DV.NETWORK:*]],
3987
- [[ARCH:OV.CONCERN:*]], [[ARCH:QP.TACTIC:*]], [[ARCH:DD.DECISION:*]]"
3969
+ nodes: "[[TEST-CASE:*]], [[FR.REQUIREMENT:*]], [[NR.REQUIREMENT:*]], [[RULE:*]],
3970
+ [[SCENARIO:*]], [[WORKFLOW:*]], [[TRANSITION:*]], [[ATTRIBUTE:*]],
3971
+ [[PERMISSION:*]], [[ENDPOINT:*]], [[FRAME:*]], [[FV.COMPONENT:*]], [[UNIT:*]],
3972
+ [[ASPECT:*]], [[NODE:*]], [[NETWORK:*]], [[CONCERN:*]], [[TACTIC:*]],
3973
+ [[DECISION:*]]"
3988
3974
  labeled: true
3989
3975
  qualified: true
3990
3976
  config:
@@ -4002,7 +3988,7 @@
4002
3988
  (node and network), OPERATIONS-VIEW, and QUALITY-PERSPECTIVES objects,
4003
3989
  and/or the DESIGN-DECISIONS objects the test case verifies, so that a
4004
3990
  scenario (in particular an `Exceptional` one, judged by its `OUTCOME`) is
4005
- covered by an acceptance test beside the requirements it exercises, a rule
3991
+ covered by an acceptance test besides the requirements it exercises, a rule
4006
3992
  (judged by the condition it states) is proven to hold, not just to be
4007
3993
  documented, a transition (judged by its `GUARD` and the resulting state) is
4008
3994
  proven to be permitted exactly as modeled, an attribute (judged by its
@@ -4020,12 +4006,10 @@
4020
4006
  proven to be performable, a tactic (judged by its `MECHANISM`) is proven to
4021
4007
  take effect, and a decision (judged by its `WHAT`) is proven to be complied
4022
4008
  with.
4023
- value: list([[REQS:*.REQUIREMENT:*]], [[REQS:DR.RULE:*]], [[REQS:UC.USE-CASE:*.SCENARIO:*]],
4024
- [[DATA:SM.LIFECYCLE:*.TRANSITION:*]], [[DATA:DM.ENTITY:*.ATTRIBUTE:*]],
4025
- [[DATA:AM.ROLE:*.PERMISSION:*]], [[APIS:IE.ENDPOINT:*]],
4026
- [[UXUI:DS.STORYBOARD:*.FRAME:*]], [[ARCH:FV.COMPONENT:*]], [[ARCH:CO.UNIT:*]],
4027
- [[ARCH:DA.ASPECT:*]], [[ARCH:DV.NODE:*]], [[ARCH:DV.NETWORK:*]],
4028
- [[ARCH:OV.CONCERN:*]], [[ARCH:QP.TACTIC:*]], [[ARCH:DD.DECISION:*]])
4009
+ value: list([[REQUIREMENT:*]], [[RULE:*]], [[SCENARIO:*]], [[TRANSITION:*]],
4010
+ [[ATTRIBUTE:*]], [[PERMISSION:*]], [[ENDPOINT:*]], [[FRAME:*]],
4011
+ [[FV.COMPONENT:*]], [[UNIT:*]], [[ASPECT:*]], [[NODE:*]], [[NETWORK:*]],
4012
+ [[CONCERN:*]], [[TACTIC:*]], [[DECISION:*]])
4029
4013
  - name: WORKFLOWS
4030
4014
  desc: >
4031
4015
  Comma-separated references to the DOMAIN-WORKFLOWS objects the test case
@@ -4033,7 +4017,7 @@
4033
4017
  steps cross in order, so that the collaboration across actors and sittings
4034
4018
  (not just the use cases of each single sitting) is proven to work as
4035
4019
  modeled; omitted for a test case confined to a single sitting.
4036
- value: list([[REQS:DW.WORKFLOW:*]])
4020
+ value: list([[WORKFLOW:*]])
4037
4021
  optional: true
4038
4022
  - name: PRE-CONDITION
4039
4023
  desc: >