MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE

Slides:



Advertisements
Presentazioni simili
Agile e Scrum.
Advertisements

Renzo Marin – CRC Veneto Progetto CRC-CNIPA
Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 2 1 Progettazione e Sviluppo di Software ad Oggetti 4 OBJECT-ORIENTED ANALYSIS Processo.
Formazione Continua Universitaria Giuseppe Ronsisvalle Università di Catania LAquila, 10 novembre 2005.
Dr.ssa Paola Minasi CNIPA Roma, 5 dicembre 2005
Introduzione ai Casi dUso (c) TECNET DATI (c) TECNET DATI Pag. 2 Dai requisiti ai casi duso obiettividefinire gli obiettivi –gli obiettivi del committente.
Procedure e funzioni A. Ferrari.
L’Informatica dal Problema alla Soluzione
Il Sistema Informativo Le Informazioni come elemento di base per il raggiungimento degli obiettivi aziendali Mario Capurso
I contenuti di questa presentazione sono stati realizzati a cura di M
Metodologie di Programmazione = decomposizione basata su astrazioni
Processo software il processo.
Processo software il processo.
Time Sharing Il termine “Time Sharing” proviene dall'inglese e significa letteralmente “partizione di tempo”. Questa è una tecnica sviluppatasi negli.
1 14. Verifica e Validazione Come assicurarsi che il software corrisponda alle necessità dellutente? Introdurremo i concetti di verifica e validazione.
Gestione della Qualità
L’organizzazione dei processi di innovazione
IL PATRIMONIO DI DATI - LE BASI DI DATI. Il patrimonio dei dati Il valore del patrimonio di dati: –Capacità di rispondere alle esigenze informative di.
Introduzione a Scrum
1Milano, 3 Novembre 2004Assemblea Nazionale FISM WORKSHOP La certificazione dei requisiti di qualità per le Società Medico-Scientifiche Presentazione del.
Ciclo di vita del software
Progettazione di una base di dati
Modello E-R Generalizzazioni
Gaetano Santucci Centro Nazionale per l’Informatica
A.Natali DL Maggio1999 Oggetti Concetti fondamentali.
23.1 Prototyping 28/5/04 PROTOTYPING Prototyping 28/5/04 Perchè creare prototipi? Per avere un rapido feedback sul design Per sperimentare design.
Metodologia sviluppo KBS Fabio Sartori 12 ottobre 2005.
La progettazione di un sistema informatico
INTEGRAZIONE, RILASCIO
L’ingegneria del software
Il processo di sviluppo del Sw: strategia make
Lo sviluppo del progetto informatico
SAM - Guida all'autoformazione dei Rivenditori - edizione Aprile 2004
Vantaggi e vincoli di un sistema informativo integrato
Fasi di progetto di SI Impostazione strategica e di disegno concettuale Implementazione Utilizzo e monitoraggio.
Ingegneria del software Modulo 4 -Processi software Unità didattica 2 -eXtreme Programming Ernesto Damiani Università degli Studi di Milano Lezione 2 –
Ingegneria del software Modulo 4 -Processi software Unità didattica 2 -eXtreme Programming Ernesto Damiani Università degli Studi di Milano Lezione 3 –
Analisi dei Requisiti (Requirements Engineering) Seminario RE Università degli Studi di Padova, 12 Gennaio 2004.
Lo standard internazionale per
Ingegneria dei Requisiti - e dei Sistemi - Giuseppe Berio DI-Unito 2007.
Scelta di un modello di processo: esempio
Commenti alle Attività Generiche. Attività Generiche (Pressman) Principali: Comunicazioni; Pianificazione; Modellazione; Costruzione, Dispiegamento Collaterali:
(Una) Definizione di Ingegneria del Software (IEEE) Strategie sistematiche, a partire da richieste formulate del committente, per lo sviluppo, esercizio.
Typical steps in project planning and scheduling To identify the tasks and their durations To evaluate consistency of the task net To evaluate the critical.
Whole-body dynamic behavior and control of human-like robots. Analisi di un articolo del dipartimento di scienze informatiche dell’università di Stanford.
Che cos’è un progetto? È un’impresa: -complessa -unica
Definizione(i) di Ingegneria del Software (IEEE) Strategie sistematiche, a partire da richieste formulate del committente, per lo sviluppo, esercizio e.
ICT e Sistemi informativi Aziendali
Multiproject Management
PROTOTYPING. Perchè creare prototipi? Per avere un rapido feedback sul design Per sperimentare design alternativi Per eliminare i problemi prima di scrivere.
LABORATORIO DI INFORMATICA Ingegneria Informatica a. a
Web Application Engineering sviluppo agile delle applicazioni Web cristian lucchesi IIT-CNR Pescara, Maggio 2007.
Emanuele DelBono
Modulo n – U.D. n – Lez. n Nome Cognome – titolo corso.
Human-Computer Interaction - A.A. 2002/03 Un po' di background sui processi agili Fabio Vitali.
II - Approccio progettuale
“INCONSAPEVOLI” ESPERIENZE DI Extreme Programming Genova, 29 Ottobre 2002.
Extreme Programming Genova, 29 Ottobre /06/20152 Cosa è XP? È una delle metodologie cosiddette agili per lo sviluppo di software. Le metodologie.
Master MATITCiclo di vita del Sistema Informativo1 CICLO DI VITA DEL SISTEMA INFORMATIVO.
1 Laboratorio di Introduzione alla Programmazione §II MODULO §3 crediti §Esame e voto unico (su 6 crediti totali)
Ingegneria del software Modulo 4 -Processi software Unità didattica 2 – eXtreme Programming Ernesto Damiani Università degli Studi di Milano Lezione 1.
Ingegneria del software Modulo 2 -Il software come prodotto Unità didattica 2 - I costi del software Ernesto Damiani Università degli Studi di Milano Lezione.
Ingegneria del software Modulo 2 -Il software come prodotto Unità didattica 2 -I costi del software Ernesto Damiani Università degli Studi di Milano Lezione.
Progettazione di basi di dati: metodologie e modelli
Fasi di sviluppo di un software
DIT Department of Information and Communication Technology Information System Ingegneria del Software: un caso di studio.
Standard e strumenti per lo sviluppo del software Marco Carezzano Andrea Andrenacci (ZEROPIU, Business Partner di Telecom Italia) Milano, 2 febbraio 2005.
Le basi di dati.
Forum PA Criteri e metodologie per le linee guida sui progetti di riuso Renzo Marin Progetto CRC – CNIPA/Formez Forum PA – 10 maggio 2005.
Dal problema al programma – ciclo di sviluppo del software La scrittura del programma è solo una delle fasi del processo di sviluppo di un'applicazione.
Transcript della presentazione:

