Corso di Ingegneria del Software



Documenti analoghi
Ingegneria del Software

Sistemi Informativi: Il processo software

Lezione 4- Sviluppo Agile del Software. Metodi Agili 1

Agile Principles Agile People. Gaetano Mazzanti Gama-Tech

AGILE CREAZIONE DI UNA CULTURA AZIENDALE CONDIVISA. di Giancarlo Valente

I lucidi messi a disposizione sul sito del corso di Analisi e progettazione del software NON sostituiscono il libro di testo

Agile e Scrum in pratica

Luca Cabibbo A P S. Analisi e Progettazione del Software. Agile. 3.1 Metodi e atteggiamenti agili

Gestione dello sviluppo software Modelli Agili

Roberto Garrucciu Software Product Vargroup

Modulo 2. La produzione industriale del software Il ciclo di vita del software I modelli di sviluppo. La industrializzazione del software

Approcci agili per affrontare la sfida della complessità

Sviluppo software Agile

AGENDA SECTION n Approccio Agile al PM. 2. Il metodo SCRUM

LA SACRA BIBBIA: OSSIA L'ANTICO E IL NUOVO TESTAMENTO VERSIONE RIVEDUTA BY GIOVANNI LUZZI

LA SACRA BIBBIA: OSSIA L'ANTICO E IL NUOVO TESTAMENTO VERSIONE RIVEDUTA BY GIOVANNI LUZZI

AGILE PROJECT MANAGEMENT

Sviluppo Agile. Prof. Filippo Lanubile. Processo software

Introduzione all Ingegneria del Software

Pratiche di XP [Beck] Extreme Programming (XP) Story Card. Gioco di pianificazione

SCRUM: gestire progetti di successo in mercati volatili e altamente competitivi

I CAMBIAMENTI PROTOTESTO-METATESTO, UN MODELLO CON ESEMPI BASATI SULLA TRADUZIONE DELLA BIBBIA (ITALIAN EDITION) BY BRUNO OSIMO

Resources and Tools for Bibliographic Research. Search & Find Using Library Catalogues

Cicli di Vita del Software. Porfirio Tramontana 2009 Ingegneria del Software Cicli di Vita del Software

Imagination at work. An introduction by Dario Morandotti, Project Manager GE Power Digital Engineering

Il ciclo di vita del SW

IL GIOVANE HOLDEN FRANNY E ZOOEY NOVE RACCONTI ALZATE LARCHITRAVE CARPENTIERI E SEYMOUR INTRODUZIONE BY JD SALINGER

Ingegneria del Software

19 touchscreen display

Agili, snelli e scattanti!

Gestione dello sviluppo software Modelli Base

Innovazione di processo e di prodotto in un azienda del settore domotica

Corso di Laurea Triennale in Ingegneria Informatica Ingegneria del software. Processo software. Marina Mongiello. il processo

Il ciclo di vita del SW

Il ciclo di vita del SW

Università di Bergamo Dip. di Ingegneria gestionale, dell'informazione e della produzione INGEGNERIA DEL SOFTWARE. Paolo Salvaneschi A2_2 V3.

3. Ciclo di Vita e Processi di Sviluppo

Processi iterativi. Marina Zanella - Ingegneria del Software RUP 1

Corso di Ingegneria del Software

Nuovi standard PMI, certificazioni professionali e non solo Milano, 20 marzo 2009 PMI Program & Portfolio Management Standard, Second edition 2008

Ingegneria del Software

LA SACRA BIBBIA: OSSIA L'ANTICO E IL NUOVO TESTAMENTO VERSIONE RIVEDUTA BY GIOVANNI LUZZI

Il ciclo di vita del SW

Corso di Ingegneria del Software. Introduzione al corso

Vincenzo Gervasi, Laura Semini Dipartimento di Informatica Università di Pisa

Introduzione all Agile Software Development

Corso di Ingegneria del Software. Modelli di produzione del software

Ingegneria del Software

Fiori di campo. Conoscere, riconoscere e osservare tutte le specie di fiori selvatici più note

Laura Semini Dipartimento di Informatica Università di Pisa

TECNOLOGIA E BUSINESS AGILITY L APPROCCIO AGILE DI ALTEA UP MASSIMILIANO LENZI, PMP

LA SACRA BIBBIA: OSSIA L'ANTICO E IL NUOVO TESTAMENTO VERSIONE RIVEDUTA BY GIOVANNI LUZZI

LA SACRA BIBBIA: OSSIA L'ANTICO E IL NUOVO TESTAMENTO VERSIONE RIVEDUTA BY GIOVANNI LUZZI

