Model Spell a Word: use case diagram, user story, use case and SSD

Task: MIL-002#1
Refs #8
This commit is contained in:
2026-10-13 16:39:01 +08:00
parent 530a1f8f2b
commit 1b7da4bcf9
11 changed files with 632 additions and 64 deletions
+60
View File
@@ -0,0 +1,60 @@
# SSD-001 Spell a Word
## Metadata
| Key | Value |
| --- | --- |
| ID | SSD-001 |
| CrossReference | [UC-001] |
| Language | en |
| Domain | it |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version, reviewed in RC-013 | pending |
---
## Source Use Case
Spell a Word ([UC-001]) — scenario: main success scenario. The alternate flow 3a (invalid character) is drawn separately below.
## Diagram
```plantuml
@startuml
actor User as U
participant ":System" as S
U -> S : requestWord()
S --> U : prompt
U -> S : spellWord(word)
S --> U : codeWords
@enduml
```
Alternate flow 3a, a word with a character that is not a letter:
```plantuml
@startuml
actor User as U
participant ":System" as S
U -> S : spellWord(word)
S --> U : rejection(only letters allowed)
S --> U : prompt
@enduml
```
## System Operations
| Step | Message | Parameters | Return | Use case step |
| --- | --- | --- | --- | --- |
| 1 | requestWord | none | prompt asking for a word | 1, 2 |
| 2 | spellWord | word | the list of code words, or a rejection for a non-letter | 3, 4 and 3a |
## Lifecycle Notes
The tool runs one session per start; it keeps no state between words. The data is loaded once when the session starts.
---
[UC-001]: ./uc.md
+59
View File
@@ -0,0 +1,59 @@
# UC-001 Spell a Word
## Metadata
| Key | Value |
| --- | --- |
| ID | UC-001 |
| CrossReference | [UCD-001], [US-001], [SA-001] |
| Language | en |
| Domain | it |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version, reviewed in RC-012 | pending |
---
**Format:** Fully Dressed
## Fully Dressed
- **Scope:** NATO alphabet tool
- **Level:** user-goal
- **Primary Actor:** User, as named in [UCD-001]
- **Stakeholders and Interests:**
- S01 — a correct result for every letter, kept simple
- S02 — a readable behaviour that can be compared with their own solution
- **Preconditions:** the NATO alphabet data is available to the tool
- **Postconditions (success guarantee):** the User has seen the NATO code word of each letter of the word, in the order of the letters
### Main Success Scenario
1. The User starts the tool.
2. The tool asks for a word.
3. The User enters a word made of letters.
4. The tool shows the NATO code word of each letter, in order.
### Extensions (Alternative / Exception Flows)
- 3a. The word contains a character that is not a letter:
1. The tool tells the User that only letters are allowed.
2. The tool asks for a word again (back to step 2).
### Special Requirements / Business Rules
| Step | Rule |
| --- | --- |
| 3 | Upper-case and lower-case letters give the same result |
| 4 | Each letter A to Z maps to exactly one code word from the supplied alphabet |
### Open Issues
- None.
---
[UCD-001]: ../use-case-diagram.md
[US-001]: ../user-stories.md
[SA-001]: ../stakeholder-analysis.md