MODELLI DI PROCESSO DI PRODUZIONE SOFTWARE

Cicli di vita: business, prodotto e processo

Modelli di processo Modello a cascata Modello evolutivo Fasi distinte di specifica e di sviluppo Modello evolutivo Specifica e sviluppo interagiscono Modello trasformazionale Un sistema matematico è trasformato formalmente in una implementazione

Modelli di processo Sviluppo basato sul riutilizzo Il sistema è ottenuto combinando componenti esistenti Sviluppo Agile (Extreme Programming) Sviluppo e rilascio di incrementi molto piccoli di funzionalità Modello a spirale Si parte dai rischi

testing delle singole unità 1. Modello a cascata Definizione dei Requisiti Progettazione del Sistema e del Software Implementazione e testing delle singole unità Integrazione e testing di sistema Installazione e Manutenzione

Fasi del modello a cascata Analisi e definizione dei requisiti Progettazione del sistema e del software Implementazione e test delle singole unità Integrazione e test del sistema Installazione e mantenimento Il limite del modello a cascata è la difficoltà ad effettuare cambiamenti nel corso del processo

Documentazione del modello a cascata

2. Modello evolutivo Versione Iniziale Specifica Descrizione di Attività concorrenti Versione Iniziale Specifica Descrizione di massima Versioni Intermedie Sviluppo Validazione Versione Finale

Modello evolutivo

Modello evolutivo Prototipazione di tipo evolutivo L’obiettivo è lavorare con il cliente ed evolvere verso il sistema finale a partire da una specifica di massima. Lo sviluppo inizia con le parti del sistema che sono già ben specificate, aggiungendo via via nuove caratteristiche Prototipazione di tipo usa e getta L’obiettivo è capire i requisiti del sistema. e quindi sviluppare una definizione migliore dei requisiti. Il prototipo sperimenta le parti del sistema che non sono ancora ben comprese