Be Agile Sinesy 16 Ottobre FABIO BABUIN e MARTINA TOLDO

Mercoledì 21 Dicembre Coffee Break con Microsoft e NETMIND alla scoperta delle novità Office365

Developers e Designers: allargare il confine della Pubblica. Amministrazione per migliorare i servizi

Echi da Amsterdam. Titolo: Sintesi presentazioni Metodologia Agile. Sintesi del Leadership Meeting e dell EMEA Congress Relatore: Bruna Bergami

Processi (di sviluppo del) software. Fase di Analisi dei Requisiti. Esempi di Feature e Requisiti. Progettazione ed implementazione

Sviluppo software in gruppi di lavoro complessi 1

PROVINCIA DI VERONA RENDICONTO ESERCIZIO 2012 ELENCO DEI RESIDUI ATTIVI E PASSIVI DISTINTI PER ANNO DI PROVENIENZA

Le piccole cose che fanno dimagrire: Tutte le mosse vincenti per perdere peso senza dieta (Italian Edition)

Le Sfide dei progetti di Business Analytics

Sistemi Informativi. Marino Segnan

Evoluzione del ruolo dell informatico nell ambito dello sviluppo del software: una prospettiva storica. Informatici e sviluppo del software

Proposta di comunicazione CONSOB sui criteri per il controllo del Prospetto

Tecniche di Programmazione 2009/10

Copyright 2012 Binary System srl Piacenza ITALIA Via Coppalati, 6 P.IVA info@binarysystem.eu

Quando mi collego ad alcuni servizi hosting ricevo un messaggio relativo al certificato di protezione del sito SSL, come mai?

La motivazione nelle metodologie agili

Il Welfare Modelli E Dilemmi Della Cittadinanza Sociale

Il lavoro del project manager per il cambiamento della PA.

Test e collaudo del software Continuous Integration and Testing

Dalla Mela Di Newton Al Bosone Di Higgs La Fisica In Cinque Anni Per Le Scuole Superiori Con E Book Con Espansione Online 1

U Corso di italiano, Lezione Quattordici

Managing Diversity In MNCS: A Literature Review Of Existing Strategic Models For Managing Diversity And A Roadmap To Transfer Them To The Subsidiaries

Si usa. Lesson 14 (B1/B2) Present perfect simple / Present perfect continuous

Leader Di Te Stesso Come Sfruttare Al Meglio Il Tuo Potenziale Per Migliorare La Qualit Della Tua Vita Personale E Professionale

Innovazione e Project Management nelle aziende Lifescience e MedTech

Sistemi di Monitoraggio Monitoring Systems

Corso di Ingegneria del Software. Concetti Introduttivi

Graphs: Cycles. Tecniche di Programmazione A.A. 2012/2013

Spring Stack Testing: Continuous integration, Continuous Agitation

Sintesi della presentazione

Integrazione allo studio di. Inglese B1. a cura della Prof.ssa Laura De Gori

Valutazione del Sistema informativo e delle fonti informative

TESTIMONIANZE AZIENDALI

Constant Propagation. A More Complex Semilattice A Nondistributive Framework

Laboratorio di Amministrazione di Sistema (CT0157) parte A : domande a risposta multipla

Introduzione all Ingegneria del Software

Percorsi: L'Italia Attraverso La Lingua E La Cultura, Books A La Carte Plus MyItalianLab By Francesca Italiano, Irene Marchegiani READ ONLINE

Gestione dello sviluppo software Modelli Agili

LA SACRA BIBBIA: OSSIA L'ANTICO E IL NUOVO TESTAMENTO VERSIONE RIVEDUTA BY GIOVANNI LUZZI

Materiale didattico. Sommario

18 Settembre 2019, Milano

Un team agile allo sprint. 28 Febbraio 2013 Emiliano Soldi

Appendice A. Conduttori elettrici, sezioni e diametri Appendix A. Wires, Sizes and AWG diameters

Dalle USER STORY al TEST AUTOMATICO in Django: un percorso step-by-step per dormire sonni tranquilli

Soluzioni Libro Nuova Matematica A Colori 1

INTERNET & MARKETING INNOVATIVE COMMUNICATION.

Testi del Syllabus. Docente CAGNONI STEFANO Matricola: Insegnamento: LABORATORIO DI PROGRAMMAZIONE. Anno regolamento: 2013 CFU:

Transcript:

Corso di Ingegneria del Software Paolo Bottoni Lezione 3: Sviluppo rapido e metodi agili Lucidi tradotti e adattati a partire dalla versione in inglese presente a http://iansommerville.com/software-engineering-book/slides/

