Modelli di Produzione del SW:
dal Ciclo a Cascata
all’Open Source
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
Il processo edit-compile-test
Il processo edit-compile-test
Il processo edit-compile-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
Segmentare il ciclo di vita
Segmentare il ciclo di vita
Segmentare il ciclo di vita
Modello a cascata
Molto dettagliato
Molto rigido
Orientato alla
documentazione
Orientato agli standard
Adatto per
organizzazioni
gerarchizzate
Rischioso

Modello a cascata, versione a V
Descrivere un processo
Occorre descrivere/monitorare le attività
Occorre descrivere/assemblare gli strumenti
Occorre descrivere/assegnare i ruoli
Occorre descrivere/controllare i gli eventi
Occorre descrivere/validare i documenti
Occorre 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

Capability Maturity Model
La famiglia dei processi sw
orientati alla qualità
Il Rational Unified Process
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

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

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
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
ciancarini@cs.unibo.it
www.cs.unibo.it/~cianca