Modello evolutivo Problemi Applicabilità Mancanza di visibilità del processo Sistemi spesso poco strutturati Possono essere richieste particolari capacità (ad esempio in linguaggi per prototyping rapido) Applicabilità Sistemi interattivi di piccola o meda dimensione Per parti di sistemi più grandi (es. interfaccia utente) Per sistemi a vita breve

3. Modello trasformazionale Basato sulla trasformazione di una specifica matematica in in programma eseguibile, attraverso trasformazioni che permettono di passare da una rappresentazione formale ad un’altra. Le trasformazioni devono preservare la correttezza. Questo garantisce che il programma soddisfi la specifica.

Modello trasformazionale

4. Modello basato sul riutilizzo Basato sl riuso sistematico di componenti off-the-shelf, integrate opportunamente Fasi del modello: Analisi delle componenti Adattamento dei requisiti Progettazone del sistema Integrazione

Sviluppo basato sul riuso

5. Metodologie di Sviluppo Agile I principi su cui si basa una metodologia leggera che segua i punti indicati dall'Agile Manifesto, sono solo quattro: le persone e le interazioni sono più importanti dei processi e degli strumenti (ossia le relazioni e la comunicazione tra gli attori di un progetto software sono la miglior risorsa del progetto) è più importante avere software funzionante che documentazione (bisogna rilasciare nuove versioni del software ad intervalli frequenti, e bisogna mantenere il codice semplice e avanzato tecnicamente, riducendo la documentazione al minimo indispensabile) bisogna collaborare con i clienti al di là del contratto (la collaborazione diretta offre risultati migliori dei rapporti contrattuali) bisogna essere pronti a rispondere ai cambiamenti più che aderire al progetto (quindi il team di sviluppo dovrebbe essere autorizzato a suggerire modifiche al progetto in ogni momento)

XP Core Practice XP è definito dalle pratiche usate. Le pratiche variano nel tempo e a seconda del progetto in cui vengono utilizzate: Planning the game Simple Design Pair Programming Testing Refactor Short releases Coding Standard

XP Core Practice: planning the game Business people Technical people Scope ! Priority! Composition of releases.. Dates of Releases.. Estimates! Consequences Process Detailed scheduling

XP Core Practice: planning the game sviluppo dell'applicazione accompagnato dalla stesura di un piano di lavoro piano definito e aggiornato a intervalli brevi e regolari dai responsabili del progetto, secondo le priorità aziendali e le stime dei programmatori i programmatori partecipano, in modo attivo, alla pianificazione la pianificazione coinvolge sia utenti responsabili del progetto che sviluppatori per stabilire un equilibrio dinamico fra le esigenze di tutti

XP Core Practice: planning the game cont. gli utenti finali dell'applicazione presentano gli obiettivi da raggiungere descrivendo una serie di scenari (storie) gli sviluppatori stimano il tempo necessario per la realizzazione di ogni storia le storie vengono ordinate da utenti e responsabili secondo la loro priorità di realizzazione, dopo che gli sviluppatori ne hanno stimata la rispettiva difficoltà dalla sintesi delle valutazioni i responsabili del progetto generano la pianificazione delle attività, intesa come l'insieme di storie che dovranno essere realizzate per il prossimo rilascio e le date previste

XP Core Practice: planning the game cont.

XP Core Practice: simple design la struttura dell'applicazione deve essere la più semplice possibile l'architettura del sistema deve essere comprensibile da tutte le persone coinvolte nel progetto non devono esserci parti superflue o duplicazioni le parti che compongono il sistema devono essere, soltanto, quelle strettamente necessarie alle esigenze correnti solo quando nuove circostanze lo richiederanno, verranno progettati nuovi componenti, eventualmente riprogettando anche quelli già esistenti

XP Core Practice: pair programming la scrittura vera e propria del codice è fatta da coppie di programmatori che lavorano al medesimo terminale le coppie non sono fisse, ma si compongono associando migliori competenze per la risoluzione di uno specifico problema il lavoro in coppia permette, scambiandosi periodicamente i ruoli, di mantenere mediamente più alto il livello d'attenzione i locali dove si svolge il lavoro devono permettere senza difficoltà di lavorare a coppie

XP Core Practice: testing ogni funzionalità va sottoposta a verifica, in modo che si possa acquisire una ragionevole certezza sulla sua correttezza test di sistema costruiti sulla base delle storie concordate con il committente test di unità che devono poter essere rieseguiti automaticamente, con tempi dell'ordine dei minuti ogni ristrutturazione o modifica del codice deve mantenere inalterato il risultato dei test già considerati i test vengono, generalmente, scritti prima della codifica della funzionalità

