Metodologia agile in termini puramente tecnici

4

Spesso sento parlare di processi di agilità, ma mi sembra che sia (quasi) sempre legato all'organizzazione del team e ai processi di consegna. Esso (quasi, ancora una volta) non arriva mai in fondo alla bottiglia: lo sviluppo stesso.

Esistono metodi agili che mirano specificamente a problemi tecnici , come metodologie di sviluppo, gestione di bug / errori, pratiche e ideologie durante la codifica? O non riesco a capire di cosa si tratta Agile durante la codifica in una squadra?

    
posta Yassine Badache 30.03.2018 - 10:15
fonte

3 risposte

13

Quello che senti è principalmente Scrum. E Scrum non si occupa di pratiche tecniche. E molti considerano che un fallimento di Scrum, come l'adozione di Scrum senza l'adozione di pratiche tecniche appropriate, si traduce in "Flaccid-Scrum".

La programmazione eXtreme, che è molto meno conosciuta e adottata dalla pratica Agile, d'altra parte si occupa molto delle pratiche tecniche. Le pratiche tecniche come test automatici, refactoring, paia di programmazione e distribuzione continua sono alla base di XP. E XP ritiene che siano quelle pratiche che consentono uno sviluppo veloce, sostenibile e prevedibile.

    
risposta data 30.03.2018 - 10:18
fonte
4

Risposta breve

Il manifesto agile definisce 4 valori e 12 principi . Nessuno di loro è tecnico: si tratta solo di mentalità e lavoro di squadra. Tuttavia, ogni valore e principio ha implicazioni tecniche. Questi sono incorporati in varie pratiche che sono state inizialmente promosse dall'uno o dall'altro metodo agile.

Risposta più lunga

Senza entrare in una metodologia specifica, i processi agili sono tutti iterativo e incrementale :

  • Iterativo riguarda l'organizzazione del lavoro, indipendentemente da come è stato fatto tecnicamente;
  • Incrementale riguarda la consegna di un sottoinsieme successivo ma completo di funzionalità. Ciò implica il perfezionamento del codice.

Implicazioni tecniche generali:

  • Il design deve essere incrementale . Quindi, non ci sono enormi modelli UML dettagliati in anticipo.
  • Il codice deve essere adeguatamente progettato e robusto per ogni incremento e dall'inizio. Ciò esclude il codice throw-away rapido e sporco (come ad esempio il prototipo per verificare la fattibilità senza l'intento di costruire sulla sua base di codice). Pratiche come codice pulito o refactoring o l'uso di i sistemi di controllo delle versioni supportano la codifica incrementale.
  • Ogni incremento dovrebbe essere accettato. Ciò implica chiari criteri di accettazione nei requisiti, oltre a test appropriati di ciascun incremento. Test Driven Development e test automatici (utilizzando framework come jUnit per esempio ) sono due pratiche efficaci a tale scopo.
  • Gli sviluppatori devono lavorare in sincrono, in modo che alla fine di un'iterazione l'incremento sia funzionale (cioè non incompleto). Non mi è chiaro se si tratta di un aspetto organizzativo o tecnico .
  • Sono richieste integrazione e build frequenti (almeno una volta per ciascun incremento, ma più spesso nella pratica). Build giornalieri o continuous integration sono due pratiche efficaci in questo senso.

I processi di sviluppo iterativo e incrementale richiedono ovviamente input che consentano di identificare gli incrementi. Solitamente questo è ottenuto con storie di utenti o casi d'uso . Mappatura story User o use case 2.0 sono pratiche efficaci che suddividono i requisiti in blocchi implementabili.

Potresti obiettare che alcune delle pratiche sopra menzionate non sono necessariamente legate all'agile. E avrai ragione: Agile non si tratta di pratiche tecniche. Ma sono necessarie pratiche tecniche per abilitare l'agilità.

    
risposta data 30.03.2018 - 17:53
fonte
2

Un problema fondamentale nello sviluppo del software è che i requisiti effettivi per i sistemi sono, nell'istanza generale, non chiari e che, peggio, cambiano (per un numero qualsiasi di ragioni). Ci sono casi in cui questo non è vero ma sono l'eccezione, non la regola.

Le persone non sanno quello che vogliono (anche se di solito capiscono quale problema stanno cercando di risolvere / risolvere) e tutti spesso vengono a conoscenza del divario tra ciò che vogliono e ciò che chiedono quando il prodotto viene consegnato.

Gli approcci "Agili" allo sviluppo del software mirano ad accorciare il ciclo di feedback fornendo poco e spesso per poter imparare dal feedback e adattare i requisiti per adattarsi. Un sacco di discussioni in questo settore sono intorno a fornire valore.

Così agile non si tratta di tecnologia (lo stesso vale per i processi di produzione "Lean" che hanno molto in comune). Detto questo, ci sono un certo numero di pratiche tecniche che facilitano l'agilità indipendentemente dalla metodologia - le cose che rendono il cambiamento gestibile, che lo rendono facile da consegnare ad alta cadenza, e così via - quindi è ragionevole voler parlare di problemi tecnici in un contesto agile.

Un'ultima cosa che nasce dall'obiettivo di essere agili (o snelli) è il valore della comunicazione e dello sviluppo delle persone: la mischia (per esempio) è, o almeno può essere, un mezzo per facilitare la comunicazione tra ingegneri e, fatto giusto, per esporre problemi che ostacolano la consegna

    
risposta data 30.03.2018 - 13:04
fonte