INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

47
INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia

Transcript of INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Page 1: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

INGEGNERIA DEL SOFTWAREAA. 2011/’12

Tino CortesiDAIS

Università Ca’ FoscariVenezia

Page 2: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Obiettivi della lezione Descrivere gli obiettivi e le modalità di svolgimento del

corso Fornire un’introduzione generale ai contenuti

Definire cosa si intende per Ingegneria del Software Discutere i concetti di prodotto software e di processo

software Spiegare il concetto di visibilità di processo Introdurre la nozione di responsabilità professionale

Page 3: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Outline

Obiettivi (learning outcomes) Dettagli tecnici: libri, lezioni, esami, ecc. Ingegneria del Software: perché è importante

10 domande e 10 risposte

Page 4: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Obiettivi

Il corso di Ingegneria del Software presenta i metodi, le tecniche e gli strumenti fondamentali di documentazione della specifica, analisi e progetto di sistemi software complessi da un punto di vista architetturale, con enfasi speciale sulla parte di analisi/specifica dei requisiti e progettazione a oggetti usando UML. Analizziamo in particolare le tecnologie di costruzione di documenti di supporto alla progettazione.

Page 5: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Dettagli sul corso

URL: http://www.dsi.unive.it/~ingsw Mail Address: [email protected]

Lezioni: Lunedi e Giovedi dalle 8.45 alle 10.15 Ricevimento: Giovedi 10.30-12.00 (su appuntamento)

Page 6: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Libri di testo:

Roger Pressmann, Principi di Ingegneria del Software, quinta ed.McGraw HillISBN 9788838662164

oppure

Ian Sommerville, Ingegneria del Software,settima ed. Pearson Education, ISBN 9788871923543

Page 7: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Modalità d’esame

Per chi frequenta (min 70% delle lezioni): Verranno assegnati 4 tasks durante il corso Da svolgere in gruppi di 4 persone Da consegnare tassativamente entro la scadenza fissata Per superare l’esame, deve essere consegnata la versione rivista

dei tasks entro la data del primo appello. La valutazione = valutazione dei tasks + valutazione revisione

Per chi non frequenta: una prova scritta negli appelli d’esame (mooooolto difficile!).

Page 8: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Perché un corso di Ingegneria del Software? E’ importante distinguere:

i sistemi semplici (uno sviluppatore, un utente, prodotto sperimentale) dai sistemi “hard” (molti sviluppatori, molti utenti, “prodotto vero”)

L’esperienza acquisita nello sviluppo di sistemi semplici non è scalabile! Analogia con la costruzione di un ponte: Su un ruscello = facile, basta una persona Sul ponte di Messina … ?

Il problema è la complessità UNIX contiene 4 milione di linee di codice Windows 2000 contiene 108 linee di codice

L’Ingegneria del Software ha a che fare con la gestione della complessità.

Page 9: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Contesto mondiale

