Ho appena letto Agilità e disciplina di bilanciamento . Scarsa qualità del titolo, ha contrapposto un team di progetto guidato dal piano che utilizzava PSP / TSP e un team agile utilizzando Extreme Programming.
Quando gli autori hanno fornito un esempio di una metodologia guidata dal piano, hanno utilizzato Processo software personale / Processo software del team. Anche se, out-of-the-box, si tratta di metodologie pianificate, sono anche progettate per essere utilizzate come framework di processo e, in definitiva, solo specificare quali tipi di cose da fare e non come eseguirli, whi ch li rende potenzialmente utili anche in un ambiente agile. È possibile essere agili e rispettare i principi della PSP, e non sono abbastanza familiare con il TSP per dirlo con certezza, ma la mia comprensione è che è molto simile.
In un punto del libro, elencano una serie di metodologie e le classificano in termini di agilità. Metodi come Scrum, Lean, Crystal e XP sono in cima. Il fondo (dal più al meno agile) è costituito da Rational Unified Process, Team Software Process, Feature-Driven Development, CMMI, Software CMM, Personal Software Process e Cleanroom.
Watts Humphrey, in PSP: un processo di auto-miglioramento per gli sviluppatori software , dedica un capitolo alla definizione del processo e in particolare modificando il processo del software personale. Il tema comune è che i processi sono prescrittivi (dicono cosa fare) e non descrittivi (come farlo). Direi che il TSP è molto simile allo stesso modo. CMMI è stato utilizzato anche in combinazione con metodi agili, e il SEI ha un libro su di esso (che non ho ancora letto).
Lo sviluppo guidato da funzionalità è spesso considerato un approccio agile alla gestione dei progetti, tuttavia gli autori scelgono di classificarlo come una metodologia meno agile.
RUP è una struttura iterativa. Anche se non ne ho molta familiarità, il fatto che sia un framework mi presta a raggrupparlo con SW-CMM, CMMI e PSP / TSP in quanto potrebbe essere implementato sia come metodologia agile che come strategia pianificata.
L'unico altro esempio che il libro fornisce sono d'accordo Ingegneria del software di Cleanroom . I componenti chiave di Cleanroom sono l'uso di metodi formali, controllo statistico della qualità e test statisticamente validi. Non vedo perché questi non possano essere utilizzati in un metodo agile (iterativo / incrementale), con l'aggiunta del tempo e dei costi generali.
Solo per chiarire quello che sto cercando, la famiglia di metodi agili include implementazioni specifiche di un'idea astratta sotto forma di Scrum ed Extreme Programming. Questi realizzano i concetti di sviluppo iterativo e incrementale, rispondendo al cambiamento, persone (individui e team), frequenti consegne di software funzionante, collaborazione con il cliente e così via. Specificano chiaramente ruoli, artefatti, riunioni, timebox e altre pratiche e "fare Scrum" o "fare programmazione estrema" significa prendere il pacchetto. Anche così, consentono la personalizzazione e la creazione di nuovi processi (ma poi non si sta "facendo Scrum" o "facendo XP"). Tuttavia, non ho trovato la "do X" delle metodologie basate su piani - la maggior parte del lavoro sembra essere verso framework che potrebbero essere agili o basati su piani.
Quindi, la mia domanda: quali sono gli esempi di più metodologie di sviluppo del software basate sui piani? Un certo numero di framework di processo (PSP / TSP, SW-CMM, CMMI, RUP) consentono anche lo sviluppo pianificato o agile, ma nessuno è descrittivo. Ma ci sono delle metodologie realmente pianificate, che sono, per esempio, controparti dirette di Scrum ed Extreme Programming?