CodeGym /Java Blog /Random-IT /Tutto ciò che devi sapere sulle metodologie di sviluppo d...
John Squirrels
Livello 41
San Francisco

Tutto ciò che devi sapere sulle metodologie di sviluppo del software: tendenze, principi e insidie per i principianti

Pubblicato nel gruppo Random-IT
Lo sviluppo del software è un processo aziendale complesso. Ciò significa che i professionisti IT devono parlare il linguaggio dell'ottimizzazione, della pianificazione e del calcolo dei costi. La comprensione dei concetti di gestione offre un grande vantaggio sia ai datori di lavoro che agli sviluppatori e aiuta a portare la collaborazione al livello successivo. Tutto ciò che devi sapere sulle metodologie di sviluppo del software: tendenze, principi e insidie ​​per i principianti - 1

Attenzione, principianti! Modelli, metodologie e confusione generale

Per cominciare, occorre fare una precisazione importante: i modelli di sviluppo del software e le metodologie di sviluppo del software sono separati e distinti. I modelli prevedono come si comporterà un sistema. Le metodologie sono necessarie affinché il sistema funzioni come dovrebbe. Confondere modelli e metodologie di sviluppo software è una procedura operativa standard per ogni principiante dell'IT, quindi non è considerato un grosso errore. Un esempio di modello è il classico modello a cascata , con la sua progressione lineare, la chiara definizione degli obiettivi per ogni fase e il rigoroso controllo delle scadenze. Un altro modello è il modello a spirale, con la sua attenzione all'individuazione precoce e all'attenuazione dei rischi del progetto. Lo sviluppo a spirale inizia in piccolo, prima risolvendo problemi locali e poi progredendo verso problemi più complessi. Infine, un altro modello è lo sviluppo iterativo e incrementale (IID) , in cui il ciclo di vita del progetto è suddiviso in una serie di iterazioni, ognuna delle quali assomiglia a un "mini-progetto". In generale, un modello è una descrizione del processo di sviluppo del software . Ma le metodologie sono sistemi per controllare, valutare e monitorare il lavoro sui compiti assegnati. Le metodologie sono il bastone e la carota dell'era moderna, necessarie per controllare ogni fase del processo di sviluppo. Vengono scelti in base alla direzione del progetto, al suo budget e alle scadenze per l'implementazione del prodotto finale. Inoltre, le metodologie possono essere selezionate in base al temperamento del capo progetto e del suo team. Anche in base alla filosofia dell'azienda o del cliente. Diamo un'occhiata alle metodologie più popolari.

1. Mischia

Scrum è un metodo agile di gestione dei progetti. Si basa su "sprint", ovvero brevi iterazioni, strettamente limitate nel tempo (in genere 2-4 settimane). Ciò riduce al minimo la durata delle riunioni, ma ne aumenta la frequenza. Ogni sprint è costituito da un elenco di attività da completare entro la fine dell'iterazione e ognuna di esse ha il proprio "peso". Durante le riunioni, il team discute cosa hanno fatto i membri del team, cosa hanno intenzione di fare e quali problemi ci sono. Scrum utilizza un backlog per la pianificazione. In questo approccio, i team generalmente hanno uno scrum master. Questa persona aiuta il team a lavorare senza interruzioni e crea un ambiente confortevole per il team. Il progetto avrà anche qualcuno nel ruolo di product owner. Questa persona è il responsabile dello sviluppo, monitora il prodotto e funge da collegamento principale tra ciò che il cliente richiede e ciò che il team produce.

Professionisti:

  • capacità di avviare rapidamente un progetto con il budget più basso possibile;
  • monitoraggio quotidiano dei progressi, frequenti dimostrazioni di progetto;
  • la capacità di apportare modifiche durante il progetto.

Contro:

  • difficoltà nella conclusione dei contratti per mancanza di un budget fisso;
  • non lavora per un team inesperto o quando le scadenze o il budget sono sottovalutati;
  • la capacità di apportare costantemente modifiche tra gli sprint può creare confusione.

Per chi è?

Un sistema come questo è adatto a progetti fino a dieci persone, siano esse indipendenti o presenti all'interno di grandi aziende. Questo è conveniente se il team ha una grande mole di lavoro e un lungo ciclo di vita che li costringe a cambiare e ad adattarsi alle nuove condizioni di mercato.

2. Kanban

La caratteristica più importante di Kanban è la visualizzazione del ciclo di vita del progetto. Vengono create le colonne per l'esecuzione degli elementi di lavoro. Gli elementi di lavoro vengono affrontati individualmente. Le colonne sono contrassegnate con stati come: Da fare, In corso, Revisione del codice, In fase di test, Fatto (ovviamente, i nomi delle colonne possono variare). L'obiettivo di ogni membro del team è ridurre il numero di elementi di lavoro nella prima colonna. L'approccio di Kanban è intuitivo e ti aiuta a capire dove si trovano i problemi. La struttura di Kanban non è fissata in modo definitivo e irrevocabile: a seconda delle specifiche del progetto, è possibile aggiungere colonne improvvisate. Ad esempio, alcuni team utilizzano un sistema in cui è necessario definire le regole di completamento per un elemento di lavoro prima di eseguirlo. In questo caso vengono aggiunte due colonne: Specifica (specifica i parametri) e Implementa (mettiti al lavoro).

Professionisti:

  • flessibilità nella pianificazione. Il team si concentra solo sul lavoro in corso, viene definita anche la priorità di un compito;
  • visibilità. Quando tutti i partecipanti hanno accesso ai dati, i problemi globali sono più facili da individuare;
  • elevato coinvolgimento nel processo di sviluppo. Visualizzare i processi aumenta l'auto-organizzazione e l'autocontrollo.

