Processo di progettazione formale per tuilegram, un client Telegram TUI in Go.
- Design-first: ogni componente è modellato prima di essere implementato
- Statecharts: macchine a stati gerarchiche (Harel) per behavior modeling
- TLA+: specifica formale e model checking per il modello di concorrenza
- Mermaid: notazione diagrammatica versionabile per statecharts, sequence, component diagrams
| Fase | Deliverable | Stato |
|---|---|---|
| 1. System Context & Domain | system-context.md, domain-model.md, message-taxonomy.md | DONE |
| 2. Behavioral Models | ui-statechart.md, telegram-statechart.md, auth-flow.md, message-lifecycle.md, forward-picker.md, multi-select.md, typing-indicator.md, media-rendering.md, search-overlay.md, search-in-chat.md, command-palette-help-whichkey.md, folder-sidebar.md, chat-info.md | DONE |
| 3. Interaction Models | scenarios.md, msg-cmd-mapping.md, forward-flow.md, multi-select-flow.md, typing-flow.md, media-flow.md, search-flow.md, search-in-chat-flow.md, whichkey-timing-flow.md, folder-and-info-flow.md | DONE |
| 4. Concurrency Model | tuilegram.tla, forward_picker.tla, multi_select.tla, typing.tla, media_waveform.tla, search.tla, search_in_chat.tla, whichkey.tla, folders_chatinfo.tla, README.md | DONE |
| 5. Data Model | domain-types.md, model-structure.md, entity-mapping.md | DONE |
| 6. Architecture Decisions | 17 ADR | DONE |
graph LR
P1[Fase 1: Context & Domain] --> P2[Fase 2: Behavioral]
P1 --> P5[Fase 5: Data Model]
P2 --> P3[Fase 3: Interactions]
P2 --> P4[Fase 4: Concurrency TLA+]
P3 --> P5
P4 --> P5
P5 --> CODE[Implementazione]
P6[Fase 6: ADR] -.-> P1
P6 -.-> P2
P6 -.-> P3
P6 -.-> P4
P6 -.-> P5
Fase 6 (ADR) è trasversale: ogni decisione architetturale viene documentata nel momento in cui emerge.
- Statecharts: Mermaid
stateDiagram-v2con stati compositi e concorrenti - Sequence: Mermaid
sequenceDiagram - Concorrenza: TLA+ con model checking via TLC
- Domain: Mermaid
classDiagramper entity relationships