@rse/ase 0.9.1 → 0.9.2
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/package.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.github/plugin/plugin.json +1 -1
- package/plugin/meta/ase-format-arch.md +306 -91
- package/plugin/meta/ase-format-meta.md +12 -0
- package/plugin/meta/ase-format-spec.md +535 -251
- package/plugin/package.json +1 -1
- package/plugin/meta/ase-format-adr.md +0 -199
|
@@ -7,11 +7,20 @@ Specification (SPEC)
|
|
|
7
7
|
The **Artifact Set** **Specification (SPEC)** specifies the "input"
|
|
8
8
|
and the "what" of the Software Engineering project.
|
|
9
9
|
|
|
10
|
-
Each **Artifact** of the **Artifact Set**
|
|
11
|
-
is stored under
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
Each **Artifact** of the **Artifact Set**
|
|
11
|
+
**Specification (SPEC)** is stored under
|
|
12
|
+
`docs/spec/SPEC-<artifact-no/>-<artifact-id/>-<artifact-slug/>.md`,
|
|
13
|
+
relative to the project root directory, with <artifact-no/> being the
|
|
14
|
+
zero-padded, two-digit sequence number of the **Artifact** (starting at
|
|
15
|
+
`01`) according to the order of the **Artifact** list below, and with
|
|
16
|
+
<artifact-slug/> being derived from <artifact-name/> (see below) by
|
|
17
|
+
Pascal-casing each word (upper-casing its first letter) and using `-`
|
|
18
|
+
characters instead of spaces (e.g. `Customer-Journey`).
|
|
19
|
+
|
|
20
|
+
Each **Artifact** file *MUST* begin with a single blank line before its
|
|
21
|
+
`#` heading and end with a single blank line after its last content line
|
|
22
|
+
(followed by the trailing newline), mirroring the blank lines shown
|
|
23
|
+
inside the `<format>` blocks below.
|
|
15
24
|
|
|
16
25
|
Each **Artifact** contains two timestamps: the <timestamp-created/>
|
|
17
26
|
is the timestamp when this **Artifact** was created. The
|
|
@@ -26,70 +35,207 @@ The **Artifact Set** **Specification (SPEC)** consists of the following
|
|
|
26
35
|
distinct **Artifact**s (listed under their <artifact-name/> and their
|
|
27
36
|
<artifact-id/>):
|
|
28
37
|
|
|
29
|
-
|
|
30
|
-
The end-to-end experience a customer has while discovering, adopting,
|
|
31
|
-
and using the solution, mapping their steps, touchpoints, and emotions
|
|
32
|
-
over time.
|
|
33
|
-
|
|
34
|
-
- **Solution Vision (SV)**:
|
|
38
|
+
01. **Solution Vision (SV)**:
|
|
35
39
|
The high-level, aspirational description of the solution, capturing
|
|
36
40
|
its purpose, value proposition, and the desired future state it aims
|
|
37
41
|
to achieve.
|
|
38
42
|
|
|
39
|
-
|
|
43
|
+
02. **Personas (PE)**:
|
|
44
|
+
The *archetypal* user profiles representing distinct user groups,
|
|
45
|
+
capturing their goals, needs, behaviors, and context.
|
|
46
|
+
|
|
47
|
+
03. **Customer Journey (CJ)**:
|
|
48
|
+
The end-to-end experience a customer has while discovering, adopting,
|
|
49
|
+
and using the solution, mapping their steps, touchpoints, and emotions
|
|
50
|
+
over time.
|
|
51
|
+
|
|
52
|
+
04. **Functional Requirements (FR)**:
|
|
40
53
|
The concrete behaviors and capabilities the solution must provide,
|
|
41
54
|
describing *what* the system does in terms of functions, features, and
|
|
42
55
|
operations.
|
|
43
56
|
|
|
44
|
-
|
|
57
|
+
05. **Non-Functional Requirements (NR)**:
|
|
45
58
|
The quality attributes and constraints the solution must satisfy, such
|
|
46
59
|
as performance, security, scalability, reliability, and usability.
|
|
47
60
|
|
|
48
|
-
|
|
61
|
+
06. **Business Rules (BR)**:
|
|
62
|
+
The domain invariants, policies, and decision logic that must always
|
|
63
|
+
hold true in the problem domain, independent of any single feature,
|
|
64
|
+
constraining the Functional and Non-Functional Requirements.
|
|
65
|
+
|
|
66
|
+
07. **Data Model (DM)**:
|
|
49
67
|
The structure of named entities, named attributes, and named directed
|
|
50
68
|
relationships (including a cardinality) of the data the solution
|
|
51
69
|
manages, defining how information is organized and connected.
|
|
52
70
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
71
|
+
08. **State Model (SM)**:
|
|
72
|
+
For each entity with a non-trivial lifecycle, the legal states it can
|
|
73
|
+
occupy and the permitted transitions between them over its lifetime,
|
|
74
|
+
making the forbidden moves as explicit as the allowed ones.
|
|
56
75
|
|
|
57
|
-
|
|
58
|
-
The
|
|
59
|
-
|
|
76
|
+
09. **Glossary (GL)**:
|
|
77
|
+
The ubiquitous language of the domain, defining the meaning of each
|
|
78
|
+
domain term in business language, together with its synonyms and the
|
|
79
|
+
ambiguities to avoid, shared consistently across all Artifacts.
|
|
60
80
|
|
|
61
|
-
|
|
62
|
-
The
|
|
63
|
-
|
|
81
|
+
10. **Use Cases (UC)**:
|
|
82
|
+
The discrete goals users pursue with the solution, each describing
|
|
83
|
+
an actor's interaction to achieve a specific outcome. For each Use
|
|
84
|
+
Case, also the concrete step-by-step flows, detailing the sequence
|
|
85
|
+
of actions for main, alternative, and exceptional paths.
|
|
64
86
|
|
|
65
|
-
|
|
87
|
+
11. **Test Cases (TC)**:
|
|
66
88
|
The verifiable conditions and steps used to confirm that requirements
|
|
67
89
|
are correctly implemented, with mandatory defined inputs, mandatory
|
|
68
90
|
expected outcomes, and optional pre- and post-conditions.
|
|
69
91
|
|
|
70
|
-
|
|
92
|
+
12. **Interaction Concept (IC)**:
|
|
71
93
|
The overarching idea of how users interact with the solution,
|
|
72
94
|
describing the intended workflows and interaction philosophy (e.g.
|
|
73
95
|
auto-save behavior).
|
|
74
96
|
|
|
75
|
-
|
|
97
|
+
13. **Language Conventions (LC)**:
|
|
76
98
|
The terminology, naming, tone, and wording standards used consistently
|
|
77
99
|
across the solution and its content.
|
|
78
100
|
|
|
79
|
-
|
|
101
|
+
14. **Dialog Patterns (DP)**:
|
|
80
102
|
The reusable interaction structures governing how the system and user
|
|
81
103
|
exchange information across recurring conversational or UI flows (e.g.
|
|
82
104
|
master-detail dialog).
|
|
83
105
|
|
|
84
|
-
|
|
106
|
+
15. **Dialog Storyboard (DS)**:
|
|
85
107
|
The sequenced visual or textual depiction of a specific dialog flow,
|
|
86
108
|
illustrating how an interaction unfolds screen by screen or turn by
|
|
87
109
|
turn.
|
|
88
110
|
|
|
89
|
-
|
|
111
|
+
16. **Visual Design (VD)**:
|
|
90
112
|
The aesthetic and layout aspects of the solution, defining colors,
|
|
91
113
|
typography, spacing, imagery, and overall look and feel.
|
|
92
114
|
|
|
115
|
+
The **Artifact**s have the following cross-references:
|
|
116
|
+
|
|
117
|
+
```text
|
|
118
|
+
SPEC-03-CJ Customer Journey ──(step actor)─► SPEC-02-PE Personas
|
|
119
|
+
SPEC-06-BR Business Rules ──(constrains)─► SPEC-04-FR Functional Requirements
|
|
120
|
+
SPEC-06-BR Business Rules ──(constrains)─► SPEC-05-NR Non-Functional Requirements
|
|
121
|
+
SPEC-08-SM State Model ──(of entity)─► SPEC-07-DM Data Model
|
|
122
|
+
SPEC-10-UC Use Cases ──(use case actor)─► SPEC-02-PE Personas
|
|
123
|
+
SPEC-10-UC Use Cases ──(realizes)─► SPEC-04-FR Functional Requirements
|
|
124
|
+
SPEC-10-UC Use Cases ──(transitions)─► SPEC-08-SM State Model
|
|
125
|
+
SPEC-11-TC Test Cases ──(verifies)─► SPEC-04-FR Functional Requirements
|
|
126
|
+
SPEC-11-TC Test Cases ──(verifies)─► SPEC-05-NR Non-Functional Requirements
|
|
127
|
+
SPEC-15-DS Dialog Storyboard ──(scenario)─► SPEC-10-UC Use Cases
|
|
128
|
+
SPEC-15-DS Dialog Storyboard ──(pattern)─► SPEC-14-DP Dialog Patterns
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Solution Vision (SV)
|
|
132
|
+
--------------------
|
|
133
|
+
|
|
134
|
+
The high-level, aspirational description of the solution, capturing
|
|
135
|
+
its purpose, value proposition, and the desired future state it aims
|
|
136
|
+
to achieve.
|
|
137
|
+
|
|
138
|
+
- Format:
|
|
139
|
+
|
|
140
|
+
<format>
|
|
141
|
+
|
|
142
|
+
# SPECIFICATION: SOLUTION VISION (SPEC-SV)
|
|
143
|
+
|
|
144
|
+
✳ Created: **<timestamp-created/>**
|
|
145
|
+
✎ Modified: **<timestamp-modified/>**
|
|
146
|
+
|
|
147
|
+
<spec-sv-aspect/>
|
|
148
|
+
<spec-sv-aspect/>
|
|
149
|
+
[...]
|
|
150
|
+
|
|
151
|
+
</format>
|
|
152
|
+
|
|
153
|
+
- <spec-sv-aspect/> format:
|
|
154
|
+
|
|
155
|
+
<format>
|
|
156
|
+
|
|
157
|
+
## ASPECT: <spec-sv-aspect-name/> <a id="SPEC-SV-<spec-sv-aspect-id/>"></a>
|
|
158
|
+
|
|
159
|
+
<spec-sv-aspect-statement/>
|
|
160
|
+
|
|
161
|
+
</format>
|
|
162
|
+
|
|
163
|
+
- <spec-sv-aspect/> details:
|
|
164
|
+
|
|
165
|
+
- <spec-sv-aspect-id/>: per-artifact unique "slug" of always 1-3
|
|
166
|
+
lower-cased words (concatenated with "-" characters and
|
|
167
|
+
in total not longer than 30 characters), derived from
|
|
168
|
+
<spec-sv-aspect-name/>.
|
|
169
|
+
|
|
170
|
+
- <spec-sv-aspect-name/>: a short (2-5 word) summary of the vision
|
|
171
|
+
aspect. The recommended aspects are `Purpose` (why the solution
|
|
172
|
+
exists), `Target Audience` (who it serves), `Value Proposition`
|
|
173
|
+
(the unique benefit offered), `Differentiators` (how it stands
|
|
174
|
+
apart from alternatives), and `Future State` (the desired
|
|
175
|
+
outcome once adopted).
|
|
176
|
+
|
|
177
|
+
- <spec-sv-aspect-statement/>: a concise paragraph (1-3 sentences)
|
|
178
|
+
of prose describing the vision aspect in an aspirational but
|
|
179
|
+
unambiguous tone.
|
|
180
|
+
|
|
181
|
+
Personas (PE)
|
|
182
|
+
-------------
|
|
183
|
+
|
|
184
|
+
The *archetypal* user profiles representing distinct user groups,
|
|
185
|
+
capturing their goals, needs, behaviors, and context.
|
|
186
|
+
|
|
187
|
+
- Format:
|
|
188
|
+
|
|
189
|
+
<format>
|
|
190
|
+
|
|
191
|
+
# SPECIFICATION: PERSONAS (SPEC-PE)
|
|
192
|
+
|
|
193
|
+
✳ Created: **<timestamp-created/>**
|
|
194
|
+
✎ Modified: **<timestamp-modified/>**
|
|
195
|
+
|
|
196
|
+
<spec-pe-persona/>
|
|
197
|
+
<spec-pe-persona/>
|
|
198
|
+
[...]
|
|
199
|
+
|
|
200
|
+
</format>
|
|
201
|
+
|
|
202
|
+
- <spec-pe-persona/> format:
|
|
203
|
+
|
|
204
|
+
<format>
|
|
205
|
+
|
|
206
|
+
## PERSONA: <spec-pe-persona-name/> <a id="SPEC-PE-<spec-pe-persona-id/>"></a>
|
|
207
|
+
|
|
208
|
+
- Gender: <spec-pe-persona-gender/>
|
|
209
|
+
- Age: <spec-pe-persona-age/>
|
|
210
|
+
- Role: <spec-pe-persona-role/>
|
|
211
|
+
|
|
212
|
+
"<spec-pe-persona-quote/>"
|
|
213
|
+
|
|
214
|
+
</format>
|
|
215
|
+
|
|
216
|
+
- <spec-pe-persona/> details:
|
|
217
|
+
|
|
218
|
+
- <spec-pe-persona-id/>: per-artifact unique "slug" of always 1-3
|
|
219
|
+
lower-cased words (concatenated with "-" characters and
|
|
220
|
+
in total not longer than 30 characters), derived from
|
|
221
|
+
<spec-pe-persona-name/>.
|
|
222
|
+
|
|
223
|
+
- <spec-pe-persona-name/>: per-artifact unique first name of fictional
|
|
224
|
+
described person.
|
|
225
|
+
|
|
226
|
+
- <spec-pe-persona-gender/>: the gender of the persona: `male`,
|
|
227
|
+
`female`, or `diverse`.
|
|
228
|
+
|
|
229
|
+
- <spec-pe-persona-age/>: the age in years of the persona.
|
|
230
|
+
|
|
231
|
+
- <spec-pe-persona-role/>: the role of the persona.
|
|
232
|
+
|
|
233
|
+
- <spec-pe-persona-quote/>: a short and bold, first-person statement —
|
|
234
|
+
written in the persona's own voice — that captures their core
|
|
235
|
+
attitude, motivation, frustration, or need in a single memorable line.
|
|
236
|
+
It's sometimes called the persona's "tagline," "mantra," or "defining
|
|
237
|
+
statement."
|
|
238
|
+
|
|
93
239
|
Customer Journey (CJ)
|
|
94
240
|
---------------------
|
|
95
241
|
|
|
@@ -116,7 +262,7 @@ over time.
|
|
|
116
262
|
|
|
117
263
|
<format>
|
|
118
264
|
|
|
119
|
-
## STEP
|
|
265
|
+
## STEP: <spec-cj-step-name/> <a id="SPEC-CJ-<spec-cj-step-id/>"></a>
|
|
120
266
|
|
|
121
267
|
- Stage: <spec-cj-step-stage/>
|
|
122
268
|
- Actor: <spec-cj-step-actor/>
|
|
@@ -166,56 +312,6 @@ over time.
|
|
|
166
312
|
- In case a <spec-cj-step/> has no pain point at all, the
|
|
167
313
|
entire `- Pain Point:` bullet point is omitted.
|
|
168
314
|
|
|
169
|
-
Solution Vision (SV)
|
|
170
|
-
--------------------
|
|
171
|
-
|
|
172
|
-
The high-level, aspirational description of the solution, capturing
|
|
173
|
-
its purpose, value proposition, and the desired future state it aims
|
|
174
|
-
to achieve.
|
|
175
|
-
|
|
176
|
-
- Format:
|
|
177
|
-
|
|
178
|
-
<format>
|
|
179
|
-
|
|
180
|
-
# SPECIFICATION: SOLUTION VISION (SPEC-SV)
|
|
181
|
-
|
|
182
|
-
✳ Created: **<timestamp-created/>**
|
|
183
|
-
✎ Modified: **<timestamp-modified/>**
|
|
184
|
-
|
|
185
|
-
<spec-sv-aspect/>
|
|
186
|
-
<spec-sv-aspect/>
|
|
187
|
-
[...]
|
|
188
|
-
|
|
189
|
-
</format>
|
|
190
|
-
|
|
191
|
-
- <spec-sv-aspect/> format:
|
|
192
|
-
|
|
193
|
-
<format>
|
|
194
|
-
|
|
195
|
-
## ASPECT SPEC-SV-<spec-sv-aspect-id/>: <spec-sv-aspect-name/>
|
|
196
|
-
|
|
197
|
-
<spec-sv-aspect-statement/>
|
|
198
|
-
|
|
199
|
-
</format>
|
|
200
|
-
|
|
201
|
-
- <spec-sv-aspect/> details:
|
|
202
|
-
|
|
203
|
-
- <spec-sv-aspect-id/>: per-artifact unique "slug" of always 1-3
|
|
204
|
-
lower-cased words (concatenated with "-" characters and
|
|
205
|
-
in total not longer than 30 characters), derived from
|
|
206
|
-
<spec-sv-aspect-name/>.
|
|
207
|
-
|
|
208
|
-
- <spec-sv-aspect-name/>: a short (2-5 word) summary of the vision
|
|
209
|
-
aspect. The recommended aspects are `Purpose` (why the solution
|
|
210
|
-
exists), `Target Audience` (who it serves), `Value Proposition`
|
|
211
|
-
(the unique benefit offered), `Differentiators` (how it stands
|
|
212
|
-
apart from alternatives), and `Future State` (the desired
|
|
213
|
-
outcome once adopted).
|
|
214
|
-
|
|
215
|
-
- <spec-sv-aspect-statement/>: a concise paragraph (1-3 sentences)
|
|
216
|
-
of prose describing the vision aspect in an aspirational but
|
|
217
|
-
unambiguous tone.
|
|
218
|
-
|
|
219
315
|
Functional Requirements (FR)
|
|
220
316
|
----------------------------
|
|
221
317
|
|
|
@@ -242,12 +338,12 @@ operations.
|
|
|
242
338
|
|
|
243
339
|
<format>
|
|
244
340
|
|
|
245
|
-
## REQUIREMENT
|
|
341
|
+
## REQUIREMENT: <spec-fr-requirement-name/> <a id="SPEC-FR-<spec-fr-requirement-id/>"></a>
|
|
246
342
|
|
|
247
343
|
- Priority: <spec-fr-requirement-priority/>
|
|
248
344
|
|
|
249
|
-
<spec-fr-requirement-statement
|
|
250
|
-
|
|
345
|
+
<spec-fr-requirement-statement/>,
|
|
346
|
+
**BECAUSE** <spec-fr-requirement-rationale/>.
|
|
251
347
|
|
|
252
348
|
</format>
|
|
253
349
|
|
|
@@ -262,18 +358,21 @@ operations.
|
|
|
262
358
|
functional requirement.
|
|
263
359
|
|
|
264
360
|
- <spec-fr-requirement-priority/>: the MoSCoW priority of the
|
|
265
|
-
requirement: `MUST`, `SHOULD`, `COULD`, or `WONT`.
|
|
361
|
+
requirement: `MUST`, `SHOULD`, `COULD`, or `WONT`. The `WONT`
|
|
362
|
+
priority records a requirement deliberately excluded from the
|
|
363
|
+
current scope ("won't have this time"), preserving the conscious
|
|
364
|
+
decision rather than silently dropping it.
|
|
266
365
|
|
|
267
366
|
- <spec-fr-requirement-statement/>: a concise paragraph (1-3
|
|
268
367
|
sentences) of prose describing *what* the solution must do,
|
|
269
|
-
written with the keyword `MUST`, `SHOULD`, `COULD`, or `
|
|
270
|
-
|
|
368
|
+
written with the keyword `MUST`, `SHOULD`, `COULD`, or `WONT`
|
|
369
|
+
to indicate the obligation level.
|
|
271
370
|
|
|
272
371
|
- <spec-fr-requirement-rationale/>: the 1-sentence rationale ("why")
|
|
273
372
|
of the functional requirement.
|
|
274
373
|
|
|
275
374
|
- In case the rationale is not present, the
|
|
276
|
-
entire
|
|
375
|
+
entire `, **BECAUSE** [...]` clause is omitted.
|
|
277
376
|
|
|
278
377
|
Non-Functional Requirements (NR)
|
|
279
378
|
--------------------------------
|
|
@@ -300,14 +399,13 @@ as performance, security, scalability, reliability, and usability.
|
|
|
300
399
|
|
|
301
400
|
<format>
|
|
302
401
|
|
|
303
|
-
## REQUIREMENT
|
|
402
|
+
## REQUIREMENT: <spec-nr-requirement-name/> <a id="SPEC-NR-<spec-nr-requirement-id/>"></a>
|
|
304
403
|
|
|
305
|
-
- Category: <spec-nr-requirement-category/>
|
|
306
404
|
- Priority: <spec-nr-requirement-priority/>
|
|
307
|
-
-
|
|
405
|
+
- Category: <spec-nr-requirement-category/>
|
|
308
406
|
|
|
309
|
-
<spec-nr-requirement-statement
|
|
310
|
-
|
|
407
|
+
<spec-nr-requirement-statement/>,
|
|
408
|
+
**BECAUSE** <spec-nr-requirement-rationale/>.
|
|
311
409
|
|
|
312
410
|
</format>
|
|
313
411
|
|
|
@@ -321,28 +419,108 @@ as performance, security, scalability, reliability, and usability.
|
|
|
321
419
|
- <spec-nr-requirement-name/>: a short (3-8 word) summary of the
|
|
322
420
|
non-functional requirement.
|
|
323
421
|
|
|
324
|
-
- <spec-nr-requirement-category/>: the quality attribute category
|
|
325
|
-
the requirement addresses, one of `Performance`, `Scalability`,
|
|
326
|
-
`Reliability`, `Availability`, `Security`, `Privacy`,
|
|
327
|
-
`Usability`, `Accessibility`, `Maintainability`, `Portability`,
|
|
328
|
-
`Compatibility`, or `Compliance`.
|
|
329
|
-
|
|
330
422
|
- <spec-nr-requirement-priority/>: the MoSCoW priority of the
|
|
331
|
-
requirement: `MUST`, `SHOULD`, `COULD`, or `WONT`.
|
|
423
|
+
requirement: `MUST`, `SHOULD`, `COULD`, or `WONT`. The `WONT`
|
|
424
|
+
priority records a requirement deliberately excluded from the
|
|
425
|
+
current scope ("won't have this time"), preserving the conscious
|
|
426
|
+
decision rather than silently dropping it.
|
|
332
427
|
|
|
333
|
-
- <spec-nr-requirement-
|
|
334
|
-
|
|
335
|
-
|
|
428
|
+
- <spec-nr-requirement-category/>: the quality attribute category
|
|
429
|
+
the requirement addresses, one of `Performance`,
|
|
430
|
+
`Compatibility`, `Usability`, `Reliability`, `Security`,
|
|
431
|
+
`Safety`, `Maintainability`, `Flexibility`, and `Compliance`,
|
|
432
|
+
according to the top-level characteristics in the ISO/IEC
|
|
433
|
+
25010:2023 Software-Quality Model (except for `Functional
|
|
434
|
+
Suitability` which is described by our Functional Requirements
|
|
435
|
+
(FR)).
|
|
336
436
|
|
|
337
437
|
- <spec-nr-requirement-statement/>: a concise paragraph (1-3
|
|
338
438
|
sentences) of prose describing the quality attribute or
|
|
339
|
-
constraint the solution must satisfy.
|
|
439
|
+
constraint the solution must satisfy. It especially *MUST*
|
|
440
|
+
contain a *METRIC* within the <spec-nr-requirement-category/>,
|
|
441
|
+
which (according to the SMART principle) is the *specific*,
|
|
442
|
+
*measurable*, *achievable*, *relevant* and *time-bound*
|
|
443
|
+
threshold or target by which the requirement is judged satisfied
|
|
444
|
+
(e.g. `p95 latency < 200ms`, `99.9% uptime`).
|
|
340
445
|
|
|
341
446
|
- <spec-nr-requirement-rationale/>: the 1-sentence rationale ("why")
|
|
342
447
|
of the non-functional requirement.
|
|
343
448
|
|
|
344
449
|
- In case the rationale is not present, the
|
|
345
|
-
entire
|
|
450
|
+
entire `, **BECAUSE** [...]` clause is omitted.
|
|
451
|
+
|
|
452
|
+
Business Rules (BR)
|
|
453
|
+
-------------------
|
|
454
|
+
|
|
455
|
+
The domain invariants, policies, and decision logic that must always
|
|
456
|
+
hold true in the problem domain, independent of any single feature,
|
|
457
|
+
constraining the Functional and Non-Functional Requirements.
|
|
458
|
+
|
|
459
|
+
- Format:
|
|
460
|
+
|
|
461
|
+
<format>
|
|
462
|
+
|
|
463
|
+
# SPECIFICATION: BUSINESS RULES (SPEC-BR)
|
|
464
|
+
|
|
465
|
+
✳ Created: **<timestamp-created/>**
|
|
466
|
+
✎ Modified: **<timestamp-modified/>**
|
|
467
|
+
|
|
468
|
+
<spec-br-rule/>
|
|
469
|
+
<spec-br-rule/>
|
|
470
|
+
[...]
|
|
471
|
+
|
|
472
|
+
</format>
|
|
473
|
+
|
|
474
|
+
- <spec-br-rule/> format:
|
|
475
|
+
|
|
476
|
+
<format>
|
|
477
|
+
|
|
478
|
+
## RULE: <spec-br-rule-name/> <a id="SPEC-BR-<spec-br-rule-id/>"></a>
|
|
479
|
+
|
|
480
|
+
- Category: <spec-br-rule-category/>
|
|
481
|
+
- Constrains: <spec-br-rule-constrains/>
|
|
482
|
+
|
|
483
|
+
<spec-br-rule-statement/>,
|
|
484
|
+
**BECAUSE** <spec-br-rule-rationale/>.
|
|
485
|
+
|
|
486
|
+
</format>
|
|
487
|
+
|
|
488
|
+
- <spec-br-rule/> details:
|
|
489
|
+
|
|
490
|
+
- <spec-br-rule-id/>: per-artifact unique "slug" of always 1-3
|
|
491
|
+
lower-cased words (concatenated with "-" characters and
|
|
492
|
+
in total not longer than 30 characters), derived from
|
|
493
|
+
<spec-br-rule-name/>.
|
|
494
|
+
|
|
495
|
+
- <spec-br-rule-name/>: a short (3-8 word) summary of the business
|
|
496
|
+
rule.
|
|
497
|
+
|
|
498
|
+
- <spec-br-rule-category/>: the kind of rule, one of `Invariant`
|
|
499
|
+
(a condition that must always hold), `Constraint` (a limit on
|
|
500
|
+
allowed values or actions), `Derivation` (a value computed from
|
|
501
|
+
others), or `Policy` (a deliberate business decision or
|
|
502
|
+
guideline).
|
|
503
|
+
|
|
504
|
+
- <spec-br-rule-constrains/>: a comma-separated list of zero or more
|
|
505
|
+
`SPEC-FR-<spec-fr-requirement-id/>` or
|
|
506
|
+
`SPEC-NR-<spec-nr-requirement-id/>` references to the
|
|
507
|
+
corresponding **Aspect**s of the Functional or Non-Functional
|
|
508
|
+
Requirements **Artifact** the rule constrains.
|
|
509
|
+
|
|
510
|
+
- <spec-br-rule-statement/>: a concise paragraph (1-3 sentences) of
|
|
511
|
+
prose stating the rule declaratively as a condition that must
|
|
512
|
+
hold, written with the keyword `MUST`, `SHOULD`, or `MUST NOT`
|
|
513
|
+
to indicate the obligation level, and naming the domain terms it
|
|
514
|
+
governs (defined in the Glossary **Artifact**).
|
|
515
|
+
|
|
516
|
+
- <spec-br-rule-rationale/>: the 1-sentence rationale ("why") of the
|
|
517
|
+
business rule.
|
|
518
|
+
|
|
519
|
+
- In case the rule constrains no specific requirement, the
|
|
520
|
+
entire `- Constrains:` bullet point is omitted.
|
|
521
|
+
|
|
522
|
+
- In case the rationale is not present, the
|
|
523
|
+
entire `, **BECAUSE** [...]` clause is omitted.
|
|
346
524
|
|
|
347
525
|
Data Model (DM)
|
|
348
526
|
---------------
|
|
@@ -370,24 +548,24 @@ manages, defining how information is organized and connected.
|
|
|
370
548
|
|
|
371
549
|
<format>
|
|
372
550
|
|
|
373
|
-
## ENTITY
|
|
551
|
+
## ENTITY: `<spec-dm-entity-name/>` <a id="SPEC-DM-<spec-dm-entity-id/>"></a>
|
|
374
552
|
|
|
375
|
-
<spec-dm-entity-description
|
|
376
|
-
|
|
553
|
+
<spec-dm-entity-description/>,
|
|
554
|
+
**BECAUSE** <spec-dm-entity-rationale/>.
|
|
377
555
|
|
|
378
556
|
### ATTRIBUTES
|
|
379
557
|
|
|
380
|
-
-
|
|
381
|
-
<spec-dm-attribute-description
|
|
382
|
-
|
|
558
|
+
- `<spec-dm-attribute-id/>`: `<spec-dm-attribute-qualifier/><spec-dm-attribute-type/>`:<br/>
|
|
559
|
+
<spec-dm-attribute-description/>,
|
|
560
|
+
**BECAUSE** <spec-dm-attribute-rationale/>.
|
|
383
561
|
|
|
384
562
|
- [...]
|
|
385
563
|
|
|
386
564
|
### RELATIONS
|
|
387
565
|
|
|
388
|
-
-
|
|
389
|
-
<spec-dm-relation-description
|
|
390
|
-
|
|
566
|
+
- `<spec-dm-relation-id/>`: [`<spec-dm-relation-target/>`](#<spec-dm-relation-id/>)(`<spec-dm-relation-cardinality/>`):<br/>
|
|
567
|
+
<spec-dm-relation-description/>,
|
|
568
|
+
**BECAUSE** <spec-dm-relation-rationale/>.
|
|
391
569
|
|
|
392
570
|
- [...]
|
|
393
571
|
|
|
@@ -437,6 +615,9 @@ manages, defining how information is organized and connected.
|
|
|
437
615
|
- <spec-dm-relation-target/>: the <spec-dm-entity-name/> of the
|
|
438
616
|
entity the directed relation targets.
|
|
439
617
|
|
|
618
|
+
- <spec-dm-relation-id/>: the <spec-dm-entity-id/> of the
|
|
619
|
+
entity the directed relation targets.
|
|
620
|
+
|
|
440
621
|
- <spec-dm-relation-cardinality/>: the cardinality of the entity
|
|
441
622
|
relation at the target entity: `0..1` for zero or one
|
|
442
623
|
("optional"), `1` for exactly one ("mandatory"), `0..n` for
|
|
@@ -446,191 +627,276 @@ manages, defining how information is organized and connected.
|
|
|
446
627
|
entire `### RELATIONS` block is omitted.
|
|
447
628
|
|
|
448
629
|
- In case any rationale is not present, the
|
|
449
|
-
entire
|
|
630
|
+
entire `, **BECAUSE** [...]` clause is omitted.
|
|
450
631
|
|
|
451
|
-
|
|
452
|
-
|
|
632
|
+
State Model (SM)
|
|
633
|
+
----------------
|
|
453
634
|
|
|
454
|
-
|
|
455
|
-
|
|
635
|
+
For each entity with a non-trivial lifecycle, the legal states it can
|
|
636
|
+
occupy and the permitted transitions between them over its lifetime,
|
|
637
|
+
making the forbidden moves as explicit as the allowed ones.
|
|
456
638
|
|
|
457
639
|
- Format:
|
|
458
640
|
|
|
459
641
|
<format>
|
|
460
642
|
|
|
461
|
-
# SPECIFICATION:
|
|
643
|
+
# SPECIFICATION: STATE MODEL (SPEC-SM)
|
|
462
644
|
|
|
463
645
|
✳ Created: **<timestamp-created/>**
|
|
464
646
|
✎ Modified: **<timestamp-modified/>**
|
|
465
647
|
|
|
466
|
-
<spec-
|
|
467
|
-
<spec-
|
|
648
|
+
<spec-sm-lifecycle/>
|
|
649
|
+
<spec-sm-lifecycle/>
|
|
468
650
|
[...]
|
|
469
651
|
|
|
470
652
|
</format>
|
|
471
653
|
|
|
472
|
-
- <spec-
|
|
654
|
+
- <spec-sm-lifecycle/> format:
|
|
473
655
|
|
|
474
656
|
<format>
|
|
475
657
|
|
|
476
|
-
##
|
|
658
|
+
## LIFECYCLE: <spec-sm-lifecycle-name/> <a id="SPEC-SM-<spec-sm-lifecycle-id/>"></a>
|
|
477
659
|
|
|
478
|
-
-
|
|
479
|
-
-
|
|
480
|
-
-
|
|
481
|
-
- Postcondition: <spec-uc-usecase-postcondition/>
|
|
660
|
+
- Entity: <spec-sm-lifecycle-entity/>
|
|
661
|
+
- Initial: <spec-sm-lifecycle-initial/>
|
|
662
|
+
- Final: <spec-sm-lifecycle-final/>
|
|
482
663
|
|
|
483
|
-
|
|
664
|
+
### STATES
|
|
665
|
+
|
|
666
|
+
- `<spec-sm-state-name/>`:
|
|
667
|
+
<spec-sm-state-description/>.
|
|
668
|
+
|
|
669
|
+
- [...]
|
|
670
|
+
|
|
671
|
+
### TRANSITIONS
|
|
672
|
+
|
|
673
|
+
- `<spec-sm-transition-from/>` ─(<spec-sm-transition-event/>)─► `<spec-sm-transition-to/>`:
|
|
674
|
+
<spec-sm-transition-effect/>,
|
|
675
|
+
**WHEN** <spec-sm-transition-guard/>.
|
|
676
|
+
|
|
677
|
+
- [...]
|
|
484
678
|
|
|
485
679
|
</format>
|
|
486
680
|
|
|
487
|
-
- <spec-
|
|
681
|
+
- <spec-sm-lifecycle/> details:
|
|
488
682
|
|
|
489
|
-
- <spec-
|
|
683
|
+
- <spec-sm-lifecycle-id/>: per-artifact unique "slug" of always 1-3
|
|
490
684
|
lower-cased words (concatenated with "-" characters and
|
|
491
685
|
in total not longer than 30 characters), derived from
|
|
492
|
-
<spec-
|
|
686
|
+
<spec-sm-lifecycle-name/>.
|
|
493
687
|
|
|
494
|
-
- <spec-
|
|
495
|
-
|
|
688
|
+
- <spec-sm-lifecycle-name/>: a short (1-3 word) name of the lifecycle,
|
|
689
|
+
normally the name of the entity it governs.
|
|
496
690
|
|
|
497
|
-
- <spec-
|
|
498
|
-
reference to the corresponding **Aspect** of the
|
|
499
|
-
**Artifact
|
|
691
|
+
- <spec-sm-lifecycle-entity/> is a `SPEC-DM-<spec-dm-entity-id/>`
|
|
692
|
+
reference to the corresponding **Aspect** of the Data Model
|
|
693
|
+
**Artifact** whose lifecycle this models.
|
|
500
694
|
|
|
501
|
-
- <spec-
|
|
502
|
-
|
|
695
|
+
- <spec-sm-lifecycle-initial/>: the <spec-sm-state-name/> of the
|
|
696
|
+
single state every instance of the entity enters upon creation.
|
|
503
697
|
|
|
504
|
-
- <spec-
|
|
505
|
-
|
|
698
|
+
- <spec-sm-lifecycle-final/>: a comma-separated list of one or more
|
|
699
|
+
<spec-sm-state-name/>s in which the entity may legally come to
|
|
700
|
+
rest permanently (terminal states).
|
|
506
701
|
|
|
507
|
-
- <spec-
|
|
508
|
-
the
|
|
702
|
+
- <spec-sm-state-name/>: a short, Pascal-cased, per-lifecycle unique
|
|
703
|
+
name of one state the entity can occupy (e.g. `Draft`,
|
|
704
|
+
`Shipped`).
|
|
509
705
|
|
|
510
|
-
- <spec-
|
|
511
|
-
|
|
512
|
-
prescribing the step-by-step flow (which belongs to the **Use
|
|
513
|
-
Case Scenarios** **Artifact**).
|
|
706
|
+
- <spec-sm-state-description/>: the 1-sentence description ("what
|
|
707
|
+
holds true") of the state.
|
|
514
708
|
|
|
515
|
-
-
|
|
516
|
-
|
|
709
|
+
- <spec-sm-transition-from/>: the <spec-sm-state-name/> the
|
|
710
|
+
transition departs from.
|
|
711
|
+
|
|
712
|
+
- <spec-sm-transition-to/>: the <spec-sm-state-name/> the transition
|
|
713
|
+
arrives at.
|
|
714
|
+
|
|
715
|
+
- <spec-sm-transition-event/>: a short, lower-cased verb naming the
|
|
716
|
+
event or action that triggers the transition (e.g. `submit`,
|
|
717
|
+
`ship`, `cancel`).
|
|
517
718
|
|
|
518
|
-
|
|
519
|
-
|
|
719
|
+
- <spec-sm-transition-effect/>: the 1-sentence description ("what
|
|
720
|
+
happens") of the side effect the transition produces.
|
|
520
721
|
|
|
521
|
-
|
|
522
|
-
|
|
722
|
+
- <spec-sm-transition-guard/>: the condition that must hold for the
|
|
723
|
+
transition to be permitted; any move not listed as a transition
|
|
724
|
+
is implicitly forbidden.
|
|
725
|
+
|
|
726
|
+
- Every <spec-sm-state-name/> used in a transition *MUST* be
|
|
727
|
+
declared in the `### STATES` block, and every non-final state
|
|
728
|
+
*MUST* have at least one outgoing transition.
|
|
729
|
+
|
|
730
|
+
- In case a transition has no side effect, the
|
|
731
|
+
entire `<spec-sm-transition-effect/>,` clause is omitted.
|
|
732
|
+
|
|
733
|
+
- In case a transition has no guard, the
|
|
734
|
+
entire `, **WHEN** [...]` clause is omitted.
|
|
735
|
+
|
|
736
|
+
Glossary (GL)
|
|
737
|
+
-------------
|
|
738
|
+
|
|
739
|
+
The ubiquitous language of the domain, defining the meaning of each
|
|
740
|
+
domain term in business language, together with its synonyms and the
|
|
741
|
+
ambiguities to avoid, shared consistently across all Artifacts.
|
|
523
742
|
|
|
524
743
|
- Format:
|
|
525
744
|
|
|
526
745
|
<format>
|
|
527
746
|
|
|
528
|
-
# SPECIFICATION:
|
|
747
|
+
# SPECIFICATION: GLOSSARY (SPEC-GL)
|
|
529
748
|
|
|
530
749
|
✳ Created: **<timestamp-created/>**
|
|
531
750
|
✎ Modified: **<timestamp-modified/>**
|
|
532
751
|
|
|
533
|
-
<spec-
|
|
534
|
-
<spec-
|
|
752
|
+
<spec-gl-term/>
|
|
753
|
+
<spec-gl-term/>
|
|
535
754
|
[...]
|
|
536
755
|
|
|
537
756
|
</format>
|
|
538
757
|
|
|
539
|
-
- <spec-
|
|
758
|
+
- <spec-gl-term/> format:
|
|
540
759
|
|
|
541
760
|
<format>
|
|
542
761
|
|
|
543
|
-
##
|
|
762
|
+
## TERM: <spec-gl-term-name/> <a id="SPEC-GL-<spec-gl-term-id/>"></a>
|
|
544
763
|
|
|
545
|
-
-
|
|
546
|
-
- Type: <spec-us-scenario-type/>
|
|
764
|
+
- Synonyms: <spec-gl-term-synonyms/>
|
|
547
765
|
|
|
548
|
-
|
|
549
|
-
2. <spec-us-scenario-step/>
|
|
550
|
-
[...]
|
|
766
|
+
<spec-gl-term-definition/>
|
|
551
767
|
|
|
552
768
|
</format>
|
|
553
769
|
|
|
554
|
-
- <spec-
|
|
770
|
+
- <spec-gl-term/> details:
|
|
555
771
|
|
|
556
|
-
- <spec-
|
|
772
|
+
- <spec-gl-term-id/>: per-artifact unique "slug" of always 1-3
|
|
557
773
|
lower-cased words (concatenated with "-" characters and
|
|
558
774
|
in total not longer than 30 characters), derived from
|
|
559
|
-
<spec-
|
|
775
|
+
<spec-gl-term-name/>.
|
|
560
776
|
|
|
561
|
-
- <spec-
|
|
562
|
-
|
|
777
|
+
- <spec-gl-term-name/>: the canonical, preferred name of the domain
|
|
778
|
+
term, capitalized as it should appear in all Artifacts.
|
|
563
779
|
|
|
564
|
-
- <spec-
|
|
565
|
-
|
|
566
|
-
|
|
780
|
+
- <spec-gl-term-synonyms/>: a comma-separated list of one or more
|
|
781
|
+
alternative names or abbreviations that refer to the same term
|
|
782
|
+
but are *not* the preferred form.
|
|
567
783
|
|
|
568
|
-
- <spec-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
784
|
+
- <spec-gl-term-definition/>: a concise paragraph (1-3 sentences) of
|
|
785
|
+
prose defining the term in business language, independent of any
|
|
786
|
+
implementation, and referencing other terms by their
|
|
787
|
+
<spec-gl-term-name/> where helpful.
|
|
572
788
|
|
|
573
|
-
-
|
|
574
|
-
|
|
575
|
-
(e.g. `The user submits the login form.`). Steps are numbered
|
|
576
|
-
sequentially to convey their order.
|
|
789
|
+
- In case a term has no synonyms, the
|
|
790
|
+
entire `- Synonyms:` bullet point is omitted.
|
|
577
791
|
|
|
578
|
-
|
|
579
|
-
|
|
792
|
+
Use Cases (UC)
|
|
793
|
+
--------------
|
|
580
794
|
|
|
581
|
-
The
|
|
582
|
-
|
|
795
|
+
The discrete goals users pursue with the solution, each describing an
|
|
796
|
+
actor's interaction to achieve a specific outcome. For each Use Case,
|
|
797
|
+
also the concrete step-by-step flows, detailing the sequence of actions
|
|
798
|
+
for main, alternative, and exceptional paths.
|
|
583
799
|
|
|
584
800
|
- Format:
|
|
585
801
|
|
|
586
802
|
<format>
|
|
587
803
|
|
|
588
|
-
# SPECIFICATION:
|
|
804
|
+
# SPECIFICATION: USE CASES (SPEC-UC)
|
|
589
805
|
|
|
590
806
|
✳ Created: **<timestamp-created/>**
|
|
591
807
|
✎ Modified: **<timestamp-modified/>**
|
|
592
808
|
|
|
593
|
-
<spec-
|
|
594
|
-
<spec-
|
|
809
|
+
<spec-uc-usecase/>
|
|
810
|
+
<spec-uc-usecase/>
|
|
595
811
|
[...]
|
|
596
812
|
|
|
597
813
|
</format>
|
|
598
814
|
|
|
599
|
-
- <spec-
|
|
815
|
+
- <spec-uc-usecase/> format:
|
|
600
816
|
|
|
601
817
|
<format>
|
|
602
818
|
|
|
603
|
-
##
|
|
819
|
+
## USE CASE: <spec-uc-usecase-name/> <a id="SPEC-UC-<spec-uc-usecase-id/>"></a>
|
|
604
820
|
|
|
605
|
-
-
|
|
606
|
-
-
|
|
607
|
-
-
|
|
608
|
-
-
|
|
821
|
+
- Actor: <spec-uc-usecase-actor/>
|
|
822
|
+
- Requirements: <spec-uc-usecase-requirements/>
|
|
823
|
+
- Goal: <spec-uc-usecase-goal/>
|
|
824
|
+
- Pre-Condition: <spec-uc-usecase-precondition/>
|
|
825
|
+
- Post-Condition: <spec-uc-usecase-postcondition/>
|
|
826
|
+
|
|
827
|
+
<spec-uc-usecase-description/>
|
|
828
|
+
|
|
829
|
+
<spec-uc-usecase-scenario/>
|
|
830
|
+
<spec-uc-usecase-scenario/>
|
|
831
|
+
[...]
|
|
609
832
|
|
|
610
833
|
</format>
|
|
611
834
|
|
|
612
|
-
- <spec-
|
|
835
|
+
- <spec-uc-usecase/> details:
|
|
613
836
|
|
|
614
|
-
- <spec-
|
|
837
|
+
- <spec-uc-usecase-id/>: per-artifact unique "slug" of always 1-3
|
|
615
838
|
lower-cased words (concatenated with "-" characters and
|
|
616
839
|
in total not longer than 30 characters), derived from
|
|
617
|
-
<spec-
|
|
840
|
+
<spec-uc-usecase-name/>.
|
|
618
841
|
|
|
619
|
-
- <spec-
|
|
620
|
-
|
|
842
|
+
- <spec-uc-usecase-name/>: a short (3-8 word) summary of the use
|
|
843
|
+
case, phrased as an actor goal (e.g. `Reset Forgotten Password`).
|
|
621
844
|
|
|
622
|
-
- <spec-
|
|
623
|
-
|
|
845
|
+
- <spec-uc-usecase-actor/> is a `SPEC-PE-<spec-pe-persona-id/>`
|
|
846
|
+
reference to the corresponding **Aspect** of the Personas
|
|
847
|
+
**Artifact**, denoting the primary actor pursuing the goal.
|
|
624
848
|
|
|
625
|
-
- <spec-
|
|
849
|
+
- <spec-uc-usecase-requirements/> is a comma-separated list of one
|
|
850
|
+
or more `SPEC-FR-<spec-fr-requirement-id/>` references to the
|
|
851
|
+
corresponding **Aspect**s of the Functional Requirements
|
|
852
|
+
**Artifact** the use case realizes.
|
|
626
853
|
|
|
627
|
-
- <spec-
|
|
854
|
+
- <spec-uc-usecase-goal/>: the 1-sentence statement of what the
|
|
855
|
+
actor wants to achieve through this use case.
|
|
628
856
|
|
|
629
|
-
- <spec-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
857
|
+
- <spec-uc-usecase-precondition/>: the condition that must hold
|
|
858
|
+
before the use case can begin.
|
|
859
|
+
|
|
860
|
+
- <spec-uc-usecase-postcondition/>: the condition that holds after
|
|
861
|
+
the use case completes successfully.
|
|
862
|
+
|
|
863
|
+
- <spec-uc-usecase-description/>: a concise paragraph (1-3
|
|
864
|
+
sentences) of prose describing the use case at a glance, without
|
|
865
|
+
prescribing the step-by-step flow (which belongs to the **Use
|
|
866
|
+
Case Scenarios** **Artifact**).
|
|
867
|
+
|
|
868
|
+
- In case the use case realizes no specific functional requirement,
|
|
869
|
+
the entire `- Requirements:` bullet point is omitted.
|
|
870
|
+
|
|
871
|
+
- In case a precondition or postcondition is not present, the
|
|
872
|
+
respective bullet point is omitted.
|
|
873
|
+
|
|
874
|
+
- <spec-uc-usecase-scenario/> format:
|
|
875
|
+
|
|
876
|
+
<format>
|
|
877
|
+
|
|
878
|
+
### SCENARIO: <spec-uc-usecase-scenario-name/> (<spec-uc-usecase-scenario-type/>)
|
|
879
|
+
|
|
880
|
+
1. <spec-uc-usecase-scenario-step/>
|
|
881
|
+
2. <spec-uc-usecase-scenario-step/>
|
|
882
|
+
[...]
|
|
883
|
+
|
|
884
|
+
</format>
|
|
885
|
+
|
|
886
|
+
- <spec-uc-usecase-scenario/> details:
|
|
887
|
+
|
|
888
|
+
- <spec-uc-usecase-scenario-name/>: a short (3-8 word) summary of the
|
|
889
|
+
scenario.
|
|
890
|
+
|
|
891
|
+
- <spec-uc-usecase-scenario-type/>: the path the scenario represents, one
|
|
892
|
+
of `Main` (the primary, happy-path flow), `Alternative` (a
|
|
893
|
+
valid but secondary flow), or `Exceptional` (an error or
|
|
894
|
+
failure-handling flow).
|
|
895
|
+
|
|
896
|
+
- <spec-uc-usecase-scenario-step/>: a single, imperative step in the flow,
|
|
897
|
+
naming the acting party (actor or system) and the action taken
|
|
898
|
+
(e.g. `The user submits the login form.`). Steps are numbered
|
|
899
|
+
sequentially to convey their order.
|
|
634
900
|
|
|
635
901
|
Test Cases (TC)
|
|
636
902
|
---------------
|
|
@@ -658,13 +924,13 @@ expected outcomes, and optional pre- and post-conditions.
|
|
|
658
924
|
|
|
659
925
|
<format>
|
|
660
926
|
|
|
661
|
-
## TEST CASE
|
|
927
|
+
## TEST CASE: <spec-tc-testcase-name/> <a id="SPEC-TC-<spec-tc-testcase-id/>"></a>
|
|
662
928
|
|
|
663
|
-
- Verifies:
|
|
664
|
-
-
|
|
665
|
-
- Input:
|
|
666
|
-
- Expected:
|
|
667
|
-
-
|
|
929
|
+
- Verifies: <spec-tc-testcase-verifies/>
|
|
930
|
+
- Pre-Condition: <spec-tc-testcase-precondition/>
|
|
931
|
+
- Input: <spec-tc-testcase-input/>
|
|
932
|
+
- Expected: <spec-tc-testcase-expected/>
|
|
933
|
+
- Post-Condition: <spec-tc-testcase-postcondition/>
|
|
668
934
|
|
|
669
935
|
</format>
|
|
670
936
|
|
|
@@ -695,7 +961,7 @@ expected outcomes, and optional pre- and post-conditions.
|
|
|
695
961
|
- <spec-tc-testcase-postcondition/>: the state that must hold after
|
|
696
962
|
the test completes (optional).
|
|
697
963
|
|
|
698
|
-
- In case a
|
|
964
|
+
- In case a pre-condition or post-condition is not present, the
|
|
699
965
|
respective bullet point is omitted.
|
|
700
966
|
|
|
701
967
|
Interaction Concept (IC)
|
|
@@ -724,10 +990,10 @@ auto-save behavior).
|
|
|
724
990
|
|
|
725
991
|
<format>
|
|
726
992
|
|
|
727
|
-
## PRINCIPLE
|
|
993
|
+
## PRINCIPLE: <spec-ic-principle-name/> <a id="SPEC-IC-<spec-ic-principle-id/>"></a>
|
|
728
994
|
|
|
729
|
-
<spec-ic-principle-statement
|
|
730
|
-
|
|
995
|
+
<spec-ic-principle-statement/>,
|
|
996
|
+
**BECAUSE** <spec-ic-principle-rationale/>.
|
|
731
997
|
|
|
732
998
|
</format>
|
|
733
999
|
|
|
@@ -750,7 +1016,7 @@ auto-save behavior).
|
|
|
750
1016
|
of the interaction principle.
|
|
751
1017
|
|
|
752
1018
|
- In case the rationale is not present, the
|
|
753
|
-
entire
|
|
1019
|
+
entire `, **BECAUSE** [...]` clause is omitted.
|
|
754
1020
|
|
|
755
1021
|
Language Conventions (LC)
|
|
756
1022
|
-------------------------
|
|
@@ -777,7 +1043,7 @@ across the solution and its content.
|
|
|
777
1043
|
|
|
778
1044
|
<format>
|
|
779
1045
|
|
|
780
|
-
## CONVENTION
|
|
1046
|
+
## CONVENTION: <spec-lc-convention-name/> <a id="SPEC-LC-<spec-lc-convention-id/>"></a>
|
|
781
1047
|
|
|
782
1048
|
- Category: <spec-lc-convention-category/>
|
|
783
1049
|
|
|
@@ -837,12 +1103,13 @@ master-detail dialog).
|
|
|
837
1103
|
|
|
838
1104
|
<format>
|
|
839
1105
|
|
|
840
|
-
## PATTERN
|
|
1106
|
+
## PATTERN: <spec-dp-pattern-name/> <a id="SPEC-DP-<spec-dp-pattern-id/>"></a>
|
|
841
1107
|
|
|
842
1108
|
- Context: <spec-dp-pattern-context/>
|
|
1109
|
+
- Problem: <spec-dp-pattern-problem/>
|
|
843
1110
|
|
|
844
|
-
<spec-dp-pattern-description
|
|
845
|
-
|
|
1111
|
+
<spec-dp-pattern-description/>,
|
|
1112
|
+
**BECAUSE** <spec-dp-pattern-rationale/>.
|
|
846
1113
|
|
|
847
1114
|
</format>
|
|
848
1115
|
|
|
@@ -859,17 +1126,27 @@ master-detail dialog).
|
|
|
859
1126
|
- <spec-dp-pattern-context/>: the recurring situation or flow in
|
|
860
1127
|
which the pattern is applied.
|
|
861
1128
|
|
|
1129
|
+
- <spec-dp-pattern-problem/>: the 1-sentence tension or difficulty
|
|
1130
|
+
the pattern resolves ("why is the pattern needed"),
|
|
1131
|
+
stated independently of its solution (which belongs to
|
|
1132
|
+
<spec-dp-pattern-description/>) and its rationale (which belongs
|
|
1133
|
+
to <spec-dp-pattern-rationale/>).
|
|
1134
|
+
|
|
862
1135
|
- <spec-dp-pattern-description/>: a concise paragraph (1-3
|
|
863
1136
|
sentences) of prose describing the reusable interaction structure
|
|
864
1137
|
and how the system and user exchange information within it.
|
|
865
1138
|
|
|
866
|
-
- <spec-dp-pattern-rationale/>: the 1-sentence
|
|
867
|
-
the
|
|
1139
|
+
- <spec-dp-pattern-rationale/>: the 1-sentence justification for why
|
|
1140
|
+
the structure in <spec-dp-pattern-description/> is the right
|
|
1141
|
+
response — the benefit it secures or the trade-off it wins.
|
|
1142
|
+
Unlike <spec-dp-pattern-problem/> (which states *why the pattern
|
|
1143
|
+
is needed*, independent of any solution), the rationale states
|
|
1144
|
+
*why this particular solution is worth adopting*.
|
|
868
1145
|
|
|
869
1146
|
- In case the rationale is not present, the
|
|
870
|
-
entire
|
|
1147
|
+
entire `, **BECAUSE** [...]` clause is omitted.
|
|
871
1148
|
|
|
872
|
-
Dialog Storyboard (
|
|
1149
|
+
Dialog Storyboard (DS)
|
|
873
1150
|
----------------------
|
|
874
1151
|
|
|
875
1152
|
The sequenced visual or textual depiction of a specific dialog flow,
|
|
@@ -880,59 +1157,66 @@ turn.
|
|
|
880
1157
|
|
|
881
1158
|
<format>
|
|
882
1159
|
|
|
883
|
-
# SPECIFICATION: DIALOG STORYBOARD (SPEC-
|
|
1160
|
+
# SPECIFICATION: DIALOG STORYBOARD (SPEC-DS)
|
|
884
1161
|
|
|
885
1162
|
✳ Created: **<timestamp-created/>**
|
|
886
1163
|
✎ Modified: **<timestamp-modified/>**
|
|
887
1164
|
|
|
888
|
-
<spec-
|
|
889
|
-
<spec-
|
|
1165
|
+
<spec-ds-storyboard/>
|
|
1166
|
+
<spec-ds-storyboard/>
|
|
890
1167
|
[...]
|
|
891
1168
|
|
|
892
1169
|
</format>
|
|
893
1170
|
|
|
894
|
-
- <spec-
|
|
1171
|
+
- <spec-ds-storyboard/> format:
|
|
895
1172
|
|
|
896
1173
|
<format>
|
|
897
1174
|
|
|
898
|
-
## STORYBOARD
|
|
1175
|
+
## STORYBOARD: <spec-ds-storyboard-name/> <a id="SPEC-DS-<spec-ds-storyboard-id/>"></a>
|
|
899
1176
|
|
|
900
|
-
- Pattern: <spec-
|
|
901
|
-
-
|
|
1177
|
+
- Pattern: <spec-ds-storyboard-pattern/>
|
|
1178
|
+
- Use Case: <spec-ds-storyboard-usecase/>
|
|
1179
|
+
- Scenario: <spec-ds-storyboard-scenario/>
|
|
902
1180
|
|
|
903
|
-
1. **<spec-
|
|
904
|
-
2. **<spec-
|
|
1181
|
+
1. **<spec-ds-frame-name/>**: <spec-ds-frame-description/>
|
|
1182
|
+
2. **<spec-ds-frame-name/>**: <spec-ds-frame-description/>
|
|
905
1183
|
[...]
|
|
906
1184
|
|
|
907
1185
|
</format>
|
|
908
1186
|
|
|
909
|
-
- <spec-
|
|
1187
|
+
- <spec-ds-storyboard/> details:
|
|
910
1188
|
|
|
911
|
-
- <spec-
|
|
1189
|
+
- <spec-ds-storyboard-id/>: per-artifact unique "slug" of always
|
|
912
1190
|
1-3 lower-cased words (concatenated with "-" characters and
|
|
913
1191
|
in total not longer than 30 characters), derived from
|
|
914
|
-
<spec-
|
|
1192
|
+
<spec-ds-storyboard-name/>.
|
|
915
1193
|
|
|
916
|
-
- <spec-
|
|
1194
|
+
- <spec-ds-storyboard-name/>: a short (3-8 word) summary of the
|
|
917
1195
|
depicted dialog flow.
|
|
918
1196
|
|
|
919
|
-
- <spec-
|
|
1197
|
+
- <spec-ds-storyboard-pattern/> is a `SPEC-DP-<spec-dp-pattern-id/>`
|
|
920
1198
|
reference to the corresponding **Aspect** of the Dialog Patterns
|
|
921
1199
|
**Artifact** the storyboard instantiates (optional).
|
|
922
1200
|
|
|
923
|
-
- <spec-
|
|
924
|
-
reference to the corresponding
|
|
925
|
-
|
|
1201
|
+
- <spec-ds-storyboard-usecase/> is a
|
|
1202
|
+
`SPEC-UC-<spec-uc-usecase-id/>` reference to the corresponding
|
|
1203
|
+
**Aspect** of the Use Case **Artifact** the storyboard
|
|
1204
|
+
visualizes (optional).
|
|
926
1205
|
|
|
927
|
-
- <spec-
|
|
1206
|
+
- <spec-ds-storyboard-scenario/> is a
|
|
1207
|
+
Use Case scenario type `<spec-uc-usecase-scenario-type/>` of
|
|
1208
|
+
the corresponding **Aspect** of the Use Case **Artifact** the
|
|
1209
|
+
storyboard visualizes (optional).
|
|
1210
|
+
|
|
1211
|
+
- <spec-ds-frame-name/>: a short (2-5 word) label for the screen,
|
|
928
1212
|
turn, or state depicted by the storyboard frame. Frames are
|
|
929
1213
|
numbered sequentially to convey their order.
|
|
930
1214
|
|
|
931
|
-
- <spec-
|
|
1215
|
+
- <spec-ds-frame-description/>: a concise (1-2 sentence) description
|
|
932
1216
|
of what the user sees and does at this frame of the interaction.
|
|
933
1217
|
|
|
934
|
-
- In case a pattern or scenario reference is not present,
|
|
935
|
-
respective bullet point is omitted.
|
|
1218
|
+
- In case a pattern, use case, or scenario reference is not present,
|
|
1219
|
+
the respective bullet point is omitted.
|
|
936
1220
|
|
|
937
1221
|
Visual Design (VD)
|
|
938
1222
|
------------------
|
|
@@ -959,12 +1243,12 @@ typography, spacing, imagery, and overall look and feel.
|
|
|
959
1243
|
|
|
960
1244
|
<format>
|
|
961
1245
|
|
|
962
|
-
## ELEMENT
|
|
1246
|
+
## ELEMENT: <spec-vd-element-name/> <a id="SPEC-VD-<spec-vd-element-id/>"></a>
|
|
963
1247
|
|
|
964
1248
|
- Category: <spec-vd-element-category/>
|
|
965
1249
|
|
|
966
|
-
<spec-vd-element-specification
|
|
967
|
-
|
|
1250
|
+
<spec-vd-element-specification/>,
|
|
1251
|
+
**BECAUSE** <spec-vd-element-rationale/>.
|
|
968
1252
|
|
|
969
1253
|
</format>
|
|
970
1254
|
|
|
@@ -979,8 +1263,8 @@ typography, spacing, imagery, and overall look and feel.
|
|
|
979
1263
|
design element.
|
|
980
1264
|
|
|
981
1265
|
- <spec-vd-element-category/>: the aspect of visual design the
|
|
982
|
-
element governs, one of `Color`, `Typography`, `
|
|
983
|
-
`
|
|
1266
|
+
element governs, one of `Color`, `Typography`, `Iconography`,
|
|
1267
|
+
`Imagery`, `Layout`, or `Animation`.
|
|
984
1268
|
|
|
985
1269
|
- <spec-vd-element-specification/>: a concise paragraph (1-3
|
|
986
1270
|
sentences) of prose specifying the concrete values, tokens, or
|
|
@@ -991,4 +1275,4 @@ typography, spacing, imagery, and overall look and feel.
|
|
|
991
1275
|
the visual design element.
|
|
992
1276
|
|
|
993
1277
|
- In case the rationale is not present, the
|
|
994
|
-
entire
|
|
1278
|
+
entire `, **BECAUSE** [...]` clause is omitted.
|