Modelli di Ciclo di Vita del Software (CVS) Diverse tipologie di Ciclo

Transcript

Modelli di Ciclo di Vita del Software (CVS) Diverse tipologie di Ciclo
Modelli di Ciclo di Vita del Software (CVS)
•
Una morfologia dell’organizzazione del lavoro nelle fabbriche del
software:
§
§
§
§
fasi della produzione,
tipi di attività,
collegamento ed interfacciamento,
pianificazione, controllo e misura,
•
ma anche linee guida per organizzare, pianificare, dimensionare
personale, assegnare budget, schedulare e gestire, …
•
…definire e prescrivere prodotti e documenti (deliverables) da
rilasciare al committente
•
…determinare metodi, tecniche e tecnologie della IS adatte a
supportare le attività previste
•
… per imparare, analizzare, migliorare…
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
1
Diverse tipologie di Ciclo di Vita del Sw
• molti aspetti influenzano la definizione del modello di CVS:
§ specificità dell’organizzazione produttrice
§ know-how
§ area applicativa e particolare progetto
§ strumenti di supporto
§ diversi ruoli produttore/ committente
• produttore e committente coincidono
• produttore e committente sono entità organizzativamente distinte
all’interno della stessa azienda o istituzione
• il produttore sviluppa un’applicazione specifica per uno specifico
committente
• il produttore sviluppa un’applicazione ( …il pacchetto…) da
immettere sul mercato e non per uno specifico cliente
• il produttore è anche erogatore dei servizi di gestione operativa…
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
2
1
Modelli del CVS a cascata
(Waterfall models)
– Progressione sequenziale (in cascata) di fasi, senza ricicli, al fine di
meglio controllare tempi e costi
• ogni fase raccoglie un insieme di attività omogenee per metodi, tecniche,
tecnologie, skill del personale, …
– Ogni fase è caratterizzata da
• attività (tasks),
• prodotti di tali attività (deliverables),
• controlli relativi (quality control measures)
– La fine di ogni attività è un punto rilevante (milestone) del processo
– I deliverables prodotti in una fase sono input alla fase successiva
– I prodotti di una fase vengono congelati, ovvero non sono più
modificabili se non innescando un processo formale e sistematico di
modifica
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
3
Modello a cascata
Studio di
fattibilita
Analisi e
specifica dei
requisiti
Progettazione
Codifica
Testing
Messa in
esercizio
Manutenzione
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
4
2
Le fasi del modello a cascata ...
• Studio di fattibilità
– stabilire se lo sviluppo debba essere avviato
– quali le alternative possibili e le scelte più ragionevoli
– stima delle risorse finanziarie e umane necessarie, per ciascuna possibilie
soluzione
– redazione di un un Documento di Fattibilità
• Analisi e specifica dei requisiti
– definizione, tramite ‘interviste’ con il commitente, di funzioni, vincoli,
prestazioni, interfacce e di qualsiasi altra caratteristica che il sistema dovrà
soddisfare
– redazione di un Documento di Specifica dei Requisiti Software, che sia
completo, preciso, consistente, non ambiguo, comprensibile in maniera
adeguata sia al committente che allo sviluppatore
– predisposizione di un piano di test e della versione 0 del manuale utente
N.B. Definizione di CHE COSA deve essere fatto e NON COME
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
5
Le fasi del modello a cascata ...
• Progettazione
– definizione dell’architettura del sistema: componenti del sistema e relazioni tra
questi (progetto di alto livello - HLD)
– definizione della struttura interna di ciascun componente (progetto di dettaglio
- LLD)
– definizione della struttura dei dati
– redazione di un documento di Specifica di Progetto
• Codifica
– Implementazione, usando il linguaggio di programmazione prescelto, dei vari
componenti definiti nel Progetto
• Testing
– Definizione ed esecuzione di ‘casi di prova’ sia per i singoli componenti che
per l’intero sistema, da essi costituito, con l’intento di rilevare
malfunzionamenti
N.B. Il Testing ha lo scopo di rilevare malfunzionamenti
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
6
3
Le fasi del modello a cascata
• Messa in esercizio
– Insieme di tutte le operazioni necessarie per il rilascio, l’installazione e
rendere operativo il sistema realizzato presso il committente
• Manutenzione
– Processo di modifica di un sistema o di un componente software dopo il suo
rilascio al fine di eliminare anomalie, migliorare le prestazioni o altri attributi di
qualità, o adattarlo a mutamenti dell’ambiente operativo e/o del dominio
applicativo
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
7
Vantaggi e limitazioni del modello a
cascata
•
•
Vantaggi
– la fasi da seguire sono ben definite
– gli output di ciascuna fase precisamente individuati
Svantaggi
– il modello assume che i requisiti possano essere congelati
alla fine della fase di specifica, ma ciò è impensabile per un
sistema i cui requisiti non siano ben chiari neanche al
committente
– in alcuni casi è auspicabile sviluppare prima una parte del
sistema e poi completarlo (utente finale= mercato)
– in alcuni casi lo sviluppo di tutta la documentazione richiesta
è non necessaria (uso di ambienti di sviluppo visuali)
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
8
4
Modello a cascata: una variante
Fattibilità
Verifica : Stabilire la verità della
validazione
corrispondenza tra un prodotto software e la
sua specifica
Validazione: Stabilire l’appropriatezza di un
prodotto software rispetto alla sua missione
operativa
Analisi e specifica dei
requisiti
validazione
Progettazione
verifica
Codifica
verifica
Testing
V&V
Verifica: Stiamo costruendo il prodotto
giusto?
Validazione: Stiamo costruendo
giustamente il prodotto?
Messa in esercizio
V&V
Manutenzione
Ri-validazione
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
9
Modelli basati su prototipo
•
•
Un prototipo per aiutare a comprendere i requisiti o per valutare
la fattibilità di un approccio
Realizzazione di una prima implementazione (prototipo), più o
meno incompleta da considerare come una ‘prova’, con lo
scopo di:
– accertare la fattibilità del prodotto
– validare i requisiti
•
il prototipo è un mezzo attraverso il quale si interagisce con il
committente per accertarsi di aver ben compreso le sue
richieste, per specificare meglio tali richieste, per valutare la
fattibilità del prodotto
•
dopo la fase di utilizzo del prototipo si passa alla produzione
della versione definitiva del Sistema Sw mediante un modello
che, in generale, è di tipo waterfall
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
10
5
Modello con Prototipo
REQUISITI
PROGETTAZIONE
VELOCE
PROTOTIPO
VALUTAZIONE E
RAFFINAMENTO
REQUISITI
SVILUPPO
PRODOTTO
CVS
CLASSICO
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
11
Modelli con prototipo
•
2 tipi di prototipazione:
• mock-ups: produzione completa dell’interfaccia utente. Consente
di definire con completezza e senza ambiguità i requisiti (si può, già
in questa fase, definire il manuale di utente)
• breadboards: implementazione di sottoinsiemi di funzionalità
critiche del SS, non nel senso della fattibilità ma in quello dei vincoli
pesanti che sono posti nel funzionamento del SS (carichi elevati,
tempo di risposta, ...), senza le interfacce utente. Produce
feedbacks su come implementare la funzionalità (in pratica si cerca
di conoscere prima di garantire).
• il prototipo è uno strumento di identificazione dei requisiti di utente; è
incompleto, approssimativo, realizzato utilizzando parti già possedute o
routines stub.
• Il prototipo deve essere gettato.
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
12
6
Modelli Evolutivi
• Il prodotto SW evolve continuamente (aggiunta di funzionalità, cambio
di piattaforma, cambiamenti nella organizzazione dell’azienda che lo
utilizza e quindi adeguamento del SW, ...).
• Necessità di modelli che tengano conto di queste esigenze
• Ethernal Development Cycle (Denning, 1985)
Requireme
nts
Design
Coding
Testing
Maintenance
Evolution
Development
Operation & Maintenance
Nella fase di evoluzione:
• si analizza l’esperienza di uso del Sw sul campo e si utilizza la maggiore
conoscenza per definire nuovi obiettivi,
• si determinano esigenze e nuove funzionalità emerse o non coperti in precedenza,
• si riprende il ciclo dalla definizione dei requisiti alla messa in esercizio e
manutenzione del nuovo SS nato dall’arricchimento ed evoluzione del precedente.
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
13
Modelli Incrementali
•
Risolvono la difficoltà a produrre l’intero Sistema in una sola
volta nel caso di grandi progetti SW (sia per problemi del
produttore che del committente - quest’ultimo potrebbe non
avere l’immediata disponbilità finanziaria necessaria per l’intero
progetto)
•
Un approccio sistematico alla costruzione per parti: Modelli
incrementali
• modello ad implementazione incrementale
• modello a sviluppo e consegna incrementale
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
14
7
Modelli Incrementali
Modello ad implementazione incrementale
Code
&
Test
Definisci
Progetto Stralcio
e LLD
Integration
&
Test
•
•
Installazione
&
Manutenzione
•
Le fasi alte del Waterfall Modell
sono completamente realizzate. Il
Sw viene totalmente definito nei
requisiti, specificato e progettato
(solo HLD).
Il sistema così progettato viene
decomposto in sottosistemi che
vengono implementati, testati,
rilasciati, installati e messi in
manutenzione secondo un piano
di priorità in tempi diversi.
Diventa fondamentale la fase, o
in insieme di attività, di
integrazione di nuovi sottosistemi
prodotti con quelli già in esercizio
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
15
Modelli Incrementali
Modello a sviluppo e consegna incrementale
•
L’approccio incrementale viene
esteso a tutte le fasi del ciclo di
sviluppo waterfall-like. È uno
partizionamento del processo di
produzione waterfall:
•
ogni partizione definisce un
insieme di ben definiti
comportamenti del sistema e
procede dalla definizione dei
requisiti all’implementazione, etc.
del software che riproduce tali
comportamenti;
•
i prodotti di ogni nuova slice
vengono aggiunti ed integrati
con l’esistente e costituiscono un
incremento del sistema.
Set Global Objectives;
Define Basic Open Structure
Approach;
Define Preliminary
Evolutionary Plan
Engineer Step;
Implement Planned Steps;
Deliver to User;
Evaluate Performance;
Anna Rita Fasolino- Ingegneria del Software
Cenni Introduttivi e Cicli di vita del software
16
8