Ingegneria del Software – appunti riassuntivi trovati in rete
Ingegneria del Software
Indice
Introduzione pag. 1
Il processo pag. 2
Il ciclo di vita del software pag. 2
I modelli del processo pag. 3
La visibilità del processo pag. 7
Gestione dei progetti software pag. 7
La qualità del software pag. 10
Ingegneria dei requisiti pag. 13
Progettazione delle interfacce pag. 17
Progettazione dell’architettura pag. 19
http://www.quellidiinformatica.org – La prima community di Ingegneria Informatica di Napoli
Ingegneria del software
Introduzione
L’ingegneria del software è, secondo alcune definizioni, “una disciplina della scienza delle
metodologie atta a risolvere i problemi di programmazione” e “lo studio dei principi, metodi e
strumenti per sviluppare e mantenere i sistemi software”.
L’evoluzione del software a cui abbiamo assistito fino ad ora (tab. 1.1) ha reso necessaria la nascita
di questa nuova scienza.
Epoca Anno Software
1 1950-1965 Batch, SW personalizzato
2 1963-1978 Pacchetti SW, basi di dati
3 1972-1988 Sistemi distribuiti, nuovi supporti digitali
4 1988-…… Sistemi esperti, rete globale Tab 1
In particolare l’ingegneria del software comincia a delinearsi durante la 2° epoca causa la mancanza
di metodologie, mentre durante la 3° epoca comincia a svilupparsi anche il campo della ricerca.
L’ingegneria del software è una conseguenza dell’ingegneria dell’hardware e dei sistemi. Include
un insieme di tre elementi chiave che sono metodi, strumenti e procedure che consentono al
responsabile di controllare il processo di sviluppo del software e offrono al professionista le basi per
costruire software di alta qualità e in modo produttivo. Esaminiamo brevemente ognuno di questi
elementi:
I metodi dell’ingegneria del software dicono al tecnico “come fare” per costruire il software. I
metodi comprendono un vasto insieme di compiti come pianificazione e stime del progetto, analisi
dei requisiti del software e del sistema; progettazione delle strutture dei dati, dell’architettura dei
programmi e delle procedure per gli algoritmi, codifica, testing, manutenzione. I metodi per
l’ingegneria del software spesso introducono un linguaggio speciale o una notazione grafica e un
insieme di criteri per la qualità del software.
Gli strumenti dell’ingegneria del software forniscono un supporto automatizzato o semi-
automatizzato ai metodi. Oggi, esistono strumenti che supportano ciascuno dei metodi prima
descritti. Quando gli strumenti sono integrati in modo che l’informazione creata da uno strumento
possa essere usata da un altro, si ha un sistema di supporto per lo sviluppo del software detto
Computer-Aided Software Engineering (CASE, ingegneria del software assistita dall’elaboratore).
Il CASE è l’unione di software, hardware, e una base di dati per l’ingegneria del software, ossia una
struttura di dati che contiene informazioni importanti sull’analisi, la progettazione, la codifica e il
testing che permette di creare un ambiente per l’ingegneria del software, analogamente al
CAD/CAE (Computer-Aided Design/Engineering per l’hardware).
Le procedure dell’ingegneria del software sono la colla che tiene uniti i metodi e gli strumenti e
che permette uno sviluppo razionale e tempestivo. Le procedure definiscono la sequenza con cui i
http://www.quellidiinformatica.org 1
metodi dovranno essere applicati; definiscono, poi, ciò che dovrà essere consegnato (documenti,
tabulati, moduli, ecc.), oltre ai controlli che aiutano ad assicurare la qualità e a coordinare le
modifiche e ai passi che devono essere fatti dai responsabili del software per stimare gli
avanzamenti.
L’ingegneria del software è fatta di passi che comprendono i metodi, gli strumenti e le procedure
prima definiti. Tali passi sono spesso indicati come i paradigmi dell’ingegneria del software.
Un paradigma dell’ingegneria del software è scelto sulla base della natura del progetto e
dell’applicazione, dei metodi e degli strumenti che devono essere usati e dei controlli e dei risultati
richiesti. In particolare, tre modelli sono stati oggetto di ampie discussioni e vengono descritti di
seguito.
Il processo
Il processo è suddiviso in 4 fasi principali:
• Fase di specifica;
• Fase di sviluppo;
• Fase di validazione;
• Fase di manutenzione.
Queste fasi hanno durata di tempo differente l’una dall’altra, in relazione anche all’esigenza dei
singoli progetti (nei progetti molto grandi, ad esempio, viene dato molto tempo alla fase di
specifica).
Il processo, inoltre, ha caratteristiche proprie che sono:
1. Comprensibilità: a cosa tende il processo esplicitamente definito e quanto facile da capire è
la definizione di processo?
2. Visibilità: le attività del processo terminano in risultati chiari così che il progresso del
processo è esternamente visibile?
3. Supportabilità: fin dove le attività del processo possono essere supportate da attrezzi CASE?
4. Accettabilità: il processo definito è accettabile e usabile dagli ingegneri responsabili per
produrre il prodotto del software?
5. Affidabilità: il processo è disegnato in modo che gli errori del processo sono evitati o sono
bloccati prima che si producono errori del prodotto?
6. Robustezza: il processo può continuare nonostante problemi inaspettati?
7. Manutenzione: il processo può evolversi per rispecchiare cambiamenti dei requisiti
organizzativi o miglioramenti identificati nel processo?
8. Rapidità: quanto velocemente può essere completato il processo di consegna di un sistema
da una specifica data?
Il ciclo di vita del software
Per ciclo di vita del software si intende la scomposizione del processo di produzione del software in
una sequenza ordinata di fasi temporali precisamente definite.
Il ciclo di vita del software comincia con la fase di definizione del problema da cui si ottiene il
documento in cui si individuano i propositi del progetto, gli obiettivi e i maggiori vincoli.
Con la seconda fase, quella dell’analisi dei requisiti, si determinano i servizi che il sistema deve
fornire e se questi servizi possono essere attuati con l’ausilio dell’informatica. Da questa fase si
ottengono essenzialmente il documento dei requisiti e il budget preliminare.
http://www.quellidiinformatica.org 2
La fase di specifica, invece, si occupa di descrivere le soluzioni, gli input, gli output e le funzioni
del progetto e fornisce il documento di specifica (che può essere visto come un manuale per gli
utenti) e il piano di sviluppo.
La fase di progettazione si occupa di come sarà strutturato il software a livello di interfaccia uomo-
macchina. Pertanto da questa fase si avrà il documento di design con la relativa architettura e il
design dettagliato.
Durante la fase di codifica, invece, si traduce il lavoro sino ad ora fatto in un linguaggio informatico
(C, Visual C++, ecc.) e si redige il documento relativo e il piano-test finale.
Infine vi sono la fase di testing, durante la quale si prova il software perché non dia errore durante
l’esecuzione e che fornisce il documento di test e il documento finale compreso di manuali di
sistema, utenti e i documenti per la manutenzione, cioè l’ultima fase del ciclo di vita del software,
che consiste nell’adattare l’applicazione ai possibili cambiamenti e capire se è sempre valida.
La figura seguente illustra il passaggio tra una fase e un’altra dove l’output (documenti, report,
prodotto) di uno stadio diviene l’input di quello successivo.
output
Attività
Fase input
Attività
Controllo Controllo
report docum. prodotto
I modelli del processo
Al fine di risolvere un determinato problema, l’équipe di analisti deve trovare una strategia
mediante la quale sia possibile la risoluzione del problema in esame.
A tal proposito si utilizzano 4 tipi fondamentali di modelli:
• Modello sequenziale (o a cascata o waterfall) che riproduce il ciclo di vita del software;
• che consiste nel proporre un progetto iniziale che poi si migliorerà fino
Modello evolutivo,
ad ottenere il progetto finale;
• Modello assemblaggio componenti, che utilizza elementi utilizzabili per diverse
applicazioni;
• Modello dei metodi formali, per il momento riservato alla ricerca.
A tal proposito illustriamo alcune figure relative ai modelli qui sopra descritti.
Analisi
Progettazione Codice
Collaudo Analisi Mantenimento
http://www.quellidiinformatica.org 3 Fig 1
Idea iniziale Release Release
1.0 2.0 Fig. 2
Idea iniziale Analisi
Prototipo Design Implementazione
Test
Vita del
prodotto
http://www.quellidiinformatica.org 4 Fig. 3
Team 3
Modellazione
Team 2 aziendale
Modellazione
Modellazione dei dati
Team 1 aziendale Modellazione
Modellazione
Modellazione del processo
dei dati
aziendale Generazione
dell’applicaz.
Modellazione
Modellazione del processo Collaudo e
dei dati sostituzione
Generazione
dell’applicaz.
Modellazione
del processo Collaudo e
sostituzione
Generazione
dell’applicaz.
Collaudo e
sostituzione
60 – 90 giorni Fig. 4
http://www.quellidiinformatica.org 5
Nella fig. 1 è illustrato il modello sequenziale di cui si è parlato in precedenza. Questo modello ha
come vantaggio la semplicità d’uso in quanto è un modello molto intuitivo, ma ha come svantaggio
la difficile modifica di una delle fasi poiché questa modifica avrebbe un costo molto elevato.
Le figg. 2 e 3 mostrano, invece, due variazioni del modello evolutivo, che tratta specificazione,
sviluppo e convalidazione come attività concorrenti (vedi fig
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Lezioni, Ingegneria del software
-
Ingegneria del software
-
Ingegneria del software - Esercizio
-
Ingegneria del software - Esercizi