Questo capitolo fornisce una panoramica di Extreme Programming.
Che cos’è Agile?
La parola ‘agile’ significa −
-
In grado di muovere il corpo rapidamente e facilmente.
-
In grado di pensare in modo rapido e chiaro.,
Nel mondo degli affari, ‘agile’ viene utilizzato per descrivere i modi di pianificare e fare il lavoro in cui si capisce che apportare modifiche, se necessario, è una parte importante del lavoro. Businessagilty ‘ significa che un’azienda è sempre in grado di tenere conto dei cambiamenti del mercato.
Ref: Dizionari Cambridge online.
Nello sviluppo del software, il termine ‘agile’ è adattato a significare ‘la capacità di rispondere ai cambiamenti − cambiamenti da requisiti, tecnologia e persone.,’
Agile Manifesto
Un team di sviluppatori software ha pubblicato il Manifesto Agile nel 2001, evidenziando l’importanza del team di sviluppo, in grado di soddisfare le mutevoli esigenze e il coinvolgimento dei clienti.
Il Manifesto Agile afferma che −
Stiamo scoprendo modi migliori di sviluppare software facendolo e aiutando gli altri a farlo. Attraverso questo lavoro, siamo arrivati a valutare –
-
Individui e interazioni su processi e strumenti.
-
Software di lavoro su una documentazione completa.,
-
Collaborazione con il cliente sulla negoziazione del contratto.
-
Rispondere al cambiamento seguendo un piano.
Cioè, mentre c’è valore negli articoli a destra, valutiamo di più gli articoli a sinistra.
Caratteristiche di Agility
Di seguito sono riportate le caratteristiche di Agility −
-
Agility in Agile Software Development si concentra sulla cultura di tutto il team con multi-disciplina, squadre cross-funzionali che sono il potere e selforganizing.
-
Promuove la responsabilità condivisa e la responsabilità.,
-
Facilita una comunicazione efficace e una collaborazione continua.
-
L’approccio dell’intero team evita ritardi e tempi di attesa.
-
Le consegne frequenti e continue garantiscono un feedback rapido che a sua volta consente al team di allinearsi ai requisiti.
-
La collaborazione facilita la combinazione di diverse prospettive tempestive nell’implementazione, correzioni di difetti e modifiche accomodanti.
-
Il progresso è costante, sostenibile e prevedibile sottolineando la trasparenza.,
Tendenze dell’ingegneria del software
Nell’ingegneria del software si osservano le seguenti tendenze:
-
Raccogliere i requisiti prima dell’inizio dello sviluppo. Tuttavia, se i requisiti devono essere modificati in seguito, di solito si nota quanto segue:
-
Resistenza alle modifiche in una fase successiva di sviluppo.
-
C’è un requisito di un processo di cambiamento rigoroso che coinvolge una scheda di controllo del cambiamento che può anche spingere le modifiche alle versioni successive.,
-
La consegna di un prodotto con requisiti obsoleti, non rispondenti alle aspettative del cliente.
-
Incapacità di accogliere le inevitabili modifiche del dominio e le modifiche tecnologiche all’interno del budget.
-
-
Individuare ed eliminare i difetti all’inizio del ciclo di vita dello sviluppo al fine di ridurre i costi di correzione dei difetti.
-
Il test inizia solo dopo che la codifica è completa e il test è considerato come responsabilità di un tester anche se il tester non è coinvolto nello sviluppo.
-
Misurare e monitorare il processo stesso., Questo diventa costoso a causa di −
-
Monitoraggio e monitoraggio a livello di attività e a livello di risorsa.
-
Definire misure per guidare lo sviluppo e misurare ogni attività nello sviluppo.
-
Intervento di gestione.
-
-
Elaborare, analizzare e verificare i modelli prima dello sviluppo.
-
Un modello dovrebbe essere usato come framework. Tuttavia, concentrarsi sul modello e non sullo sviluppo che è cruciale non produrrà i risultati attesi.,
-
-
Codifica, che è il cuore dello sviluppo non è dato abbastanza enfasi. I motivi sono –
-
Gli sviluppatori, che sono responsabili della produzione, di solito non sono in costante comunicazione con i clienti.
-
La codifica è vista come una traduzione del design e l’effettiva implementazione nel codice non viene quasi mai ricollocata nel design.
-
Il test è considerato il gateway per verificare la presenza di difetti prima della consegna.,
-
I superamenti programmati delle fasi precedenti di sviluppo sono compensati trascurando i requisiti di prova per garantire consegne tempestive.
-
Questo si traduce in superamento dei costi di riparazione difetti dopo la consegna.
-
I tester sono resi responsabili e responsabili della qualità del prodotto anche se non sono stati coinvolti durante l’intero corso dello sviluppo.
Limitare le risorse (principalmente di squadra) per accogliere il budget porta a −
-
Risorse sull’allocazione
-
Burnout di squadra.,
-
Perdita di utilizzo effettivo delle competenze del team.
-
Attrito.
Estremi di Programmazione − Un modo di gestire il comune carenze
Ingegneria del Software comporta −
-
la Creatività
-
Imparare e migliorare, attraverso prove ed errori
-
Iterazioni
Estremi di Programmazione costruisce su queste attività e di codifica. È l’attività di progettazione dettagliata (non l’unica) con più cicli di feedback stretti attraverso un’implementazione efficace, test e refactoring continuo.,
Estremi di Programmazione è basato sui seguenti valori −
-
Comunicazione
-
la Semplicità
-
Feedback
-
Coraggio
-
Rispetto
che Cosa è l’Extreme Programming?
XP è un modo leggero, efficiente, a basso rischio, flessibile, prevedibile, scientifico e divertente per sviluppare un software.
eXtreme Programming (XP) è stato concepito e sviluppato per soddisfare le esigenze specifiche dello sviluppo software da parte di piccoli team di fronte a requisiti vaghi e mutevoli.,
Extreme Programming è una delle metodologie di sviluppo software Agile. Fornisce valori e principi per guidare il comportamento del team. Il team dovrebbe auto-organizzarsi. Extreme Programming fornisce pratiche di base specifiche in cui-
-
Ogni pratica è semplice e completa.
-
La combinazione di pratiche produce un comportamento più complesso ed emergente.
Embrace Change
Un presupposto chiave della programmazione estrema è che il costo di cambiare un programma può essere mantenuto per lo più costante nel tempo.,>Questo può essere ottenuto con −
-
l’Accento sul continuo feedback da parte del cliente
-
tempi di iterazioni
-
la Progettazione e l’adeguamento
-
Codifica e test di frequente
-
Eliminare i difetti all’inizio, riducendo così i costi
-
Mantenere il cliente è coinvolto tutta la fase di sviluppo
-
Fornire lavoro prodotto al cliente finale
Extreme Programming in Sintesi
Estremi di Programmazione comporta −
-
La scrittura di test unitari, prima di programmare e mantenere tutti i test in esecuzione in ogni momento., I test unitari sono automatizzati ed eliminano precocemente i difetti, riducendo così i costi.
-
A partire da un design semplice quanto basta per codificare le caratteristiche a portata di mano e ridisegnare quando necessario.
-
Programmazione a coppie (chiamata pair programming), con due programmatori in uno schermo, a turno per utilizzare la tastiera. Mentre uno di loro è alla tastiera, l’altro rivede costantemente e fornisce input.
-
Integrare e testare l’intero sistema più volte al giorno.,
-
Mettere rapidamente un sistema di lavoro minimo nella produzione e aggiornarlo quando necessario.
-
Mantenere il cliente coinvolto tutto il tempo e ottenere un feedback costante.
L’iterazione facilita le modifiche accomodanti man mano che il software si evolve con le mutevoli esigenze.
Perché si chiama ” Extreme?”
Extreme Programming porta i principi e le pratiche efficaci a livelli estremi.
-
Le revisioni del codice sono efficaci in quanto il codice viene rivisto continuamente.,
-
Il test è efficace in quanto vi è una regressione e test continui.
-
Il design è efficace in quanto tutti devono fare refactoring ogni giorno.
-
Test di integrazione è importante come integrare e testare più volte al giorno.
-
Le iterazioni brevi sono efficaci come gioco di pianificazione per la pianificazione del rilascio e la pianificazione dell’iterazione.
Storia della programmazione estrema
Kent Beck, Ward Cunningham e Ron Jeffries formularono la programmazione estrema nel 1999. Gli altri contributori sono Robert Martin e Martin Fowler.,
A metà degli anni ‘ 80, Kent Beck e Ward Cunningham iniziarono la programmazione di coppia presso Tektronix. Negli anni ’80 e’ 90, Smalltalk Culture ha prodotto Refactoring, integrazione continua, test costanti e stretto coinvolgimento dei clienti. Questa cultura è stata poi generalizzata agli altri ambienti.
Nei primi anni ‘ 90, i valori fondamentali sono stati sviluppati all’interno della Comunità Patterns, Hillside Group. Nel 1995, Kent ha riassunto questi in Smalltalk Best Practice, e nel 1996, Ward ha riassunto in episodi.
Nel 1996, Kent ha aggiunto unit testing e metafora a Hewitt., Nel 1996, Kent aveva preso il progetto Chrysler C3, a cui Ron Jeffries è stato aggiunto come allenatore. Le pratiche sono state perfezionate su C3 e pubblicate su Wiki.
Le pratiche di Scrum sono state incorporate e adattate come gioco di pianificazione. Nel 1999, Kent ha pubblicato il suo libro, ‘Extreme Programming Explained’. Nello stesso anno, Fowler pubblicò il suo libro, Refactoring.
La programmazione estrema si è evoluta da allora e l’evoluzione continua fino ad oggi.
Successo nell’industria
Il successo dei progetti, che seguono pratiche di programmazione estreme, è dovuto al rapido sviluppo di −
-
.,
-
Risposta immediata alle mutevoli esigenze del cliente.
-
Concentrarsi su bassi tassi di difetto.
-
Sistema che restituisce valore costante e coerente al cliente.
-
Alta soddisfazione del cliente.
-
Costi ridotti.
-
Coesione del team e soddisfazione dei dipendenti.
Extreme Programming Advantages
Extreme Programming risolve i seguenti problemi spesso affrontati nei progetti di sviluppo software −
-
Orari slittati − e cicli di sviluppo realizzabili garantiscono consegne tempestive.,
-
Progetti annullati-L’attenzione al coinvolgimento continuo del cliente garantisce trasparenza con il cliente e risoluzione immediata di eventuali problemi.
-
Costi sostenuti per le modifiche: test approfonditi e continui assicurano che le modifiche non interrompano la funzionalità esistente. Un sistema di lavoro in esecuzione garantisce sempre un tempo sufficiente per accogliere le modifiche in modo tale che le operazioni correnti non siano interessate.
-
Difetti di produzione e post-consegna: l’accento è posto sui test unitari per rilevare e correggere i difetti in anticipo.,
-
Fraintendere l’azienda e / o il dominio − Rendere il cliente parte del team garantisce comunicazione e chiarimenti costanti.
-
Modifiche aziendali − Le modifiche sono considerate inevitabili e sono soddisfatte in qualsiasi momento.
-
Turnover del personale − La collaborazione intensa del gruppo assicura l’entusiasmo e la buona volontà. La coesione delle multi-discipline favorisce lo spirito di squadra.