Io uso UML
Io, come la maggior parte (credo), uso UML come set di strumenti per il diagramma principale. UML è chiaro e utile per rappresentare OOP e ha diagrammi sufficientemente diversi che c'è qualcosa per qualsiasi area si sta modellando; che si tratti di alberi di classi, relazioni di componenti o interazioni specifiche tra classi.
Ciò significa che ho un solo modello
UML è chiaramente progettato per rappresentare il dominio implementato.
I diagrammi di classi e oggetti sono piuttosto espliciti; comprendono metodi e proprietà che raramente possono essere definiti con certezza fino a quando non si decidono dettagli specifici dell'implementazione. Allo stesso modo, i diagrammi comportamentali presentano interazioni tra gli oggetti (messaggi inviati, l'ordine inviato, ecc.).
Tuttavia, i primi modelli analitici sono raramente così espliciti. Per il contesto, mi avvicino alla mia analisi iniziale come segue:
- Descrivi i casi d'uso da soddisfare; con scenari che descrivono l'input dell'attore e la risposta del sistema
- Descrivi le interazioni da soddisfare; questo componente / pacchetto / dominio deve avere l'interfaccia X e deve supportare una conversazione come ...
- Descrivi i processi realizzati dal dominio; questo dominio deve eseguire X e questo è il flusso di lavoro
Da qui ho una chiara serie di requisiti e inizio ad analizzare il dominio del problema stesso; definizione di oggetti / classi, le loro associazioni, il tipo di informazioni in loro possesso e i tipi di operazioni che supportano. Infine, passo alla progettazione dettagliata che fornisce tutte le classi a livello di implementazione, concretizza i metodi esatti e le proprietà delle classi definite nel dominio problematico, ecc.
Uso UML dall'inizio alla fine, ma finisco solo con il modello definito dalla parte di progettazione del processo. Tutto ciò che viene creato durante l'analisi finisce per essere rivisto e perfezionato, ottimizzato e sollecitato fino a quando non è lo stesso del progetto implementato. Vale a dire, ho solo un modello di implementazione, non un modello analitico .
Esiste un solo modello perché ...
In breve, UML incoraggia specifiche. Quando creo il mio modello analitico, le classi che creo hanno metodi con parametri ecc. Quando passo all'attuazione, questi cambiano e sembra assurdo lasciare due modelli direttamente in conflitto tra loro.
UML mi incoraggia a scrivere i dettagli di implementazione durante l'analisi perché gli stessi diagrammi, e quindi il linguaggio, vengono utilizzati durante entrambe le attività.
È auspicabile?
Dovrei adottare uno strumento di modellazione meno dettagliato per l'analisi in modo che non finisca per essere incluso nel modello di implementazione?
O è bello avere un solo modello?