Obiettivi Discutere approcci prototipali e di sviluppo rapido Discutere essenza di metodi di sviluppo agili Discutere metodi di gestione di processi agili Spiegare ruolo prototipazione in processo software 2

Sviluppo rapido di software Ambienti in rapido cambiamento, organizzazioni di fronte a nuove opportunità e concorrenza Richiesta nuovo software Sviluppo e consegna rapidi spesso requisito critico Qualità inferiore accettabile se possibile consegna rapida di funzionalità essenziale Ingegneria del Software Lezione3Agile 3

Requisiti Ambiente in cambiamento Impossibile arrivare a insieme di requisiti di sistema stabile e coerente Modello a cascata non praticabile Approccio basato su specifica e consegna iterative solo modo per consegna rapida Ingegneria del Software Lezione3Agile 4

Metodi agili Insoddisfazione con sovraccarico connesso a metodi di progetto Focalizzazione su codice e non su progetto Approccio iterativo a sviluppo software Consegna rapida software funzionante Evoluzione software in base a evoluzione requisiti Meglio adattati a sistemi organizzativi mediopiccoli o a prodotti per PC Ingegneria del Software Lezione3Agile 5

Sviluppo guidato da piano o agile I 6

Sviluppo guidato da piano o agile II Sviluppo guidato da piano Identifica diversi stadi di sviluppo. Identifica in anticipo prodotti dei diversi stadi Non necessariamente modello a cascata. Possibile sviluppo incrementale guidato da piano Iterazione entro specifiche attività Sviluppo agile Specifica, progetto, implementazione e validazione interfogliate. Prodotti processo di sviluppo negoziati durante processo stesso 7

Agile manifesto We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more 8

Principi di metodi agili Principio Coinvolgimento cliente Consegna incrementale Persone, non processi Abbracciare il cambiamento Mantenere la semplicità Descrizione Il cliente dovrebbe essere strettamente coinvolto lungo tutto il processo di sviluppo. Il suo ruolo è di fornire e prioritizzare nuovi requisiti di sistema e valuatare le iterazioni del sistema. Il software è sviluppato in incrementi, con il cliente che specifica quali requisiti includere in ogni incremento. Le capacità del gruppo di sviluppo dovrebbero essere riconosciute e sfruttate. Il gruppo dovrebbe essere libero di sviluppare i propri metodi di lavoro senza processi prescrittivi. Attendersi che i requisiti di sistema cambieranno e progettare il sistema così che li possa includere. Focalizzarsi sulla semplicità sia del software da sviluppare sia del processo di sviluppo usato. Dove possibile, lavorare attivamente per eliminare complessità dal sistema. Ingegneria del Software Lezione3Agile 9

Problemi con metodi agili Difficoltà mantenere interesse clienti in processo Coinvolgimento intenso Membri gruppo possono non essere adatti Diversi interessi in gioco Prioritizzazione cambiamenti può essere difficile Mantenimento semplicità richiede lavoro aggiuntivo Contratti possono essere problema Comune ad altri approcci a sviluppo iterativo Più adatti per sviluppo nuovo software Ma gran parte costi software legati a mantenimento Più adatti per piccole squadre localizzate Ingegneria del Software Lezione3Agile 10

Applicabilità metodi agili Sviluppo di prodotti di media-piccola grandezza per vendita Quasi tutte app sviluppate in modo agile Sviluppo di sistemi per cliente quando cliente si impegna a coinvolgimento in processo di sviluppo. Poche regole esterne che possano influenzare software 11

Programmazione estrema (XP) Approccio "estremo" a sviluppo iterativo Nuove versioni costruite più volte per giorno Incrementi consegnati a clienti ogni due settimane Suite completa di test eseguita per ogni costruzione Costruzione accettata solo se supera intera suite Selezionare storie utente per rilascio Decomporre storie in compiti Pianificare rilascio Valutare il sistema Rilasciare il software Sviluppare / integrare / provare software Ingegneria del Software Lezione3Agile 12

