agile software lifecycle
DESCRIPTION
TRANSCRIPT
![Page 1: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/1.jpg)
Agile software lifecycle
Francesco (cphp) Trucchia
http://joind.in/talk/view/1426
![Page 2: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/2.jpg)
o meglio...
a real software quality lifecycle experience
![Page 3: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/3.jpg)
Chi sono
Francesco Trucchia... per gli amici ciccio, per il web cphp!! • Sviluppatore PHP dal 1999 • Sviluppatore XP dal 2006• Fondatore dell'XPug Romagna • CTO, co-founder e coach @ ideato srl• Autore di libri
![Page 4: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/4.jpg)
Agenda
Parte I • Nozioni elementari di qualità, agile e XP• Processi di produzione software in una piccola azienda
Parte II • Approfondimenti sulle pratiche e gli strumenti a supporto dei
processi di produzione software in una piccola azienda
![Page 5: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/5.jpg)
Contestualizziamo un po'...
Le esperienza trattate in questo workshop vengono da esperienze reali nella mia azienda:
• fondata nel 2008• 7 dipendenti• sviluppo di applicazione PHP
![Page 6: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/6.jpg)
La mission condivisa
"Produrre, per i nostri clienti, software di qualità nel minor tempo possibile"
![Page 7: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/7.jpg)
Ma prima alcune nozioni....
![Page 8: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/8.jpg)
Che cos'è il software lifecycle?
”Un processo di sviluppo software è un flusso strutturato e imposto per lo sviluppo di un prodotto software. Alcuni sinonimi possono essere software life cycle e processo software. Ci sono modelli differenti che cercano di descrivere questo processo." - Wikipedia
![Page 9: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/9.jpg)
Alcuni modelli di sviluppo software
• Waterfall• Iterative and incremental• Agile
![Page 10: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/10.jpg)
Che cosa significa qualità?
"Quality in business, engineering and manufacturing has a pragmatic interpretation as the non-inferiority or superiority of something. Quality is a perceptual, conditional and somewhat subjective attribute and may be understood differently by different people." - Wikipedia
![Page 11: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/11.jpg)
Che ne pensa il team?
• Codice semplice da capire e da modificare• Facilità nel fixare i bug• Requisiti chiari, mutevoli e semplici da stimare• Utilizzo di standard aperti• Utilizzo di pattern• Codice ad oggetti• Lavorare in team autogestiti• Comunicazione chiara• Feedback rapidi• Partecipare a corsi di formazioni• Apprendere• Vedere il fallimento il prima possibile così da poter
cambiare/correggere strada in tempo
![Page 12: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/12.jpg)
E per voi che cosa significa produrre software di qualità?
![Page 13: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/13.jpg)
Manifesto agile === ricerca della qualità
Stiamo ricercando modi migliori di sviluppare software facendolo e aiutando gli altri a farlo.
Grazie a questa attività siamo arrivati a considerare importanti:
Gli individui e le interazioni più dei processi e degli strumentiIl software funzionante più che la documentazione esaustiva
La collaborazione col cliente più che la negoziazione del contrattoRispondere al cambiamento più che seguire i piani
Ovvero, fermo restando il valore delle entità a destra, consideriamo più
importanti le entità a sinistra.
![Page 14: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/14.jpg)
Noi cerchiamo la qualità con XP
"L'Extreme Programming (espressione inglese per programmazione estrema, spesso abbreviato in XP) è una metodologia agile e un
approccio all'ingegneria del software formulato da Kent Beck, Ward Cunningham e Ron Jeffries." - Wikipedia
![Page 15: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/15.jpg)
XP si basa su 5 valori assoluti
• Comunicazione• Semplicità• Feedback• Rispetto• Coraggio
![Page 16: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/16.jpg)
XP si basa su pratiche chiare
Primary • Sedersi insieme• Team completo• Workspace informativo• Lavoro energizzante• Pair Programming• Storie• Cicli settimanali• Cicli mensili• Ten minute build• Continous Integration• Test-First Programming• Design incrementale
Corollari
• Coinvolgimento del cliente• Deploy incrementale• Continuità del team• Shrinking Teams• Analisi alla radice delle causes• Codice condiviso• Code and Tests• Single Code Base• Deploy quotidiano• Scope del contratto negoziabile• Pay-Per-Use
![Page 17: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/17.jpg)
I principi XP
• Flusso• Opportunità• Ridondanza• Fallimento• Qualità• Piccoli step• Responsabilità accettata
• Umanità• Economia• Mutuo Beneficio• Self-Similarity• Improvement• Diversità• Reflection
![Page 18: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/18.jpg)
Noi condividiamo i valori XP e attraverso i suoi principi ne applichiamo le pratiche alla
ricerca della massima qualità
![Page 19: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/19.jpg)
![Page 20: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/20.jpg)
Vi ricorda qualcosa?
![Page 21: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/21.jpg)
Pre-Produzione
![Page 22: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/22.jpg)
Attività
• Analisi dei Requisiti • Pianificazione
![Page 23: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/23.jpg)
Analisi Requisiti I
L'analisi dei requisiti è l'attività attraverso la quale si definiscono le funzionalità utente con il software.
Dall'analisi dei requisiti si producono delle storie funzionali (User stories) che serviranno a pianificare la release.
![Page 24: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/24.jpg)
Analisi dei Requisiti II
Ruoli • Account• Figure primarie del team (UX, dev, design)• Product owner
Pratiche• Sedersi insieme• Storie• Coinvolgimento del cliente• Time boxing
![Page 25: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/25.jpg)
Pianificazione I
La pianificazione è l'attività attraverso la quale si definisce la più piccola release di valore da realizzare, delineando tempi e budget a scope variabile.
Durante la pianificazione si stimano le user stories utilizzando il buffer d'incertezza (regola dell'80/20) e lo scope variabile (must to have, nice to have).
In XP questo tipo di pianificazione è chiamata "Release Planning".
![Page 26: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/26.jpg)
Pianificazione II
Ruoli• Account• Figure primarie del team• Product owner
Pratiche• Sedersi insieme• Planning game• Coinvolgimento del cliente• Time boxing• Storie
![Page 27: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/27.jpg)
Produzione
![Page 28: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/28.jpg)
Attività
• Pianificazione• Sviluppo iterativo• Demo
![Page 29: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/29.jpg)
Produzione - Pianificazione I
Ad ogni iterazione si pianifica quali storie implementare. Le storie vengono suddivide in task, i task stimati e si riempie il buffer dell'iterazione.
In XP questo tipo di pianificazione è chiamta "Iteration Planning".
![Page 30: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/30.jpg)
Produzione - Pianificazione II
Ruoli• Tutto il team di sviluppo• Product owner• Account
Pratiche• Sedersi insieme• Team completo• Coinvolgimento del cliente• Time boxing • Storie• Informative workspace• Weekly cycle
![Page 31: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/31.jpg)
Produzione - Sviluppo Iterativo I
Ad ogni iterazione si testano e implementano i task relativi alle storie. Ogni coppia di sviluppatori è responsabile della storia che ha scelto di implementare. Le storie vengono implementate in base all'ordinamento dato dal cliente.
Alla fine di ogni iterazione si memorizza la velocity.
Se durante l'iterazione nascono nuove storie, queste vengono messe in backlog e poi pianificate nel successivo iteration planning.
![Page 32: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/32.jpg)
Produzione - Sviluppo Iterativo II
Ruoli• Tutto il team• Product owner
Pratiche• Sedersi insieme• Team completo• Coinvolgimento del cliente• Time boxing • Storie• Informative workspace• Weekly cycle• Single code base• Pair Programming
• Sviluppo Test First• Continuità del team• Analisi della causa alla radice• Deploy quotidiano• Negoziare lo scope• Continous Integration• Codice condiviso• Stand-up meeting
![Page 33: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/33.jpg)
Produzione - Demo I
La fase di Demo è il momento nel quale il team si riunisce con il cliente per presentare la demo dell'ultima iterazione eseguita. Ogni singola storia viene mostrata al cliente e il cliente ne approva la bontà o fa emergere bug e nuove storie.
![Page 34: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/34.jpg)
Produzione - Demo II
Ruoli• Tutto il team• Product owner
Pratiche• Sedersi insieme• Team completo• Coinvolgimento del cliente• Time boxing • Storie• Weekly cycle
![Page 35: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/35.jpg)
Post-Produzione
![Page 36: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/36.jpg)
Attività
• Consegna release• Bug-fixing
![Page 37: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/37.jpg)
Consegna Release I
La fase della consegna della release è il momento nel quale si fa il deploy del codice nella macchina di produzione.
Alla fine del deploy in produzione il team festeggia l'obiettivo raggiunto.
Alla fine del deploy viene individuato il release manager.
![Page 38: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/38.jpg)
Consegna Release II
Ruoli• Tutto il team• Product owner• Release manager
Pratiche• Pair programming• Continous Integration• Deploy quotidiano
![Page 39: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/39.jpg)
Mantenimento I
La fase di mantenimento è la fase nella quale una release è stata messa in produzione e il codice va mantenuto in caso di bug-fixing o micro modifiche.
![Page 40: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/40.jpg)
Mantenimento II
Ruoli• Release manager• Cliente
Pratiche• Analisi della causa alla radice• Deploy quotidiano• Continous Integration• Kanban
![Page 41: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/41.jpg)
Non è oro tutto ciò che luccica!!
Alcuni problemi reali che abbiamo incontrato
![Page 42: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/42.jpg)
Pianificazione cross progetti
![Page 43: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/43.jpg)
Customer Care
![Page 44: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/44.jpg)
Feedback
![Page 45: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/45.jpg)
Agile dentro Waterfall
Quando si lavora da terzisti
![Page 46: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/46.jpg)
Team remoto
![Page 47: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/47.jpg)
Codice legacy
![Page 48: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/48.jpg)
L’illusione del multi tasking
![Page 49: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/49.jpg)
Interruzioni continue
![Page 50: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/50.jpg)
E voi?
Quali problemi abbassano la qualità di produzione del vostro
software?
![Page 51: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/51.jpg)
Crampi allo stomaco… non è colpa dei clienti è solo la fame!!!
Ci vediamo alle 14.15
![Page 52: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/52.jpg)
![Page 53: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/53.jpg)
Abbiamo provato a trovare alcun soluzioni ai nostri problemi
![Page 54: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/54.jpg)
Problemi Souzioni
• Il facilitatore• Il Pronto soccorso• Il facilitatore
• Strumenti di collaborazione• Spike di studio e testing• Il facilitatore• La tecnica del pomodoro
![Page 55: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/55.jpg)
Che cosa fa il facilitatore?
• Pianifica i progetti internamente• Crea il team• Supporta l'account• Supporta il team• Supporta il cliente• Pianifica e decide le attività del pronto soccorso
![Page 56: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/56.jpg)
Pronto soccorso?Siamo forse un ospedale?
![Page 57: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/57.jpg)
La metafora del pronto soccorso
"Il pronto soccorso è un'unità operativa dell'ospedale dedicata ai casi di emergenza e con spazi dedicati alla breve osservazione (medicina d'urgenza). Qui vengono prestate le prime cure in tutti i casi di urgenza ed emergenza (traumi, infarti, ...) e si accede quindi in modalità di ricovero urgente." - Wikipedia
![Page 58: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/58.jpg)
Supporto e pronto soccorso I
Secondo noi rispondere in maniera rapida alle richieste o emergenze del cliente è sinonimo di qualità.
Gli sviluppatori fanno quotidianamente turni al pronto soccorso, offrendo la loro disponibilità ad attività di emergenza aziendali.
Il facilitatore è il Product Owner del progetto Pronto Soccorso ed è lui che decide e pianifica le priorità di intervento.
![Page 59: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/59.jpg)
Supporto e pronto soccorso II
Ruoli• Sviluppatore• Facilitatore• Cliente
Pratiche• Stand-up meeting• Test first• Analisi della causa alla radice• Deploy quotidiano• Customer care di secondo livello• Stime e pianificazioni di emergenza
![Page 60: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/60.jpg)
Approfondiamo un po’ di pratiche
con immagini e colori…
![Page 61: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/61.jpg)
Sedersi insieme
![Page 62: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/62.jpg)
User story
![Page 63: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/63.jpg)
Coinvolgimento del cliente
![Page 64: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/64.jpg)
Time boxing
![Page 65: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/65.jpg)
Planning game
![Page 66: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/66.jpg)
Spazio di lavoro informativo
![Page 67: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/67.jpg)
Weekly cycle
![Page 68: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/68.jpg)
Single code base
![Page 69: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/69.jpg)
Test First
![Page 70: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/70.jpg)
Continuità del team
![Page 71: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/71.jpg)
Continous integration
![Page 72: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/72.jpg)
Stand-up meeting
![Page 73: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/73.jpg)
Pair Programming
![Page 74: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/74.jpg)
Ora proviamo insieme a trovare una soluzine ai problemi emersi nella prima parte del workshop
![Page 75: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/75.jpg)
Altre domande?
![Page 76: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/76.jpg)
Ringrazimanti
• Ideato - http://www.ideato.it• Al mio team - www.theideatos.com• Jacopo Romei (il mio mentore) - www.sviluppoagile.it
![Page 77: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/77.jpg)
Contatti
Francesco (cphp) Trucchia
E-Mail: [email protected]
Skype: trucchia
Twittter: cphp
Website: www.ideato.it
Blog: www.cphp.it
http://joind.in/talk/view/1426
![Page 78: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/78.jpg)
Recruitment @ ideato
Stiamo cercando uno sviluppatori php
http://www.ideato.it/Azienda/Lavora-con-noi
Fermatemi e chiedetemi informazioni
![Page 79: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/79.jpg)
Riferimenti
• Extreme Programming Explained (Second edition). K. Back, C. Andres. Addison Wesley 2005.
• Agile Estimating and Planning. M. Cohn. Prentice Hall 2005.• User Stories Applied: For Agile Software Development. M.
Cohn. Addison-Wesley Professional 2004.• The Pragmatic Programmer: From Journeyman to Master.
A. Hunt, D. Thomas. Addison-Wesley Professional 1999
![Page 80: Agile software lifecycle](https://reader033.vdocuments.net/reader033/viewer/2022061109/54506085af795961138b542a/html5/thumbnails/80.jpg)
Pro PHP Refactoring
What you’ll learn
• What refactoring is and why you need to refactor code
• What test-driven design is and why you need to test your code
• How to write unit and functional tests with PHPUnit and Selenium RC
• How to detect “bad smells” in PHP code, and refactor them using test-driven design
• How to refactor a large procedural application affected by many bad smells
Who is this book for?
This book is for PHP developers, businesses, and developers relying on legacy PHP apps.
Francesco TrucchiaJacopo Romei
Apress June 2010