Software Design Stability, YAGNI e Agile [duplicato]

2

Ho incontrato il criterio del buon sistema di design in quanto la sua stabilità rispetto ai requisiti cambia.
Piccolo req. le modifiche dovrebbero sollevare piccole modifiche nel design.

Tuttavia, ho la sensazione che quasi per qualsiasi sistema software un po 'complesso è possibile indicare l'insieme di piccoli cambiamenti nei requisiti che causano quantità inaccettabili di cambiamenti nel software.

Questo sentimento si basa sull'esperienza personale anche se non eccezionale e sul fatto che i programmi sono spesso infranti.

La community può contestare questa affermazione in caso di strong disaccordo.

Ma la domanda ha un significato solo se sei d'accordo.

Il principio YAGNI funziona bene contro la sovrintendenza e la metodologia Agile la porta all'intero processo di sviluppo del software: il sistema si evolve in modo incrementale e questo si adatta perfettamente al concetto di stabilità da cui ho iniziato questo post.

Ma ... Se tuttavia concordiamo sul fatto che ci sono alcuni punti di instabilità, non dovremmo localizzare questi casi per capire le implicazioni fin dall'inizio? E come è possibile se progettiamo il sistema in modo agile e incestuoso?!

P.S. Parte interessante del dialogo con il mio collega:

  • Non c'è niente di sbagliato nello sviluppo incrementale del software.
  • Ti immagini i costi di modifica dell'architettura del firmware di Curiosity dopo che è atterrato su Marte?
  • Ehi, ma è possibile e ha cambiato il firmware!
  • Sì, ma prima, avevano progettato attentamente questa funzione. E se no ... quello sarebbe il punto di non ritorno.
posta Pavel Voronin 10.07.2013 - 16:37
fonte

1 risposta

3

Penso che la chiave sia di incapsulare le fonti di probabile cambiamento all'interno della tua applicazione.

In un certo senso, il cambiamento è buono in quanto indica che il software sta crescendo (nuovi requisiti) o sta migliorando (correzioni di bug).

Comprendendo dove è probabile che si verifichi il cambiamento (AKA. "Conosci il tuo dominio aziendale"), puoi strutturare l'applicazione per incapsulare quelle aree di cambiamento. E penso che sia quello che stai prendendo in considerazione quando dici localize this cases to understand the implications from the very beginning .

Sei ancora a rischio di un cambiamento catastrofico (ad esempio una modifica dei requisiti che causa una quantità sproporzionata di modifica del codice), ma questo è sempre un rischio nello sviluppo del software.

La saggezza acquisita dall'esperienza con il design e la programmazione è il modo in cui sappiamo incapsulare le aree del cambiamento. Anche una solida conoscenza delle attuali esigenze e una visione più ampia del progetto sono fondamentali. Bloccare la visione delle applicazioni in un singolo sprint alla volta aumenterà il rischio di cambiamenti catastrofici. (Buona) Agile promuove la concentrazione sullo sprint ma comprende anche la direzione generale.

    
risposta data 10.07.2013 - 17:37
fonte

Leggi altre domande sui tag