Pratiche di programmazione estrema 1 I ncr em en t a l p l ann i ng Sm a ll R e l eas e s Sim pl e De si gn T es t f ir s t deve l op m en t R e fa c to ri ng R e qui r e m en ts a r e r e cord e d on S t o r y C a r ds and t he St or i e s t o be i nc l uded i n a r e l e as e a r e de t er mi ned by t h e tim e a va il ab l e a nd t he ir r e l a ti ve pr i o rit y. The deve l ope r s br e ak t he s e S t o ri es i n t o deve l op m en t " t a s ks ". T he mi n im a l u s e f u l s e t o f f unc ti ona lit y t ha t prov i de s bu si nes s va l ue i s deve l oped f ir s t. R el eas e s of t he s ys t e m a r e fr equen t and i nc r e m en t a ll y a dd f unc ti ona lit y t o t h e fi r st r e l ea s e. E nough de si gn i s ca rri ed ou t to m ee t t he cu rr en t r equ ir e m en t s and no m o r e. An au t o m a t ed un it t es t f r a m ewo r k is u s ed t o w r i te t e s t s f o r a new p i ece o f f unc ti ona lit y be f o r e t ha t fun ct ion a l it y it se lf is im p l e m en t ed. A ll d e ve l ope r s a r e expe c t e d t o re f ac t o r t h e code con ti nuous l y as soon a s po s s i b l e code im p r ove m en t s a r e f ound. T h i s keeps t he code s im p l e and m a i n t a i n a bl e. Ingegneria del Software Lezione3Agile 13

Pratiche di programmazione estrema 2 Pair Programming Collective Ownership Developers work in pairs, checking each other s work and providing the support to always do a good job. The pairs of developers work on all areas of the system, so that no islands of expertise develop and all the developers own all the code. Anyone can change anything. Continuous Integration As soon as work on a task is complete it is integrated into the whole system. After any such integration, all the unit tests in the system must pass. Sustainable pace On-site Customer Large amounts of over-time are not considered acceptable as the net effect is often to reduce code quality and medium term productivity A representative of the end-user of the system (the Customer) should be available full time for the use of the XP team. In an extreme programming process, the customer is a member of the development team and is responsible for bringing system requirements to the team for implementation. Ingegneria del Software Lezione3Agile 14

Scenari di requisiti XP Requisiti utente espressi come scenari o storie Storie scritte su schede, squadra di sviluppo le suddivide in compiti di implementazione Compiti base per stime schedulazione e costo Cliente sceglie storie da includere in prossimo rilascio in base a priorità e stime schedulazione Ingegneria del Software Lezione3Agile 15

Una storia da MentCare 16

Esempi di schede di compiti 17

XP e cambiamento Principio generale di SE: progettare per mutamento Razionalità spesa per anticipazione cambiamento: riduce costi successivi in ciclo di vita XP prospettiva inversa: Cambiamenti non affidabilmente anticipabili Invece: costante miglioramento codice (refactoring) Rende cambiamenti più facili quando necessari Codice non necessariamente più efficiente Ingegneria del Software Lezione3Agile 18

Test in XP Sviluppo con test come prima cosa Sviluppo incrementale di test da scenari Coinvolgimento utenti in sviluppo e validazione test Infrastrutture automatizzate di test usate per eseguire test di componente su ogni nuova release Ingegneria del Software Lezione3Agile 19

Descrizione di caso di test Ingegneria del Software Lezione3Agile 20

Sviluppo con test come prima cosa Scrivere test prima di codice Chiarifica requisiti da implementare Test scritti come programmi piuttosto che dati Possono essere eseguiti automaticamente Test include controllo di esecuzione corretta Tutti test nuovi e precedenti eseguiti automaticamente su ogni nuova funzionalità Controlla nuova funzionalità non introduca errori Ingegneria del Software Lezione3Agile 21

Problemi per testing Programmatori preferiscono programmare a testare. Prendono scorciatoie, ad esempio non scrivono test per ogni possibile eccezione Alcuni test difficili da scrivere incrementalmente. Per esempio in GUI, test unitari che seguono logica di presentazione e flusso di lavoro fra schermi Difficile valutare completezza di insieme di test, indipendentemente da loro numero Ingegneria del Software Lezione3Agile 22

Programmazione a coppie In XP, programmatori lavorano a coppie, sedendo insieme per sviluppare codice Aiuta a sviluppare proprietà comune codice e diffonde conoscenza in squadra Funziona come processo di revisione informale: ogni linea di codice è vista da più persone Incoraggia refactoring: intero gruppo può beneficiarne Misure indicano produttività simile a quella di due persone che lavorano indipendentemente Ingegneria del Software Lezione3Agile 23

Scrum Metodo agile focalizzato su gestione sviluppo iterativo piuttosto che su pratiche agili specifiche Tre fasi Pianificazione schematica: stabilisce obiettivi generali progetto e definisce architettura software Serie di cicli di sprint, ogni ciclo sviluppa incremento Chiusura, rifinisce progetto, completa documentazione (aiuti, manuali utente), valuta lezioni apprese 24

