Modelli di Produzione del SW:
dal Ciclo a Cascata
all’Open Source
Paolo Ciancarini
Dip. Scienze dell’Informazione
Università di Bologna
Alcuni eventi
1968: NATO Conference on Software Engineering
1969: IBM effettua il “software unbundling”
1970: Royce descrive il Waterfall Model
1976: Lettera aperta di B.Gates sulla pirateria sw
1987: Articolo Osterwail
1988: Modello a spirale di Boehm
1990: Conferenze su Sw Process Modeling
1998: Netscape viene distribuito Open Source
2002: Proposte di legge su Open Source
Il sw è un prodotto industriale
L’industria mondiale del sw è cresciuta nell’ultimo decennio a
tassi di almeno il 10% annuo
Molti nuovi servizi di rete si basano su innovazioni
tecnologiche software (es. Napster, aste online, ecc.)
Un telefonino contiene 5 MLOC (fonte Nokia)
Windows XP contiene 40 MLOC (Windows 95: 11 MLOC)
Il costo di sviluppo di un programma cresce col quadrato
delle sue dimensioni [Berra-Meo 2001]
Il software è un prodotto speciale
È invisibile e intangibile
È facilmente duplicabile e distribuibile su rete
Non è in sé brevettabile (ma protetto)
Non è garantito
Viene acquisito su licenza
• Proprietaria (normale, shareware)
• Public domain
• Open source
Perché studiare il processo di produzione
del sw?
Servono sistemi software più affidabili e sicuri:
il processo di produzione influenza tali qualità
Il processo software impatta l’organizzazione
L’organizzazione impatta il processo software
Esistono parecchi diversi processi di sviluppo,
adatti ad organizzazioni, prodotti e mercati diversi
Alcuni strumenti sono efficaci solo nell’ambito di
processi i cui scopi sono ben definiti
Il processo edit-compile-test
edit
Il processo edit-compile-test
edit
compile
Il processo edit-compile-test
edit
compile
test
Il processo edit-compile-test
edit
compile
• Molto veloce, feedback rapido
• Disponibilità di molti strumenti
• Specializzato per la codifica
• Non incoraggia la documentazione
• Non scala: in-the-large, in-the-many
• Ingestibile durante la manutenzione
test
Programming in the small/large/many
Programming in-the-small:
un programmatore, un modulo = edit-compile-test
Programming in-the-large:
progettare software decomposto in più moduli,
su più versioni, su più configurazioni
Programming in-the-many:
progettare software <<grande>> richiede la
cooperazione ed il coordinamento di più
programmatori, nell’ambito di un ciclo di vita
Segmentare il ciclo di vita
specifica
È la fase di stesura dei requisiti e
di descrizione degli scenari d’uso
Segmentare il ciclo di vita
specifica
progetto
Il progetto determina un’architettura software
capace di soddisfare i requisiti specificati
Segmentare il ciclo di vita
specifica
progetto
costruzione
La costruzione, o codifica, è una fase
complessa che include il testing e
termina con il deployment del sistema
Segmentare il ciclo di vita
specifica
progetto
costruzione
manutenzione
Manutenzione perfettiva
Manutenzione correttiva
Manutenzione adattiva
Modello a cascata
Molto dettagliato
Molto rigido
Orientato alla
documentazione
Orientato agli standard
Adatto per
organizzazioni
gerarchizzate
Rischioso
Modello a cascata, versione a V
conceptual phase
research phase
required
operational
capability
design &
test & evaluation operation
development phase phase
& maintenance phase
certificazione
operation
& maintenance
operational
testing &
evaluation
engineering
studies
validazione
Experimental
development
concept
evaluation
System
Requirements
Review
System
Design
Review
validazione
system
decomposition
& allocation
verifica
software
requirements
Preliminary
sw analysis
& design
Preliminary
design
review
acceptance test
& evaluation
validazione
verifica
verifica
Detailed sw
analysis &
design
verifica
coding &
debug
Critical
design review
system
performance
testing
sw/hw
integration
& testing
sw system
integration
& testing
sw subsystem
integration
& testing
software
cpci testing
customer
delivery
audit
functional
configuration
audit
Descrivere un processo
Occorre
Occorre
Occorre
Occorre
Occorre
Occorre
descrivere/monitorare le attività
descrivere/assemblare gli strumenti
descrivere/assegnare i ruoli
descrivere/controllare i gli eventi
descrivere/validare i documenti
descrivere/verificare i criteri di qualità
Software processes are software, too!
Descrivere un processo sw
Processo software:
L’insieme strutturato di
attività, eventi, documenti e procedure necessari
per la costruzione di un sistema software
Benefici della modellazione dei processo sw:
“Migliora il processo per migliorare il prodotto”
Miglior coordinamento del team di sviluppo
Accumulazione di esperienza
Modello a spirale (Boehm)
Adatto se requisiti instabili
Non lineare
Flessibile
Valuta il rischio
Modelli orientati alla qualità
I cicli di vita orientati alla qualità si basano di
solito su modelli analitici almeno idealmente
quantitativi
ISO 9000
Capability Maturity Model (CMM)
Six Sigma
Extreme programming
ISO 9000
ISO9000-3 è ISO9001 per le fabbriche del sw
ISO 9000
Quality management and quality assurance standards;
guidelines for selection and use
ISO 9001
Quality systems model for quality assurance in design,
development, production, installation, and servicing
ISO 9002
Quality systems model for quality assurance in
production and installation
ISO 9003
Quality systems model for quality assurance in final
inspection and test
ISO 9004
Quality management and quality systems elements.
Guidelines
Capability Maturity Model
Level
Characteristic
Key challenges
Optimizing
Improve feedback into process
Identify process indicators
Managed
(Quantitative) measured process
Automatic collection of process
data, to analyze and modify the
process itself
Defined
(Qualitative) process defined and
istituzionalized
Process measurement
Process analysis
Quantitative Quality Plans
Repeteable
(Intuitive)
process dependent on individuals
Establish a Processw Group
Identify a Process Architecture
Introduce SE methods and tools
Initial
Ad hoc/ Chaotic
No cost estimation, planning,
management
Project management
Project planning
Software Quality Assurance
La famiglia dei processi sw
orientati alla qualità
Il Rational Unified Process
• L’avvento di UML ha portato alla definizione
di specifici modelli di processo: il RUP è uno di questi
• Il ciclo di vita RUP è suddiviso in una serie di
iterazioni
• Ogni ciclo è composto da una serie di fasi




