Il processo di sviluppo software

Transcript

Il processo di sviluppo software
Corso di Laurea Specialistica in Ingegneria Informatica
Progettazione OO
E. TINELLI
Corso di Ingegneria del Software
A. A. 2008 - 2009
Punto di Partenza – Il modello di analisi
• E’ una rappresentazione minima del sistema, sufficiente a
catturare i requisiti e la logica essenziale del sistema
• Un buon modello di analisi (modello logico)
– Considera tutti i requisiti funzionali (use cases)
– NON deve necessariamente modellare i requisiti non funzionali
• Un modello di analisi contiene:
– Casi d’uso (UC)
– Diagramma delle Classi di analisi
– Diagrammi di interazione che rappresentano il comportamento
dinamico dettagliato negli UC
– tracciabilità: fra requisiti utente, fra requisiti utente e requisiti di
sistema, fra ogni req. funzionale e le classi che lo realizzano, ecc.
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
2
Progetto OO
• Progettazione di un sistema: rappresenta la fase in cui vengono
presi in considerazione i requisiti non funzionali (usabilità, affidabilità,
performance, manutenibilità, scalabilità, integrazione con altri sistemi,
ecc.) e che porta alla definizione l’architettura di un sistema :
– l’ANALISI si concentra sul COSA (aspetti funzionali);
– Il PROGETTO si concentra sul COME (aspetti non funzionali).
• Occorre rielaborare il frutto dell’analisi, tenendo in considerazione le
possibilità offerte dal paradigma object oriented (polimorfismo,
ereditarietà, incapsulamento, ecc.), ed individuare una struttura ad
oggetti che rappresenti in modo efficace e pertinente il dominio
applicativo.
• Il modello di progetto:
– contiene: Layer e Sottosistemi, Classi di design
– definisce completamente le dipendenze, le associazioni
(ass./compos./aggreg.), le molteplicità, le generalizzazioni fra le diverse
classi
– per le operazioni definisce la Signature completa: nome operazione, tipo di
ritorno, parametri, visibilità, se è di istanza o di classe (statica)
– per gli attributi definisce: nome, tipo, valori iniziali o di default, visibilità
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
3
È necessario mantenere due
modelli?
• Esistono varie strategie: dal rifinire il doc di analisi in modo
da diventare doc di progetto a mantenere i due modelli
separati e sempre “sincronizzati”
• Fattori da considerare:
– Dimensione, tipologia e tempo di vita del progetto
– Necessità di introdurre nuove risorse
– Comprendere il funzionamento del sistema anche a distanza di mesi
Æ pianificare interventi di manutenzione e migliorie
– Verificare che le funzionalità del sistema soddisfino e corrispondano ai
requisiti dell’utente
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
4
Evoluzione delle Classi di Analisi
• Una Classe di Analisi può diventare:
–
–
–
–
–
–
Una singola classe di Design
Una parte di una classe
Una classe aggregata
Un gruppo di classi che ereditano da una stessa classe
Un gruppo di classi funzionalmente relazionate
Una relazione
• Una Classe di Analisi potrebbe non essere più necessaria in
Progettazione
• Una Relazione fra Classi di Analisi può diventare una Classe
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
5
Evoluzione delle Classi di Analisi Boundary ed Entity
• Le Classi Boundary diventano Form, WebForm, WebService,
controlli grafici, interfacce a sottosistemi, o classi wrapper
per dispositivi hardware
• Le Classi Entity rappresentano tipicamente oggetti
persistenti (su DB o altro) Æ la loro evoluzione dipende da
come verranno modellate e da una serie di altri parametri:
• Attributi e loro legami
• Operazioni sulle Entity
• Dipendenze con altre parti del sistema
– Molto spesso bisogna modellarle cercando di ridurre al minimo la
dipendenza da specifici modelli di persistenza
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
6
Evoluzione delle Classi di Analisi Control
• Queste classi rappresenteranno “puri oggetti software”
– Sono le classi più difficili da progettare
– Sono responsabili della gestione dei flussi di eventi di UC e
coordinano molte azioni
– Gli oggetti control incapsulano la logica che non è relativa alle
interfacce utente o ai dati e che viene indicata come Business
Logic
La
Laprogettazione
progettazionedelle
delleclassi
classiControl
Controlrichiede
richiedespesso
spessol’uso
l’usoeelala
conoscenza
conoscenzadidiPattern
Patterndidivario
variolivello
livelloche
chepossono
possono
migliorare
migliorarelalastruttura
strutturastatica
statica
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
7
Classificazione dei pattern SW
• Cluster di pattern: raggruppamento per area di
applicazione
• Livello di astrazione:
– Pattern architetturali: descrivono lo schema organizzativo della
struttura che caratterizza un sistema software, individuano le parti
del sistema a cui sono associate responsabilità omogenee e le
relazioni che esistono tra i diversi sottosistemi (esempio: layering).
– Design pattern: costituiscono soluzioni sperimentate a problemi
concreti, utilizzabili in contesti applicativi differenti Æ riporta la
descrizione di un problema noto e propone allo stesso tempo una
soluzione elegante.
– Pattern di implementazione (idiomi): descrivono le modalità
implementative da utilizzare per risolvere problematiche di sviluppo
sfruttando in modo mirato le caratteristiche peculiari di una
particolare piattaforma (per esempio, il .NET Framework).
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
8
Principi di progettazione
• Modularità – il software viene suddiviso in più componenti (moduli) che
vengono integrati per soddisfare i requisiti del problema
– Non si deve eccedere nella modularizzazione poiché la semplicità di ognuno
dei moduli produrrà un aumento della complessità di integrazione
– La modularità facilita la pianificazione dello sviluppo SW, la manutenzione ed
il collaudo del sistema
• Incapsulamento
– Incapsulamento delle informazioni - le informazioni di una classe sono
modificabili solo dalle operazioni della classe stessa, i.e. non sono
direttamente accessibili dall’esterno
– Incapsulamento dell’implementazione - i dettagli dell’implementazione interna
non sono “colti” all’esterno, i.e. un attributo può essere implementato in un
modo ed essere percepito in un altro all’esterno
– N.B. L’uso delle classi, di per sé, non garantisce l’incapsulamento
• Riuso
– Ereditarietà
– Progettazione per componenti
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
9
Classi di Progettazione
• Le classi di progettazione sono classi le cui specifiche sono
talmente complete da poter essere implementate
• Una classe di progettazione è ben formata se rispetta le seguenti
caratteristiche:
– completezza e sufficienza – una classe è completa se fornisce ai suoi
“clienti” tutto ciò che essi si aspettano ed è sufficiente se tutti i suoi
metodi sono finalizzati esclusivamente alla realizzazione delle sue
responsabilità;
– essenzialità – i metodi devono essere progettati per offrire un unico
servizio primitivo e atomico (può essere violato solo per aumentare le
prestazioni del sistema);
– massima coesione – ogni classe deve modellare un unico concetto
astratto con un insieme di responsabilità molto correlate tra loro;
– minima interdipendenza – una classe deve essere associata all’insieme
minimo di altre classi che le consente di realizzare le proprie
responsabilità (all’interno di un package l’interdipendenza può essere
alta).
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
10
Importanza delle interfacce - sottosistemi
• L'idea è quella di separare le specifiche di una funzionalità
(l'interfaccia) dall'implementazione della stessa da parte di un
classificatore, quale una classe poiché l'interfaccia definisce solo un
“contratto” che viene implementato dal classificatore.
• Le interfacce sono efficienti e utili nella modellazione dei
sottosistemi.
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
11
Dipendenze tra package
• Un package è un meccanismo per organizzare elementi simili in gruppi
• Usi
– Organizzare il modello in via di sviluppo
– Unità di gestione della configurazione
– Ridurre la complessità del sistema (modularità)
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
12
Progettazione dell’interfaccia utente
• La progettazione dell’interfaccia utente include:
– Elementi estetici (elementi grafici, colori, meccanismi di interazione)
– Elementi economici (posizionamento delle informazioni, navigazione
dell’interfaccia utente)
– Elementi tecnici (modello degli utenti, componenti riutilizzabili)
• I passi della progettazione
– Sulla base delle specifiche dei requisiti definire gli oggetti dell’interfaccia e le
relative operazioni
– Definire le azioni degli utenti che modificano lo “stato” dell’interfaccia
– Rappresentare ogni “stato” così come si presentaerà all’utente finale
• Fattori da considerare per garantire l’usabilità dell’interfaccia utente:
–
–
–
–
Tempi di risposta
Sistemi guida
Messaggi di errore
Menu e comandi
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
13
Progetto di Sistema
• Progetto dell’Architettura - si occupa della selezione dello stile
architetturale da adottare e della formalizzazione del sistema in componenti:
1) delle loro interfacce di comunicazione e 2) della modalità di
dispiegamento (deployment). Sono prese in considerazione:
– le capacità e i vincoli (dal documento dei requisiti)
– i modelli (dalle specifiche dei requisiti) - classi e casi d’uso
• Progetto di Dettaglio - si occupa del raffinamento/completamento dei
modelli di progetto (es. classi), della definizione dei confini del sistema
mediante: 1) raffinamento delle entità; 2) controllo dei flussi dei processi di
business; 3) gestione degli accessi a servizi esterni. Sono coinvolti:
– i vincoli e le capacità (dal documento dei requisiti)
– i modelli (dalle specifiche dei requisiti) - classi, casi d’uso, diagrammi di sequenza
– principi di progettazione e soluzioni (es. design patterns)
• Progetto dei Dati - si occupa della formalizzazione degli archivi per la
persistenza dei dati a supporto del sistema: Database (relazionali, OO,
relazionali-OO); File System (xml, csv,ecc.). Sono presi in considerazione:
– i requisiti informativi (dal documento dei requisiti)
– le classi di analisi(dalle specifiche dei requisiti)
– L’accesso del sistema ai dati può essere supportato da classi specifiche - Classi
dbInterface
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
14
Indice – struttura doc di progetto
•
•
Scelte progettuali
Architettura
– Definizione dell’architettura (stile/i architetturali)
– Diagramma delle Componenti
• Descrizione delle interfacce
•
•
– Diagramma di Configurazione
Progettazione interfaccia utente
Progetto di Dettaglio
– Diagramma delle Classi
• Specifiche delle Classi
• Pattern utilizzati
•
– Diagrammi comportamentali per gli scenari, processi, classificatori più complessi
Progetto dei Dati
– Database
• Modello E-R
• Progettazione Logica & regole di business
• Progettazione fisica (indici, trigger, stored procedure, ecc.)
– File System (eventuale)
• Descrizione File
•
Appendice
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
15