JavaRush /Java Blog /Random-IT /Metodologie di sviluppo software
Миха Писаренко
Livello 41
Киев

Metodologie di sviluppo software

Pubblicato nel gruppo Random-IT
Ciao. Nelle ultime due interviste mi è stato chiesto delle metodologie. Questa non è la domanda più importante o difficile, ma sarebbe bello avere un foglietto illustrativo per la risposta. In questo articolo cercherò di dare un'idea di cosa sia una metodologia di sviluppo e di confrontare quelle che ho incontrato personalmente o che mi sono state interpellate. Metodologie di sviluppo software - 1La metodologia di sviluppo del software è un processo di descrizione di come verrà sviluppato un prodotto specifico, ovvero uno dei modi per organizzare lo sviluppo del team. Esistono molti modelli diversi di tale processo, ognuno dei quali descrive il proprio approccio, e non si può dire che tra questi ce n'è uno che dovrebbe essere utilizzato in ogni progetto, tutto è puramente situazionale. Propongo di considerarne tre in modo più dettagliato.

Cascata

La cascata (cascata, cascata) è una delle metodologie più antiche e implica la rigorosa implementazione sequenziale di tutte le fasi, ognuna delle quali deve essere completata prima dell'inizio di quella successiva. Cioè, il passaggio alla fase successiva significa il completamento completo del lavoro su quella precedente. L'immagine mostra che prima analizziamo l'attività (documentiamo le attività, discutiamo delle difficoltà), quindi avviene la progettazione (in questa fase viene formata la struttura del progetto), quindi la codifica e il test. Non sono previsti rimborsi per le fasi successive. Si consiglia di utilizzare tale sistema in progetti di piccole dimensioni in cui i requisiti sono noti in anticipo e vi sono poche probabilità che cambino. Metodologie di sviluppo software - 2Vantaggi:
  • Documentazione completa e coerente in ogni fase;
  • Facilità d'uso;
  • Requisiti stabili.
  • Budget e scadenze sono predeterminati
Screpolatura:
  • Una grande quantità di documentazione;
  • Non è un sistema molto flessibile;
  • Il cliente non può visualizzare la versione demo del prodotto;
  • Non c'è modo di tornare indietro di un passo.

Mischia

Scrum è un sistema di sviluppo software basato sulla suddivisione dell'intero processo in iterazioni, dove al termine di ciascuna di esse il team è pronto a fornire una versione demo del prodotto. L'immagine mostra che il team attraversa tutte le fasi dello sviluppo in parallelo, il che ci consente di avere una parte finita del progetto alla fine di ogni iterazione. Metodologie di sviluppo software - 3Cercherò di spiegare brevemente in parole semplici l'essenza della metodologia, ma qui ci sono molti termini. Penso che la cosa più importante sia capirne l'essenza e i termini verranno ricordati con l'esperienza. Tutto lo sviluppo è suddiviso in sprint (spesso 2-3 settimane). Esiste un backlog (elenco di attività) per l'intero periodo di sviluppo e per ogni sprint separatamente. Ogni attività ha il proprio punto della storia (valutazione della difficoltà). Ogni partecipante al processo ha un ruolo:
  • Un team Scrum è un team che lavora su un progetto (sviluppatori, tester, designer).
  • Uno Scrum Master è una persona che garantisce che i principi di Scrum vengano seguiti.
  • Proprietario del prodotto – cliente.
Poiché in questo sistema l'enfasi è sulla comunicazione, ci sono un gran numero di manifestazioni:
  • Lo stand-up è un breve incontro, che si tiene ogni giorno, partecipano tutti i membri del team e ogni partecipante risponde a 3 domande: cosa hai fatto? Cosa farà? E quali sono i bloccanti?
  • Pianificazione: si tiene all'inizio dello sprint e in questo incontro si determina quali attività dovrebbero essere completate nello sprint successivo.
  • La retrospettiva si tiene alla fine dello sprint e la sua essenza è scoprire cosa è stato fatto bene e cosa potrebbe essere migliorato.
Vantaggi:
  • Il cliente può osservare il risultato durante il processo di sviluppo.
  • Controllo quotidiano del processo di sviluppo.
  • Possibilità di apportare modifiche durante lo sviluppo.
  • Comunicazioni ben consolidate con tutti i membri del team.
  • Piccola quantità di documentazione.
Screpolatura:
  • Difficile stimare la manodopera e i costi necessari per lo sviluppo
  • È difficile determinare i maggiori colli di bottiglia prima che inizi lo sviluppo.
  • La necessità di coinvolgere tutti nello sviluppo degli altri membri del team.

Kanban

Kanban è un sistema basato sulla visualizzazione del processo di completamento delle attività del team. L'idea principale di questo sistema è quella di ridurre il numero di attività attualmente eseguite (nella colonna "in corso"). In Scrum, il team si concentra sul completamento con successo degli sprint; in Kanban, le attività vengono prima. Buono per i progetti che sono nella fase di supporto, dove la funzionalità principale è già stata sviluppata e rimangono miglioramenti minimi e correzioni di bug. In Kanban, le attività vengono inviate individualmente. L'attività, indipendentemente dalle altre attività, attraversa tutte le fasi sulla lavagna e appena completata può essere mostrata al cliente. Una lavagna Kanban è composta da colonne, ciascuna delle quali rappresenta un processo di sviluppo separato. Alcune colonne (ad esempio, in corso) impongono restrizioni sul numero di attività che possono essere presenti. Ciò aiuta a trovare facilmente e rapidamente le aree problematiche nella distribuzione dei compiti. L'immagine mostra un esempio di una tavola così semplice. Il numero di colonne e nomi può variare, ma nominerò i più comuni: Metodologie di sviluppo software - 4
  • Da fare: un elenco di attività che devono essere eseguite
  • In corso: attività su cui si sta attualmente lavorando
  • Revisione del codice: attività che sono state completate e inviate per la revisione
  • In fase di test: attività pronte per il test
  • Fatto: attività completate.
Vantaggi:
  • Facilità d'uso.
  • Visualizzazione (aiuta a trovare colli di bottiglia, semplifica la comprensione)
  • Elevato coinvolgimento del team nel processo stesso.
  • Elevata flessibilità nello sviluppo.
Screpolatura:
  • Elenco attività instabile.
  • Difficile da utilizzare su progetti a lungo termine.
  • Nessuna scadenza rigida.

In conclusione sulla metodologia di sviluppo del software

A mio avviso, le persone che ricoprono posizioni dirigenziali o aspirano a ricoprirle necessitano di una conoscenza approfondita delle metodologie di sviluppo software, ma è consigliabile che tutti ne comprendano almeno le basi. Questo è parte integrante del processo di sviluppo e viene utilizzato non solo in ambito informatico. Grazie per aver dedicato del tempo a leggere il mio articolo, spero che tu lo abbia trovato utile. Ho cercato di descrivere solo i punti chiave nel modo più chiaro e breve possibile, quindi l'articolo non è esaustivo. Sarò felice di sentire la tua opinione a riguardo e rispondere alle tue domande. Ti auguro il meglio!
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION