Esplora E-book
Categorie
Esplora Audiolibri
Categorie
Esplora Riviste
Categorie
Esplora Documenti
Categorie
Esiste poi un particolare standard per la qualit del Software: ISO/IEC 9126
Modello a cascata
Il modello a cascata (Waterfall) caratterizzato dalle fasi ben definite tra loro e
dal fatto che il SW viene rilasciato solo a completamento di tutte le fasi di
sviluppo.
Tali fasi sono:
Studio di fattibilit: si identificano le caratteristiche generali del
problema, si analizzano le possibili strategie per la sua soluzione e si
effettua una valutazione di massima dei tempi e dei costi richiesti.
Descrizione del problema: si analizza il dominio applicativo e si
raccolgono i requisiti dellutente. Sulla base di queste informazioni
vengono prodotte le specifiche.
Progettazione della soluzione: definita larchitettura e la struttura della
soluzione SW.
Sviluppo e test di unit: si implementa larchitettura progettata nella fase
precedente. Durante lo sviluppo sono eseguiti i test per individuare gli
errori presenti nel codice e per verificare che i singoli moduli esibiscano il
comportamento desiderato.
Integrazione e test di sistema: si integrano i diversi moduli implementati
nella fase precedente.
Deployment: prevede la distribuzione e installazione del SW presso
lutente.
Manutenzione: si garantiscono le correzioni e le operazioni di
3
manutenzione sul prodotto SW.
PRO
un modello molto rigoroso: si applica bene in qualunque contesto in cui i
requisiti siano stabili e ben definiti.
CONTRO
Impossibilit di tornare indietro e rifare unattivit nel momento in cui ci sia
necessit di correggere o modificare il lavoro svolto.
Linterazione con il cliente avviene sono allinizio e alla fine.
Sviluppo evolutivo
E un modello di sviluppo basato sullidea di produrre una versione iniziale del
SW, esporla agli utenti e perfezionarla attraverso varie versioni. I modelli
fondamentali sono:
Sviluppo Esplorativo
Prototipale (usa & getta)
Basato sul Riuso
Sviluppo esplorativo
Lobiettivo di lavorare col cliente per esaminare i requisiti iniziali e farli
evolvere fino al sistema finale (Requisiti chiari da subito).
PRO
Ha come vantaggio quello di ottenere rapidi feedback e la possibilit di
far cambiare i requisiti; pi efficace di un approccio a cascata nella
produzione di sistemi che soddisfino le immediate necessit del cliente e
le specifiche si possono sviluppare in modo incrementale.
CONTRO
Come contro molto spesso i sistemi diventano mal strutturati a causa dei
continui cambiamenti, che tendono a corrompere la struttura del SW
rendendo sempre pi costoso e difficile includere le modifiche.
La sua applicabilit ricade su sistemi di piccole dimensioni, per sviluppare
alcune parti di sistemi di grandi dimensioni o per sistemi destinati a vita
breve.
4
2. Broadboards.
Sviluppo a spirale
Il processo rappresentato come una spirale, e ogni giro rappresenta
una fase del processo. Non prevede fasi prefissate a priori ma i cicli sono
definiti in base al caso specifico.
Questo ciclo abbina la natura iterativa con quella controllata e
sistematica del modello a cascata e fa crescere in modo incrementale il
grado di definizione del sistema.
5
Ogni fase inizia con un obiettivo di design, e termina con uninterazione
col cliente, che rivede il progresso ottenuto.
Il raggio rappresenta il costo accumulato mentre la dimensione angolare
il progresso nel processo.
Ogni ciclo di spirale si compone di 4 fasi:
1. Determinazione degli obiettivi
2. Valutazione e riduzione del rischio
3. Sviluppo e convalida
4. Pianificazione
Fasi:
6
1. Avvio
Lo scopo principale quello di delineare nel modo pi
accurato possibile il business case, ovvero comprendere il
tipo di mercato al quale il progetto afferisce e identificare gli
elementi importanti affinch esso conduca a un successo
commerciale.
Sono identificate le entit e le iterazioni attraverso le quali le
entit stesse interagiscono con il sistema: lidentificazione di
entit e interazioni supportata dalla redazione dei
diagrammi UML dei casi duso.
Al termine della fase, i risultati prodotti dalle iterazioni
saranno:
Il documento di vision;
Il documento di business case;
Eventuali prototipi.
2. Elaborazione
Definisce la struttura complessiva del sistema. In questa fase
si stabilizzano i requisiti e di conseguenza la descrizione dello
spazio del problema (analisi del dominio). Viene inoltre
stabilita una struttura architetturale, con una stima dei tempi
e costi necessari, e inoltre il piano di progetto.
3. Costruzione
Viene portato a termine il grosso degli sviluppi e viene
prodotta la prima release del sistema.
4. Transizione
Il sistema passa dallambiente dello sviluppo a quello del
cliente finale. Vengono condotte le attivit di training degli
utenti e il beta testing del sistema a scopo di verifica e
validazione.
PRO
Separazioni di fasi e workflow; le fasi sono dinamiche e vanno pianificate
mentre i workflow sono statici e sono attivit tecniche condotte nelle
varie fasi.
CONTRO
Spesso si rinuncia ad adottare il RUP perch esso comporta un drastico
cambiamento nel modo di lavorare delle persone.
7
Processi Rapidi
La rapidit dello sviluppo e consegna oggi spesso i, requisito pi critico per i
sistemi SW. Molte aziende sono disposte a transigere sulla qualit, pur di avere
una rapida consegna delle funzionalit essenziali.
I processi di specifica, progettazione e implementazione sono concorrenti. Non
esiste una specifica dettagliata e la documentazione di progetto ridotta al
minimo.
Il sistema viene sviluppato iterativamente in una serie di incrementi. Gli utenti
valutano ciascun incremento e quindi propongono modifiche e fanno proposte
per i successivi incrementi.
PRO
Consegna rapida dei servizi ai clienti e coinvolgimento degli utenti nel sistema.
CONTRO
Problemi di gestione: gli avanzamenti del lavoro e gli eventuali problemi
possono essere valutati con difficolt, infatti non tutta la documentazione viene
prodotta;
Problemi contrattuali: difficile scrivere un contratto senza una specifica;
Problemi di validazione: dal momento che non possibile fare specifiche
precise non possibile fare una validazione formale;
Problemi di manutenzione: le modifiche continue tendono a corrompere la
struttura del SW, rendendo pi difficile le modifiche future.
o Strumenti RAD
Uno degli obiettivi primari quello di sfruttare le pi
recenti tecnologie disponibili per velocizzare lo sviluppo.
I vantaggi sono:
o Velocit
un modello di processo incrementale che punta
ad un ciclo di sviluppo molto breve (60/90 giorni).
o Qualit
intesa non come assenza di difetti, ma come
capacit dellapplicazione sia di soddisfare bisogni
utente sia di presentare i bassi costi di
manutenzione.
Gli svantaggi sono:
o Scalabilit ridotta
Ogni applicazione sviluppata tramite RAD inizia
come prototipo ed evolve tramite iterazioni in
unapplicazione completa, di conseguenza al
prototipo consegnato pu mancare la scalabilit.
o Funzionalit ridotte
Ridotte funzionalit si presentano a causa
del time boxing, quando queste sono accelerate
10
verso la nuova versione allo scopo di ultimare in
tempi brevi la release del software.
Questi prototipi usa & getta dovrebbero essere eliminati dopo luso,
perch non sono una buona base di partenza per la produzione del
sistema:
o Potrebbe essere impossibile adattare il prototipo per soddisfare i
requisiti non funzionali;
o I prototipi non sono ben documentati;
o La struttura del prototipo si degrada a causa dei rapidi
cambiamenti.
o Il prototipo normalmente non soddisfa gli standard di qualit
dellorganizzazione.
Project Management
I manager sono i responsabili della pianificazione e della tempistica dello
sviluppo dei sistemi, supervisionano il lavoro per assicurarsi che sia eseguito
secondo gli standard richiesti, e monitorizzano i processi per controllare che lo
sviluppo stia rispettando tempi e costi.
LISW soggetta a budget aziendali e vincoli di tempo.
Pianificare il progetto
La pianificazione un processo ciclico, completo solo quando
completo il progetto stesso. Allinizio del processo di pianificazione
bisogna stimare i vincoli che influenzano il progetto come la data di
consegna richiesta, il personale disponibile, il budget generale, ecc.
Si definiscono poi le milestone e le consegne del progresso e,
infine, il processo entra nel ciclo.
12
In alcune organizzazioni il piano di progetto un singolo documento
che comprende diversi tipi di piano; in altri casi si occupa
solamente del processo di sviluppo e sono inclusi solo i riferimenti
ad altri piano che rimangono separati.
La struttura del piano di progetto articolata in 7 fasi:
1. Introduzione: descrive brevemente gli obiettivi e delinea i
vincoli che influenzano la gestione del progetto.
2. Organizzazione del progetto: descrive il modo in cui il team di
sviluppo viene organizzato;
3. Analisi del rischio: descrive i possibili rischi del progetto, la
probabilit che si verifichino e propone le strategie di
riduzione;
4. Requisiti di risorse HW e SW: specifica lHW e il SW di
supporto, richiesti per eseguire lo sviluppo;
5. Divisione del lavoro: delinea la divisione del progetto in
attivit e identifica le milestone;
6. Tempistica del progetto: mostra le dipendenze tra le attivit,
il tempo stimato richiesto per raggiungere ogni milestone e
lassegnazione del personale alle attivit;
7. Meccanismi di monitoraggio e rapporto: definisce i rapporti di
gestione che dovrebbero essere prodotti, quando, e con quali
meccanismi.
13
preventiva.
Reattiva: si trovano ed applicano le risorse solo quando il rischio
colpisce;
Preventiva: una strategia che si organizza molto prima che il
lavoro cominci; si individuano i rischi potenziali, se ne valutano la
probabilit e gli effetti e si stabilisce un ordine di importanza. Dal
momento che non tutti i rischi sono evitabili il team predispone
anche un piano di emergenza.
Il piano RMMM
(Risk Mitigation, Monitoring and Management Plan ovvero
piano di controllo e gestione dei rischi)
Questo documento pu essere utilizzato dal Project Manager come
piano complessivo del progetto in alternativa, ogni rischio, pu
essere documentato singolarmente nel RIS (Risk Information Sheet
ovvero foglio informativo sui rischi).
Il Team Leader deve seguire delle linee guida per eseguire il suo lavoro, che
14
possono riassumersi come modello MOI:
Motivazione;
Organizzazione;
Idee o innovazione.
PRO
P-CMM uno strumento pratico per migliorare la gestione del personale in
unorganizzazione, poich fornisce una struttura per la motivazione, il
riconoscimento, la standardizzazione e il miglioramento delle pratiche
professionali.
CONTRO
progettato per le grandi societ, rafforza la capacit di riconoscere
limportanza delle persone come individui e di sviluppare le loro capacit.
Lapplicazione completa di questo modello molto costosa e probabilmente
superflua nella maggior parte delle organizzazioni.
Studio di fattibilit
Per tutti i nuovi sistemi il processo dingegneria dei requisiti dovrebbe iniziare
con uno studio di fattibilit. Linput dello studio un insieme di requisiti
aziendali preliminari, una descrizione generale del sistema e come si vuole che
supporti i processi aziendali; mentre il risultato dovrebbe essere un rapporto
che indica se vale la pena o meno continuare con lingegneria dei requisiti e lo
sviluppo del sistema.
15
Uno studio di fattibilit un breve studio che mira a rispondere a una serie di
domande:
Il sistema contribuir agli obiettivi generali dellorganizzazione?
Il sistema pu essere implementato usando la tecnologia attuale secondo
costi prefissati e con vincoli sulla tempistica?
Il sistema pu essere integrato con altri sistemi che sono gi stati
installati?
Il risultato dello studio di fattibilit un documento che dovrebbe contenere le
seguenti informazioni:
Definizione preliminare del problema;
Possibili scenari che illustrino eventuali diverse strategie di soluzione;
Costi, tempi e modalit di sviluppo per le diverse alternative.
Tipi di requisiti
Requisiti utente (pi astratti)
Frasi in linguaggio naturale (e diagrammi) relativi ai servizi che il
sistema fornisce e i suoi vincoli operativi scritti per i clienti.
Descrivono i servizi richiesti al sistema (comportamento osservabile
dallesterno) e i vincoli operativi del sistema. Il punto di vista
quello del cliente, che li sottopone a un possibile sviluppatore per
ottenere unofferta.
Requisiti di sistema (aggiungono dettagli)
Un documento strutturato che fornisce una descrizione dettagliata
dei servizi del sistema e pu essere parte del contratto tra il cliente
16
e lo sviluppatore. La formulazione dettagliata, strutturata dei
vincoli e dei servizi. Il punto di vista quello dello sviluppatore, che
li pu usare anche per il contratto con il cliente.
Sono versioni espanse dei requisiti utente e sono utilizzati dagli
ingegneri del SW come base di partenza per la progettazione;
aggiungono dettagli e spiegano come i requisiti utente dovrebbero
essere forniti dal sistema.
E auspicabile scrivere i requisiti di sistema utilizzando notazioni pi
dettagliate: un linguaggio naturale strutturato e stilizzato, modelli
grafici dei requisiti come gli use-case, e le specifiche matematiche
formali.
Requisiti funzionali
Descrivono i servizi, o funzioni, offerti dal sistema. Sono frasi che
descrivono ci che il sistema dovr fare, come reagir agli input e
si comporter in varie situazioni.
Due livelli di astrazione:
1. Requisiti funzionali utente: frasi ad alto livello su ci che il
sistema far;
2. Requisiti funzionali di sistema: descrizioni dettagliate dei
servizi.
Se espressi come requisiti utente, sono solitamente descritti in un
modo vagamente astratto, mentre se sono espresso come requisiti
di sistema descrivono le funzioni nel dettaglio da un punto di vista
pi tecnico del sistema.
Requisiti non-funzionali
Descrivono vincoli sui servizi offerti dal sistema, e sullo stesso
processo di sviluppo. Includono vincoli temporali, sul processo di
sviluppo e sugli standard. Solitamente si applicano al sistema
completo non a singole funzioni o servizi.
Contiene pi capitoli:
18
19
Considerazioni sul documento dei requisiti (DdR): le informazioni incluse in un
DdR dipendono dal tipo di SW che si sta sviluppando e dalla tecnica di sviluppo
utilizzata.
Esempio:
o Tecniche evoluzionistiche
Deve lasciar fuori gran parte delle parti dettagliate e suggerite in
precedenza;
Si definiranno con attenzione i requisiti utente e quello di
sistema non funzionali di alto livello;
o Per sistemi grandi (che includono le interazioni di sistemi
HW e SW)
essenziale definire i requisiti a un alto livello di dettaglio;
Ddr molto lunghi;
Includono la maggior parte delle sezioni;
o Sviluppo agile: i requisiti cambiano cos velocemente che un
documento dei requisiti gi obsoleto quando viene scritto, quindi
si tratta per lo pi di uno spreco di energia.
o Programmazione estrema: propone una raccolta dei requisiti
passo passo e scritti su moduli.
o Sistemi aziendali: requisiti instabili.
20
2. Considerare le alternative di architettura in una fase in cui ogni
cambiamento ancora relativamente semplice;
3. Ridurre i rischi associati alla costruzione del SW.
System design
Gli scopi del System design sono:
Definire gli obiettivi di design del progetto;
Decomporre il sistema in sottosistemi pi piccoli che possano essere
realizzati da team individuali, eventualmente in parallelo;
21
Selezionare le strategie per costruire il sistema.
Stili architetturali
Il concetto di pattern pu essere applicato alle architetture SW, si parla di
architectural patterns o stili/modelli architetturali.
23
I sottosistemi devono conformarsi al modello Repository, e questo
inevitabilmente un compromesso che influenza le prestazioni.
2. Client-Server
Il modello Client-Server si basa su un insieme di server che offrono
dei servizi a un insieme di client che ne usufruiscono.
Ha tre componenti con un compito specifico:
1. Un insieme di server che offre servizi ad altri sottosistemi;
2. Un insieme di client che richiede i servizi offerti dai server;
3. Una rete che permette ai client di accedere a questi servizi.
PRO
La distribuzione dei dati molto semplice, e fa un uso efficace dei
sistemi di rete ed il pi delle volte richiede HW economico. Inoltre
facile aggiungere nuovi server o aggiornare i server esistenti.
CONTRO
Non ci sono modelli di dati condivisi tra i server e i sottosistemi
possono organizzare i propri dati con modalit diverse.
2bis. Web-based
A differenza dellarchitettura Client/Server, le applicazioni Web-
based sono indipendenti dalle piattaforme hardware e software
utilizzate dagli utenti; gli utenti si collegano allapplicazione
utilizzando il browser che usano per la navigazione su Internet,
senza la necessit di dover installare sul proprio pc una specifica
applicazione.Lapplicazione Web si trova su un server, il che
significa che ogni modifica e aggiornamento immediatamente
disponibile a tutti gli utenti, che possono collegarsi ad essa da
qualunque parte del mondo, utilizzando Internet come
infrastruttura, anzich una rete locale.
I costi di sviluppo di una applicazione web sono solitamente
ampiamente ripagati dal vantaggio di poter modificare e aggiornare
lapplicazione senza la necessit di distribuire gli aggiornamenti a
tutti i propri utenti.
Pattern Multi-Layer
In un sistema a livelli, ciascun livello comunica solo con il
24
livello sottostante. Ogni livello, offre uninterfaccia ben
definita al livello immediatamente sovrastante, quindi il livello
pi alto vede quello pi basso come un insieme di servizi.
PRO
Supporta lo sviluppo incrementale dei sistemi.
Modificabile e portabile: finch non si modificano le sue
interfacce uno strato pu essere sostituito da un altro
equivalente. Le modifiche alle interfacce di un livello
influenzano solo lo strato adiacente.
CONTRO
Strutturare un sistema stratificato pu essere difficile. Le
prestazioni possono essere un problema a causa dei diversi
livelli di interpretazione dei comandi che sono talvolta
richiesti: se ci sono molti strati, una richiesta di servizio fatta
a uno strato superiore pu essere interpretata diverse volte in
diversi strati prima che sia elaborata.
2. Scomposizione modulare
Dopo aver scelto lorganizzazione generale del sistema, si deve
decidere lapproccio da usare per la scomposizione dei sottosistemi
in moduli.
I componenti dei moduli sono solitamente pi piccoli dei
sottosistemi.
Sottosistema: un sistema di diritto, le cui operazioni non
dipendono dai servizi forniti da altri sottosistemi; i sottosistemi
sono composti da moduli e hanno interfacce ben definite, che sono
utilizzate per la comunicazione con gli altri sottosistemi.
Modulo: solitamente un componente di un sistema che fornisce
uno o pi servizi ad altri moduli, fa uso di servizi forniti da altri
moduli, non normalmente considerato un sistema indipendente.
3. Controllo
I modelli di controllo si occupano del flusso di controllo tra
sottosistemi, sono utilizzati in congiunzione con gli stili strutturali e
si suddividono in due categorie:
Controllo centralizzato (le decisioni di controllo sono
determinate dal valore da alcune variabili di stato del
sistema)
Un sottosistema designato come controllore di
sistema e ha la responsabilit di gestire
lesecuzione degli altri sottosistemi.
Abbiamo 2 classi a seconda che i sottosistemi
controllati siano eseguiti sequenzialmente o in
parallelo:
Sequenziale: il modello Call-Return
Il controllo parte dallalto della
gerarchia delle subroutine e,
attraverso le chiamate, arriva ai livelli
pi bassi dellalbero.
La natura rigida e ristretta di questo
modello ne rappresenta sia la forza
che la debolezza:
o Forza: relativamente
semplice analizzare i flussi di
controllo e capire come il
sistema risponder a particolari
input.
o Debolezza: difficile gestire le
eccezioni alle normali
operazioni.
Modelli interrupt-driven
Un gestore individua le interruzioni esterne
che vengono poi passate a un altro
componente per lelaborazione. Ogni tipo
dinterruzione associato a una posizione
di memoria che contiene lindirizzo del suo
gestore. Quando uninterruzione di un
particolare tipo viene ricevuta un selettore
HW trasferisce immediatamente il controllo
al suo gestore che pu quindi avviare o
fermare altri processi in risposta allevento
segnalato dallinterruzione.
27
implementa la logica dellapplicazione;
Strato di gestione dei dati: esegue tutte le
operazioni sul database.
Client-server a 2 livelli (two-tier)
o Client leggero Thin client
Dove tutte le elaborazioni applicative e la
gestione dei dati sono gestite dal server,
mentre i client si occupa soltanto di
eseguire il SW di presentazione.
Uno svantaggio che esso pone un pesante
carico di elaborazione sia sul server sia sulla
rete; questo pu generare un significativo
traffico di rete tra il client e il server.
o Client pesante Fat client
Il server si occupa solo della gestione dei
dati, mentre il SW sul client implementa la
logica applicativa e linterazione con
lutente del sistema. Gestione del sistema
pi complessa: le funzionalit
dellapplicazione sono divise su diversi
computer. Quando il SW deve essere
modificato, necessaria la reinstallazione
su ogni computer client maggiori costi se
presenti molti client.
Client-server a 3 livelli (three-tier)
e met strada tra i modelli thin e fat; la
presentazione, lelaborazione applicativa e la
gestione dei dati sono processi logicamente
separati ed eseguiti su diversi processori. Migliori
prestazioni rispetto al thin e gestione pi semplice
rispetto al fat.
28
approvato dall'organizzazione internazionale per gli
standard ORB (Object Request Broker).
CORBA utilizza un apposito linguaggio
denominato Interface Description Language (IDL) per
definire le interfacce che gli oggetti presentano al
"mondo esterno".
CORBA specifica poi una mappatura da IDL a specifici
linguaggi dimplementazione come C++ o Java.
Middleware
I componenti di un sistema distribuito possono essere implementati in diversi
linguaggi di programmazione e possono essere eseguiti su differenti tipi di
processore. I modelli di dati, la rappresentazione delle informazioni e i
protocolli per la comunicazione possono essere tutti diversi. Un sistema
distribuito, dunque, necessita di un SW che gestisca queste parti diverse, e
che si assicuri che comunichino e si scambino dati: middleware.
Architetture multiprocessore
Il modello pi semplice di sistema distribuito un sistema multiprocessore,
dove il SW consiste in una serie di processi che possono essere eseguiti su
processori separati. La distribuzione ai processori pu essere predeterminata
oppure sotto il controllo di un dispatcher che decide la ripartizione dei
processi.
29
del calcolo.
Interfacce utente
Le interfacce utente dovrebbero essere progettate per abbinare le
competenze, esperienze e le aspettative dei suoi utenti previsti. Gli utenti del
sistema spesso giudicano un sistema per la sua interfaccia piuttosto che la sua
funzionalit. Uninterfaccia mal progettata pu provocare errori da parte
dellutente. La pessima progettazione dellinterfaccia utente la ragione per
cui tanti sistemi software non vengono mai utilizzati.
30
La consistenza dellinterfaccia su diverse applicazioni: per quanto
possibile i comandi con significati simili in applicazioni diverse
dovrebbero essere espressi allo stesso modo.
Il principio della minima sorpresa appropriato poich le persone
possono irritarsi molto quando un sistema si comporta in maniera
inaspettata.
Il principio di diversit degli utenti riconosce che, per molti sistemi
interattivi, possono esserci diversi tipi di utente.
Il principio di ripristinabilit importante poich gli utenti
commettono errori quando utilizzano un sistema. Di conseguenza si
devono includere funzionalit dellinterfaccia che permettono agli utenti
di ripristinare la situazione precedente. Tali funzionalit possono essere
di tre tipi:
1. Conferma delle azioni distruttive
2. Funzione di annullamento
3. Checkpointing
I sistemi devono anche comunicare con gli utenti attraverso messaggi che
forniscono informazioni sugli errori e sullo stato del sistema.
Processo di Testing
Verifica & Convalida
La fase di verifica e validazione serve ad accertare che il SW rispetti i requisiti e
che li rispetti nella maniera dovuta.
Verifica: stiamo costruendo il prodotto nel modo giusto?
Il ruolo della verifica controllare che il SW sia conforme alle sue specifiche:
deve soddisfare i requisiti funzionali e non funzionali specificati.
Validazione (o convalida): stiamo costruendo il prodotto giusto?
La convalida un processo pi generale, che va oltre la verifica: il suo scopo
assicurarsi che il sistema SW rispetto le attese del cliente e se quindi i requisiti
modellano ci che il cliente realmente voleva.
Tipi di testing
Esistono 2 tipi di test:
1. Test di convalida: serve per mostrare che il SW quello che il cliente
desidera, che soddisfa i suoi requisiti.
2. Test dei difetti: serve per rilevare i difetti del sistema anzich per
simulare il suo uso operativo.
CONTRO
Problemi pratici nel disporre le ispezioni, richiedono tempo per la loro
organizzazione e sembrano rallentare il processo di sviluppo.
Precondizioni essenziali:
Lispezione del programma un processo eseguito da un team di
almeno 4 persone: autore, lettore, tester e moderatore.
Le specifiche devono essere disponibili, ossia ci sia una specifica
precisa del codice da ispezionare, perch impossibile ispezionare
un componente a livello di dettaglio richiesto per individuare difetti
senza una specifica completa.
I membri della squadra dispezione devono avere familiarit con gli
standard organizzativi.
Deve essere distribuita a tutti i membri del team una versione
aggiornata e compilabile del codice.
33
standard e sulla programmazione di scarsa qualit.
Non deve suggerire come correggere questi difetti, ne raccomandare
modifiche di altri componenti (solo individuarli).
In seguito allispezione, lautore corregge i problemi individuati ed il
moderatore decide se occorre una nuova ispezione al codice, se non
necessaria approva la release del programma.
PRO
Impone unanalisi dettagliata delle specifiche, vengono rilevate eventuali
inconsistenze o omissioni che altrimenti non sarebbero state scoperte se
non dopo la messa in uso del SW, dimostra che il programma sviluppato
soddisfa le sue specifiche.
CONTRO
Richiede notazioni specializzate che possono non essere comprese
da esperti del dominio.
Problemi dei requisiti di sistema possono essere nascosti dalla
formalit.
Molto costoso per sviluppare una specifica e ancora pi costoso per
dimostrare che un programma soddisfa le specifiche.
Verificare non banale pu richiedere molto tempo e c bisogno di
strumenti specializzati, come verificatori di teoremi ed esperti
matematici.
Pur con i loro svantaggi, i metodi formali hanno un ruolo importante nello
sviluppo dei SW critici.
36