T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 1
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Laurea in Ingegneria Gestionale
Progettazione del SoftwareAnno Accademico 2007/08
Prof. Toni Mancini & Prof. Monica ScannapiecoDipartimento di Informatica e Sistemistica
Università di Roma “La Sapienza”
S.I.1 - Introduzione alla Progettazione del SW
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 2
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Introduzione alla Progettazione
Introduzione allaProgettazione del Software
– Contesto organizzativo– Ciclo di vita del software– Qualità– Modularizzazione
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 3
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Il contesto organizzativo
• Attori nella progettazione del software:– Committente– Esperti del domino– Analista– Progettista– Programmatore– Utente finale– Manutentore
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 4
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Esercizio 1Il Comune di XYZ intende automatizzare la gestione delleinformazioni relative alle contravvenzioni elevate sul suo territorio.In particolare, intende dotare ogni vigile di un dispositivo palmareche gli consenta di comunicare al sistema informatico il veicolo acui è stata comminata la contravvenzione, il luogo in cui è stataelevata e la natura dell’infrazione.Il sistema informatico provvederà a notificare, tramite postaordinaria, la contravvenzione al cittadino interessato.Il Comune bandisce una gara per la realizzazione e manutenzionedel sistema, che viene vinta dalla Ditta ABC.
Quali sono gli attori coinvolti in questa applicazione SW?
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 5
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Soluzione esercizio 1
• Committente: Comune di XYZ• Esperto del domino: funzionario del Comune, o altro
professionista designato, esperto del Codice dellaStrada
• Utenti finali: vigili• Analista• Progettista• Programmatore• Manutentore
Personale della ditta ABC
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 6
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Classificazione delle applicazioni (1)
Rispetto al flusso di controllo• Sequenziali: un unico flusso di controllo governa
l’evoluzione dell'applicazione• Concorrenti: le varie attività necessitano di
sincronizzazione e comunicazioneComposte da varie attività sequenziali che possono (e devono)
essere sincronizzate al fine di garantire la correttezza Il tempo di esecuzione influenza le prestazioni, non la
correttezza corsi di Sistemi Operativi
• Dipendenti dal tempo: esistono vincoli temporaliriguardanti sia la velocità di esecuzione delle attività siala necessità di sincronizzare le attività stesse
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 7
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Classificazione delle applicazioni (2)
Rispetto agli elementi di interesse primario• Orientate alla realizzazione di funzioni: la complessità
prevalente del sistema riguarda le funzioni da realizzare• Orientate alla gestione dei dati: l’aspetto prevalente è
rappresentato dai dati che vengono memorizzati,ricercati, e modificati, e che costituiscono il patrimonioinformativo di una organizzazione corso di Basi di Dati
• Orientate al controllo: la complessità prevalente delsistema riguarda il controllo delle attività che sisincronizzano e cooperano durante l'evoluzione delsistema
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 8
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Applicazioni di interesse per questo corso
• Sequenziali• Orientate alla realizzazione di funzioni
Sono le applicazioni più tradizionali, e vengonospesso adottate come riferimento per i metodi e letecniche di base per la progettazione
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 9
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Introduzione alla Progettazione
Introduzione allaprogettazione del software
– Contesto organizzativo– Ciclo di vita del software– Qualità– Modularizzazione
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 10
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Ciclo di vita del software1. Studio di fattibilità e raccolta dei requisiti
– valutare costi e benefici– pianificare le attività e le risorse del progetto– individuare l'ambiente di programmazione (hardware/software)– raccogliere i requisiti
2. Analisi dei requisiti– si occupa del cosa l’applicazione dovrà realizzare– descrivere il dominio dell’applicazione e specificare le funzioni
delle varie componenti: lo schema concettuale3. Progetto e realizzazione
– si occupa del come l’applicazione dovrà realizzare le suefunzioni
– definire l'architettura del programma– scegliere le strutture di rappresentazione– scrivere il codice del programma e produrre la documentazione
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 11
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Ciclo di vita del software1. Studio di fattibilità2. Analisi dei requisiti3. Progetto e realizzazione4. Verifica
– Il programma svolge correttamente, completamente,efficientemente il compito per cui è stato sviluppato?
5. Manutenzione– Controllo del programma durante l'esercizio– Correzione e aggiornamento del programma
Se, necessario, si torna alla fase di raccolta dei requisiti
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 12
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Ciclo di vita del software(modello a spirale)
Raccolta dei requisitiRaccolta dei requisitiAnalisiAnalisi
Progetto e realizzazioneProgetto e realizzazione Verifica e manutenzioneVerifica e manutenzione
11 22 33 versioni delversioni delprogrammaprogramma
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 13
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Introduzione alla Progettazione
Introduzione allaprogettazione del software
– Contesto organizzativo– Ciclo di vita del software– Qualità– Modularizzazione
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 14
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Fattori di qualità del SW
ESTERNE
CorrettezzaAffidabilitàRobustezzaSicurezzaInnocuitàUsabilitàEstendibilitàRiusabilitàInteroperabilità
INTERNE
EfficienzaStrutturazioneModularitàComprensibilitàVerificabilitàManutenibilitàPortabilità
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 15
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Qualità esterne ed interne
• Qualità esterne:– Percepibili anche da chi non è specialista– Non richiedono l’ispezione del codice sorgente
• Qualità interne:– Valutabili da specialisti– Richiedono conoscenza della struttura del programma
A volte la distinzione fra qualità esterne ed interne non èperfettamente marcata
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 16
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Esercizio 3
Considerare le seguenti proprietà di un impianto Hi-Fi e stabilirequali di esse sono esterne e quali sono interne.
1. il tempo dedicato al collaudo,2. la fedeltà sonora,3. la probabilità di malfunzionamenti nel primo anno di utilizzazione,4. la dimensione del trasformatore per l’alimentazione,5. l’ergonomia dei comandi,6. la linearità della risposta in frequenza.
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 17
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Correttezza, Affidabilità,Robustezza, Sicurezza, Innocuità
• La correttezza è fondamentale: il software fa quelloper il quale è stato progettato?
• Affidabilità: risultati disponibili rispettando i vincoli• Robustezza: comportamento corretto anche nel caso
di situazioni non specificate• Sicurezza: riservatezza nell’accesso alle informazioni• Innocuità: il sistema non entra in certi stati
(pericolosi)
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 18
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Usabilità
• Enfasi sull’utente• Psicologia cognitiva• Fattori fisici/ergonomici• Mentalità dell’utente• Interfacce grafiche/visuali• Viene, spesso, totalmente ignorata
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 19
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Estendibilità
Facilità con cui il SW può essere adattato amodifiche delle specifiche
Nota: Importantissimo in grandi programmi
Nota: Due principi per l'estendibilità:
• Semplicità di progetto
• Decentralizzazione nell'architettura del SW
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 20
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Riusabilità
Facilità con cui il SW può essere re-impiegato inapplicazioni diverse da quella originaria
Nota: Evita di reinventare soluzioni
Nota: Richiede alta compatibilità
– Libreria di componenti riutilizzabili– Progetto più generale possibile– Documentazione– Maggiore affidabilità
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 21
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Interoperabilità
• Facilità di interazione con altri moduli al fine disvolgere un compito più complesso
• Problemi tecnologici e semantici• Favorisce la riusabilità
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 22
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Nota sulle qualità esterne
• Correttezza• Estendibilità• Riusabilità
sono qualità chiave, fortemente favorite da unapproccio orientato agli oggetti
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 23
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Efficienza
• Legata alle prestazioni– Tempo di esecuzione– Utilizzo di memoria
• Teoria della complessità Corso di Algoritmi e Strutture di Dati (Ing. Informatica)
– limiti asintotici– caso medio– caso peggiore
• Simulazioni (e.g., teoria delle reti di code)
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 24
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Strutturazione, Modularità
• Strutturazione
Capacità del SW di riflettere con la sua struttura lecaratteristiche del problema trattato e dellesoluzioni adottate
• Modularità
Grado di organizzazione del SW in parti benspecificate ed interagenti
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 25
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Comprensibilità
Capacità del SW di essere compreso e controllatoanche da parte di chi non ha condotto il progetto• si applica sia al software che al processo• facilitata da:
– strutturazione– modularità
• la comprensibilità del software facilita l’analisi della correttezza ed il riuso
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 26
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Verificabilità
• La possibilità di verificare che gli obiettiviproposti siano stati raggiunti
• È una caratteristica sia del processo che delprodotto
• Facile: il codice soddisfa gli standard di codifica?• Difficile: il codice fa ciò che deve fare? (vedi
correttezza)
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 27
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Manutenibilità, Portabilità
• Facilità nell’effettuare modifiche
• Portabilità– linguaggi compilabili su più piattaforme– macchine virtuali (html/java)
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 28
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Nota sulle qualità interne
• Strutturazione• Modularità
sono caratteristiche di estremo interesse, favoritedall'approccio orientato agli oggetti
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 29
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Esercizio 4
Assimilando le qualità di un programma alle proprietàdelle automobili, il fatto che i motori di un certomodello possono essere montati su diversi modelli diautomobile a quali qualità interne fa riferimento?
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 30
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Lo standard ISO 9126
Per saperne di più: Slides sulla qualità (PrimaParte-2) delcorso di Ingegneria del Software (Ing. Informatica), Proff.M. Cadoli e G. Santucci.
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 31
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Misura delle qualità
• Ogni qualità deve essere valutata attraversoalcune proprietà misurabili in modo oggettivo equantitativo possedute dalle entità.
• Differenti entità possono essere collocate su unascala di valori in funzione dei livelli misurati perquesti attributi.
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 32
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Tendenza nello sviluppo di applicazioni SW+ Complessità delle informazioni da gestire
+ Progetti di medio-grandi dimensioni
+ Eterogeneità degli utenti
- Durata media dei sistemi
+ Bisogno di interventi di manutenzione
- Costi di produzione e tempi di produzione
+ Qualità del prodotto finito
Modularizzazione e orientazione agli oggetti sono tecnicheintrodotte per rispondere a queste esigenze
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 33
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Introduzione alla Progettazione
Introduzione allaprogettazione del software
– Contesto organizzativo– Ciclo di vita del software– Qualità– Modularizzazione
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 34
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Modularizzazione• Principio secondo il quale il software è strutturato
secondo unità, dette appunto moduli• Un modulo è una unità di programma con le seguenti
caratteristiche:– ha un obiettivo chiaro– ha relazioni strutturali con altri moduli– offre un insieme ben definito di servizi agli altri moduli
(server)– può utilizzare servizi di altri moduli (client)
• Principio fondamentale sia per la strutturazione sia perla modularità
• Concettualmente alla base del concetto di architetturaclient/server del software
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 35
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Componenti di un modulo
Modulo X
interfaccia meccanismi di accesso allefunzionalità del modulo
interno del modulo
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 36
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Obiettivi connessi alle qualità interneStrutturazione Modularizzazione
Criteri per la modularità
Pp1 p2
p3
Decomponibilità
p4
Pp1 p2
p3
Componibilità
p4
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 37
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Principi per la modularità• Principio di unitarietà (incapsulamento, alta coesione)
– un modulo deve corrispondere ad una unità concettuale ben definitae deve incorporare tutti gli aspetti relativi a tale unità concettuale
• Poche interfacce (basso accoppiamento)– un modulo deve comunicare con il minor numero di moduli
possibile (quelli necessari)• Poca comunicazione (basso accoppiamento)
– un modulo deve scambiare meno informazione possibile (quellanecessaria!) con gli altri moduli
• Comunicazione chiara (interfacciamento esplicito)– informazione scambiata predeterminata e più astratta possibile
• Occultamento di informazioni inessenziali (informationhiding)– le informazioni che non devono essere scambiate devono essere
gestite privatamente dal modulo
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 38
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Principi per la modularitàIn sintesi, i quattro dogmi dellamodularizzazione sono:• Alta coesione (omogeneità interna)• Basso accoppiamento (indipendenza da altri moduli)• Interfacciamento esplicito (chiare modalità d’uso)• Information hiding (poco rumore nella comunicazione)
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 39
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Esempi• Esempi negativi:
– Bassa coesioneAllo stesso sportello degli uffici postali si pagano i bollettini di conticorrente e contemporaneamente si ritirano le pensioni (servizidisomogenei!)
– Alto accoppiamentoPer usufruire di alcuni servizi delle circoscrizioni, occorre acquistaredelle marche da bollo dal tabaccaio (accoppiamento tra tabaccaio eufficio circoscrizionale)
• Esempi positivi:– Interfacciamento esplicito
In molte pagine web (ad esempio per prenotazione posti in un teatro),le informazioni da fornire sono chiaramente espresse mediante campida riempire
– Information hidingL’utente non conosce esattamente cosa è memorizzato nella bandamagnetica delle carte di credito
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 40
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Esempi di modularizzazione in Java
• Anche semplicissimi programmi Java possonoessere modularizzati male
• Esempio:– Cattiva modularizzazione (server con basso
interfacciamento esplicito, bassa coesione, altoaccoppiamento; conseguenze negative sul client)
– Buona modularizzazione (riprogettazione del server edel client)
– I due programmi sono entrambi corretti, ma hannodiversa qualità
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 41
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Esempio di cattiva modularizzazionepublic class Client {
static Lista MiaLista() { … }
public static void main(String[] args) { Lista s = MiaLista(); if (s != null) { // ALTO ACCOPPIAMENTO: il cliente // deve controllare che la lista non sia vuota System.out.print("Inserisci un intero: "); Server.alfa = MioIO.leggiInt(); if (Server.Cerca(s)) // ALTO ACCOPPIAMENTO: il cliente deve // definire e usare alfa come vuole il server System.out.print(Server.alfa+“ presente\n"); else System.out.print(Server.alfa+" non
presente\n"); } }}
public class Server { public static int alfa; // ALTO ACCOPPIAMENTO: impone al cliente // di usare alfa in maniera coerente /** Ritorna true se il valore di alfa è contenuto nella lista x **/ public static bool Cerca(Lista x){ // BASSO INTERFACCIAMENTO ESPLICITO: // non e’ esplicito che alfa e’ il valore cercato // BASSA COESIONE: non effettua il controllo // di lista vuota do { if (x.info == alfa) return true; x = x.next; } while (x != null); return false; }}
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 42
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Esempio di buona modularizzazionepublic class Client {
static Lista MiaLista() { … }
public static void main(String[] args) { Lista s = MiaLista(); System.out.print("Inserisci un intero: "); int alfa = MioIO.leggiInt(); if (Server.Cerca(s, alfa)) // BASSO ACCOPPIAMENTO: il cliente si // concentra sulla richiesta del servizio System.out.print(Server.alfa+“
presente\n"); else System.out.print(Server.alfa+" non
presente\n"); }}
public class Server {
/** Ritorna true se il valore di alfa è contenuto nella lista x **/ public static bool Cerca(Lista x, int alfa){ // ALTO INTERFACC. ESPLICITO: // e’ esplicito che alfa e’ il valore cercato // ALTA COESIONE: effettua il controllo // di lista vuota while (x != null) { if (x.info == alfa) return true; else x = x.next; } return false; }}
T. Mancini & M. Scannapieco S.I.1 – Introduzione alla Progettazione del SW – January 10, 2008 43
Progettazione del Software, Laurea in Ingegneria Gestionale, a.a. 2007/08
Effetti di una buona modularizzazione• Il progetto, le competenze, ed il lavoro possono
essere distribuiti (i moduli sono indipendenti traloro)
• Rilevare eventuali errori nel software è piùsemplice (si individua il modulo errato e ci siconcentra su di esso)
• Correggere errori e modificare il software è piùsemplice (si individua il modulo da modificare eci si concentra su di esso)
• Attenzione: l’efficienza del programma ne puòrisentire!