L'incremento del Pil mondiale, pari al 4,9% nel 2005 e aumentato al 5,1% nel 2006, è stato superato dall'accelerazione registrata dal settore ICT, il cui tasso di crescita è stato del 6,1% nel 2005 e del 5,5% nel 2006 (dove la flessione è data dall'assestamento della crescita delle Tlc).

Nel confrontare la crescita dell' It in Italia con i dati analoghi a livello mondiale, i curatori rilevano che: La spesa IT ha un enorme ritardo; A partire dal 2004, la spesa IT è cresciuta in misura molto più

accelerata rispetto al mondo, con un divario che è stato in attenuazione: 5,8 nel 2003, 4,8 nel 2004, 4,3nel 2005, 4,2 nel 2006.

(Rapporto Aitech-Assinform 2007)

Page 10: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.
Page 11: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Il mercato IT in Italia

Page 12: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.
Page 13: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Le economie di tutti i paesi sviluppati dipendono dal software, e la maggior parte dei sistemi sono controllati da software

L’Ingegneria del Software ha a che fare con teorie, metodi e strumenti per progettare, costruire e mantenere sistemi software di grandi dimensioni

Qual’è l’impatto potenziale del software? In negativo

Riduzione di posti di lavoro (http://www.developerdotstar.com/mag/articles/read_impact.html)

Perdita di vite umane (http://www.baselinemag.com/article2/0,1397,1543590,00.asp)

In positivo Ricerca sul Genoma (http://www.genome.gov/) Previsioni del tempo (http://www.hpcc.gov/pubs/blue97/acc-

weather.html)

Ingegneria del Software

Page 14: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

10 domande sull’ingegneria del software

1. Cos’è il software?

2. Quali sono gli attributi di un software di qualità?

3. Cos’è l’ingegneria del software?

4. Qual’è la differenza tra ingegneria del software e informatica?

5. Qual’è la differenza tra ingegneria del software e ingegneria di sistema?

6. Cosa si intende per processo di produzione del software?

Page 15: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

10 domande sull’ingegneria del software

7. Cos’è un modello di processo di produzione software?

8. Quali sono i costi nel processo di produzione software?

9. Quali sono i metodi dell’ingegneria del software?

10. Quali sono le sfide che l’ingegneria del software si trova ad affrontare?

Page 16: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

1. Cos’è un prodotto software?

Qualcosa di più di un insieme di linee di codice…

Un insieme di linee di codice, strutturato in packages Tutta la documentazione che descrive la struttura del

sistema I dati di configurazione, che permettono di installarlo Il manuale utente

Page 17: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Prodotti software: una prima classificazione1. System software – operating systems, drivers,

compilers, etc.

2. Application software – Custom business apps.

3. Engineering/Scientific software – Mentor Graphics, ANSYS.

4. Embedded software – Cell phones, PDAs.

5. Product software – Word, Excel.

6. Web Applications

7. Artificial Intelligence software

Page 18: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Prodotti Software: un’altra classificazione Prodotti Generici

Sistemi stand-alone prodotti da un’organizzazione di sviluppo e venduti sul mercato ad ogni cliente

Prodotti Dedicati Sistemi che sono commissionati da un cliente specifico e

sviluppati appositamente

La maggior spesa di software riguarda sistemi generici, ma il maggior sforzo di sviluppo è su prodotti dedicati

La differenza principale? Chi dà la specifica del prodotto (il produttore o il consumatore).

Page 19: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Le caratteristiche del prodotto software

Il software si sviluppa o si struttura, non si “costruisce” come negli altri processi manifatturieri

Lo sviluppo del software e la produzione dell’hardware sono due processi profondamente diversi

In comune c’è la tensione a semplificare la produzione riducendola ad un “Assemblaggio di componenti”

Page 20: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Curva dei guasti per l’hardware

Page 21: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Curva dei guasti per il software

Page 22: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

2. Attributi di qualità di un prodotto software Affidabilità

Correttezza Robustezza Verificabilità Sicurezza - Innoquità

Efficienza (Produttività) Non deve sprecare risorse (memoria, tempo,...)

Usabilità Deve avere interfaccia e documentazione appropriate

Manutenibilità Capacità di evolvere in rapporto alla modifica di requisiti

Page 23: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.
Page 24: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Il triangolo di McCall

MaintainabilityMaintainability

FlexibilityFlexibility

TestabilityTestability

PortabilityPortability

ReusabilityReusability

InteroperabilityInteroperability

CorrectnessCorrectness

ReliabilityReliabilityEfficiencyEfficiency

IntegrityIntegrityUsabilityUsability

PRODUCT TRANSITIONPRODUCT TRANSITIONPRODUCT REVISIONPRODUCT REVISION

PRODUCT OPERATIONPRODUCT OPERATION

Page 25: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

3. Cos’è l’Ingegneria del Software?

Definizione IEEE:

“The application of systematic, disciplined, quantifiable approach to the development, operation, and

maintenance of software; that is,

the application of engineering to software.”

Page 26: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Cos’è l’ingegneria del software?

“Software engineering” è una disciplina che cerca di fornire le regole per il processo di produzione del software

Un ingegnere del software dovrebbe: adottare un approccio sistematico e organizzato al

proprio lavoro usare strumenti e tecniche appropriate, che dipendono

dal problema che deve essere risolto, dai vincoli presenti e dalle risorse disponibili.

Page 27: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Vista a layers dell’Ingegneria del Software

a “quality” focusa “quality” focus

process modelprocess model

methodsmethods

toolstools

Page 28: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Definizione dei layers

Il layer dei processi è la base per la gestione di ogni progetto software.

“Un processo definisce chi fa cosa, e quando e come si raggiunge un certo obiettivo.”

Il layer dei metodi descrive come all’interno di un singolo processo si realizzano i singoli passi che lo compongono.

Il layer dei tools descrive strumenti che supportano lo sviluppo delle attività.

Page 29: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

4. Ingegneria del software e informatica

L’informatica è una scienza: il “cuore” sono i fondamenti teorici: linguaggi – algoritmi – complessità – formalismi ecc.

L’ingegneria del software ha a che fare con aspetti più “pratici”: come pianificare e sviluppare la produzione di software di qualità.

Ad un ingegnere del software le conoscenze di base dell’informatica servono quanto la fisica ad un ingegnere elettrico

Page 30: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

5. Ingegneria del software e Ingegneria di sistema

L’ingegneria di sistema ha come oggetto tutti gli aspetti dello sviluppo di un sistema basato su computers, inclusi gli aspetti hardware, software e di processo.

L’ingegneria del software può essere vista come una parte dell’ingegneria di sistema.

Gli ingegneri del software collaborano alla specifica del sistema, alla progettazione architetturale all’integrazione con le altre componenti.

Page 31: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

6. Processo di produzione software

Il processo di produzione software è un insieme di attività il cui fine complessivo è

lo sviluppo di un prodotto software oppure

la modifica di un prodotto software

Page 32: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

7. Attività richieste nel processo di sviluppo software

Specifica Progettazione Implementazione Validazione Installazione Manutenzione Smaltimento

Page 33: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Caratteristiche del processo Comprensibilità Visibilità Supportabilità (CASE ) Accettabilità Robustezza Mantenibilità Rapidità

Page 34: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Problemi nel processo di sviluppo del software Specifiche incomplete/incoerenti Mancanza di distinzione tra specifica, progettazione e

implementazione Assenza di un sistema di validazione Il software non si consuma: la manutenzione non significa

riparare alcune componenti “rotte”, ma modificare il prodotto rispetto a nuove esigenze

Page 35: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

8. I costi di un prodotto software

All’incirca il 60% dei costi è legato allo sviluppo, il 40% sono costi per la verifica e validazione (testing).

I costi variano a seconda del tipo di sistema che deve essere sviluppato e da requisiti quali la performance o l’affidabilità del sistema.

La distribuzione di costi nelle varie fasi del processo di produzione del software dipende dal modello di processo.

Page 36: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Costi relativi nell’intero ciclo di vita del sw

Page 37: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Costo di una modifica

Page 38: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

9. Modelli di processo di produzione software Una rappresentazione semplificata del processo di

produzione software a partire da una certa prospettiva

Esempi di prospettiva da cui si può modellare il processo di produzione sw: Workflow - sequenza di attività Data-flow - flusso di informazione Role/action - chi fa cosa

Page 39: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Le sfide ed i problemi

Skill shortage Secondo una ricerca condotta da EITO nel 2003, in Europa ci sono 1 milione e 700 mila posti nell'Information & Communication Technology che non riescono ad essere coperti perché mancano le giuste risorse. In Italia la carenza di risorse è calcolata in 167 mila unità.

Skill gap Problema ancor più grave è lo Skill gap, ossia la distanza fra le competenze tecniche richieste dal mercato ICT e la professionalità degli operatori del settore.

Alta percentuale di fallimento Indagine dello Standish Group, basata su un campione di 28.000 progetti e pubblicata da Computer Weekly il 9 luglio 1998:

Page 40: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.
Page 41: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Miti dell’ingegneria del software

Software Myth #1“Se sforiamo i tempi previsti, basta aggiungere

programmatori e ce la faremo!”

Non basta aggiungere risorse ad un progetto per accelerarne la realizzazione.

Lettura consigliata:Frederick Brooks, The Mythical Man-Month“Adding manpower to a late project makes it later”

Page 42: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Miti dell’ingegneria del software

Software Myth #2

“Se sappiamo a grandi linee cosa deve fare il sistema, possiamo già iniziare a programmare”

Avere chiari gli obiettivi è un buon inizio, ma l’attività di codifica inizia molto più tardi!

Page 43: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Miti dell’ingegneria del software

Software Myth #3

“Una volta scritto il programma e fatto girare,

il nostro lavoro è finito”

Scrivere programmi è solo una parte molto piccola dell’intero processo.

Page 44: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Miti dell’ingegneria del software

Software Myth #4

“Finché il programma non gira, non c’è modo per giudicarne la qualità”

L’attività di revisione durante il processo di progettazione è una condizione indispensabile per garantire la qualità del prodotto finale.

Page 45: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Miti dell’ingegneria del software

Software Myth #5

“Se segui buoni processi di sviluppo software e ti adegui agli standards,

un buon prodotto finale è garantito.”

La qualità di processo è una condizione necessaria, ma non sufficiente, per la qualità di prodotto.

Page 46: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Miti dell’ingegneria del software

Software Myth #6“I requisiti variano continuamente,

ma ogni richiesta di cambiamento può essere facilmente soddisfatta, perché il software è

flessibile”

E’ vero che I requisiti cambiano, ma la facilità con viene soddisfatta la richiesta di modifica dipende dalla fase del processo in cui avviene la richiesta.

Page 47: INGEGNERIA DEL SOFTWARE AA. 2011/’12 Tino Cortesi DAIS Università Ca’ Foscari Venezia.

Concludendo

Ingegneria del software = una disciplina metodologica che studia principi, tecniche, metodi e strumenti che supportanto il processo di produzione del software.