Presentazione del corso - Università degli Studi di Napoli Federico II

Transcript

Presentazione del corso - Università degli Studi di Napoli Federico II
Diploma Universitario in Ingegneria Informatica
Corso di Ingegneria del Software
Docente: ing. Anna Rita Fasolino
Dipartimento di Informatica e Sistemistica
Università degli Studi di Napoli Federico II
e-mail: [email protected]
tel. 081 768 3852
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
1
Presentazione del corso
• Obiettivi del corso
– Far conoscere principi, metodi e tecniche dell'ingegneria del
software e sviluppare competenze applicabili allo sviluppo ed
evoluzione di grandi sistemi software, aventi caratteristiche di
qualità ed economicità.
– Il corso utilizza lo studio di un caso che illustra i problemi e gli esiti
delle differenti attivita' su un sistema software realizzato sia in
versione C (mediante approccio orientato alle funzioni) che in
versione C++ (mediante approccio orientato agli oggetti).
• Modalità dell’esame
– Discussione di un progetto sviluppato dagli studenti, organizzati in
gruppi di tre persone
– Accertamento della conoscenza dei contenuti trattati nel corso
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
2
1
Materiale didattico
• Libro di testo:
– Pankaj Jalote, An Integrated Approach to Software
Engineering, 2nd edition, 1997, Springer
• Altri libri consigliati:
– Roger S. Pressman, Principi di Ingegneria del Software,
seconda edizione, Mc Graw Hill
– C. Ghezzi, et al. Ingegneria del Software, Mondadori
Informatica
– UML -standard: http://www.rational.com
• Copia dei lucidi e materiale integrativo fornito dal docente
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
3
Sommario
• Argomenti della lezione:
– Software: definizione e caratteristiche essenziali;
Ingegneria del software: definizione, fattori
caratterizzanti, obiettivo e strategia; sviluppo per fasi:
caratteristiche e fasi fondamentali.
– Modelli di processo software: modello a cascata,
modello prototipale, modelli evolutivi ed incrementali.
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
4
2
Software
• Software:
– non solo programmi, ma l’insieme degli ‘artifatti’ che lo
compongono, prodotti durante il suo sviluppo
• un programma verrà usato dal suo autore, che lo ha sviluppato
senza preoccuparsi di altri utenti, di portabilità, affidabilità, …
• un sistema software, essendo rivolto ad altri utenti, dovrà
essere usabile, portabile, affidabile, etc...
• la definizione IEEE (Institute of Electrical and Electronics
Engineers)
– insieme di programmi, procedure, regole, e ogni altra
documentazione relativa al funzionamento di un sistema di
elaborazione dati
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
5
I problemi del Software
•
•
•
costosità, legata alla bassa produttività
inaffidabilità: il software non si comporta come ci si aspetta
la necessità di una continua evoluzione:
– una volta rilasciato, il software entra in fase di manutenzione
• manutenzione correttiva: per correggere difetti riscontrati
durante l’utilizzo
• manutenzione adattativa: per adeguare il software alle
modifiche dell’ambiente operativo
• manutenzione perfettiva: per aggiungere nuove funzionalità
•
la realtà del rework (modifiche durante lo sviluppo):
– conseguenza di requisiti poco chiari e mal compresi
– conseguenza dei lunghi tempi necessari per il rilascio
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
6
3
Il Problema dell’Ingegneria del Software (I.S.)
• La necessità di approcci sistematici allo sviluppo del
software
– Processi: regole per definire la sequenza delle fasi ed attività
per lo sviluppo del sw; i documenti da produrre e rilasciare; i
controlli per assicurare la qualità e stimare gli avanzamenti; le
risorse da impiegare nello sviluppo
• Modelli del Processo di Sviluppo del Software
– Metodi: per definire tecniche da impiegare nello sviluppo del
software
• Metodi per la definizione dei requisiti, per la progettazione,
la codifica, ….
– Strumenti: per fornire l’adeguato supporto all’applicazione di
processi e metodi
• CASE, ambienti di programmazione, ….
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
7
Una definizione di Ingegneria del Software
• La definizione della IEEE:
– (1) applicazione di un approccio sistematico, disciplinato,
quantificabile allo sviluppo, esercizio e manutenzione del
software; cioè, l’applicazione dell’ingegneria al software.
– (2) studio degli approcci di cui al punto (1)
• I fattori che governano l’Ingegneria del software:
– costi delle risorse impiegate per lo sviluppo (umane,
hardware, software)
– tempi di consegna (mercato sempre più esigente)
– qualità del prodotto finale (svariati aspetti)
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
8
4
Un modello di qualità del software
(modello di McCall)
•
Tre dimensioni e relativi fattori:
– Product Operation
• Correttezza, Affidabilità, Efficienza, Usabilità, ...
– Product Transition:
• Portabilità, Riusabilità, Interoperabilità
– Product Revision:
• Manutenibilità, Flessibilità, Testabilità
•
Necessità di metriche (misure quantificabili per valutare le varie
caratteristiche del software)
Revision
Transition
Operation
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
9
L’approccio dell’Ingegneria del Software
• Obiettivo dell’Ingegneria del software:
– definire metodi e procedure per lo sviluppo del software, utili
ad ottenere sistemi di grandi dimensioni, di alta qualità, a
basso costo, ed in breve tempo
• Per conseguire tali obiettivi occorre puntare sulla qualità
del processo di sviluppo del software
– il software come altre industrie manifatturiere
• Un processo di sviluppo per fasi:
– ogni fase è responsabile dei suoi output
– presenza di punti di verifica della qualità alla fine di ogni fase
• Vari modelli di processo software
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
10
5
Le attività fondamentali di
un processo di sviluppo software
• Analisi dei Requisiti
– identificare cosa si richiede al sistema, al fine di definirne
puntualmente i requisiti in un idoneo documento (Specifica
dei Requisiti Software -SRS)
– include 2 attività: analisi del problema e specifica dei
requisiti
• Progettazione (o Design)
– individuare una soluzione al problema specificato nell’SRS e
produzione dei documenti di progetto
– include due attività:
• top-level design: definizione dell’architettura del sistema
• low-level design: definizione della logica interna dei componenti
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
11
Le attività fondamentali di
un processo di sviluppo software
• Codifica
– implementare il progetto usando un linguaggio di codifica, in
maniera semplice e comprensibile
– uso di programmazione strutturata e stili di codifica
• Testing
– verifica della qualità del software, individuando gli errori
sfuggiti alle fasi precedenti, basandosi su prove di
esecuzione del software (casi di test)
– vari livelli di testing: testing di unità, di integrazione, di
sistema, di accettazione
– richiede la definizione di un documento di specifica del
testing e di un rapporto di test
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
12
6
Il Project Management
• Un processo di sviluppo a fasi non definisce:
– Allocazione delle risorse per le varie attività
– Lo scheduling delle attività ed i tempi da rispettare
– Come verificare se lo svolgimento delle singole fasi sia
corretto ...
• Necessità del project management
– project planning (def. attività, risorse da allocare, tempi)
– project monitoring e controllo
– metriche di prodotto e di processo per misurare e
controllare...
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
13
7