Laurea in Ingegneria Informatica! SAPIENZA Università di Roma! (sede di Rieti)! Progettazione del Software! A.A.2009/10! E.Casalicchio! http://www.ce.uniroma2.it/courses/psw 1 Introduzione al software engineering" L1.2" # Software! # Contesto organizzativo" # L$ingegneria del software" # Qualità" # Modularizzazione " # Principi di base dell$orientazione agli oggetti" 2
Il software" Cos$è" # Il prodotto che professionisti costruiscono e supportano nel lungo termine." # Programmi che vengono eseguiti su computer di ogni dimensione e architettura" # Contenuti e documenti" Chi lo fa" # Software engineers" # Ogniuno lo puo$ utilizzare direttamente ed indirettamente" Perchè è importante" # Influenza gli aspetti della nostra vita" # È pervasivo nel commercio, nella cultura e nella vita di tutti i giorni" 3 Il software" Quali sono i passi" # Applicazione di un processo agile and adaptable che porti ad un risultato di high quality che soddisfi le esigenze dell$utente finale." # ossia applicazione di un software engineering approach " Qual$è il prodotto finale - per il sw engineer " # Programmi, contenuti (dati) e documentazione ossia il software" Qual$è il prodotto finale - per l$utente finale" # Le informazioni risultanti " 4
Il software" Possibile definizione di software" Il software è: " 1.# Istruzioni (programmi per computer) che quando eseguite forniscono le funzionalità, le proprietà/caratteristiche e le prestazioni prestabilite;" 2.# Strutture dati mediante le quali i programmi trattano adeguatamente le informazioni" 3.# Documenti che descrivono le operazioni e l$uso dei programmi" 5 Perchè è diverso da altri prodotti (I)" Il software si sviluppa o si struttura ma non si fabbrica nel senso tradizionale" # Diversi problemi di qualità " # Produzione di HW e SW sono basate su processi profondamente diversi" # I costi del SW si concetrano nell$ingegnerizzazione" 6
Perchè è diverso da altri prodotti (II)" Il software non si consuma (failure rate HW vs SW)" La maggior parte del software viene realizzato in modo specifico e non mediante assemblaggio di componenti:" # Per alcuni settori le cose stanno cambiando " # Si va sempre più verso il service computing" 7 Classificazione del software" Rispetto agli obiettivi" Rispetto al flusso di controllo" Rispetto agli elementi di interesse primario" 8
Classificazione del software! Rispetto agli obiettivi" System software" # Programmi scritti per servire altri programmi" # Compilers, editors, file manager, OS, drivers, networking, " Application software" # Risolvono specifiche esigenze di lavoro" # Business oriented (gestionali, dss, elab. dati, controllo di processo)" # Controllo di business function in tempo reale (e.g. point-of-sale transaction processing)" Engineering/scientific software" # Calcolo intensivo" # Real time e event-based systems" 9 Classificazione del software! Rispetto agli obiettivi" Embedded software" # Controllo di prodotti e sistemi per il consumatore" # Dai forni a microonde alle automobili ed impianti industriali" Product-line software" # Per aumentare la produttività aziendale " # Funzionalità di massa o di nicchia" Web applications" # Un nuovo approccio di concepire l$architettare e la fruizione di applicazioni di ogni genere " Ubiquitus computing, " # Software che sfrutta la proprietà di full-distributed computing, ossia il calcolo distribuito su ogni genere di dispositivo di elaborazione" 10
Classificazione del software! Rispetto al flusso di controllo! Sequenziali: un unico flusso di controllo governa l$evoluzione dell'applicazione" Concorrenti: le varie attività necessitano di sincronizzazione e comunicazione " Composte da varie attività sequenziali che possono (e devono) essere sincronizzate al fine di garantire la correttezza" " "! corsi di Sistemi Operativi" Dipendenti dal tempo: esistono vincoli temporali riguardanti sia la velocità di esecuzione delle attività sia la necessità di sincronizzare le attività stesse" 11 Classificazione delle applicazioni Rispetto agli elementi di interesse primario! Orientate alla realizzazione di funzioni: la complessità prevalente del sistema riguarda le funzioni da realizzare" Orientate alla gestione dei dati: l$aspetto prevalente è rappresentato dai dati che vengono memorizzati, ricercati, e modificati, e che costituiscono il patrimonio informativo di una organizzazione" "! corso di Basi di Dati" Orientate al controllo: la complessità prevalente del sistema riguarda il controllo delle attività che si sincronizzano e cooperano durante l'evoluzione del sistema" "! ad es. corsi di Sistemi Operativi" 12
Applicazioni di interesse per questo corso" Sequenziali" Orientate alla realizzazione di funzioni" "Sono le applicazioni più tradizionali, e vengono spesso adottate come riferimento per i metodi e le tecniche di base per la progettazione" 13 Esercizio" Considerare i seguenti contesti applicativi:" 1.# sistema di controllo di una centrale nucleare" 2.# sistema di prenotazione dei voli di un aeroporto" 3.# risolutore di sistemi di equazioni" 4.# sistema di gestione di una banca dati" 5.# sistema operativo di un elaboratore elettronico" Per ciascuno di essi, fareste ricorso ad applicazioni! sequenziali, concorrenti o dipendenti dal tempo?! 14
Introduzione al software engineering" L1.2" # Software" # Contesto organizzativo! # Il processo del software" # Qualità" # Modularizzazione " # Principi di base dell$orientazione agli oggetti" 15 Il contesto organizzativo" Attori nella progettazione del software:" # Committente" # Esperti del domino" # Analista" # Progettista " # Programmatore " # Utente finale" # Manutentore" 16
Esercizio" Il Comune di XYZ intende automatizzare la gestione delle informazioni relative alle contravvenzioni elevate sul suo territorio. " In particolare, intende dotare ogni vigile di un dispositivo palmare che gli consenta di comunicare al sistema informatico il veicolo a cui è stata comminata la contravvenzione, il luogo in cui è stata elevata e la natura dell$infrazione." Il sistema informatico provvederà a notificare, tramite posta ordinaria, la contravvenzione al cittadino interessato." Il Comune bandisce una gara per la realizzazione e manutenzione del sistema, che viene vinta dalla Ditta ABC." Quali sono gli attori coinvolti in questa applicazione SW?! 17 Soluzione esercizio" Committente: Comune di XYZ" Esperto del domino: funzionario del Comune, o altro professionista designato, esperto del Codice della Strada" Utenti finali: vigili" Progettista " Analista" Programmatore" Manutentore" Personale " della " ditta ABC" 18
Introduzione all$ingegneria del software" L1.2" # Software" # Contesto organizzativo" # Il processo del software! # Qualità" # Modularizzazione " # Principi di base dell$orientazione agli oggetti" 19 Cos$è" Una visione generica di processo" # una serie di passi predicibili, una road map che aiuta nel creare risultati di elevata qualità e nei tempi attesi. " # questa road map è il software process " Chi lo fa" # software engineers e managers (adattamento alle esigenze del progetto)" # committente (definizione, costruzione e testing)" Perchè è importante" # fornisce: stabilità, controllo, organizzazione" # agile solo attività, controlli e documentazione appropriate" Quali sono i passi" # dipendono dal progetto" Quale è il risultato finale" # programmi, documenti e dati" 20
Software engineering definizioni" [Bauer %69] L$utilizzo e l$applicazione di sound engineering principles per ottenere, in maniera economicamente vantaggiosa, software affidabile ed efficiente, eseguibile su macchine reali." [IEEE %93] (1) l$applicazione di un approccio sistematico, disciplinato e quantificabile per lo sviluppo, l$operazione e la manutenzione del software. (2) lo studio degli approcci in (1)." sistamaticità e disciplina sono concetti che devono beneficiare di adattabilità e agilità! 21 Il concetto di processo di sviluppo" -#tiene insieme i livelli tecnologici " -#consente lo sviluppo razionale del sw entro i tempi previsti" -#definisce un framework per fornire sw engineering technologies" Supporto automatizzato, in tutto o in parte, ai metodi e processo" tools! Process model! Methods! a quality focus! Fasi tecniche relative alla costruzione del sw:" requirement analysis,design modeling, program construction, testing, support." organizzazione dedicata alla qualità" 22
Il concetto di process framework " 0. Software process" 0.1. Process framework" 0.1.2 Umbrella activities" 0.1.2.1 Framework activity" "0.1.2.1.1 Software engineering action" "... "" "0.1.2.1.k Software engineering action" 0.1.2.2 Framework activity" "0.1.2.2.1 Software engineering action"..."..." 0.1.2.n Framework activity" Attività trasversali applicabili durante tutta la durata del processo" set di task che producono un sw engineering work product (e.g. design)" (small number) applicabili a tutti i proggetti software indipendentemente dalla loro dimensione e complessità" 23 Process framework generico" Applicabile alla maggior parte dei progetti ed utile per descrivere la maggior parte dei modelli di processo" Umbrella activities" # software project tracking and control" # Risk management" # Software quality assurance" # Formal technical reviews" # Measurement" # Software configuration management" # Reusability management" # Work product preparation and production" 24
Communication" Framework activities" # Comunicazione e collaborazione con il cliente" Planning" # Descrive le operazioni che devono essere svolte, i rischi, le risorse, i prodotti, la pianificazione" Modeling" # Creazione di modelli x la comprensione dei requisiti sw e progettuali" Construction" # Generazione codice e testing" Deployment" # Distribuzione del sw" Umbrella activities" # software project tracking and control" # Risk management" # Software quality assurance" # Formal technical reviews" # Measurement" # Software configuration management" # Reusability management" # Work product preparation and production" 25 Umbrella activities" Software project tracking and control" # individuare possibili fattori antagonisti " # agire per mantenere lo schedule" Risk management" # individuare ed analizzare rischi che possono avere effetti negativi sul prodotto finale e/o sulla sua qualità" Software quality assurance" # definisce e conduce attività per assicurare la qualità del prodotto" Formal technical reviews" # revisione dei work products per individuare e rimuovere errori prima di che essi vengano propagati sulla successiva action o activity" Umbrella activities" # software project tracking and control" # Risk management" # Software quality assurance" # Formal technical reviews" # Measurement" # Software configuration management" # Reusability management" # Work product preparation and production" 26
Measurement" Umbrella activities" # raccoglie misure sul processo, sul progetto e sui prodotti" # misure utili per garantire che i requisiti siano soddisfatti" Software configuration management" # gestisce eventuali cambiamenti (nel processo) in corso d$opera" Reusability management" # definisce criteri per ottenere work product riutilizzabili" # inizia meccanismi per realizzare componenti riutilizzabili" Work product preparation and production" # attività per creare i work product documentali (modelli, documenti, log, form, list)" Umbrella activities" # software project tracking and control" # Risk management" # Software quality assurance" # Formal technical reviews" # Measurement" # Software configuration management" # Reusability management" # Work product preparation and production" 27 Software engineering actions" Communication" Planning" Modeling" Construction" Deployment" Studio di fattibilità e raccolta dei requisiti" Analisi dei requisiti" Progettazione e realizzazione" Verifica" Manutenzione" Ciclo di vita del software" 28
Software engineering tasks" 1.# Studio di fattibilità e raccolta dei requisiti" # valutare costi e benefici" # pianificare le attività e le risorse del progetto" # individuare l'ambiente di programmazione (hardware/software)" # raccogliere i requisiti" 2.# Analisi dei requisiti" # si occupa del cosa l$applicazione dovrà realizzare" # descrivere il dominio dell$applicazione e specificare le funzioni delle varie componenti: lo schema concettuale" 3.# Progetto e realizzazione" # si occupa del come l$applicazione dovrà realizzare le sue funzioni" # definire l'architettura del programma" # scegliere le strutture di rappresentazione " # scrivere il codice del programma e produrre la documentazione" 29 Ciclo di vita del software" 1.# Studio di fattibilità" 2.# Analisi dei requisiti" 3.# Progetto e realizzazione" 4.# Verifica" # Il programma svolge correttamente, completamente, efficientemente il compito per cui è stato sviluppato?" 5.# Manutenzione" # Controllo del programma durante l'esercizio" # Correzione e aggiornamento del programma" " " " "" 30
Personal Software Process (PSP)" Recommends five framework activities:" # Planning" # High-level design" # High-level design review" # Development" # Postmortem" stresses the need for each software engineer to identify errors early and as important, to understand the types of errors! These courseware materials are to be used in conjunction with Software Engineering: A Practitioner s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright 1996, 2001, 2005 31 Team Software Process (TSP)" Each project is launched using a script that defines the tasks to be accomplished" Teams are self-directed" Measurement is encouraged" Measures are analyzed with the intent of improving the team process" These courseware materials are to be used in conjunction with Software Engineering: A Practitioner s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright 1996, 2001, 2005 32
The Primary Goal of Any Software Process: High Quality" Remember:" High quality = project timeliness" Why?" Less rework!" These courseware materials are to be used in conjunction with Software Engineering: A Practitioner s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright 1996, 2001, 2005 33 Come organizzare, ossia quale deve essere la sequenza con cui vengono eseguite le framework activities, sw engineerig actions and tasks"?" 34
(prescriptive) Process models" Cos$è" # definiscono un set di attività, azioni, task, milestone e work product necessari a produrre high quality software" # Definisco la sequenza con cui vengono svolte le framework activities e le software engineering actions" Chi lo fa" # software engineers e managers (adattamento alle esigenze del progetto)" # committente" Perchè è importante" # fornisce: stabilità, controllo, organizzazione" # modelli prescrittivi sono rigorosi...ma vanno sempre adattati" Quali sono i passi" # un insieme di attività organizzate un un process flow che può essere lineare, incrementale, evolutivo" Quale è il risultato" # programmi, documenti e dati" 35 Modelli di processo Prescrittivi" Lineari" # the waterfall model" # the incremental model & RAD model" Evolutivi" # the prototype model" # the spiral model" The unified process" Ci dicono come vengono organizzate le fasi del processo/ciclo di vita " 36
The Waterfall Model" Communication project initiation requirement gathering Planning estimating scheduling tracking Modeling analysis design Construction code test Deployment delivery support feedback These courseware materials are to be used in conjunction with Software Engineering: A Practitioner s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright 1996, 2001, 2005 37 The Incremental Model" increment # n Co m m u n i c a t i o n P l a n n i n g M o d e l i n g analysis design Co n s t ru c t i o n code test De p l o y m e n t d e l i v e ry fe e d b a c k increment # 2 delivery of nth increment Co m m u n i c a t i o n P l a n n i n g increment # 1 M o d e l i n g analysis design Co n s t ru c t i o n code test De p l o y m e n t d e l i v e ry fe e d b a c k delivery of 2nd increment Co m m u n i c a t i o n P l a n n i n g M o d e l i n g analysis design Co n s t ru c t i o n code test De p l o y m e n t d e l i v e ry fe e d b a c k delivery of 1st increment project calendar time These courseware materials are to be used in conjunction with Software Engineering: A Practitioner s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright 1996, 2001, 2005 38
The RAD Model" Team # n Mo d e lin g business modeling data modeling process modeling Com munication Team # 2 Mo d el i ng business modeling data modeling process modeling Co n st ru ct io n component reuse automatic code generation testing P lan n in g Team # 1 M ode lin g business modeling data modeling process modeling Co nstructi o n component reuse automatic code generation testing De ploym e n t integration delivery feedback Con stru ction component reuse automatic code generation testing 60-90 days These courseware materials are to be used in conjunction with Software Engineering: A Practitioner s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright 1996, 2001, 2005 39 Evolutionary Models: Prototyping" Com munication Q u ick p lan Mo d e lin g Quick desig n Deployment De live ry & Fe e dback Con stru ction of prototype These courseware materials are to be used in conjunction with Software Engineering: A Practitioner s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright 1996, 2001, 2005 40
Evolutionary Models: The Spiral" communication planning estimation scheduling risk analysis start modeling analysis design deployment delivery feedback construction code test These courseware materials are to be used in conjunction with Software Engineering: A Practitioner s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright 1996, 2001, 2005 41 Still Other Process Models" Component based development" # the process to apply when reuse is a development objective" Formal methods" # emphasizes the mathematical specification of requirements" AOSD" # provides a process and methodological approach for defining, specifying, designing, and constructing aspects" Unified Process" # a use-case driven, architecture-centric, iterative and incremental software process closely aligned with the Unified Modeling Language (UML)" These courseware materials are to be used in conjunction with Software Engineering: A Practitioner s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright 1996, 2001, 2005 42
The Unified Process (UP)! Riconosce l$importanza della comunicazione con il cliente e dell$adozione di metodi lineari per descrivere il punto di vista del cliente nei confronti del sistema (es. use case)" Pone l$accento sul ruolo dell$architettura del software:" # Comprensibilità" # Adattabilità a successive modifiche" # Riuso" Suggerisce un flusso iterativo e incrementale, con un andamento evolutivo fondamentale per le moderne attività di sviluppo software" I methods su cui si basa il UP sono UML e OOP! tools! UML, OOP,! The unified process! a quality focus! 43 The Unified Process (UP)" Elabor elaboration" ation inception" Incep tion inception" constr uction Release software increment tr ansition prod uction These courseware materials are to be used in conjunction with Software Engineering: A Practitioner s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright 1996, 2001, 2005 44
Le fasi del processo unificato" Si passa da una fase all$altra solo se lo stato di avanzamento è sufficiente e l$analisi dei rischi è soddisfacente." Inception (Comunication and planning)! # Use case" # Architettura grezza " # Identificazione di risorse, rischi, schedule " Elaboration (Comunicazione, pianificazione e modellazione)! # Espanzione use case, architettura" # Realizzazione di 5 viste distinte: use case, modello analitico, modello di progettazione, modello implementativo e modello di deployment" # (optional) prototipo eseguibile" Construction! Transition! # Distribuzione versione beta," # Monitoraggio" # Preparazione supporto (manuali)" 45 UP Phases" Workflows UP Phases Inception Elaboration Construction Transition Production Requirements Analysis Design Implementation Test Support Iterations #1 #2 #n-1 #n These courseware materials are to be used in conjunction with Software Engineering: A Practitioner s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright 1996, 2001, 2005 46
UP Work Products" Inception phase Vision document Initial use-case model Initial project glossary Initial business case Initial risk assessment. Project plan, phases and iterations. Business model, if necessary. One or more prototypes Inceptio n Elaboration phase Use-case model Supplementary requirements including non-functional Analysis model Software architecture Description. Executable architectural prototype. Preliminary design model Revised risk list Project plan including iteration plan adapted workflows milestones technical work products Preliminary user manual Construction phase Design model Software components Integrated software increment Test plan and procedure Test cases Support documentation user manuals installation manuals description of current increment Transition phase Delivered software increment Beta test reports General user feedback These courseware materials are to be used in conjunction with Software Engineering: A Practitioner s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright 1996, 2001, 2005 47