Concezione
Elaborazione
Costruzione
Transizione
Concezione
Elaborazione
Costruzione
tempo
Transizione
RUP: concezione (inception)
• Scopo
 Stabilire il business case per il nuovo sistema o per
l’aggiornamento di un sistema esistente.
• Prodotti
 I requisiti chiave per il progetto
 Una valutazione iniziale del rischio
• Prodotti opzionali:
 Un prototipo concettuale
 Un primo modello del dominio (completo al 10, 20%)
RUP: elaborazione
• Scopo




Analizzare il dominio del problema
Stabilire un’accurata base architetturale
Evidenziare gli elementi ad alto rischio del progetto
Sviluppare un piano per la realizzazione del progetto
Prodotti
Un
modello del sistema con il contesto, gli scenari ed il modello del dominio
L’architettura
dell’eseguibile
Un
piano rivisto dei rischi
Un
piano di sviluppo e di testing
Una
descrizione della release
Una
prima versione dello User Manual
RUP: costruzione
• Scopo
 Sviluppare incrementalmente un prodotto software
completo pronto per essere inserito nella comunità
degli utenti
• Prodotti
 Una serie di rilasci degli eseguibili
 Dei prototipi comportamentali
 I risultati dell’assicurazione di qualità
 La documentazione utente e del sistema
 Il piano di rilascio
 Criterio di valutazione per l’iterazione successiva
RUP: transizione
• Scopo
 Inserire il prodotto software nella comunità degli
