@kudusov.takhir/ba-toolkit 3.4.1 → 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 +87 -1
- package/package.json +1 -1
- package/skills/ac/SKILL.md +8 -15
- package/skills/apicontract/SKILL.md +21 -8
- package/skills/brief/SKILL.md +34 -10
- 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/brief-template.md +76 -16
- 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/srs-template.md +43 -10
- package/skills/references/templates/stories-template.md +26 -4
- 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/srs/SKILL.md +48 -12
- package/skills/stories/SKILL.md +17 -18
- package/skills/usecases/SKILL.md +14 -29
- package/skills/wireframes/SKILL.md +9 -6
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Project Brief: [PROJECT_NAME]
|
|
2
2
|
|
|
3
|
+
**Version:** 0.1
|
|
4
|
+
**Status:** Draft
|
|
3
5
|
**Domain:** [DOMAIN]
|
|
4
6
|
**Date:** [DATE]
|
|
5
7
|
**Slug:** [SLUG]
|
|
@@ -11,41 +13,99 @@
|
|
|
11
13
|
## 2. Business Goals and Success Metrics
|
|
12
14
|
|
|
13
15
|
| # | Goal | Success Metric |
|
|
14
|
-
|
|
16
|
+
|---|------|----------------|
|
|
15
17
|
| 1 | [goal] | [measurable metric] |
|
|
16
18
|
|
|
17
19
|
## 3. Target Audience
|
|
18
20
|
|
|
21
|
+
### 3.1 Buyer
|
|
22
|
+
|
|
23
|
+
[Who pays for the product. Decision criteria, budget cycle, procurement constraints.]
|
|
24
|
+
|
|
25
|
+
| Segment | Description | Geography |
|
|
26
|
+
|---------|-------------|-----------|
|
|
27
|
+
| [segment] | [description] | [region] |
|
|
28
|
+
|
|
29
|
+
### 3.2 User (if different from Buyer)
|
|
30
|
+
|
|
31
|
+
[Who actually uses the product day to day. Skip this section if buyer = user.]
|
|
32
|
+
|
|
19
33
|
| Segment | Description | Geography |
|
|
20
34
|
|---------|-------------|-----------|
|
|
21
35
|
| [segment] | [description] | [region] |
|
|
22
36
|
|
|
23
37
|
## 4. High-Level Functionality Overview
|
|
24
38
|
|
|
25
|
-
|
|
39
|
+
### 4.1 In Scope
|
|
40
|
+
|
|
41
|
+
[2–4 paragraphs or bullet list of the main functional areas that ARE part of the first release. No technical detail — what the system does, not how.]
|
|
42
|
+
|
|
43
|
+
### 4.2 Out of Scope
|
|
44
|
+
|
|
45
|
+
[Explicit list of capabilities that are NOT in scope for this brief. A brief is a contract — what is excluded matters as much as what is included. Use this section to head off scope creep on day one.]
|
|
46
|
+
|
|
47
|
+
- [out-of-scope item with one-line reason]
|
|
48
|
+
|
|
49
|
+
## 5. Stakeholders and Decision-Making Authority
|
|
50
|
+
|
|
51
|
+
| Role | Responsibility | Interest | Sign-off authority |
|
|
52
|
+
|------|----------------|----------|--------------------|
|
|
53
|
+
| [role] | [what they do] | [what they care about] | Yes / No / Veto only |
|
|
26
54
|
|
|
27
|
-
##
|
|
55
|
+
## 6. Constraints
|
|
28
56
|
|
|
29
|
-
|
|
30
|
-
|------|---------------|---------|
|
|
31
|
-
| [role] | [what they do] | [what they care about] |
|
|
57
|
+
Imposed facts that cannot be changed during the project. Each constraint has a source (regulatory, contractual, technical, organisational) and an implication.
|
|
32
58
|
|
|
33
|
-
|
|
59
|
+
| # | Constraint | Type | Source | Implication |
|
|
60
|
+
|---|------------|------|--------|-------------|
|
|
61
|
+
| 1 | [constraint] | Regulatory / Contractual / Technical / Organisational | [source] | [what this forces or forbids] |
|
|
34
62
|
|
|
35
|
-
|
|
36
|
-
- [constraint]
|
|
63
|
+
## 7. Assumptions
|
|
37
64
|
|
|
38
|
-
|
|
39
|
-
- [assumption]
|
|
65
|
+
Beliefs we have made about the world that may turn out wrong. Each assumption has an owner and a validation date — if invalidated, the assumption becomes a risk and the owner must escalate.
|
|
40
66
|
|
|
41
|
-
|
|
67
|
+
| # | Assumption | Owner | Validate by | Risk if false |
|
|
68
|
+
|---|------------|-------|-------------|---------------|
|
|
69
|
+
| 1 | [assumption] | [name / role] | [date] | [what breaks if this turns out false] |
|
|
70
|
+
|
|
71
|
+
## 8. Risks
|
|
42
72
|
|
|
43
73
|
| # | Risk | Probability | Impact | Mitigation |
|
|
44
|
-
|
|
45
|
-
| 1 | [risk] | High/Med/Low | High/Med/Low | [mitigation] |
|
|
74
|
+
|---|------|-------------|--------|------------|
|
|
75
|
+
| 1 | [risk] | High / Med / Low | High / Med / Low | [mitigation] |
|
|
76
|
+
|
|
77
|
+
## 9. Success and Failure Criteria
|
|
78
|
+
|
|
79
|
+
### 9.1 Success Criteria
|
|
80
|
+
|
|
81
|
+
[Specific, measurable conditions that, if met, mean the project succeeded. Reference business goals from §2 where applicable.]
|
|
82
|
+
|
|
83
|
+
- [criterion]
|
|
84
|
+
|
|
85
|
+
### 9.2 Failure Criteria
|
|
86
|
+
|
|
87
|
+
[Specific conditions that, if met, mean the project should be paused or cancelled. Asymmetric to success criteria — these are red lines, not "less than success".]
|
|
46
88
|
|
|
47
|
-
|
|
89
|
+
- [criterion]
|
|
90
|
+
|
|
91
|
+
## 10. Reference Products and Analogues
|
|
92
|
+
|
|
93
|
+
| Product | What it does well | What it does badly / misses | Relevance |
|
|
94
|
+
|---------|-------------------|-----------------------------|-----------|
|
|
95
|
+
| [name] | [one line] | [one line] | [why it matters to this project] |
|
|
96
|
+
|
|
97
|
+
## 11. Glossary
|
|
98
|
+
|
|
99
|
+
The project's source-of-truth glossary. Propagated to all subsequent artifacts (`/srs`, `/stories`, `/glossary`). Add a term here once and reuse the same definition everywhere downstream.
|
|
48
100
|
|
|
49
101
|
| Term | Definition |
|
|
50
|
-
|
|
102
|
+
|------|------------|
|
|
51
103
|
| [term] | [definition] |
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Approvals
|
|
108
|
+
|
|
109
|
+
| Name | Role | Approval Date | Notes |
|
|
110
|
+
|------|------|---------------|-------|
|
|
111
|
+
| [name] | [role] | [YYYY-MM-DD] | [optional notes] |
|
|
@@ -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]
|