In molte interviste, probabilmente ti verrà chiesto delle metodologie. Questa non è la domanda più importante o difficile, ma sarebbe bello avere un foglietto illustrativo. In questo articolo, cercheremo di trasmettere cos'è una metodologia di sviluppo e confrontarli. Una metodologia di sviluppo software è un processo utilizzato per sviluppare un particolare prodotto, ovvero è un modo per organizzare lo sviluppo da parte di un team di sviluppatori. Esistono molti modelli di sviluppo diversi, ognuno dei quali definisce il proprio approccio. Non si può dire che ognuno di loro debba essere utilizzato per ogni progetto. L'approccio giusto dipende interamente dalla situazione. Intendo esaminarne tre in maggior dettaglio.
Vantaggi:
Cercherò di spiegare brevemente l'essenza della metodologia usando parole semplici, ma c'è molta terminologia. Penso che la cosa più importante sia capire l'essenza. Ricorderai la terminologia con l'esperienza. Tutto lo sviluppo è suddiviso in sprint (spesso 2-3 settimane). C'è un arretrato(elenco delle attività) per l'intero periodo di sviluppo e per ogni singolo sprint. Ogni attività ha il proprio punto della storia (grado di difficoltà). Ogni partecipante al processo ha un ruolo:
Cascata
La metodologia a cascata è una delle più antiche e prevede un'implementazione strettamente sequenziale: ogni fase deve essere completata prima che inizi la successiva. In altre parole, una transizione alla fase successiva significa che il lavoro della fase precedente è completo al 100%. L'immagine mostra come funziona: prima analizziamo il problema (documentiamo le attività, discutiamo le sfide), poi progettiamo (la struttura del progetto prende forma in questa fase), quindi codifichiamo e testiamo. Non è consentito il ritorno alle fasi precedenti. Questo approccio è consigliato per piccoli progetti in cui i requisiti sono noti in anticipo ed è improbabile che cambino.
- Documentazione completa e coerente in ogni fase
- Facilità d'uso
- Requisiti stabili
- Budget e scadenze sono predefiniti
- Una grande quantità di documentazione
- Non molto flessibile
- Il cliente non può vedere una versione demo del prodotto
- Nessuna opzione per tornare indietro
Mischia
Scrum è una metodologia di sviluppo software che suddivide l'intero processo in iterazioni. Al termine di ogni interazione, il team è pronto a fornire una versione demo del prodotto. L'immagine mostra che il team procede attraverso tutte le fasi di sviluppo in parallelo, rendendo possibile avere una parte completa del progetto alla fine di ogni iterazione.
- Il team di mischia è composto dai professionisti (sviluppatori, tester, designer) che lavorano su un progetto.
- Lo scrum master è la persona che si assicura che i principi di scrum siano rispettati.
- Il proprietario del prodotto è il cliente.
- Stand-up – Questo è un breve incontro, che si tiene ogni giorno, a cui prendono parte tutti i membri del team. Ogni partecipante risponde a 3 domande: Cosa ho fatto? Cosa farò? E quali problemi di blocco ci sono?
- Riunione di pianificazione: questa riunione si tiene all'inizio dello sprint. In questa riunione vengono identificate le attività che devono essere eseguite nello sprint successivo.
- Retrospettiva - Questo incontro si tiene alla fine dello sprint e il suo scopo è identificare cosa è stato fatto bene e cosa potrebbe essere migliorato.
- Il cliente può vedere i risultati durante il processo di sviluppo
- Monitoraggio quotidiano del processo di sviluppo
- Capacità di apportare modifiche durante lo sviluppo
- Comunicazioni stabilite con tutti i membri del team
- Una piccola quantità di documentazione
- Difficile valutare la manodopera e altri costi necessari per lo sviluppo
- Difficile identificare i colli di bottiglia prima dell'inizio dello sviluppo
- La necessità di coinvolgere tutti nel lavoro degli altri membri del team.
Kanban
Kanban è un metodo basato sulla visualizzazione dei progressi compiuti nel completamento dei compiti del team. L'idea principale è ridurre il numero di attività attualmente in esecuzione (nella colonna "In corso"). In mischia, il team si concentra sul completamento con successo degli sprint. In Kanban, l'attività occupa la posizione preminente. Questo è utile per i progetti in fase di manutenzione, in cui la funzionalità di base è già stata implementata e rimangono miglioramenti minimi e correzione di bug. In Kanban, le attività vengono assegnate individualmente. Un'attività attraversa tutte le fasi sulla lavagna, indipendentemente da altre attività, e una volta completata può essere mostrata al cliente. Una scheda Kanban è composta da colonne, ognuna delle quali rappresenta un processo di sviluppo separato. Alcune colonne (ad esempio, "In corso" ) limitano il numero di attività che possono contenere. Questo aiuta a trovare rapidamente e facilmente le aree problematiche nella distribuzione dei compiti. L'immagine mostra un esempio di una tavola del genere. Il numero di colonne e i loro nomi possono variare. Presenterò i più comuni:
- To Do - L'elenco delle attività che devono essere eseguite
- In corso: attività attualmente in fase di elaborazione
- Revisione del codice: attività eseguite e sottoposte a revisione
- In Test – Compiti pronti per il test
- Fatto – Attività terminate
- Facilità d'uso
- Visibilità (aiuta a individuare i colli di bottiglia, semplifica la comprensione)
- Elevato coinvolgimento del team nel processo stesso
- Sviluppo altamente flessibile
- Un elenco di attività instabile
- Difficile da applicare a progetti a lungo termine
- Mancanza di scadenze rigide
GO TO FULL VERSION