Scrum terminology (a) Scrum term Development team Potentially shippable product increment Product backlog Product owner Definition A self-organizing group of software developers, which should be no more than 7 people. They are responsible for developing the software and other essential project documents. The software increment that is delivered from a sprint. The idea is that this should be potentially shippable which means that it is in a finished state and no further work, such as testing, is needed to incorporate it into the final product. In practice, this is not always achievable. This is a list of to do items which the Scrum team must tackle. They may be feature definitions for the software, software requirements, user stories or descriptions of supplementary tasks that are needed, such as architecture definition or user documentation. An individual (or possibly a small group) whose job is to identify product features or requirements, prioritize these for development and continuously review the product backlog to ensure that the project continues to meet critical business needs. The Product Owner can be a customer but might also be a product manager in a software company or other stakeholder representative. 25

Scrum terminology (b) Scrum term Scrum Definition A daily meeting of the Scrum team that reviews progress and prioritizes work to be done that day. Ideally, this should be a short face-to-face meeting that includes the whole team. ScrumMaster Sprint Velocity The ScrumMaster is responsible for ensuring that the Scrum process is followed and guides the team in the effective use of Scrum. He or she is responsible for interfacing with the rest of the company and for ensuring that the Scrum team is not diverted by outside interference. The Scrum developers are adamant that the ScrumMaster should not be thought of as a project manager. Others, however, may not always find it easy to see the difference. A development iteration. Sprints are usually 2-4 weeks long. An estimate of how much product backlog effort that a team can cover in a single sprint. Understanding a team s velocity helps them estimate what can be covered in a sprint and provides a basis for measuring improving performance. 26

Ciclo di sprint Scrum 27

Ciclo di sprint in Scrum I Lunghezza fissata, normalmente 2-4 settimane Punto di partenza è backlog di prodotto Fase di selezione coinvolge intera squadra, si lavora con cliente per selezionare caratteristiche e funzionalità da backlog da sviluppare durante sprint 28

Ciclo di sprint in Scrum II Raggiunto accordo, auto-organizzazione squadra per sviluppo software A questo stadio squadra isolata da cliente e organizzazione, comunicazioni tramite Scrum master Suo ruolo proteggere la squadra da distrazioni esterne Finito sprint, lavoro rivisto e presentato a stakeholder 29

Lavoro di squadra Scrum master facilitatore, organizza incontri giornalieri, mantiene backlog lavoro da svolgere, registra decisioni, misura progresso, comunica con clienti e direzione Scrum, brevi incontri quotidiani, team condivide informazione, descrive progresso da incontro precedente, problemi riscontrati, piano per giorno Ogni membro ha visione complessiva, se ci sono problemi può ripianificare lavoro a breve scadenza 30

Benefici Prodotto decomposto in insieme di pezzi Gestibili e comprensibili Requisiti instabili non frenano progresso Squadra ha visibilità totale, migliora comunicazione Clienti vedono consegna puntuale incrementi, ottengono informazione su funzionamento Si stabilisce fiduce fra clienti e sviluppatori, creazione cultura positiva verso successo progetto 31

Scrum distribuito 32

Aumento di scala per metodi agili Scaling up, uso di metodi agili per sviluppo di grandi sistemi, non adatti a piccola squadra Scaling out, introduzione di metodi agili in grande organizzazione con anni di esperienza Fondamentali da mantenere: Pianificazione flessibile, rilasci frequenti, integrazione continua, sviluppo guidato da test, buona comunicazione 33

Aspetti contrattuali Contratti per sistemi custom in genere basati su specifica di cosa deve essere implementato Questo impedisce alternanza di specifica e sviluppo tipica di sviluppo agile Occorre contratto che paga in base a tempo sviluppatore e non in base a funzionalità Visto come rischio da dipartimenti legali, non è garantito quanto verrà consegnato 34

Manutenzione software Due questioni fondamentali Sistemi sviluppati con approccio agile sono manutenibili, vista che documentazione è minima? Metodi agili possono essere usati efficacemente per far evolvere sistema in risposta a richieste cliente? Problemi se squadra originale dispersa 35

Manutenzione agile Problemi Mancanza documentazione su prodotto Mantenimento impegno clienti Mantenimento continuità squadra sviluppo Squadra conosce e capisce cosa va fatto Problema per sistemi di lunga durata 36

Metodi agili e metodi basati su piano Molti processi includono elementi di entrambi. Equilibrio dipende da: Specifica di dettaglio e progetto prima di implementazione necessari? Strategia di consegna incrementale con valutazione reazioni eventi realistica? Quanto è grande sistema da sviluppare? 37

Fattori di valutazione 38