Sto facendo un progetto nella mia università dove, per la prima volta nella mia vita, devo creare un sistema di architettura / design e sarò a capo di un gruppo di 4 studenti che sono all'inizio del corso .
Fondamentalmente, sarò in grado di fare tutto: ho quasi la completa indipendenza di scegliere che cosa dovrebbe fare esattamente il software (obiettivi, caratteristiche, ecc.) di quello che devo progettare.
Poiché si tratta di un progetto universitario, ho molto tempo per pensare al concetto di software e progettarlo.
I miei piani sono di creare una bozza dell'idea e perfezionarla con il professore. Una volta che abbiamo un'idea concreta, voglio iniziare la progettazione SW stessa. E questo è il punto in cui arrivano le mie domande:
So che creare un design che contempli tutto e che non cambierà durante lo sviluppo è impossibile, per questo motivo, sono sicuro che il progetto verrà modificato una volta iniziata l'implementazione. Tuttavia, voglio presentare un design maturo, basato su decisioni logiche e buone pratiche, ma, naturalmente, non sarò in grado di sviluppare il SW per identificare le trappole in cui sto cadendo (questo sarà compito dello studente).
Quali trucchi usi per creare un design maturo ed evitare trappole prima di iniziare l'implementazione? Come ci si avvicina e "studia" la proposta di software per trovare incongruenze o punti che richiedono chiarimenti? Come fai a includere le modifiche al tuo design, senza rovinarlo? (Molti dei miei progetti iniziano molto bene, ma alla fine sono rovinati dai cambiamenti).