utenti
• Prodotti
 Una serie di rilasci degli eseguibili
 I risultati dell’assicurazione di qualità
 Documentazione utente e di sistema aggiornata
 Analisi delle prestazioni del sistema dopo il rilascio
Il RUP è un modello iterativo
• Una iterazione è un ciclo di sviluppo che porta al
rilascio di una parte del prodotto finale
• Ogni iterazione tocca tutti gli aspetti dello sviluppo sw
• Ogni rilascio iterativo è una parte pienamente
documentata del sistema finale
Phases
Process Components
I nception
Elaboration
Construction
Transition
Requirements
Analysis
Architecture
Level
Design
Class Level
Implem entation
Test
Supporting Activities
Project Management
Process Configuration
preli mi nary iteration it erati on iterati on iterati on iteration
iteration(s)
#1
#2...
#n
#n+1
#n+2...
Iterations
iterati on iteration
#m
#m+1...
Il processo Microsoft
Pianificazione
• Documento programmatico
• Specifica
• Team management
Sviluppo
• 3-4 Sottoprogetti
Stabilizzazione
• Collaudo interno
• Collaudo esterno
• Golden master
La filosofia Open Source
Ogni buon prodotto software inizia da un problema
personale di uno sviluppatore
I bravi programmatori sanno cosa scrivere. I migliori sanno
cosa riscrivere
Quando hai perso interesse in un programma che hai
costruito, è tuo dovere passare le consegne ad un
successore competente
Trattare gli utenti come sviluppatori è la strada migliore per
ottenere debugging efficace e rapidi miglioramenti del
codice
Distribuisci presto, distribuisci spesso e presta ascolto agli
utenti
Stabilita una base di betatester e cosviluppatori
sufficientemente ampia, ogni problema verrà rapidamente
definito e qualcuno troverà la soluzione adeguata
Il processo Open Source
• Il processo è ”pubblico”
• Le implementazioni sono
controllate da un board
che revisiona e testa il
codice proposto
• modifiche moderate
• build frequenti
• proprietà collettiva
• ”no maintenance”
Open Source nalla PA?
Da una proposta di legge 20/3/2002
1. La pubblica amministrazione è tenuta ad utilizzare, nella propria
attività, programmi per elaboratore elettronico dei quali possieda il
codice sorgente.
2. La pubblica amministrazione, nella scelta dei programmi per
elaboratore elettronico necessari alla propria attività, privilegia
programmi appartenenti alla categoria del software libero o, in
alternativa, programmi a codice sorgente aperto. In tale ultimo caso,
il fornitore deve consentire la modificabilità del codice sorgente senza
costi aggiuntivi per l'amministrazione.
3. La pubblica amministrazione che intenda avvalersi di un software non
libero, deve motivare analiticamente la ragione della scelta.
Ø
Conclusioni
“Silver bullets” nel processo di sviluppo:
Conclusioni
“Silver bullets” nel processo di sviluppo:
Il mito del metodo
Conclusioni
“Silver bullets” nel processo di sviluppo:
Il mito del metodo
Il mito degli strumenti
Conclusioni
“Silver bullets” nel processo di sviluppo:
Il mito del metodo
Il mito degli strumenti
Il mito della gestione del progetto
Conclusioni
“Silver bullets” nel processo di sviluppo:
Il mito del metodo
Il mito degli strumenti
Il mito della gestione del progetto
Il mito dell’organizzazione del lavoro
Conclusioni
“Silver bullets” nel processo di sviluppo:
Il mito del metodo
Il mito degli strumenti
Il mito della gestione del progetto
Il mito dell’organizzazione del lavoro
Il mito della qualità
Conclusioni
L’impatto della ricerca e degli standard software
L’impatto delle nuove tecnologie software
L’impatto delle nuove infrastrutture di
comunicazione e coordinamento
L’impatto di nuovi modelli educativi
L’impatto della certificazione professionale
Fine
Grazie per l’attenzione!
Paolo Ciancarini
[email protected]
www.cs.unibo.it/~cianca
Scarica

camerino