@rse/ase 0.9.0 → 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/dst/ase-bash.js +618 -0
- package/dst/ase-hook.js +27 -0
- 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 +882 -0
- package/plugin/meta/ase-format-meta.md +51 -0
- package/plugin/meta/ase-format-spec.md +1278 -0
- package/plugin/meta/ase-skill.md +8 -0
- package/plugin/package.json +1 -1
- package/plugin/skills/ase-code-craft/SKILL.md +4 -3
- package/plugin/skills/ase-code-refactor/SKILL.md +4 -3
- package/plugin/skills/ase-code-resolve/SKILL.md +4 -3
- package/plugin/skills/ase-meta-brainstorm/SKILL.md +2 -2
- package/plugin/skills/ase-task-condense/SKILL.md +267 -0
- package/plugin/skills/ase-task-condense/help.md +77 -0
- package/plugin/skills/ase-task-edit/SKILL.md +26 -26
- package/plugin/skills/ase-task-edit/help.md +10 -10
- package/plugin/skills/ase-task-grill/SKILL.md +8 -8
- package/plugin/.claude/settings.local.json +0 -7
- package/plugin/meta/ase-format-adr.md +0 -199
|
@@ -0,0 +1,1278 @@
|
|
|
1
|
+
|
|
2
|
+
@./ase-format-meta.md
|
|
3
|
+
|
|
4
|
+
Specification (SPEC)
|
|
5
|
+
====================
|
|
6
|
+
|
|
7
|
+
The **Artifact Set** **Specification (SPEC)** specifies the "input"
|
|
8
|
+
and the "what" of the Software Engineering project.
|
|
9
|
+
|
|
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.
|
|
24
|
+
|
|
25
|
+
Each **Artifact** contains two timestamps: the <timestamp-created/>
|
|
26
|
+
is the timestamp when this **Artifact** was created. The
|
|
27
|
+
<timestamp-modified/> is the timestamp when this **Artifact** was last
|
|
28
|
+
modified. Both use an ISO-style format value. The value of both can be
|
|
29
|
+
determined by a call to the `ase_timestamp(format: "yyyy-LL-dd HH:mm")`
|
|
30
|
+
tool of the `ase` MCP server and use the `text` field of its response.
|
|
31
|
+
Whenever an **Artifact** is updated, the <timestamp-modified/> *MUST* be
|
|
32
|
+
updated, too.
|
|
33
|
+
|
|
34
|
+
The **Artifact Set** **Specification (SPEC)** consists of the following
|
|
35
|
+
distinct **Artifact**s (listed under their <artifact-name/> and their
|
|
36
|
+
<artifact-id/>):
|
|
37
|
+
|
|
38
|
+
01. **Solution Vision (SV)**:
|
|
39
|
+
The high-level, aspirational description of the solution, capturing
|
|
40
|
+
its purpose, value proposition, and the desired future state it aims
|
|
41
|
+
to achieve.
|
|
42
|
+
|
|
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)**:
|
|
53
|
+
The concrete behaviors and capabilities the solution must provide,
|
|
54
|
+
describing *what* the system does in terms of functions, features, and
|
|
55
|
+
operations.
|
|
56
|
+
|
|
57
|
+
05. **Non-Functional Requirements (NR)**:
|
|
58
|
+
The quality attributes and constraints the solution must satisfy, such
|
|
59
|
+
as performance, security, scalability, reliability, and usability.
|
|
60
|
+
|
|
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)**:
|
|
67
|
+
The structure of named entities, named attributes, and named directed
|
|
68
|
+
relationships (including a cardinality) of the data the solution
|
|
69
|
+
manages, defining how information is organized and connected.
|
|
70
|
+
|
|
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.
|
|
75
|
+
|
|
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.
|
|
80
|
+
|
|
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.
|
|
86
|
+
|
|
87
|
+
11. **Test Cases (TC)**:
|
|
88
|
+
The verifiable conditions and steps used to confirm that requirements
|
|
89
|
+
are correctly implemented, with mandatory defined inputs, mandatory
|
|
90
|
+
expected outcomes, and optional pre- and post-conditions.
|
|
91
|
+
|
|
92
|
+
12. **Interaction Concept (IC)**:
|
|
93
|
+
The overarching idea of how users interact with the solution,
|
|
94
|
+
describing the intended workflows and interaction philosophy (e.g.
|
|
95
|
+
auto-save behavior).
|
|
96
|
+
|
|
97
|
+
13. **Language Conventions (LC)**:
|
|
98
|
+
The terminology, naming, tone, and wording standards used consistently
|
|
99
|
+
across the solution and its content.
|
|
100
|
+
|
|
101
|
+
14. **Dialog Patterns (DP)**:
|
|
102
|
+
The reusable interaction structures governing how the system and user
|
|
103
|
+
exchange information across recurring conversational or UI flows (e.g.
|
|
104
|
+
master-detail dialog).
|
|
105
|
+
|
|
106
|
+
15. **Dialog Storyboard (DS)**:
|
|
107
|
+
The sequenced visual or textual depiction of a specific dialog flow,
|
|
108
|
+
illustrating how an interaction unfolds screen by screen or turn by
|
|
109
|
+
turn.
|
|
110
|
+
|
|
111
|
+
16. **Visual Design (VD)**:
|
|
112
|
+
The aesthetic and layout aspects of the solution, defining colors,
|
|
113
|
+
typography, spacing, imagery, and overall look and feel.
|
|
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
|
+
|
|
239
|
+
Customer Journey (CJ)
|
|
240
|
+
---------------------
|
|
241
|
+
|
|
242
|
+
The end-to-end experience a customer has while discovering, adopting,
|
|
243
|
+
and using the solution, mapping their steps, touchpoints, and emotions
|
|
244
|
+
over time.
|
|
245
|
+
|
|
246
|
+
- Format:
|
|
247
|
+
|
|
248
|
+
<format>
|
|
249
|
+
|
|
250
|
+
# SPECIFICATION: CUSTOMER JOURNEY (SPEC-CJ)
|
|
251
|
+
|
|
252
|
+
✳ Created: **<timestamp-created/>**
|
|
253
|
+
✎ Modified: **<timestamp-modified/>**
|
|
254
|
+
|
|
255
|
+
<spec-cj-step/>
|
|
256
|
+
<spec-cj-step/>
|
|
257
|
+
[...]
|
|
258
|
+
|
|
259
|
+
</format>
|
|
260
|
+
|
|
261
|
+
- <spec-cj-step/> format:
|
|
262
|
+
|
|
263
|
+
<format>
|
|
264
|
+
|
|
265
|
+
## STEP: <spec-cj-step-name/> <a id="SPEC-CJ-<spec-cj-step-id/>"></a>
|
|
266
|
+
|
|
267
|
+
- Stage: <spec-cj-step-stage/>
|
|
268
|
+
- Actor: <spec-cj-step-actor/>
|
|
269
|
+
- Goal: <spec-cj-step-goal/>
|
|
270
|
+
- Touchpoint: <spec-cj-step-touchpoint/>
|
|
271
|
+
- Action: <spec-cj-step-action/>
|
|
272
|
+
- Emotion: <spec-cj-step-emotion/>
|
|
273
|
+
- Pain Point: <spec-cj-step-painpoint/>
|
|
274
|
+
|
|
275
|
+
</format>
|
|
276
|
+
|
|
277
|
+
- <spec-cj-step/> details:
|
|
278
|
+
|
|
279
|
+
- <spec-cj-step-id/>: per-artifact unique "slug" of always 1-3
|
|
280
|
+
lower-cased words (concatenated with "-" characters and
|
|
281
|
+
in total not longer than 30 characters), derived from
|
|
282
|
+
<spec-cj-step-name/>.
|
|
283
|
+
|
|
284
|
+
- <spec-cj-step-name/> is a summary (5-10 words) of the *step* at its
|
|
285
|
+
<spec-cj-step-touchpoint/>.
|
|
286
|
+
|
|
287
|
+
- <spec-cj-step-actor/> is a `SPEC-PE-<spec-pe-persona-id/>` reference to the
|
|
288
|
+
corresponding **Aspect** of the Personas **Artifact**.
|
|
289
|
+
|
|
290
|
+
- <spec-cj-step-stage/> is one of:
|
|
291
|
+
|
|
292
|
+
- `Awareness`: Customer is not aware of solution, but has a need.
|
|
293
|
+
- `Consideration`: Customer is aware of solution, and should consider its use.
|
|
294
|
+
- `Decision`: Customer wants to pick the solution.
|
|
295
|
+
- `Onboarding`: Customer is using the solution.
|
|
296
|
+
- `Retention`: Customer in the long-term stays a customer.
|
|
297
|
+
- `Advocacy`: Customer is a fan of solution and tells the tribe.
|
|
298
|
+
|
|
299
|
+
- <spec-cj-step-goal/> is what the actor wants to achieve at this step.
|
|
300
|
+
|
|
301
|
+
- <spec-cj-step-touchpoint/> is where or how the interaction happens
|
|
302
|
+
(e.g. landing page, email, support call).
|
|
303
|
+
|
|
304
|
+
- <spec-cj-step-action/> is what the actor actually does at this step.
|
|
305
|
+
|
|
306
|
+
- <spec-cj-step-emotion/> is the **AS IS** felt state at this step, given
|
|
307
|
+
as a word plus an intensity on a 1-5 Likert scale (e.g. `Curious (4)`).
|
|
308
|
+
|
|
309
|
+
- <spec-cj-step-painpoint/> is the **AS IS** friction or frustration the
|
|
310
|
+
actor encounters at this step (optional).
|
|
311
|
+
|
|
312
|
+
- In case a <spec-cj-step/> has no pain point at all, the
|
|
313
|
+
entire `- Pain Point:` bullet point is omitted.
|
|
314
|
+
|
|
315
|
+
Functional Requirements (FR)
|
|
316
|
+
----------------------------
|
|
317
|
+
|
|
318
|
+
The concrete behaviors and capabilities the solution must provide,
|
|
319
|
+
describing *what* the system does in terms of functions, features, and
|
|
320
|
+
operations.
|
|
321
|
+
|
|
322
|
+
- Format:
|
|
323
|
+
|
|
324
|
+
<format>
|
|
325
|
+
|
|
326
|
+
# SPECIFICATION: FUNCTIONAL REQUIREMENTS (SPEC-FR)
|
|
327
|
+
|
|
328
|
+
✳ Created: **<timestamp-created/>**
|
|
329
|
+
✎ Modified: **<timestamp-modified/>**
|
|
330
|
+
|
|
331
|
+
<spec-fr-requirement/>
|
|
332
|
+
<spec-fr-requirement/>
|
|
333
|
+
[...]
|
|
334
|
+
|
|
335
|
+
</format>
|
|
336
|
+
|
|
337
|
+
- <spec-fr-requirement/> format:
|
|
338
|
+
|
|
339
|
+
<format>
|
|
340
|
+
|
|
341
|
+
## REQUIREMENT: <spec-fr-requirement-name/> <a id="SPEC-FR-<spec-fr-requirement-id/>"></a>
|
|
342
|
+
|
|
343
|
+
- Priority: <spec-fr-requirement-priority/>
|
|
344
|
+
|
|
345
|
+
<spec-fr-requirement-statement/>,
|
|
346
|
+
**BECAUSE** <spec-fr-requirement-rationale/>.
|
|
347
|
+
|
|
348
|
+
</format>
|
|
349
|
+
|
|
350
|
+
- <spec-fr-requirement/> details:
|
|
351
|
+
|
|
352
|
+
- <spec-fr-requirement-id/>: per-artifact unique "slug" of always
|
|
353
|
+
1-3 lower-cased words (concatenated with "-" characters and
|
|
354
|
+
in total not longer than 30 characters), derived from
|
|
355
|
+
<spec-fr-requirement-name/>.
|
|
356
|
+
|
|
357
|
+
- <spec-fr-requirement-name/>: a short (3-8 word) summary of the
|
|
358
|
+
functional requirement.
|
|
359
|
+
|
|
360
|
+
- <spec-fr-requirement-priority/>: the MoSCoW priority of the
|
|
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.
|
|
365
|
+
|
|
366
|
+
- <spec-fr-requirement-statement/>: a concise paragraph (1-3
|
|
367
|
+
sentences) of prose describing *what* the solution must do,
|
|
368
|
+
written with the keyword `MUST`, `SHOULD`, `COULD`, or `WONT`
|
|
369
|
+
to indicate the obligation level.
|
|
370
|
+
|
|
371
|
+
- <spec-fr-requirement-rationale/>: the 1-sentence rationale ("why")
|
|
372
|
+
of the functional requirement.
|
|
373
|
+
|
|
374
|
+
- In case the rationale is not present, the
|
|
375
|
+
entire `, **BECAUSE** [...]` clause is omitted.
|
|
376
|
+
|
|
377
|
+
Non-Functional Requirements (NR)
|
|
378
|
+
--------------------------------
|
|
379
|
+
|
|
380
|
+
The quality attributes and constraints the solution must satisfy, such
|
|
381
|
+
as performance, security, scalability, reliability, and usability.
|
|
382
|
+
|
|
383
|
+
- Format:
|
|
384
|
+
|
|
385
|
+
<format>
|
|
386
|
+
|
|
387
|
+
# SPECIFICATION: NON-FUNCTIONAL REQUIREMENTS (SPEC-NR)
|
|
388
|
+
|
|
389
|
+
✳ Created: **<timestamp-created/>**
|
|
390
|
+
✎ Modified: **<timestamp-modified/>**
|
|
391
|
+
|
|
392
|
+
<spec-nr-requirement/>
|
|
393
|
+
<spec-nr-requirement/>
|
|
394
|
+
[...]
|
|
395
|
+
|
|
396
|
+
</format>
|
|
397
|
+
|
|
398
|
+
- <spec-nr-requirement/> format:
|
|
399
|
+
|
|
400
|
+
<format>
|
|
401
|
+
|
|
402
|
+
## REQUIREMENT: <spec-nr-requirement-name/> <a id="SPEC-NR-<spec-nr-requirement-id/>"></a>
|
|
403
|
+
|
|
404
|
+
- Priority: <spec-nr-requirement-priority/>
|
|
405
|
+
- Category: <spec-nr-requirement-category/>
|
|
406
|
+
|
|
407
|
+
<spec-nr-requirement-statement/>,
|
|
408
|
+
**BECAUSE** <spec-nr-requirement-rationale/>.
|
|
409
|
+
|
|
410
|
+
</format>
|
|
411
|
+
|
|
412
|
+
- <spec-nr-requirement/> details:
|
|
413
|
+
|
|
414
|
+
- <spec-nr-requirement-id/>: per-artifact unique "slug" of always
|
|
415
|
+
1-3 lower-cased words (concatenated with "-" characters and
|
|
416
|
+
in total not longer than 30 characters), derived from
|
|
417
|
+
<spec-nr-requirement-name/>.
|
|
418
|
+
|
|
419
|
+
- <spec-nr-requirement-name/>: a short (3-8 word) summary of the
|
|
420
|
+
non-functional requirement.
|
|
421
|
+
|
|
422
|
+
- <spec-nr-requirement-priority/>: the MoSCoW priority of the
|
|
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.
|
|
427
|
+
|
|
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)).
|
|
436
|
+
|
|
437
|
+
- <spec-nr-requirement-statement/>: a concise paragraph (1-3
|
|
438
|
+
sentences) of prose describing the quality attribute or
|
|
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`).
|
|
445
|
+
|
|
446
|
+
- <spec-nr-requirement-rationale/>: the 1-sentence rationale ("why")
|
|
447
|
+
of the non-functional requirement.
|
|
448
|
+
|
|
449
|
+
- In case the rationale is not present, the
|
|
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.
|
|
524
|
+
|
|
525
|
+
Data Model (DM)
|
|
526
|
+
---------------
|
|
527
|
+
|
|
528
|
+
The structure of named entities, named attributes, and named directed
|
|
529
|
+
relationships (including a cardinality) of the data the solution
|
|
530
|
+
manages, defining how information is organized and connected.
|
|
531
|
+
|
|
532
|
+
- Format:
|
|
533
|
+
|
|
534
|
+
<format>
|
|
535
|
+
|
|
536
|
+
# SPECIFICATION: DATA MODEL (SPEC-DM)
|
|
537
|
+
|
|
538
|
+
✳ Created: **<timestamp-created/>**
|
|
539
|
+
✎ Modified: **<timestamp-modified/>**
|
|
540
|
+
|
|
541
|
+
<spec-dm-entity/>
|
|
542
|
+
<spec-dm-entity/>
|
|
543
|
+
[...]
|
|
544
|
+
|
|
545
|
+
</format>
|
|
546
|
+
|
|
547
|
+
- <spec-dm-entity/> format:
|
|
548
|
+
|
|
549
|
+
<format>
|
|
550
|
+
|
|
551
|
+
## ENTITY: `<spec-dm-entity-name/>` <a id="SPEC-DM-<spec-dm-entity-id/>"></a>
|
|
552
|
+
|
|
553
|
+
<spec-dm-entity-description/>,
|
|
554
|
+
**BECAUSE** <spec-dm-entity-rationale/>.
|
|
555
|
+
|
|
556
|
+
### ATTRIBUTES
|
|
557
|
+
|
|
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/>.
|
|
561
|
+
|
|
562
|
+
- [...]
|
|
563
|
+
|
|
564
|
+
### RELATIONS
|
|
565
|
+
|
|
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/>.
|
|
569
|
+
|
|
570
|
+
- [...]
|
|
571
|
+
|
|
572
|
+
</format>
|
|
573
|
+
|
|
574
|
+
- <spec-dm-entity/> details:
|
|
575
|
+
|
|
576
|
+
- <spec-dm-entity-id/>: per-artifact unique "slug" of always 1-3
|
|
577
|
+
lower-cased words (concatenated with "-" characters and
|
|
578
|
+
in total not longer than 30 characters), derived from
|
|
579
|
+
<spec-dm-entity-name/>.
|
|
580
|
+
|
|
581
|
+
- <spec-dm-entity-name/>: Pascal-cased, 1-3 word long, per-artifact
|
|
582
|
+
unique name of the entity.
|
|
583
|
+
|
|
584
|
+
- <spec-dm-entity-description/>: the 1-sentence description ("what")
|
|
585
|
+
of the entity.
|
|
586
|
+
|
|
587
|
+
- <spec-dm-entity-rationale/>: the 1-sentence rationale ("why") of
|
|
588
|
+
the entity.
|
|
589
|
+
|
|
590
|
+
- <spec-dm-attribute-id/>: camel-cased, 1-3 word long, per-entity
|
|
591
|
+
unique identifier of the entity attribute.
|
|
592
|
+
|
|
593
|
+
- <spec-dm-attribute-qualifier/>: the optional prefix `unique `
|
|
594
|
+
to indicate inclusion into the primary key of the entity.
|
|
595
|
+
|
|
596
|
+
- <spec-dm-attribute-type/>: the type of the entity attribute:
|
|
597
|
+
`boolean`, `integer`, `float`, `uuid`, `string`, `bytes`,
|
|
598
|
+
`enum(XXX,YYY[,...])`, `date`, `time`, or `datetime`.
|
|
599
|
+
|
|
600
|
+
- <spec-dm-attribute-description/>: the 1-sentence description
|
|
601
|
+
("what") of the entity attribute.
|
|
602
|
+
|
|
603
|
+
- <spec-dm-attribute-rationale/>: the 1-sentence rationale ("why")
|
|
604
|
+
of the entity attribute.
|
|
605
|
+
|
|
606
|
+
- <spec-dm-relation-id/>: camel-cased, 1-3 word long, per-entity
|
|
607
|
+
unique identifier of the entity relation.
|
|
608
|
+
|
|
609
|
+
- <spec-dm-relation-description/>: the 1-sentence description
|
|
610
|
+
("what") of the entity relation.
|
|
611
|
+
|
|
612
|
+
- <spec-dm-relation-rationale/>: the 1-sentence rationale ("why") of
|
|
613
|
+
the entity relation.
|
|
614
|
+
|
|
615
|
+
- <spec-dm-relation-target/>: the <spec-dm-entity-name/> of the
|
|
616
|
+
entity the directed relation targets.
|
|
617
|
+
|
|
618
|
+
- <spec-dm-relation-id/>: the <spec-dm-entity-id/> of the
|
|
619
|
+
entity the directed relation targets.
|
|
620
|
+
|
|
621
|
+
- <spec-dm-relation-cardinality/>: the cardinality of the entity
|
|
622
|
+
relation at the target entity: `0..1` for zero or one
|
|
623
|
+
("optional"), `1` for exactly one ("mandatory"), `0..n` for
|
|
624
|
+
zero or more, and `1..n` for one or more.
|
|
625
|
+
|
|
626
|
+
- In case a <spec-dm-entity/> has no relations at all, the
|
|
627
|
+
entire `### RELATIONS` block is omitted.
|
|
628
|
+
|
|
629
|
+
- In case any rationale is not present, the
|
|
630
|
+
entire `, **BECAUSE** [...]` clause is omitted.
|
|
631
|
+
|
|
632
|
+
State Model (SM)
|
|
633
|
+
----------------
|
|
634
|
+
|
|
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.
|
|
638
|
+
|
|
639
|
+
- Format:
|
|
640
|
+
|
|
641
|
+
<format>
|
|
642
|
+
|
|
643
|
+
# SPECIFICATION: STATE MODEL (SPEC-SM)
|
|
644
|
+
|
|
645
|
+
✳ Created: **<timestamp-created/>**
|
|
646
|
+
✎ Modified: **<timestamp-modified/>**
|
|
647
|
+
|
|
648
|
+
<spec-sm-lifecycle/>
|
|
649
|
+
<spec-sm-lifecycle/>
|
|
650
|
+
[...]
|
|
651
|
+
|
|
652
|
+
</format>
|
|
653
|
+
|
|
654
|
+
- <spec-sm-lifecycle/> format:
|
|
655
|
+
|
|
656
|
+
<format>
|
|
657
|
+
|
|
658
|
+
## LIFECYCLE: <spec-sm-lifecycle-name/> <a id="SPEC-SM-<spec-sm-lifecycle-id/>"></a>
|
|
659
|
+
|
|
660
|
+
- Entity: <spec-sm-lifecycle-entity/>
|
|
661
|
+
- Initial: <spec-sm-lifecycle-initial/>
|
|
662
|
+
- Final: <spec-sm-lifecycle-final/>
|
|
663
|
+
|
|
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
|
+
- [...]
|
|
678
|
+
|
|
679
|
+
</format>
|
|
680
|
+
|
|
681
|
+
- <spec-sm-lifecycle/> details:
|
|
682
|
+
|
|
683
|
+
- <spec-sm-lifecycle-id/>: per-artifact unique "slug" of always 1-3
|
|
684
|
+
lower-cased words (concatenated with "-" characters and
|
|
685
|
+
in total not longer than 30 characters), derived from
|
|
686
|
+
<spec-sm-lifecycle-name/>.
|
|
687
|
+
|
|
688
|
+
- <spec-sm-lifecycle-name/>: a short (1-3 word) name of the lifecycle,
|
|
689
|
+
normally the name of the entity it governs.
|
|
690
|
+
|
|
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.
|
|
694
|
+
|
|
695
|
+
- <spec-sm-lifecycle-initial/>: the <spec-sm-state-name/> of the
|
|
696
|
+
single state every instance of the entity enters upon creation.
|
|
697
|
+
|
|
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).
|
|
701
|
+
|
|
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`).
|
|
705
|
+
|
|
706
|
+
- <spec-sm-state-description/>: the 1-sentence description ("what
|
|
707
|
+
holds true") of the state.
|
|
708
|
+
|
|
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`).
|
|
718
|
+
|
|
719
|
+
- <spec-sm-transition-effect/>: the 1-sentence description ("what
|
|
720
|
+
happens") of the side effect the transition produces.
|
|
721
|
+
|
|
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.
|
|
742
|
+
|
|
743
|
+
- Format:
|
|
744
|
+
|
|
745
|
+
<format>
|
|
746
|
+
|
|
747
|
+
# SPECIFICATION: GLOSSARY (SPEC-GL)
|
|
748
|
+
|
|
749
|
+
✳ Created: **<timestamp-created/>**
|
|
750
|
+
✎ Modified: **<timestamp-modified/>**
|
|
751
|
+
|
|
752
|
+
<spec-gl-term/>
|
|
753
|
+
<spec-gl-term/>
|
|
754
|
+
[...]
|
|
755
|
+
|
|
756
|
+
</format>
|
|
757
|
+
|
|
758
|
+
- <spec-gl-term/> format:
|
|
759
|
+
|
|
760
|
+
<format>
|
|
761
|
+
|
|
762
|
+
## TERM: <spec-gl-term-name/> <a id="SPEC-GL-<spec-gl-term-id/>"></a>
|
|
763
|
+
|
|
764
|
+
- Synonyms: <spec-gl-term-synonyms/>
|
|
765
|
+
|
|
766
|
+
<spec-gl-term-definition/>
|
|
767
|
+
|
|
768
|
+
</format>
|
|
769
|
+
|
|
770
|
+
- <spec-gl-term/> details:
|
|
771
|
+
|
|
772
|
+
- <spec-gl-term-id/>: per-artifact unique "slug" of always 1-3
|
|
773
|
+
lower-cased words (concatenated with "-" characters and
|
|
774
|
+
in total not longer than 30 characters), derived from
|
|
775
|
+
<spec-gl-term-name/>.
|
|
776
|
+
|
|
777
|
+
- <spec-gl-term-name/>: the canonical, preferred name of the domain
|
|
778
|
+
term, capitalized as it should appear in all Artifacts.
|
|
779
|
+
|
|
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.
|
|
783
|
+
|
|
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.
|
|
788
|
+
|
|
789
|
+
- In case a term has no synonyms, the
|
|
790
|
+
entire `- Synonyms:` bullet point is omitted.
|
|
791
|
+
|
|
792
|
+
Use Cases (UC)
|
|
793
|
+
--------------
|
|
794
|
+
|
|
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.
|
|
799
|
+
|
|
800
|
+
- Format:
|
|
801
|
+
|
|
802
|
+
<format>
|
|
803
|
+
|
|
804
|
+
# SPECIFICATION: USE CASES (SPEC-UC)
|
|
805
|
+
|
|
806
|
+
✳ Created: **<timestamp-created/>**
|
|
807
|
+
✎ Modified: **<timestamp-modified/>**
|
|
808
|
+
|
|
809
|
+
<spec-uc-usecase/>
|
|
810
|
+
<spec-uc-usecase/>
|
|
811
|
+
[...]
|
|
812
|
+
|
|
813
|
+
</format>
|
|
814
|
+
|
|
815
|
+
- <spec-uc-usecase/> format:
|
|
816
|
+
|
|
817
|
+
<format>
|
|
818
|
+
|
|
819
|
+
## USE CASE: <spec-uc-usecase-name/> <a id="SPEC-UC-<spec-uc-usecase-id/>"></a>
|
|
820
|
+
|
|
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
|
+
[...]
|
|
832
|
+
|
|
833
|
+
</format>
|
|
834
|
+
|
|
835
|
+
- <spec-uc-usecase/> details:
|
|
836
|
+
|
|
837
|
+
- <spec-uc-usecase-id/>: per-artifact unique "slug" of always 1-3
|
|
838
|
+
lower-cased words (concatenated with "-" characters and
|
|
839
|
+
in total not longer than 30 characters), derived from
|
|
840
|
+
<spec-uc-usecase-name/>.
|
|
841
|
+
|
|
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`).
|
|
844
|
+
|
|
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.
|
|
848
|
+
|
|
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.
|
|
853
|
+
|
|
854
|
+
- <spec-uc-usecase-goal/>: the 1-sentence statement of what the
|
|
855
|
+
actor wants to achieve through this use case.
|
|
856
|
+
|
|
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.
|
|
900
|
+
|
|
901
|
+
Test Cases (TC)
|
|
902
|
+
---------------
|
|
903
|
+
|
|
904
|
+
The verifiable conditions and steps used to confirm that requirements
|
|
905
|
+
are correctly implemented, with mandatory defined inputs, mandatory
|
|
906
|
+
expected outcomes, and optional pre- and post-conditions.
|
|
907
|
+
|
|
908
|
+
- Format:
|
|
909
|
+
|
|
910
|
+
<format>
|
|
911
|
+
|
|
912
|
+
# SPECIFICATION: TEST CASES (SPEC-TC)
|
|
913
|
+
|
|
914
|
+
✳ Created: **<timestamp-created/>**
|
|
915
|
+
✎ Modified: **<timestamp-modified/>**
|
|
916
|
+
|
|
917
|
+
<spec-tc-testcase/>
|
|
918
|
+
<spec-tc-testcase/>
|
|
919
|
+
[...]
|
|
920
|
+
|
|
921
|
+
</format>
|
|
922
|
+
|
|
923
|
+
- <spec-tc-testcase/> format:
|
|
924
|
+
|
|
925
|
+
<format>
|
|
926
|
+
|
|
927
|
+
## TEST CASE: <spec-tc-testcase-name/> <a id="SPEC-TC-<spec-tc-testcase-id/>"></a>
|
|
928
|
+
|
|
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/>
|
|
934
|
+
|
|
935
|
+
</format>
|
|
936
|
+
|
|
937
|
+
- <spec-tc-testcase/> details:
|
|
938
|
+
|
|
939
|
+
- <spec-tc-testcase-id/>: per-artifact unique "slug" of always 1-3
|
|
940
|
+
lower-cased words (concatenated with "-" characters and
|
|
941
|
+
in total not longer than 30 characters), derived from
|
|
942
|
+
<spec-tc-testcase-name/>.
|
|
943
|
+
|
|
944
|
+
- <spec-tc-testcase-name/>: a short (3-8 word) summary of the test
|
|
945
|
+
case.
|
|
946
|
+
|
|
947
|
+
- <spec-tc-testcase-verifies/> is a `SPEC-FR-<spec-fr-requirement-id/>`
|
|
948
|
+
or `SPEC-NR-<spec-nr-requirement-id/>` reference to the
|
|
949
|
+
corresponding **Aspect** of the Functional Requirements or
|
|
950
|
+
Non-Functional Requirements **Artifact** the test case verifies.
|
|
951
|
+
|
|
952
|
+
- <spec-tc-testcase-precondition/>: the state or setup that must
|
|
953
|
+
hold before the test is executed (optional).
|
|
954
|
+
|
|
955
|
+
- <spec-tc-testcase-input/>: the mandatory, concrete input data or
|
|
956
|
+
actions applied during the test.
|
|
957
|
+
|
|
958
|
+
- <spec-tc-testcase-expected/>: the mandatory, concrete expected
|
|
959
|
+
outcome or observable result that defines a passing test.
|
|
960
|
+
|
|
961
|
+
- <spec-tc-testcase-postcondition/>: the state that must hold after
|
|
962
|
+
the test completes (optional).
|
|
963
|
+
|
|
964
|
+
- In case a pre-condition or post-condition is not present, the
|
|
965
|
+
respective bullet point is omitted.
|
|
966
|
+
|
|
967
|
+
Interaction Concept (IC)
|
|
968
|
+
------------------------
|
|
969
|
+
|
|
970
|
+
The overarching idea of how users interact with the solution,
|
|
971
|
+
describing the intended workflows and interaction philosophy (e.g.
|
|
972
|
+
auto-save behavior).
|
|
973
|
+
|
|
974
|
+
- Format:
|
|
975
|
+
|
|
976
|
+
<format>
|
|
977
|
+
|
|
978
|
+
# SPECIFICATION: INTERACTION CONCEPT (SPEC-IC)
|
|
979
|
+
|
|
980
|
+
✳ Created: **<timestamp-created/>**
|
|
981
|
+
✎ Modified: **<timestamp-modified/>**
|
|
982
|
+
|
|
983
|
+
<spec-ic-principle/>
|
|
984
|
+
<spec-ic-principle/>
|
|
985
|
+
[...]
|
|
986
|
+
|
|
987
|
+
</format>
|
|
988
|
+
|
|
989
|
+
- <spec-ic-principle/> format:
|
|
990
|
+
|
|
991
|
+
<format>
|
|
992
|
+
|
|
993
|
+
## PRINCIPLE: <spec-ic-principle-name/> <a id="SPEC-IC-<spec-ic-principle-id/>"></a>
|
|
994
|
+
|
|
995
|
+
<spec-ic-principle-statement/>,
|
|
996
|
+
**BECAUSE** <spec-ic-principle-rationale/>.
|
|
997
|
+
|
|
998
|
+
</format>
|
|
999
|
+
|
|
1000
|
+
- <spec-ic-principle/> details:
|
|
1001
|
+
|
|
1002
|
+
- <spec-ic-principle-id/>: per-artifact unique "slug" of always 1-3
|
|
1003
|
+
lower-cased words (concatenated with "-" characters and
|
|
1004
|
+
in total not longer than 30 characters), derived from
|
|
1005
|
+
<spec-ic-principle-name/>.
|
|
1006
|
+
|
|
1007
|
+
- <spec-ic-principle-name/>: a short (2-5 word) summary of the
|
|
1008
|
+
interaction principle (e.g. `Auto-Save`, `Optimistic Updates`,
|
|
1009
|
+
`Undo over Confirm`).
|
|
1010
|
+
|
|
1011
|
+
- <spec-ic-principle-statement/>: a concise paragraph (1-3
|
|
1012
|
+
sentences) of prose describing the interaction principle and how
|
|
1013
|
+
it governs the user's experience across the solution.
|
|
1014
|
+
|
|
1015
|
+
- <spec-ic-principle-rationale/>: the 1-sentence rationale ("why")
|
|
1016
|
+
of the interaction principle.
|
|
1017
|
+
|
|
1018
|
+
- In case the rationale is not present, the
|
|
1019
|
+
entire `, **BECAUSE** [...]` clause is omitted.
|
|
1020
|
+
|
|
1021
|
+
Language Conventions (LC)
|
|
1022
|
+
-------------------------
|
|
1023
|
+
|
|
1024
|
+
The terminology, naming, tone, and wording standards used consistently
|
|
1025
|
+
across the solution and its content.
|
|
1026
|
+
|
|
1027
|
+
- Format:
|
|
1028
|
+
|
|
1029
|
+
<format>
|
|
1030
|
+
|
|
1031
|
+
# SPECIFICATION: LANGUAGE CONVENTIONS (SPEC-LC)
|
|
1032
|
+
|
|
1033
|
+
✳ Created: **<timestamp-created/>**
|
|
1034
|
+
✎ Modified: **<timestamp-modified/>**
|
|
1035
|
+
|
|
1036
|
+
<spec-lc-convention/>
|
|
1037
|
+
<spec-lc-convention/>
|
|
1038
|
+
[...]
|
|
1039
|
+
|
|
1040
|
+
</format>
|
|
1041
|
+
|
|
1042
|
+
- <spec-lc-convention/> format:
|
|
1043
|
+
|
|
1044
|
+
<format>
|
|
1045
|
+
|
|
1046
|
+
## CONVENTION: <spec-lc-convention-name/> <a id="SPEC-LC-<spec-lc-convention-id/>"></a>
|
|
1047
|
+
|
|
1048
|
+
- Category: <spec-lc-convention-category/>
|
|
1049
|
+
|
|
1050
|
+
<spec-lc-convention-statement/>
|
|
1051
|
+
(e.g. <spec-lc-convention-example/>)
|
|
1052
|
+
|
|
1053
|
+
</format>
|
|
1054
|
+
|
|
1055
|
+
- <spec-lc-convention/> details:
|
|
1056
|
+
|
|
1057
|
+
- <spec-lc-convention-id/>: per-artifact unique "slug" of always
|
|
1058
|
+
1-3 lower-cased words (concatenated with "-" characters and
|
|
1059
|
+
in total not longer than 30 characters), derived from
|
|
1060
|
+
<spec-lc-convention-name/>.
|
|
1061
|
+
|
|
1062
|
+
- <spec-lc-convention-name/>: a short (2-5 word) summary of the
|
|
1063
|
+
language convention.
|
|
1064
|
+
|
|
1065
|
+
- <spec-lc-convention-category/>: the aspect of language the
|
|
1066
|
+
convention governs, one of `Terminology` (preferred and
|
|
1067
|
+
forbidden terms), `Naming` (naming patterns), `Tone` (voice and
|
|
1068
|
+
register), `Capitalization`, `Punctuation`, or `Formatting`.
|
|
1069
|
+
|
|
1070
|
+
- <spec-lc-convention-statement/>: a concise paragraph (1-3
|
|
1071
|
+
sentences) of prose describing the convention to be applied
|
|
1072
|
+
consistently across the solution.
|
|
1073
|
+
|
|
1074
|
+
- <spec-lc-convention-example/>: a short, concrete illustration of
|
|
1075
|
+
the convention in practice (optional).
|
|
1076
|
+
|
|
1077
|
+
- In case the example is not present, the
|
|
1078
|
+
entire `(e.g. [...])` chunk is omitted.
|
|
1079
|
+
|
|
1080
|
+
Dialog Patterns (DP)
|
|
1081
|
+
--------------------
|
|
1082
|
+
|
|
1083
|
+
The reusable interaction structures governing how the system and user
|
|
1084
|
+
exchange information across recurring conversational or UI flows (e.g.
|
|
1085
|
+
master-detail dialog).
|
|
1086
|
+
|
|
1087
|
+
- Format:
|
|
1088
|
+
|
|
1089
|
+
<format>
|
|
1090
|
+
|
|
1091
|
+
# SPECIFICATION: DIALOG PATTERNS (SPEC-DP)
|
|
1092
|
+
|
|
1093
|
+
✳ Created: **<timestamp-created/>**
|
|
1094
|
+
✎ Modified: **<timestamp-modified/>**
|
|
1095
|
+
|
|
1096
|
+
<spec-dp-pattern/>
|
|
1097
|
+
<spec-dp-pattern/>
|
|
1098
|
+
[...]
|
|
1099
|
+
|
|
1100
|
+
</format>
|
|
1101
|
+
|
|
1102
|
+
- <spec-dp-pattern/> format:
|
|
1103
|
+
|
|
1104
|
+
<format>
|
|
1105
|
+
|
|
1106
|
+
## PATTERN: <spec-dp-pattern-name/> <a id="SPEC-DP-<spec-dp-pattern-id/>"></a>
|
|
1107
|
+
|
|
1108
|
+
- Context: <spec-dp-pattern-context/>
|
|
1109
|
+
- Problem: <spec-dp-pattern-problem/>
|
|
1110
|
+
|
|
1111
|
+
<spec-dp-pattern-description/>,
|
|
1112
|
+
**BECAUSE** <spec-dp-pattern-rationale/>.
|
|
1113
|
+
|
|
1114
|
+
</format>
|
|
1115
|
+
|
|
1116
|
+
- <spec-dp-pattern/> details:
|
|
1117
|
+
|
|
1118
|
+
- <spec-dp-pattern-id/>: per-artifact unique "slug" of always 1-3
|
|
1119
|
+
lower-cased words (concatenated with "-" characters and
|
|
1120
|
+
in total not longer than 30 characters), derived from
|
|
1121
|
+
<spec-dp-pattern-name/>.
|
|
1122
|
+
|
|
1123
|
+
- <spec-dp-pattern-name/>: a short (2-5 word) summary of the dialog
|
|
1124
|
+
pattern (e.g. `Master-Detail`, `Wizard`, `Inline Edit`).
|
|
1125
|
+
|
|
1126
|
+
- <spec-dp-pattern-context/>: the recurring situation or flow in
|
|
1127
|
+
which the pattern is applied.
|
|
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
|
+
|
|
1135
|
+
- <spec-dp-pattern-description/>: a concise paragraph (1-3
|
|
1136
|
+
sentences) of prose describing the reusable interaction structure
|
|
1137
|
+
and how the system and user exchange information within it.
|
|
1138
|
+
|
|
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*.
|
|
1145
|
+
|
|
1146
|
+
- In case the rationale is not present, the
|
|
1147
|
+
entire `, **BECAUSE** [...]` clause is omitted.
|
|
1148
|
+
|
|
1149
|
+
Dialog Storyboard (DS)
|
|
1150
|
+
----------------------
|
|
1151
|
+
|
|
1152
|
+
The sequenced visual or textual depiction of a specific dialog flow,
|
|
1153
|
+
illustrating how an interaction unfolds screen by screen or turn by
|
|
1154
|
+
turn.
|
|
1155
|
+
|
|
1156
|
+
- Format:
|
|
1157
|
+
|
|
1158
|
+
<format>
|
|
1159
|
+
|
|
1160
|
+
# SPECIFICATION: DIALOG STORYBOARD (SPEC-DS)
|
|
1161
|
+
|
|
1162
|
+
✳ Created: **<timestamp-created/>**
|
|
1163
|
+
✎ Modified: **<timestamp-modified/>**
|
|
1164
|
+
|
|
1165
|
+
<spec-ds-storyboard/>
|
|
1166
|
+
<spec-ds-storyboard/>
|
|
1167
|
+
[...]
|
|
1168
|
+
|
|
1169
|
+
</format>
|
|
1170
|
+
|
|
1171
|
+
- <spec-ds-storyboard/> format:
|
|
1172
|
+
|
|
1173
|
+
<format>
|
|
1174
|
+
|
|
1175
|
+
## STORYBOARD: <spec-ds-storyboard-name/> <a id="SPEC-DS-<spec-ds-storyboard-id/>"></a>
|
|
1176
|
+
|
|
1177
|
+
- Pattern: <spec-ds-storyboard-pattern/>
|
|
1178
|
+
- Use Case: <spec-ds-storyboard-usecase/>
|
|
1179
|
+
- Scenario: <spec-ds-storyboard-scenario/>
|
|
1180
|
+
|
|
1181
|
+
1. **<spec-ds-frame-name/>**: <spec-ds-frame-description/>
|
|
1182
|
+
2. **<spec-ds-frame-name/>**: <spec-ds-frame-description/>
|
|
1183
|
+
[...]
|
|
1184
|
+
|
|
1185
|
+
</format>
|
|
1186
|
+
|
|
1187
|
+
- <spec-ds-storyboard/> details:
|
|
1188
|
+
|
|
1189
|
+
- <spec-ds-storyboard-id/>: per-artifact unique "slug" of always
|
|
1190
|
+
1-3 lower-cased words (concatenated with "-" characters and
|
|
1191
|
+
in total not longer than 30 characters), derived from
|
|
1192
|
+
<spec-ds-storyboard-name/>.
|
|
1193
|
+
|
|
1194
|
+
- <spec-ds-storyboard-name/>: a short (3-8 word) summary of the
|
|
1195
|
+
depicted dialog flow.
|
|
1196
|
+
|
|
1197
|
+
- <spec-ds-storyboard-pattern/> is a `SPEC-DP-<spec-dp-pattern-id/>`
|
|
1198
|
+
reference to the corresponding **Aspect** of the Dialog Patterns
|
|
1199
|
+
**Artifact** the storyboard instantiates (optional).
|
|
1200
|
+
|
|
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).
|
|
1205
|
+
|
|
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,
|
|
1212
|
+
turn, or state depicted by the storyboard frame. Frames are
|
|
1213
|
+
numbered sequentially to convey their order.
|
|
1214
|
+
|
|
1215
|
+
- <spec-ds-frame-description/>: a concise (1-2 sentence) description
|
|
1216
|
+
of what the user sees and does at this frame of the interaction.
|
|
1217
|
+
|
|
1218
|
+
- In case a pattern, use case, or scenario reference is not present,
|
|
1219
|
+
the respective bullet point is omitted.
|
|
1220
|
+
|
|
1221
|
+
Visual Design (VD)
|
|
1222
|
+
------------------
|
|
1223
|
+
|
|
1224
|
+
The aesthetic and layout aspects of the solution, defining colors,
|
|
1225
|
+
typography, spacing, imagery, and overall look and feel.
|
|
1226
|
+
|
|
1227
|
+
- Format:
|
|
1228
|
+
|
|
1229
|
+
<format>
|
|
1230
|
+
|
|
1231
|
+
# SPECIFICATION: VISUAL DESIGN (SPEC-VD)
|
|
1232
|
+
|
|
1233
|
+
✳ Created: **<timestamp-created/>**
|
|
1234
|
+
✎ Modified: **<timestamp-modified/>**
|
|
1235
|
+
|
|
1236
|
+
<spec-vd-element/>
|
|
1237
|
+
<spec-vd-element/>
|
|
1238
|
+
[...]
|
|
1239
|
+
|
|
1240
|
+
</format>
|
|
1241
|
+
|
|
1242
|
+
- <spec-vd-element/> format:
|
|
1243
|
+
|
|
1244
|
+
<format>
|
|
1245
|
+
|
|
1246
|
+
## ELEMENT: <spec-vd-element-name/> <a id="SPEC-VD-<spec-vd-element-id/>"></a>
|
|
1247
|
+
|
|
1248
|
+
- Category: <spec-vd-element-category/>
|
|
1249
|
+
|
|
1250
|
+
<spec-vd-element-specification/>,
|
|
1251
|
+
**BECAUSE** <spec-vd-element-rationale/>.
|
|
1252
|
+
|
|
1253
|
+
</format>
|
|
1254
|
+
|
|
1255
|
+
- <spec-vd-element/> details:
|
|
1256
|
+
|
|
1257
|
+
- <spec-vd-element-id/>: per-artifact unique "slug" of always 1-3
|
|
1258
|
+
lower-cased words (concatenated with "-" characters and
|
|
1259
|
+
in total not longer than 30 characters), derived from
|
|
1260
|
+
<spec-vd-element-name/>.
|
|
1261
|
+
|
|
1262
|
+
- <spec-vd-element-name/>: a short (2-5 word) summary of the visual
|
|
1263
|
+
design element.
|
|
1264
|
+
|
|
1265
|
+
- <spec-vd-element-category/>: the aspect of visual design the
|
|
1266
|
+
element governs, one of `Color`, `Typography`, `Iconography`,
|
|
1267
|
+
`Imagery`, `Layout`, or `Animation`.
|
|
1268
|
+
|
|
1269
|
+
- <spec-vd-element-specification/>: a concise paragraph (1-3
|
|
1270
|
+
sentences) of prose specifying the concrete values, tokens, or
|
|
1271
|
+
rules that define the visual design element (e.g. palette,
|
|
1272
|
+
font family, scale).
|
|
1273
|
+
|
|
1274
|
+
- <spec-vd-element-rationale/>: the 1-sentence rationale ("why") of
|
|
1275
|
+
the visual design element.
|
|
1276
|
+
|
|
1277
|
+
- In case the rationale is not present, the
|
|
1278
|
+
entire `, **BECAUSE** [...]` clause is omitted.
|