Contro:

  • non lavora con team di più di cinque persone;
  • non destinato alla pianificazione a lungo termine;
  • non adatto a una squadra demotivata. Kanban non ha scadenze per ogni elemento di lavoro. Né la metodologia prevede sanzioni per i ritardi.

Per chi è?

Kanban funziona alla grande nelle aziende in cui il team è motivato a crescere e ottenere risultati. Dovrebbe essere già ovvio: questo è per una piccola squadra. Forse anche un distaccamento o parte di una squadra.

3. Processo unificato razionale (RUP)

La metodologia RUP utilizza un modello di sviluppo iterativo. Alla fine di ogni iterazione (che richiede da 2 a 6 settimane), il team dovrebbe raggiungere gli obiettivi pianificati e ottenere una versione funzionante, anche se temporanea, del progetto. RUP chiede di suddividere il progetto in quattro fasi . In ogni fase viene eseguito il lavoro sulla generazione successiva del prodotto: inizio, elaborazione, costruzione e transizione. Al termine di una fase, viene raggiunta una pietra miliare del progetto. Il momento in cui il team valuta i propri risultati può essere considerato una pietra miliare del progetto. Ciò significa che la metodologia implica che le funzionalità principali vengano rilasciate nella prima fase e le aggiunte vengano aggiunte nelle fasi successive.

Professionisti:

  • consente di affrontare compiti mutevoli, sia da parte del cliente che cambiamenti che si presentano nel corso del lavoro;
  • garantisce il miglioramento continuo del prodotto. Durante le iterazioni, puoi valutare scrupolosamente il progetto;
  • consente di identificare ed eliminare i rischi nelle prime fasi del lavoro, nonché di controllare efficacemente la qualità dello sviluppo.

Contro:

  • Questa metodologia è piuttosto complessa e difficile da implementare in un piccolo team o azienda;
  • dipende dalla capacità degli esperti di impostare compiti;
  • necessita di un'eccessiva documentazione dei requisiti.

Per chi è?

Grandi progetti con requisiti e rischi chiaramente definiti e ben compresi, quando il prodotto deve essere rilasciato il più rapidamente possibile. Anche a discapito della funzionalità, per occupare velocemente la propria nicchia e solo successivamente dare gli ultimi ritocchi.

Ci sono molte metodologie, ma una tendenza

Oltre a scrum e Kanban, che sono innegabilmente popolari e basati su principi agili , così come la solida e iterativa metodologia RUP, le aziende utilizzano molte varianti di metodologie. Un'azienda può essere più vicina alla programmazione estrema e prendere le decisioni più rapide e semplici. Un altro potrebbe essere più vicino allo sviluppo guidato dai test. Un altro ancora potrebbe preferire lo sviluppo rapido di applicazioni (RAD). Detto questo, esiste una tendenza forte e indiscutibile verso l'utilizzo di più metodologie contemporaneamente. O anche combinando modelli e metodologie in un unico sistema di gestione. Le aziende di oggi si sforzano di eliminare le barriere burocratiche e creare un'atmosfera di lavoro di squadra unificato all'interno dell'organizzazione, senza spostare la responsabilità tra reparti e unità organizzative. Secondo Scrum Alliance, il 70% delle aziende IT utilizza Scrum. Tra questi ci sono giganti come Google, Amazon, Salesforce, Microsoft e Adobe. Le startup e i giovani progetti sono più inclini al Kanban, ma lo usano anche Toyota e, ad esempio, i giocatori di Wargaming. Scrum è uno strumento di pianificazione, mentre Kanban serve per monitorare i progressi. Per quanto riguarda il RUP, è più spesso utilizzato da aziende occidentali con 50-200 dipendenti e ricavi da 1 a 10 milioni di dollari. Tuttavia, IBM ha modificato RUP per avvicinarsi ai principi agili, rilasciando la metodologia OpenUP (RUP, ma agile). Questa decantata metodologia agile sta ora guidando il mondo IT . Questa non è solo una moda passeggera: è ancora innovativa e infatti è utilizzata in molte grandi aziende. Agile è utilizzato nella Silicon Valley. Facebook e Uber lo usano.

La linea di fondo

Ogni progetto ha la propria metodologia di sviluppo software, che dipende dal team, dal finanziamento, dalle scadenze e dai requisiti del cliente. Non esiste una tecnica di gestione universale: anche la popolarissima metodologia agile non può garantire il miglior approccio al processo di sviluppo. Di conseguenza, le metodologie vengono scelte con cura, a volte anche per principio. Tanto che possiamo trarre conclusioni su un'azienda stessa o sui suoi clienti osservando la sua metodologia. Le metodologie vengono mescolate, integrate con modelli e adattate. Tanto che danno vita a nuovi approcci. Detto questo, il regno della gestione alla fine rimane nelle mani di Scrum e Kanban, con elementi inaspettati del modello a cascata o della metodologia iterativa RUP.
Altre letture:
Siti web: Libri:
  • Andrew Stelman, Jennifer Greene: "Apprendimento agile";
  • Per Kroll, Bruce MacIsaac: «Agilità e disciplina semplificate: pratiche da OpenUP e RUP";
  • Mike Cohn: "Riuscire con Agile: sviluppo software utilizzando Scrum";
  • Robert C. Martin: "Sviluppo software agile: principi, modelli, pratiche";
  • Marcus Hammarberg, Joakim Sunden: "Kanban in azione";
  • I. Jacobson, G. Booch, J. Rumbaugh: "Processo di sviluppo software unificato".
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION