Ingegneria del SW
Nathalie Morey
E-mail
[email protected]
19/12/2015
Inizio
Indietro
Avanti
Programma
Principi di ingegneria del software
Processo software
Ciclo di vita
Definizione del problema
Analisi dei requisiti e specifiche: modelli semantici, data-flow, viewpoint,
metodi formali, concezione object, reti di Petri
Progettazione
Collaudo
Mantenimento, re-engineering
Gestione della configurazione
Qualità: garanzia, norme, metriche
Gestione manageriale: personale, costo, pianifica
Riuso
Design Pattern
UML
Presentazione corso
Inizio
Indietro
Avanti
Riferimenti
 C.Ghezzi, M.Jazayeri, D.Mandrioli, "Fundamentals of Software Engineering"
Prentice -Hall, 1991
 I.Sommerville, "Software Engineering", 5th ed.
Addison Wesley, 1995
 G.Kotonya, I.Sommerville, "Requirements Engineering"
Wiley, 1997
 Roger S.Pressman, "Principi di Ingegneria del Software", 3rd Ed.
Academic Press, 2002
 Shari Lawrence Pfleeger “Software Engineering theory and practice”
International Edition, 1998
 Luigi Buglione “Misurare il Solftware”
FrancoAngeli, 1999
 Martin Fowler “UML Distilled”
Addison-Wesley, 2000
 Leszek A.Maciaszek “Sviluppo di sistemi informativi con UML”
Addison-Wesley, 2002 A.Binato, A.Fuggetta, L.Sfardini “Ingegneria del software – Creatività e metodo”
Addison-Wesley, 2006
Presentazione corso
Inizio
Indietro
Avanti
Cos’è
L’ingegneria del SW è un campo della scienze del computer che si occupa della
costruzione di sistemi software quanto importanti e complessi ad essere sviluppati
da equipe di ingegneri. Questi sistemi esistono spesso in più versioni e sono in
servizio per più anni.
Scienze del
computer
Teorie
Cliente
Funzioni
del
computer
Problema
Ingegneria del
Software
Strumenti e
Tecniche per
Risolvere il
problema
Presentazione corso
Inizio
Indietro
Avanti
Cos’è
• Metodi  procedure formali
• Strumenti
• Procedura  combinazione di strumenti e tecniche
• Paradigma  style
Presentazione corso
Inizio
Indietro
Avanti
I primi passi nell’
ingegneria del software
Apparse negli anni 70 per rispondere alla “crisi del software” quando si è
Reso conto che il SW superava il costo materiale (oggi lo supera ampiamente).
Costo SW vs HW
Presentazione corso
Crisi del SW
Inizio
Indietro
Avanti
I primi passi del
sviluppo software
‘50-’65 (programmer)
• Elaborazione batch
• Distribuzione limitata
• Software personalizzato, scritto da una sola persona, motivata, esperta
‘65-’73 (software engineering / software crisis)
• Scalare da sistemi SW piccoli a grandi
• Tempo reale, multiutenza
• Basi dati
• Pacchetti software commerciali
• Turn-over del programmatore
• Cambiamenti nel SW difficili da gestire
gestione
strumenti
metodi
tecniche
‘73-’88
• Sistemi distribuiti
• Hardware a basso costo
• Crescita del mercato
• Ricerca
Presentazione corso
Inizio
Indietro
Avanti
I primi passi del
sviluppo software (2)
’87- …
• Sistemi da scrivania potenti
• Tecnologia oggetto
• Strumenti di 4 generazione
• Sistemi esperti / Reti neurali
• Elaborazione parallela
• Rete web
• Open-source
Presentazione corso
Inizio
Indietro
Avanti
Crisi del SW: una sfida permanente
Matenimento e evoluzione dei SW specifici
. adattamento ai nuovi bisogni dei clienti e dell’impresa
. gestione dell’organizzazione del sw
Eterogeneità dei sistemi
. messa in rete di sistemi ibridi
. portabilità SW su varie piattaforme (windows, linux, ...)
Sistemi più complessi (millioni di linee di codice, migliaiai di tabelle
nelle basi di dati, e sono eseguiti da numerosi calcolatori)
Se queste sfide non vengono affrontate presto, i sistemi sono consegnati in ritardo,
costano più del previsto, e con un livello di qualità inaccettabilmente povero.
Presentazione corso
Inizio
Indietro
Avanti
Definizioni
Definizione 1
Disciplina di scienze del computer che offre i metodi e le tecniche
per sviluppare e mantenere la qualità di un software,
In sintesi una disciplina che consente di risolvere un problema
Definizione 2
E’ lo studio dei principi, metodi e strumenti per sviluppare e mantenere
i sistemi software
Presentazione corso
Inizio
Indietro
Avanti
Definizione IEEE
IEEE std 610.12-1990’s Standard Glossary of Software Engineering Terminology
Applicazione di un approccio sistematico, disciplinato e quantificabile per
lo sviluppo, l’operatività e la manutenzione del software
Presentazione corso
Inizio
Indietro
Avanti
Cambiamenti in ING. SW
Pb Waterfall
Tecno. Oggetto
Reuso
Desktop Computing
Cambiamenti in
Ingegneria
del Software
Economia
Tempo mercato
Rete
Interfaccia utente
Presentazione corso
Inizio
Indietro
Avanti
Esempi fallimenti
Servizio ambulanze per London
Pb
500 pazienti al giorno per 750 veicoli
Unificazione di 3 servizi, ottimizzazione di percorsi
Guida vocale degli autisti
Risultati
3 versioni, costo totale 11 000 000 Euro
L’ultima versione abbandonata dopo soli 3 giorni d’uso
Analisi errata del problema. Memoria non liberata.
Presentazione corso
Inizio
Indietro
Avanti
Esempi fallimenti
Oslo (’93)
Errore sistema di conto dei voti
Nuove elezioni
Aeroporto Denver (’94)
Sistema di smistamento dei bagagli
Inaugurazione dell’aeroporto ritardata di 18 mesi
$ 1 000 000 al giorno di perdita (costi + mancati guadagni)
Realizzazione difettosa
Presentazione corso
Inizio
Indietro
Avanti
Esempi fallimenti
Ariane V (’95)
Esplosione in volo – costo di 5,8 Miliardi di Euro
Conversione da un numero floating point di 64-bit a signed integer di 16-bit .
Alcuni moduli ripresi da Ariane IV senza nuova validazione.
Mars Climate Orbiter & Mars Polar Lander (’99)
Difetti nel software hanno causato il fallimento delle missioni. Errore nel calcolo del’orbito:
misure di unità anglosassoni piuttosto che metriche.
Costo di 120 M$
Therac-25
Macchinario per la radioterapia. Trattamento con 16,000–25,000 rad al posto di 180. 5 morti
Errori di programmazione nel controllo della tastiera.
Presentazione corso
Inizio
Indietro
Avanti
Esempi fallimenti
Y2K Bug 2000
Anno codificato su 2 caratteri
Costo sarebbe di 300 Miliardi $
California Department of Motor Vehicles (DMV)
Introduzione nuove tecnologie nella gestione delle patente
Progetto interrotto in 93 dopo un costo di 45 Milioni $
Progetto volontarie ma non convincente per gli utenti come i dirigente
Specifiche anche confuse
Presentazione corso
Inizio
Indietro
Avanti
Statistica progetti
Standish Group CHAOS report. - 2009
Presentazione corso
Inizio
Indietro
Avanti
Statistica progetti
Standish Group International, Inc. - 2008
Presentazione corso
Inizio
Indietro
Avanti
Fallimento
Progetti iniziati abbandonati:
•
Non conformità (non rispetto capitolato d’oneri)
•
Non adeguazione della realizzazione rispetto al bisogno finale
•
Ritardo troppo importante
•
90% superanno il budget (50% hanno costato di più)
Presentazione corso
Inizio
Indietro
Avanti
Principali cause di fallimenti
➟Complessità
➟Cambiamenti (costo 10 volte più elevato se in fase di sviluppo
piuttosto che in partenza, 100 se in fase di produzione). Il SW non si
consuma ma diventa obsoleto.
➟Importanza mantenimento sotto stimato
➟Debolezza dei tests
Presentazione corso
Inizio
Indietro
Avanti
Apporto dell’ingegneria del software
Hotel Hyatt
Sistema di prenotazione
Risultati
Riuscita grazia coinvolgimento utenti, sostegno dirigenti
Specifiche chiare e definizione modulare del progetto
31 % progetti falliti in 1995
18 % progetti falliti in 2004
Presentazione corso
Inizio
Indietro
Avanti
Obiettivi dell’ingegneria del software
L’ingegneria del SW si preoccupa dei processi di fabbricazione del SW,
In modo che i criteri seguenti siano soddisfatti:
➟Sistema fabbricato corrisponde ai bisogni degli utenti
➟Qualità corrisponde al contratto iniziale (validità, affidabilità,
robustezza, riusabilità, tracciabilità,…).
➟I costi rimangono nei limiti previsti all’origine
➟I tempi rimangono nei limiti previsti all’origine
Presentazione corso
Inizio
Indietro
Avanti
Tipi di sistemi a produrre
•Importanti sistemi di gestione (sistemi d’informazione); spesso sistemi
transazionale costruiti su db centrale
• Sistemi tempi reali che devono rispondere a degli eventi nei limiti di tempo
predefiniti e stretti.
• Sistemi distribuiti su rete di macchine (distribuzione dei dati e/o trattamenti),
“nuove architetture” legate ad internet.
• Embedded system e sistemi critici interfacciati con un sistema da controllare (es:
aeronautica, centrali nucleari,…).
Presentazione corso
Inizio
Indietro
Avanti
Chi è coinvolto ?
Presentazione corso
Inizio
Indietro
Avanti
Scarica

Cours0-Presentazione..