XP Core Practice: refactor soprattutto dopo molti cambiamenti nel tempo il codice diventa poco maneggevole i programmatori spesso continuano a utilizzare codice non più mantenibile perché continua a funzionare quando stiamo rimuovendo ridondanza, eliminiamo funzionalità non utilizzate e rinnoviamo un design obsoleto stiamo rifattorizzando il refactoring mantiene il design semplice, evita complessità inutili, mantiene il codice pulito e conciso così che sia facilmente comprensibile, modificabile e estendibile

XP Core Practice: collective code ownership

Cost of Change Waterfall XP Cost of change time Standard SE = exponential cost of change  large up-front effort justified XP = constant cost of change  minimize up-front effort

6. Modello a spirale Obiettivo principale = minimizzare i rischi Rischio = misura di incertezza del risultato di un’attività Meno informazione si ha, più alti sono i rischi

Modello a spirale di Boehm determinazione obiettivi e vincoli valutazione alternative identificazione rischi 2 1 4 3 pianificazione fase successiva sviluppo e verifica

Fasi del modello a spirale Determinazione degli obiettivi e dei vincoli Valutazione e riduzione dei rischi e valutazione delle alternative Progettazione e testing Pianificazione della fase successiva

Modello a spirale R i s k a n l y Risk anal ysis P r o t - p e 1 2 3 O C c f S m u , d b h / W q v D g V & d u c t e s i g n D a l C o U I r A p S v , f y x - E k m b j P R E V I E W R e q u i r e m e n t s p l a n L i f e - c y c l e p l a n D e v e l o p m e n t p l a n I n t e g r a t i o n a n d t e s t p l a n n n e x t p h a s e

Esempio Obiettivi Vincoli Alternative Migliorare la qualità del software in modo significativo Vincoli In tre anni Senza grandi investimenti senza un cambiamento radicale degli standard dell’azienda Alternative Riutilizzare software certificato già esistente Introdurre specifiche e verifiche formali Investire in prodotti di testing e di validazione

Risoluzione dei rischi Migliorare la qualità del software può aumentare eccessivamente i costi I nuovi metodi possono indurre il personale a licenziarsi Risoluzione dei rischi Studio della letteratura esistente Avvio di un progetto pilota Analisi delle componenti potenzialmente riutilizzabili Valutazione degli strumenti di supporto già esistenti Addestramento e rimotivazione del personale

Pianificazione della fase successiva Risultati I miglioramenti sono difficili da quantificare per la scarsa esperienza nell’utilizzo di metodi formali Gli strumenti di supporto disponibili sono insufficienti rispetto allo standard dei sistemi di sviluppo dell’azienda Componenti software riusabili, ma scarso contributo degli strumenti di supporto alla riusabilità Pianificazione della fase successiva Finanziare una fase di studio di altri 18 mesi Studiare in maggior dettaglio le opzioni di riuso del software Sviluppare strumenti di supporto al riuso di software Esplorare uno schema di certificazione delle componenti

Vantaggi e limiti del modello a spirale Concentra l’attenzione sulle possibilità di riuso Concentra l’attenzione sull’eliminazione di errori Pone al centro gli obiettivi Integra sviluppo e mantenimento Costituisce un framework di sviluppo hardware/software Limiti Per contratto di solito si specifica a priori il modello di processo e i “deliverables” Richiede esperienza nella valutazione dei rischi Richiede raffinamenti per un uso generale

Valutazione dei rischi nei modelli di processo del software Modello a cascata Alto rischio per sistemi nuovi, per problemi di specifica e di progettazione Basso rischio per sviluppo di problemi familiarità già acquisita Modello evolutivo, prototipazione Basso rischio per nuovi sistemi Alto rischio a causa della scarsa visibilità del processo Modello trasformazionale Alto rischio dovuto alla necessità di tecnologia avanzata e di elevate capacità da parte degli sviluppatori

Visibilità del processo software C’è bisogno di documentazione per valutare i progressi nel processo di sviluppo software Problemi La programmazione dei tempi di consegna dei “deliverables” può non combaciare con i tempi necessari per completare un’attività La necessità di produrre documentazione vincola l’iterazione del processo Il tempo necessario per approvare i documenti è significativo Il modello a cascata è ancora il modello basato su “deliverables” più usato

Visibilità dei modelli di processo