Skip to content

Latest commit

 

History

History

README.md

tuilegram — Model Based Design

Processo di progettazione formale per tuilegram, un client Telegram TUI in Go.

Principi

  • 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

Fasi e Deliverable

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

Dipendenze tra fasi

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
Loading

Fase 6 (ADR) è trasversale: ogni decisione architetturale viene documentata nel momento in cui emerge.

Notazioni

  • Statecharts: Mermaid stateDiagram-v2 con stati compositi e concorrenti
  • Sequence: Mermaid sequenceDiagram
  • Concorrenza: TLA+ con model checking via TLC
  • Domain: Mermaid classDiagram per entity relationships