Corso di Ingegneria del Software a.a. 2009/2010 Mario Vacca mario.vacca1@istruzione.it
I periodi 1. Anni 50: Software Engineering come Hardware Engineering 2. Anni 60: Code&Fix 3. Anni 70: Il modello Waterfall 4. Anni 80: Software Reuse 5. Anni 90: Modelli incrementali 6. L ultima decade: Modelli Agili
Anni 90: Il contesto Allontanamento dal waterfall model La durata del waterfall process supera il market lifetime. Diffusione di prodotti software interattivi con richieste emergenti piuttosto che prespecificabili. I m not sure, but I ll know it when I see it (IKIWISI). Crescita di Internet
Anni 90: Modelli Incrementali Le caratteristiche Approccio: nasce l Incremental and Evolutionary Development (e.g. Scandinavian Participatory Design approach) Si rafforzano i metodi object-oriented Nasce UML (Unified Modeling Language, linguaggio di modellazione unificato ) Open Source Development (Free Software Foundation e GNU General Public License condizioni per l uso libero e l evoluzione di software package) GCC C Language compiler and the emacs editor Torvalds Linux (1991) Berners-Lee s World Wide Web consortium (1994), Usability and Human-Computer Interaction (HCI) usability di prodotti software da non-programmatori programmer-friendly user interfaces
Anni 90: Modelli Incrementali Figura: Il modello incrementale
Anni 90: Modelli Incrementali Il modello RAD (Rapid Application Development) Figura: Il modello RAD
Anni 90: Modelli Incrementali Il prototipo Figura: Il prototipo
I periodi 1. Anni 50: Software Engineering come Hardware Engineering 2. Anni 60: Code&Fix 3. Anni 70: Il modello Waterfall 4. Anni 80: Software Reuse 5. Anni 90: Modelli incrementali 6. L ultima decade: Modelli Agili
L ultima decade Il contesto Rapid pace of change accelerazione del pace of change in IT (Information Technology) (Google) nell ambiente (globalization, consumer demand patterns). Il rapid pace of change ha causato critiche all uso di piani, specificazioni, documentazione.
http://www.manifestoagile.it/ Corso di Ingegneria del Software a.a. 2009/2010 L ultima decade Agile methods Nell ingegneria del software, per metodologia agile (o leggera) o metodo agile si intende un particolare metodo per lo sviluppo del software che coinvolge quanto più possibile il committente, ottenendo in tal modo una elevata reattività alle sue richieste. http://it.wikipedia.org/wiki/metodologia_agile Manifesto per lo Sviluppo Agile di Software 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 strumenti Il software funzionante più che la documentazione esaustiva La collaborazione col cliente più che la negoziazione del contratto Rispondere al cambiamento più che seguire i piani
L ultima decade Il metodo agili più diffuso è la Extreme Programming (XP) che è caratterizzata da short development increments simple design pair programming refactoring continuous integration Provatamente utile per piccoli progetti In via di sviluppo e di utilizzo anche per i database (database refactoring)