@kudusov.takhir/ba-toolkit 3.5.0 → 3.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +56 -1
- package/package.json +1 -1
- package/skills/ac/SKILL.md +8 -15
- package/skills/apicontract/SKILL.md +21 -8
- package/skills/datadict/SKILL.md +20 -37
- package/skills/nfr/SKILL.md +19 -20
- package/skills/references/templates/ac-template.md +72 -21
- package/skills/references/templates/apicontract-template.md +38 -5
- package/skills/references/templates/datadict-template.md +82 -27
- package/skills/references/templates/nfr-template.md +161 -55
- package/skills/references/templates/scenarios-template.md +16 -6
- package/skills/references/templates/usecases-template.md +40 -11
- package/skills/references/templates/wireframes-template.md +30 -6
- package/skills/scenarios/SKILL.md +7 -43
- package/skills/usecases/SKILL.md +14 -29
- package/skills/wireframes/SKILL.md +9 -6
|
@@ -1,55 +1,98 @@
|
|
|
1
1
|
# Data Dictionary: [PROJECT_NAME]
|
|
2
2
|
|
|
3
|
+
**Version:** 0.1
|
|
4
|
+
**Status:** Draft
|
|
3
5
|
**Domain:** [DOMAIN]
|
|
4
6
|
**Date:** [DATE]
|
|
5
7
|
**Slug:** [SLUG]
|
|
6
8
|
**References:** `02_srs_[SLUG].md`, `03_stories_[SLUG].md`
|
|
9
|
+
**Scope:** Logical data model only. Physical schema (DBMS choice, indexes, sharding) lives in `07a_research_[SLUG].md` ADRs.
|
|
7
10
|
|
|
8
11
|
---
|
|
9
12
|
|
|
10
13
|
## Entity: [EntityName]
|
|
11
14
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
**
|
|
15
|
+
| Field | Value |
|
|
16
|
+
|-------|-------|
|
|
17
|
+
| **Source** | FR-[NNN], US-[NNN] *(Required — what introduced this entity)* |
|
|
18
|
+
| **Owner** | [Team or role accountable for schema changes and data quality] |
|
|
19
|
+
| **Sensitivity** | Public / Internal / Confidential / PII / PCI / PHI / Financial |
|
|
20
|
+
| **Description** | [What this entity represents in the domain] |
|
|
21
|
+
| **Logical name** | `[entity_name]` *(physical table / collection name decided in /research)* |
|
|
15
22
|
|
|
16
|
-
|
|
17
|
-
|
|
23
|
+
### Attributes
|
|
24
|
+
|
|
25
|
+
| Field | Logical Type | Required | Default | Description | Constraints |
|
|
26
|
+
|-------|--------------|----------|---------|-------------|-------------|
|
|
18
27
|
| id | UUID | Yes | auto | Primary key | Unique |
|
|
19
|
-
| [field] |
|
|
20
|
-
| created_at | Timestamp | Yes | now() | Record creation time | |
|
|
21
|
-
| updated_at | Timestamp | Yes | now() | Last update time | |
|
|
28
|
+
| [field] | String / Integer / Decimal / Boolean / Timestamp / UUID / Enum / FK / JSON / Binary | Yes/No | [value or —] | [description] | [PK, FK, unique, not null, enum values, min/max, regex] |
|
|
29
|
+
| created_at | Timestamp | Yes | now() | Record creation time (UTC) | |
|
|
30
|
+
| updated_at | Timestamp | Yes | now() | Last update time (UTC) | |
|
|
31
|
+
|
|
32
|
+
### Relationships
|
|
33
|
+
|
|
34
|
+
| Related Entity | Cardinality | FK Field | Cascade on Parent Delete |
|
|
35
|
+
|----------------|-------------|----------|--------------------------|
|
|
36
|
+
| [OtherEntity] | many-to-one | `[other_entity]_id` | Cascade / Restrict / Set null / Prevent |
|
|
37
|
+
|
|
38
|
+
### State Machine *(required if entity has more than two distinct lifecycle states)*
|
|
39
|
+
|
|
40
|
+
**States:** Draft → Pending → Confirmed → InProgress → Completed → Archived
|
|
41
|
+
**Terminal states:** Completed, Cancelled, Failed
|
|
42
|
+
|
|
43
|
+
| From → To | Trigger | Allowed actor | Side effects |
|
|
44
|
+
|-----------|---------|---------------|--------------|
|
|
45
|
+
| Draft → Pending | submit() | Owner | Notification, audit log |
|
|
46
|
+
| Pending → Confirmed | approve() | Reviewer | Status email, FK lock |
|
|
47
|
+
| Confirmed → InProgress | start() | Owner | Timer starts |
|
|
48
|
+
| InProgress → Completed | finish() | Owner | Final notification, FK unlock |
|
|
49
|
+
| Any → Cancelled | cancel() | Owner / Admin | Reservation released, audit log |
|
|
50
|
+
|
|
51
|
+
### Indexes *(logical — physical indexes decided by /research)*
|
|
52
|
+
|
|
53
|
+
- `[field]` — for [reason, e.g. "frequent lookup by email during login"]
|
|
54
|
+
- `(field_a, field_b)` — composite, for [reason]
|
|
55
|
+
|
|
56
|
+
### Retention
|
|
22
57
|
|
|
23
|
-
**
|
|
24
|
-
|
|
25
|
-
|
|
58
|
+
**Retention class:** [duration in years, or "indefinite", or "until consent withdrawn"]
|
|
59
|
+
**Reason:** [legal / regulatory / operational]
|
|
60
|
+
**Soft delete:** Yes (`deleted_at` timestamp) | No (hard delete only)
|
|
26
61
|
|
|
27
|
-
|
|
28
|
-
- `[field]` — for [reason, e.g. lookup by email]
|
|
62
|
+
### Notes
|
|
29
63
|
|
|
30
|
-
|
|
31
|
-
**Notes:** [Business rules, state machine, or special handling.]
|
|
64
|
+
[Business rules, validation logic, special handling, edge cases.]
|
|
32
65
|
|
|
33
66
|
---
|
|
34
67
|
|
|
35
68
|
## Entity: [EntityName2]
|
|
36
69
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
**
|
|
70
|
+
| Field | Value |
|
|
71
|
+
|-------|-------|
|
|
72
|
+
| **Source** | FR-[NNN] |
|
|
73
|
+
| **Owner** | [team] |
|
|
74
|
+
| **Sensitivity** | [class] |
|
|
75
|
+
| **Description** | [...] |
|
|
76
|
+
| **Logical name** | `[entity_name_2]` |
|
|
40
77
|
|
|
41
|
-
|
|
42
|
-
|
|
78
|
+
### Attributes
|
|
79
|
+
|
|
80
|
+
| Field | Logical Type | Required | Default | Description | Constraints |
|
|
81
|
+
|-------|--------------|----------|---------|-------------|-------------|
|
|
43
82
|
| id | UUID | Yes | auto | Primary key | Unique |
|
|
44
83
|
| [field] | [type] | Yes/No | [value] | [description] | [constraints] |
|
|
45
|
-
| created_at | Timestamp | Yes | now() |
|
|
46
|
-
| updated_at | Timestamp | Yes | now() |
|
|
84
|
+
| created_at | Timestamp | Yes | now() | (UTC) | |
|
|
85
|
+
| updated_at | Timestamp | Yes | now() | (UTC) | |
|
|
86
|
+
|
|
87
|
+
### Relationships
|
|
47
88
|
|
|
48
|
-
|
|
49
|
-
|
|
89
|
+
| Related Entity | Cardinality | FK Field | Cascade on Parent Delete |
|
|
90
|
+
|----------------|-------------|----------|--------------------------|
|
|
91
|
+
| [Entity] | [cardinality] | `[fk_field]` | [cascade rule] |
|
|
50
92
|
|
|
51
|
-
|
|
52
|
-
|
|
93
|
+
### Notes
|
|
94
|
+
|
|
95
|
+
[Notes.]
|
|
53
96
|
|
|
54
97
|
<!-- Repeat Entity block for each domain entity. -->
|
|
55
98
|
|
|
@@ -65,6 +108,18 @@
|
|
|
65
108
|
|
|
66
109
|
---
|
|
67
110
|
|
|
111
|
+
## FR → Entity Coverage Matrix
|
|
112
|
+
|
|
113
|
+
Forward traceability from each Functional Requirement in `02_srs_[SLUG].md` to the entities it reads or writes. An FR with no linked entity is flagged — every data-touching FR must have at least one linked entity.
|
|
114
|
+
|
|
115
|
+
| FR ID | FR Title | Linked Entities | Read / Write | Coverage Status |
|
|
116
|
+
|-------|----------|-----------------|--------------|-----------------|
|
|
117
|
+
| FR-001 | [title] | User, Session | R/W | ✓ |
|
|
118
|
+
| FR-002 | [title] | Order, OrderLine | R/W | ✓ |
|
|
119
|
+
| FR-003 | [title] | (none) | — | ⚠ Stateless FR — confirm intent |
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
68
123
|
## Entity Relationship Overview
|
|
69
124
|
|
|
70
125
|
```
|
|
@@ -72,4 +127,4 @@
|
|
|
72
127
|
[EntityName2] >── [EntityName3]
|
|
73
128
|
```
|
|
74
129
|
|
|
75
|
-
_Full ERD: generated
|
|
130
|
+
_Full ERD with physical layout: generated by the development team based on this logical model + `07a_research_[SLUG].md` ADRs._
|
|
@@ -1,97 +1,203 @@
|
|
|
1
1
|
# Non-functional Requirements: [PROJECT_NAME]
|
|
2
2
|
|
|
3
|
+
**Version:** 0.1
|
|
4
|
+
**Status:** Draft
|
|
3
5
|
**Domain:** [DOMAIN]
|
|
4
6
|
**Date:** [DATE]
|
|
5
7
|
**Slug:** [SLUG]
|
|
6
8
|
**References:** `02_srs_[SLUG].md`, `00_principles_[SLUG].md`
|
|
9
|
+
**Standard:** ISO/IEC 25010:2011 Software Quality Model
|
|
10
|
+
|
|
11
|
+
> Every NFR maps to one of the 8 ISO 25010 characteristics: Functional Suitability, Performance Efficiency, Compatibility, Usability, Reliability, Security, Maintainability, Portability. Project-specific extensions (Compliance, Localisation, Observability) are marked as such and reference the parent ISO characteristic.
|
|
7
12
|
|
|
8
13
|
---
|
|
9
14
|
|
|
10
|
-
##
|
|
15
|
+
## Performance Efficiency (ISO 25010)
|
|
11
16
|
|
|
12
|
-
|
|
13
|
-
|-----------|------------|-------------------|
|
|
14
|
-
| [Page / operation] | [Target, e.g. < 2s p95] | [Lighthouse / load test / APM] |
|
|
17
|
+
### NFR-001: [Sub-characteristic — Time behaviour]
|
|
15
18
|
|
|
16
|
-
|
|
19
|
+
| Field | Value |
|
|
20
|
+
|-------|-------|
|
|
21
|
+
| **Sub-characteristic** | Time behaviour |
|
|
22
|
+
| **Description** | [Page / operation / endpoint] response time target |
|
|
23
|
+
| **Metric** | p95 latency in milliseconds |
|
|
24
|
+
| **Acceptance threshold** | < 300ms p95, < 800ms p99 |
|
|
25
|
+
| **Verification** | Load test (k6 / Locust) running [scenario], measured by APM (Datadog / New Relic / Grafana) |
|
|
26
|
+
| **Source** | NFR-baseline from `00_principles_[SLUG].md` §5 / FR-NNN constraint / regulatory requirement |
|
|
27
|
+
| **Rationale** | [Why this target — competitive benchmark, user-perception threshold, contractual SLA] |
|
|
28
|
+
| **Priority** | Must |
|
|
29
|
+
| **Linked FR** | FR-[NNN] |
|
|
17
30
|
|
|
18
31
|
---
|
|
19
32
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
| Attribute | Requirement | Measurement Method |
|
|
23
|
-
|-----------|------------|-------------------|
|
|
24
|
-
| Concurrent users | [N at peak] | [Load test scenario] |
|
|
25
|
-
| Data volume | [N records, N GB] | [Capacity model] |
|
|
33
|
+
### NFR-002: [Sub-characteristic — Capacity]
|
|
26
34
|
|
|
27
|
-
|
|
35
|
+
| Field | Value |
|
|
36
|
+
|-------|-------|
|
|
37
|
+
| **Sub-characteristic** | Capacity |
|
|
38
|
+
| **Description** | Concurrent users / requests per second the system supports |
|
|
39
|
+
| **Metric** | Concurrent users at peak; sustained RPS |
|
|
40
|
+
| **Acceptance threshold** | [N concurrent users; N RPS sustained for 30 min without error rate > 0.1%] |
|
|
41
|
+
| **Verification** | Load test scenario [name], pass / fail at the threshold |
|
|
42
|
+
| **Source** | [Brief goal G-N or stakeholder] |
|
|
43
|
+
| **Rationale** | [Expected growth, peak events — Black Friday, end-of-quarter, exam day] |
|
|
44
|
+
| **Priority** | Should |
|
|
45
|
+
| **Linked FR** | FR-[NNN] |
|
|
28
46
|
|
|
29
47
|
---
|
|
30
48
|
|
|
31
|
-
##
|
|
49
|
+
## Reliability (ISO 25010)
|
|
50
|
+
|
|
51
|
+
### NFR-003: [Sub-characteristic — Availability]
|
|
52
|
+
|
|
53
|
+
| Field | Value |
|
|
54
|
+
|-------|-------|
|
|
55
|
+
| **Sub-characteristic** | Availability |
|
|
56
|
+
| **Description** | Service uptime target |
|
|
57
|
+
| **Metric** | Uptime % over rolling 30-day window |
|
|
58
|
+
| **Acceptance threshold** | 99.9% (8.76 hours downtime/year) |
|
|
59
|
+
| **Verification** | Status page measurement, third-party uptime monitor |
|
|
60
|
+
| **Source** | [SLA contract / regulatory requirement] |
|
|
61
|
+
| **Rationale** | [Customer-facing SLA, internal commitment] |
|
|
62
|
+
| **Priority** | Must |
|
|
63
|
+
| **Linked FR** | All customer-facing FRs |
|
|
64
|
+
|
|
65
|
+
### NFR-004: [Sub-characteristic — Recoverability]
|
|
66
|
+
|
|
67
|
+
| Field | Value |
|
|
68
|
+
|-------|-------|
|
|
69
|
+
| **Sub-characteristic** | Recoverability |
|
|
70
|
+
| **Description** | Disaster-recovery RTO / RPO |
|
|
71
|
+
| **Metric** | RTO (Recovery Time Objective) in hours; RPO (Recovery Point Objective) in minutes |
|
|
72
|
+
| **Acceptance threshold** | RTO < 4h, RPO < 15min |
|
|
73
|
+
| **Verification** | Documented runbook, tested via DR drill quarterly |
|
|
74
|
+
| **Source** | [Compliance / business continuity policy] |
|
|
75
|
+
| **Rationale** | [Cost of downtime, regulatory requirement] |
|
|
76
|
+
| **Priority** | Must |
|
|
32
77
|
|
|
33
|
-
|
|
34
|
-
|---------|-----|--------------------|
|
|
35
|
-
| [Service name] | 99.9% | [Sun 02:00–04:00 UTC] |
|
|
78
|
+
---
|
|
36
79
|
|
|
37
|
-
|
|
38
|
-
|
|
80
|
+
## Security (ISO 25010)
|
|
81
|
+
|
|
82
|
+
### NFR-005: [Sub-characteristic — Confidentiality]
|
|
83
|
+
|
|
84
|
+
| Field | Value |
|
|
85
|
+
|-------|-------|
|
|
86
|
+
| **Sub-characteristic** | Confidentiality |
|
|
87
|
+
| **Description** | Encryption at rest and in transit |
|
|
88
|
+
| **Metric** | Encryption algorithm + key length |
|
|
89
|
+
| **Acceptance threshold** | TLS 1.2+ in transit; AES-256 at rest |
|
|
90
|
+
| **Verification** | TLS scan, infrastructure config review, pen-test |
|
|
91
|
+
| **Source** | [SOC 2 / PCI DSS / HIPAA / GDPR] |
|
|
92
|
+
| **Rationale** | Regulatory baseline + customer trust |
|
|
93
|
+
| **Priority** | Must |
|
|
94
|
+
|
|
95
|
+
### NFR-006: [Sub-characteristic — Authenticity / Accountability]
|
|
96
|
+
|
|
97
|
+
| Field | Value |
|
|
98
|
+
|-------|-------|
|
|
99
|
+
| **Sub-characteristic** | Authenticity, Accountability |
|
|
100
|
+
| **Description** | Authentication strength, audit trail per user action |
|
|
101
|
+
| **Metric** | MFA coverage, audit log completeness |
|
|
102
|
+
| **Acceptance threshold** | MFA mandatory for admin role; every PII access logged with actor + timestamp |
|
|
103
|
+
| **Verification** | Audit log inspection, security review |
|
|
104
|
+
| **Source** | [SOC 2 CC6.1, regulatory requirement] |
|
|
105
|
+
| **Rationale** | Compliance + incident-response capability |
|
|
106
|
+
| **Priority** | Must |
|
|
39
107
|
|
|
40
108
|
---
|
|
41
109
|
|
|
42
|
-
##
|
|
110
|
+
## Compatibility (ISO 25010)
|
|
43
111
|
|
|
44
|
-
|
|
45
|
-
|---------|-------------|
|
|
46
|
-
| Authentication | [e.g. JWT, OAuth 2.0, MFA for admin] |
|
|
47
|
-
| Authorisation | [e.g. RBAC, row-level security] |
|
|
48
|
-
| Data in transit | [TLS 1.2+] |
|
|
49
|
-
| Data at rest | [AES-256] |
|
|
50
|
-
| [Other control] | [requirement] |
|
|
112
|
+
### NFR-007: [Sub-characteristic — Interoperability]
|
|
51
113
|
|
|
52
|
-
|
|
114
|
+
| Field | Value |
|
|
115
|
+
|-------|-------|
|
|
116
|
+
| **Sub-characteristic** | Interoperability |
|
|
117
|
+
| **Description** | Data-exchange formats with external systems |
|
|
118
|
+
| **Metric** | Supported formats |
|
|
119
|
+
| **Acceptance threshold** | JSON over REST + CSV export + webhook OUT |
|
|
120
|
+
| **Verification** | Integration tests with each external system |
|
|
121
|
+
| **Source** | [Stakeholder name / partner contract] |
|
|
122
|
+
| **Rationale** | [Why these formats — partner constraints] |
|
|
123
|
+
| **Priority** | Must |
|
|
53
124
|
|
|
54
125
|
---
|
|
55
126
|
|
|
56
|
-
##
|
|
127
|
+
## Usability (ISO 25010)
|
|
57
128
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
|
61
|
-
|
|
62
|
-
|
|
|
63
|
-
|
|
|
129
|
+
### NFR-008: [Sub-characteristic — Accessibility]
|
|
130
|
+
|
|
131
|
+
| Field | Value |
|
|
132
|
+
|-------|-------|
|
|
133
|
+
| **Sub-characteristic** | Accessibility (Usability sub-characteristic in ISO 25010) |
|
|
134
|
+
| **Description** | WCAG conformance level |
|
|
135
|
+
| **Metric** | WCAG 2.1 conformance level |
|
|
136
|
+
| **Acceptance threshold** | WCAG 2.1 AA on all customer-facing surfaces |
|
|
137
|
+
| **Verification** | Automated (axe-core) + manual testing with NVDA, JAWS, VoiceOver |
|
|
138
|
+
| **Source** | [Section 508 / EN 301 549 / domain reference] |
|
|
139
|
+
| **Rationale** | Legal requirement (EU public sector, US federal) + customer base inclusion |
|
|
140
|
+
| **Priority** | Must |
|
|
64
141
|
|
|
65
142
|
---
|
|
66
143
|
|
|
67
|
-
##
|
|
144
|
+
## Maintainability (ISO 25010)
|
|
145
|
+
|
|
146
|
+
### NFR-009: [Sub-characteristic — Testability]
|
|
68
147
|
|
|
69
|
-
|
|
|
70
|
-
|
|
71
|
-
|
|
|
72
|
-
|
|
|
73
|
-
|
|
|
74
|
-
|
|
|
148
|
+
| Field | Value |
|
|
149
|
+
|-------|-------|
|
|
150
|
+
| **Sub-characteristic** | Testability |
|
|
151
|
+
| **Description** | Automated test coverage target |
|
|
152
|
+
| **Metric** | Unit + integration test coverage % |
|
|
153
|
+
| **Acceptance threshold** | ≥ 80% line coverage on core domain modules |
|
|
154
|
+
| **Verification** | CI report on every PR |
|
|
155
|
+
| **Source** | [Internal engineering standard] |
|
|
156
|
+
| **Rationale** | Catch regressions, support refactoring |
|
|
157
|
+
| **Priority** | Should |
|
|
75
158
|
|
|
76
159
|
---
|
|
77
160
|
|
|
78
|
-
##
|
|
161
|
+
## Portability (ISO 25010)
|
|
79
162
|
|
|
80
|
-
|
|
81
|
-
|-----------|------------|-------------------|
|
|
82
|
-
| [attribute] | [requirement] | [method] |
|
|
163
|
+
### NFR-010: [Sub-characteristic — Adaptability]
|
|
83
164
|
|
|
84
|
-
|
|
165
|
+
| Field | Value |
|
|
166
|
+
|-------|-------|
|
|
167
|
+
| **Sub-characteristic** | Adaptability |
|
|
168
|
+
| **Description** | Browser / OS / device support matrix |
|
|
169
|
+
| **Metric** | Supported browser × OS × device combinations |
|
|
170
|
+
| **Acceptance threshold** | Latest 2 major versions of Chrome, Safari, Firefox, Edge; iOS 15+, Android 10+ |
|
|
171
|
+
| **Verification** | Cross-browser test suite |
|
|
172
|
+
| **Source** | [User analytics on existing audience] |
|
|
173
|
+
| **Rationale** | Coverage of 95%+ of expected user base |
|
|
174
|
+
| **Priority** | Should |
|
|
175
|
+
|
|
176
|
+
<!-- Add NFR sections as needed. Every NFR maps to an ISO 25010 characteristic. -->
|
|
85
177
|
|
|
86
178
|
---
|
|
87
179
|
|
|
88
|
-
##
|
|
180
|
+
## FR → NFR Coverage Matrix
|
|
181
|
+
|
|
182
|
+
Forward traceability from each Functional Requirement in `02_srs_[SLUG].md` §3 to the NFRs that govern its quality. A Must-priority FR with no linked NFR is flagged — every customer-facing Must FR should have at least one Performance, Reliability, or Security NFR attached.
|
|
183
|
+
|
|
184
|
+
| FR ID | FR Title | Linked NFRs | Coverage Status |
|
|
185
|
+
|-------|----------|-------------|-----------------|
|
|
186
|
+
| FR-001 | [title] | NFR-001, NFR-003, NFR-005 | ✓ |
|
|
187
|
+
| FR-002 | [title] | NFR-001, NFR-005 | ✓ |
|
|
188
|
+
| FR-003 | [title] | (uncovered) | ✗ |
|
|
189
|
+
|
|
190
|
+
---
|
|
89
191
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
|
93
|
-
|
|
94
|
-
| NFR-
|
|
95
|
-
| NFR-004 |
|
|
96
|
-
| NFR-005 |
|
|
97
|
-
| NFR-
|
|
192
|
+
## Priority Summary by ISO 25010 Characteristic
|
|
193
|
+
|
|
194
|
+
| ISO 25010 Characteristic | NFRs | Must | Should | Could |
|
|
195
|
+
|--------------------------|------|------|--------|-------|
|
|
196
|
+
| Performance Efficiency | NFR-001, NFR-002 | 1 | 1 | 0 |
|
|
197
|
+
| Reliability | NFR-003, NFR-004 | 2 | 0 | 0 |
|
|
198
|
+
| Security | NFR-005, NFR-006 | 2 | 0 | 0 |
|
|
199
|
+
| Compatibility | NFR-007 | 1 | 0 | 0 |
|
|
200
|
+
| Usability | NFR-008 | 1 | 0 | 0 |
|
|
201
|
+
| Maintainability | NFR-009 | 0 | 1 | 0 |
|
|
202
|
+
| Portability | NFR-010 | 0 | 1 | 0 |
|
|
203
|
+
| Functional Suitability | (covered by FRs) | — | — | — |
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# Validation Scenarios: [PROJECT_NAME]
|
|
2
2
|
|
|
3
|
+
**Version:** 0.1
|
|
4
|
+
**Status:** Draft
|
|
3
5
|
**Domain:** [DOMAIN]
|
|
4
6
|
**Date:** [DATE]
|
|
5
7
|
**Slug:** [SLUG]
|
|
6
|
-
**References:** `03_stories_[SLUG].md`, `05_ac_[SLUG].md`, `
|
|
8
|
+
**References:** `02_srs_[SLUG].md`, `03_stories_[SLUG].md`, `05_ac_[SLUG].md`, `06_nfr_[SLUG].md`, `08_apicontract_[SLUG].md`, `09_wireframes_[SLUG].md`
|
|
7
9
|
|
|
8
10
|
---
|
|
9
11
|
|
|
@@ -19,13 +21,17 @@
|
|
|
19
21
|
|
|
20
22
|
## SC-001: [Scenario Title]
|
|
21
23
|
|
|
22
|
-
**Persona:** [Name and role — e.g. "Alex, a returning customer"]
|
|
24
|
+
**Persona:** [Name and role — e.g. "Alex, a returning customer in DE who buys 4–6 times per year"]
|
|
23
25
|
**Type:** Happy path | Negative | Edge case | Performance | Security
|
|
24
26
|
**Priority:** P1 (critical) | P2 (important) | P3 (nice to have)
|
|
27
|
+
**Frequency:** [How often this scenario runs in production — "every login", "once per month per user", "twice per year per admin"]
|
|
28
|
+
**Stakes:** [Cost of failure — "data loss", "lost revenue ~€X per failed run", "regulatory breach", "reputation"]
|
|
25
29
|
**Entry point:** [Where the scenario starts — e.g. "Home screen, not logged in"]
|
|
26
30
|
**Platform:** Web | iOS | Android | API
|
|
27
|
-
**Linked Stories:** US-[NNN], US-[NNN]
|
|
28
|
-
**Linked
|
|
31
|
+
**Source — Linked Stories:** US-[NNN], US-[NNN]
|
|
32
|
+
**Source — Linked FR:** FR-[NNN]
|
|
33
|
+
**Source — Linked NFR:** NFR-[NNN] *(if scenario validates a quality attribute)*
|
|
34
|
+
**Linked AC:** AC-[NNN]-[NN], AC-[NNN]-[NN]
|
|
29
35
|
|
|
30
36
|
### Steps
|
|
31
37
|
|
|
@@ -82,12 +88,16 @@
|
|
|
82
88
|
|
|
83
89
|
| Artifact | Covered | Not Covered |
|
|
84
90
|
|---------|---------|------------|
|
|
85
|
-
| User Stories | [N] / [Total] | US-[NNN], … |
|
|
86
|
-
|
|
|
91
|
+
| User Stories (Must) | [N] / [Total] | US-[NNN], … |
|
|
92
|
+
| Functional Requirements (Must) | [N] / [Total] | FR-[NNN], … |
|
|
93
|
+
| Non-functional Requirements | [N] / [Total] | NFR-[NNN], … |
|
|
94
|
+
| Acceptance Criteria | [N] / [Total] | AC-[NNN]-[NN], … |
|
|
87
95
|
| API Endpoints | [N] / [Total] | `[endpoint]`, … |
|
|
88
96
|
| Wireframe screens | [N] / [Total] | WF-[NNN], … |
|
|
89
97
|
|
|
90
98
|
**Happy path scenarios:** [N]
|
|
91
99
|
**Negative scenarios:** [N]
|
|
92
100
|
**Edge case scenarios:** [N]
|
|
101
|
+
**Performance scenarios:** [N]
|
|
102
|
+
**Security scenarios:** [N]
|
|
93
103
|
**Total scenarios:** [N]
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Use Cases: [PROJECT_NAME]
|
|
2
2
|
|
|
3
|
+
**Version:** 0.1
|
|
4
|
+
**Status:** Draft
|
|
3
5
|
**Domain:** [DOMAIN]
|
|
4
6
|
**Date:** [DATE]
|
|
5
7
|
**Slug:** [SLUG]
|
|
@@ -7,26 +9,34 @@
|
|
|
7
9
|
|
|
8
10
|
## Use Case Index
|
|
9
11
|
|
|
10
|
-
| ID | Title | Primary Actor | Linked Stories |
|
|
11
|
-
|
|
12
|
-
| UC-001 | [Title] | [Actor] | US-[NNN] |
|
|
12
|
+
| ID | Title | Goal in Context | Primary Actor | Linked Stories |
|
|
13
|
+
|----|-------|-----------------|---------------|----------------|
|
|
14
|
+
| UC-001 | [Title] | G-1 | [Actor] | US-[NNN] |
|
|
13
15
|
|
|
14
16
|
---
|
|
15
17
|
|
|
16
18
|
## UC-001: [Use Case Title]
|
|
17
19
|
|
|
18
20
|
**ID:** UC-001
|
|
21
|
+
**Goal in Context:** [Which Brief goal G-N from `01_brief_[SLUG].md` §2 this UC serves. Required.]
|
|
22
|
+
**Scope:** System | Subsystem | Component
|
|
23
|
+
**Level:** User-goal | Summary | Subfunction
|
|
19
24
|
**Primary Actor:** [Role]
|
|
20
|
-
**Supporting Actors:** [Other roles or external systems]
|
|
21
|
-
|
|
25
|
+
**Supporting Actors:** [Other roles or external systems — payment provider, notification service, etc.]
|
|
26
|
+
|
|
27
|
+
**Stakeholders and Interests:**
|
|
28
|
+
|
|
29
|
+
| Stakeholder | Interest |
|
|
30
|
+
|-------------|----------|
|
|
31
|
+
| [Primary actor] | [What they want from this UC] |
|
|
32
|
+
| [Other stakeholder] | [What they want / what they want to avoid] |
|
|
33
|
+
|
|
22
34
|
**Pre-conditions:**
|
|
23
35
|
- [Condition that must be true before the use case starts]
|
|
24
36
|
|
|
25
|
-
**
|
|
26
|
-
- [System state after successful completion]
|
|
37
|
+
**Trigger:** [What event or action initiates this use case]
|
|
27
38
|
|
|
28
|
-
**
|
|
29
|
-
- [System state after failure or cancellation]
|
|
39
|
+
**Source:** US-[NNN] | FR-[NNN] | regulatory requirement | parent UC-NNN *(Required — what drove this UC into existence.)*
|
|
30
40
|
|
|
31
41
|
### Main Success Scenario
|
|
32
42
|
|
|
@@ -36,16 +46,35 @@
|
|
|
36
46
|
| 2 | System | [Responds with something] |
|
|
37
47
|
| 3 | [Actor] | [Continues] |
|
|
38
48
|
|
|
39
|
-
### Alternative Flows
|
|
49
|
+
### Extensions / Alternative Flows
|
|
40
50
|
|
|
41
51
|
**Alt 1 — [Name]:** At step [N], if [condition], then [action]. Resume at step [M].
|
|
42
52
|
|
|
43
53
|
### Exception Flows
|
|
44
54
|
|
|
45
|
-
**Exc 1 — [Name]:** At step [N], if [error condition], then [system response and outcome].
|
|
55
|
+
**Exc 1 — [Name]:** At step [N], if [error condition], then [system response, recovery action, and final outcome].
|
|
56
|
+
|
|
57
|
+
### Post-conditions
|
|
58
|
+
|
|
59
|
+
**Success Guarantees:** [What is true after the Main Success Scenario completes — the contract for the happy path.]
|
|
60
|
+
|
|
61
|
+
**Minimal Guarantees:** [What is true after *any* termination of the UC, including failure — e.g. "stock reservation released, no partial order created, audit log entry written".]
|
|
46
62
|
|
|
47
63
|
**Linked Stories:** US-[NNN], US-[NNN]
|
|
48
64
|
**Linked FR:** FR-[NNN]
|
|
65
|
+
**Linked AC:** AC-[NNN]-[NN], AC-[NNN]-[NN]
|
|
49
66
|
**Linked Wireframe:** WF-[NNN]
|
|
50
67
|
|
|
51
68
|
<!-- Repeat UC block for each use case. Numbering: UC-001, UC-002, ... -->
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## US → UC Coverage Matrix
|
|
73
|
+
|
|
74
|
+
Forward traceability from each User Story in `03_stories_[SLUG].md` to the Use Cases that detail it. Every Must-priority story should have at least one linked UC; uncovered stories are flagged here as `(uncovered)` so they cannot silently fall through to AC without UC context.
|
|
75
|
+
|
|
76
|
+
| US ID | US Title | Linked UCs | Coverage Status |
|
|
77
|
+
|-------|----------|------------|-----------------|
|
|
78
|
+
| US-001 | [title] | UC-001, UC-007 | ✓ |
|
|
79
|
+
| US-002 | [title] | UC-003 | ✓ |
|
|
80
|
+
| US-003 | [title] | (uncovered) | ✗ |
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
# Wireframe Descriptions: [PROJECT_NAME]
|
|
2
2
|
|
|
3
|
+
**Version:** 0.1
|
|
4
|
+
**Status:** Draft
|
|
3
5
|
**Domain:** [DOMAIN]
|
|
4
6
|
**Date:** [DATE]
|
|
5
7
|
**Slug:** [SLUG]
|
|
6
|
-
**References:** `03_stories_[SLUG].md`, `04_usecases_[SLUG].md`, `05_ac_[SLUG].md`
|
|
8
|
+
**References:** `03_stories_[SLUG].md`, `04_usecases_[SLUG].md`, `05_ac_[SLUG].md`, `06_nfr_[SLUG].md`, `08_apicontract_[SLUG].md`
|
|
9
|
+
**Accessibility target:** WCAG 2.1 AA
|
|
7
10
|
|
|
8
11
|
> These are textual wireframe descriptions, not visual diagrams. Each screen is described with sufficient detail for a designer to produce a high-fidelity mockup.
|
|
9
12
|
|
|
@@ -19,11 +22,15 @@
|
|
|
19
22
|
|
|
20
23
|
## WF-001: [Screen Name]
|
|
21
24
|
|
|
25
|
+
**Source:** US-[NNN] *(Required — which user story this screen serves)*
|
|
22
26
|
**Platform:** Web | iOS | Android | All
|
|
23
27
|
**Route / Deep link:** `[/path or app://screen]`
|
|
24
28
|
**Entry points:** [Where the user comes from — e.g. Home → tap "Browse"]
|
|
25
29
|
**Linked Stories:** US-[NNN], US-[NNN]
|
|
26
30
|
**Linked UC:** UC-[NNN]
|
|
31
|
+
**Linked AC:** AC-[NNN]-[NN] *(scenarios this screen verifies)*
|
|
32
|
+
**Linked NFR:** NFR-[NNN] *(performance, accessibility, or other UI-impacting NFRs)*
|
|
33
|
+
**Internationalisation:** LTR / RTL / both; long-string accommodation: yes / no
|
|
27
34
|
|
|
28
35
|
### Layout
|
|
29
36
|
|
|
@@ -36,14 +43,19 @@
|
|
|
36
43
|
**Footer / Bottom navigation:**
|
|
37
44
|
[Describe persistent navigation or action bar if present.]
|
|
38
45
|
|
|
39
|
-
### States
|
|
46
|
+
### States *(canonical 8 — every screen describes all that apply)*
|
|
40
47
|
|
|
41
48
|
| State | Description |
|
|
42
49
|
|-------|-------------|
|
|
43
|
-
|
|
|
44
|
-
|
|
|
45
|
-
|
|
|
46
|
-
|
|
|
50
|
+
| Default | [Initial state when the screen first appears, if distinct from "loaded"] |
|
|
51
|
+
| Loading | [Skeleton screen / spinner / progress bar — what the user sees while data fetches] |
|
|
52
|
+
| Empty | [Empty state message + primary CTA — first-time experience] |
|
|
53
|
+
| Loaded | [Data is present and rendered — the canonical "happy" state] |
|
|
54
|
+
| Partial | [Some data shown, more loading — pagination / streaming] |
|
|
55
|
+
| Success | [After a user action completes — confirmation banner, toast, animation] |
|
|
56
|
+
| Error | [Failure state — message + recovery action] |
|
|
57
|
+
| Disabled | [Action not available — visible reason for the user, no dead-end] |
|
|
58
|
+
| [Feature state] | [Optional feature-specific state, e.g. "trial expired", "offline mode"] |
|
|
47
59
|
|
|
48
60
|
### Interactions
|
|
49
61
|
|
|
@@ -94,3 +106,15 @@
|
|
|
94
106
|
- [Note]
|
|
95
107
|
|
|
96
108
|
<!-- Repeat WF block for each screen. Numbering: WF-001, WF-002, ... -->
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## US → WF Coverage Matrix
|
|
113
|
+
|
|
114
|
+
Forward traceability from each User Story to the screen(s) that implement it. Every Must-priority story should have at least one linked screen; uncovered stories are flagged.
|
|
115
|
+
|
|
116
|
+
| US ID | US Title | Linked Wireframes | Coverage Status |
|
|
117
|
+
|-------|----------|-------------------|-----------------|
|
|
118
|
+
| US-001 | [title] | WF-001, WF-002 | ✓ |
|
|
119
|
+
| US-002 | [title] | WF-003 | ✓ |
|
|
120
|
+
| US-003 | [title] | (uncovered) | ✗ |
|