Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1 2
aRoute
(1.0)
– Progettazione architetturale
UML-A Generated Dependency Class:aRouteCollection Association (0.5)
– Progettazione dettagliata
UML-A Generated Association Class:aNavPoint Association (0.25)
UML-A Generated AssociationAssociation
Class:aWarehouse Association (0.5)Generated
UML-A UML-A Generated Association Class:aNavPoint
(0.25) Association (0.25)
UML-A Generated Class:aWarehouse Association (1.0) Association Class:aNavPoint Association
UML-A Generated Dependency Class:theWarehouseCollection Dependency (1.0)
availableVehicleCollection aRouteCollection
UML-A Generated Dependency Class:theRouter Association (1.0)
UML-A Generated Dependency Class:theRouter Association (0.5)
UML-A Generated Association Class:theWarehouseCollection Dependency (0.5)
UML-A Generated
UML-ADependency
Generated Dependency
Class:theRouter
Class:theRouter
Association Association
(1.0) (1.0)
theAWT aLocation
UML-A Generated Association Class:theRouter Association (0.25)
aRouterDialog aNavPoint
UML-A Generated UML-A
Generated
Generated
Association
Generated
Association
Generated
Association
UML-A Generated Association Class:aWarehouse Association (0.5)
Association
Association
Class:aNavPoint
Association
Class:aRoute
Class:aRoute
Class:aNavPoint
UML-A Generated
AssociationAssociation
Class:aNavPoint
Association
Class:aWarehouse
(0.5)
Association
AssociationAssociation
Class:aRoute (0.5)
(0.25)
(0.25)
(0.5) (0.25)
AssociationAssociation Class:aRoute Association (0.25)
Association (0.5)
7 UML-A Generated
UML-A
aPort
Association
Generated
aSurplus aDifficiency
UML-A Generated Association Class:aWarehouse Association (0.5)
Class:availableGoods
Association Class:aWarehouse
Association (0.5)
Association (0.5)
8
theGoods
L’architettura permette di
Vista di “reverse engineering” controllare la complessità
• Vista architetturale Clock :
Clock
architecture of a
ClockConn
7: request
Vehicle
2: notification
6: notification
9
accept” GraphicsBinding :
GraphicsBinding
10
}
• Procedure • Strutture dati e algoritmo
• Classe (strutture dati e molti algoritmi)
• Funzioni • Package/Moduli (gruppi di classi correlate, magari
• Coroutine interagenti via design pattern)
Questi diversi meccanismi • Moduli/Sottosistemi (moduli interagenti contenenti
• Processi linguistici vengono presi ciascuno molte classi; solo le interfacce pubbliche
• Moduli come elementi atomici della interagiscono con altri moduli/sottosistemi)
progettazione architetturale • Sistemi (sistemi interagenti con altri sistemi - hardware,
• Oggetti
software ed esseri umani)
• Componenti
• Agenti La progettazione architetturale riguarda gli ultimi due
13
livelli 14
Progetto semplice o
Obiettivi di progettazione
complesso?
• Semplicità
CPU con 3 chip (classi)
– Spesso si coniuga con eleganza CPU con 3 chips (classi)
– Il codice è più semplice da capire e correggere Chip 1 Chip 2
– Riduce gli errori Chip 1 Chip 2
• Affidabilità e robustezza
– Gestire input inattesi AND gates OR gates
– Superare gli errori senza crash Registers
ALU
– Non far danni ALU
• Efficacia
Chip 3
– Risolvere i problemi giusti
Shifter
SHIFTER
– Efficienza Chip 3 NOT gates
15 16
Progetto semplice o complesso? Coesione dei moduli
• I due progetti sono funzionalmente equivalenti, • Misura della coerenza funzionale di un
ma quello di destra è modulo
– Difficile da capire
• Ogni modulo dovrebbe avere coesione alta
– Difficile da correggere
• Un modulo ha coerenza funzionale se fa una
– Difficile da estendere o migliorare
cosa sola - e la fa bene
– Difficile da riusare.
– Costoso da manutenere • Le classi componenti di grossi moduli
dovrebbero essere funzionalmente correlate
• Il progetto di sinistra è migliore:
– Massimizza le relazioni intraclasse (coesione)
– Minimizza le relazioni interclasse (accoppiamento)
17 18
Logica Procedurale
“incoerente” “coerente”
Coincidentale:
Coincidentale:Molteplici
Moltepliciazioni
azionieecomponenti
componenticompletamente
completamentescorrelati
scorrelati
Logica:
Logica:serie
seriedidiazioni
azionioocomponenti
componenticorrelate
correlate(e.g.
(e.g.libreria
libreriadidifunzioni
funzionididiIO)
IO)
Temporale:
Temporale: serie di azioni o componenti simultanee (e.g. modulididiinizializzazione)
serie di azioni o componenti simultanee (e.g. moduli inizializzazione) • Se le attività in un
Procedurale:
Procedurale:serie
seriedidiazioni
azioniche
checondividono
condividonosequenze
sequenzedidipassi
passi modulo hanno
Comunicativa:
Comunicativa:coeasione
coeasioneprocedurale
proceduralesugli
suglistessi
stessidati
dati diversi livelli di
Funzionale:
Funzionale:una
unasola
solaazione
azioneoofunzione
funzione coesione, il
modulo ha il grado
19 di livello peggiore 20
Accoppiamento dei moduli Tipi di accoppiamento
• Accoppiamento: Misura del grado di indipendenza di un
Assenza di accoppiamento
insieme di moduli Stamp Coupling Esterno Contenuto
• I moduli di un sistema dovrebbero riportare un accoppiamento Dati Controllo Comune
basso (o lasco)
• Questo si ottiene quando ci sono solo poche dipendenze tra i
moduli, tutte funzionalmente rilevanti e necessarie Basso Spettro dell’accoppiamento Alto
• Il software ad alto accoppiamento è fatto male
(difficile da capire, mantenere, correggere, ecc…) Misura dell’indipendenza funzionale di un insieme di moduli
L’accoppiamento tra i moduli si riduce:
• eliminando relazioni non necessarie Contenuto:
Contenuto:ununmodulo
modulochechereferenzia
referenziaililcontenuto
contenutodidiununaltro
altromodulo
modulo
• riducendo il numero delle relazioni necessarie Comune:
Comune:dueduemoduli
modulihanno
hannoaccesso
accessoagli
aglistessi
stessidati
datiglobali
globali
Esterno: dati comuni tra due moduli con accesso strutturato
Esterno: dati comuni tra due moduli con accesso strutturato
• rilassando le relazioni necessarie. Controllo:
Controllo:un
unmodulo
modulopassa
passaun
unelemento
elementodidicontrollo
controlloadadun
unaltro
altromodulo
modulo
Stamp:
Stamp:ununmodulo
modulofornisce
fornisceparte
partedidiuna
unastruttura
strutturadati
datiper
perun
unaltro
altromodulo
modulo
Dati:
Dati:un
unmodulo
moduloproduce
produceunaunastruttura
strutturadati
datiper
perun
unaltro
altromodulo
moduloche chelalaconsuma
consuma
21 22
25 26
dei campi e dei metodi degli oggetti creabili come double obtained;
System.out.println( "Saldo di Paolo = " +
paolo.account_balance() );
istanza della classe paolo.deposit(100.00);
System.out.println( "Saldo di Paolo = " +
mike.account_balance() );
obtained = paolo.withdraw(20.00);
System.out.println( "Paolo ha ritirato : " +
classe oggetto obtained);
System.out.println( " Saldo di Paolo = " +
paolo.account_balance() );
figaro.deposit(50.00);
System.out.println( " Saldo di Figaro = " +
figaro.account_balance() );
}
}
29 30
Terminologia
L’icona di classe in UML
• Classe. Nome collettivo (dichiarazione di tipo) di tutti gli
oggetti che hanno gli stessi metodi e variabili di istanza.
• Definisce
– Uno stato persistente • Oggetto: Entità strutturata (codice, dati) e con stato la cui
– Un comportamento struttura e stato è invisibile all’esterno dell’oggetto.
• La classe ha • Stato: Lo stato di un oggetto si accede e manipola
– Nome mediante messaggi che invocano metodi
– Attributi
• Variabili di istanza: Variabili contenute nell’oggetto che
– Operazioni
rappresentano il suo stato interno
• Ha una rappresentazione
grafica in forma di un • Messaggio Richiesta ad un oggetto di invocazione di uno
rettangolo diviso in tre parti dei suoi metodi
• Metodo Azione che accede o manipola lo stato interno
del’oggetto (di solito le variabili di istanza).
L’implementazione di tale azione è nascosta al cliente che
31 spedisce messaggi all’oggetto 32
Metodi di analisi OO Il processo OO
I processi OOA hanno tutti la seguente
• Analisi OO: inizio di un processo di sviluppo OO struttura:
• Metodi di analisi OO: 1. Elicitazione dei requisiti
– Booch: processo evolutivo basato un “modello” astratto a 2. Identificazione di scenari e casi d’uso
oggetti
3. “Estrazione” delle classi candidate
– Rumbaugh: OMT (Object Modeling Technique) enfasi su
modelli dinamici e funzionali 4. Identificazione di attributi e metodi
– Jacobson: OOSE (Object Oriented Software Engineering) 5. Definizione di una gerarchia di classi
enfasi sui casi d’uso
6. Costruzione di un modello a oggetti e relazioni
– Coad and Yourdon: enfasi sui livelli della modellazione
– Wirfs-Brock: analisi e progetto sono un continuum
7. Costruzione di un modello di comportamento
degli oggetti
• Simili, con differenze noiose
8. Revisione dell’analisi rispetto ai casi d’uso
• Booch, Rumbaugh e Jacobson si allearono per
creare UML ed il RUP 9. Iterare se necessario
33 34
Analysis Model
Int erfa c e Design documentare un processo di sviluppo OO
c l a ss- ba se d be h a v i or a l
Arc hit ec t ura l Design
• I modelli sono strumenti di
e l e me n ts
class diagrams
analysis packages
e l e me n ts
state diagrams
sequence diagrams
comunicazione tra cliente e sviluppatori
CRC models Da t a / Cla ss Design
Design Model
anche standardizzati
35 36
Analisi = Processo + Modelli
Unified Modelling Language Processo Modello prodotto
1. Elicitazione dei requisiti Diagrammi e scenari dei casi
• UML è un sistema di notazioni principalmente grafiche d’utente e identificazione dei d’uso
(con sintassi, semantica e pragmatica predefinite) per casi d’uso
la modellazione OO 2. Estrazione delle classi Schede Classe- Responsabilità
• UML non è un processo, né è proprietario candidate, identificazione Collaboratore (CRC)
degli attributi e dei metodi,
• Combina le notazioni di Booch, Rumbaugh e Jacobson definizione della gerarchia
• E' uno standard OMG (Object Management Group) delle classi
• E' definito mediante un metamodello 3. Costruzione di un modello a Diagramma delle classi
oggetti e relazioni
• Include:
– Viste (mostrano diverse facce del sistema: utente, strutturale,
operazionale, ecc., anche in relazione al processo di sviluppo) 4. Costruzione di un modello Diagramma delle interazioni
operazionale degli oggetti
– Diagrammi (grafi che descrivono i contenuti di una vista)
– Elementi di modellazione (costrutti usati nei diagrammi)
37 38
41 42
! Pragmatica D2 D3
C2 C3
! Base di UML e UP (con i “Three Amigos” di Rational)
D5
D4
C4 C5
D6
C6 C7
Sem statica
Classe
Utilità di classe
Struttura classi
Vista logica Relazioni tra classi
Struttura oggetti
usa
Job boss
salary
0..1
worker !
Metaclasse Person
eredita
Usa Account
{X or}
Istanza Corporation
Composizione Generalizzazione
Shape
Window
1
1 1
Shape
Shared Target Style
scrollbar 2 title 1 body 1
Dipendenze
ClassA ClassB ClassD
«friend»
«friend»
operationZ()
«instantiate»
«call» ClassC
«refine»
ClassC combines
two logical classes
ClassD ClassE
55 56
Diagrammi dei processi
Aspetti linguistici degli oggetti
57 58
Identità Classificazione
• Raccolta di oggetti simili: classe
• Ogni oggetto denota i dati che gestisce
stessi attributi (variabili d’istanza)
• Ogni oggetto ha una identità
possono esistere due oggetti con dati stesse operazioni (servizi/messaggi)
identici e diversa identità • Classe: astrazione di attributi rilevanti
• L’identità degli oggetti si può realizzare con – le classi si riferiscono al dominio dell’applicazione
un id unico o con una chiave (logical pointer) – Una classe descrive un insieme (infinite) di
• Gli oggetti vengono acceduti mediante l’id oggetti = istanze della classe
unico
è possibile mescolare i meccanismi
59 60
Esempio: classe poligono Classe vs tipo
• Tipo di dato (in senso tradizionale):
• class polygon – dominio + operazioni (e.g. Integer)
– attributi – Si usa per dichiarare variabili
• set of points • Classe:
– Costrutto linguistico, orientato all’implementazione
• line color
– Realizza uno o più tipi OO
• fill color • Tipo OO (interfaccia):
– operazioni – Protocollo compreso da un oggetto
• draw – Insieme di messaggi (operazioni)
61 62
63 64
Generalizzazione Polimorfismo
“calcola area di un cerchio”
• Classe: definizione implicita di un insieme di oggetti “calcola area di un quadrato”
classificazione – unVeicolo ! Veicolo = Insieme di tutti i veicoli
Le operazioni con lo stesso significato
• Generalizzazione: relazione di contenimento insiemistico dovrebbero avere lo stesso nome
generalizzazione
– Moto " Veicolo
• overloading =
Veicolo stesso nome di funzione, implementazione
Veicolo Moto
diversa
• Nei linguaggi procedurali (es.C):
Moto solo per i tipi base (e.g.: int * int, real * real)
una Fiat Marea
una Ducati 999F04
65 66
Esempio Approccio
– Quali sono i metodi? • Definire il problema
• comprare • Creare gli scenari d’uso
• cucinare – Mediante interviste
• invitare – Concentrarsi sulel operazioni principali
– occorre la lista degli (oggetti) invitati
• Usare le schede CRC
• pulire la casa
– Oggetti
• RSVP • Iniziare con quelli più importanti
• andare alla festa – Responsabilità
– Quali sono le responsabilità dei vari • Le cose principali che fanno gli oggetti più importanti
oggetti? – Relazioni con altri oggetti
71 72
Schede CRC CRC Card
• Classe, Responsabilità, Collaborazione
– responsabilità: compiti da eseguire
– collaborazioni: altri oggetti che cooperano con questo
75 76
UML: Unified Modeling Language
I tre passi del progetto OO
• Tre passi iterabili
• Notazione per progetto OO 1. Modellazione dei casi d’uso
• Associata ad un metodo • Determinare come si ottengono i risultati principali
• Parecchi tipi di diagrammi • Orientata alle azioni
• Tecnica: linguaggio naturale
– Diagrammi di classe 2. Modellazione delle classi (e degli oggetti)
• Struttura statica
• Determinare le classi con attributi e relazioni
• Orientata ai dati
– Diagrammi Casi d’Uso
• Funzionalità • Tecnica: schede CRC e poi diagrammi UML di classe
3. Modellazione dinamica
– Diagrammi di sequenza • Determinare le azioni eseguite da o su ciascuna classe
• Vista temporale dello scambio di messaggi tra • Orientata alle azioni
le classi • Tecnica: diagrammi di sequenza e interazione
77 78
Riferimenti
Il design del sw nel SWEBOK • Capitolo 3 del SWEBOK “Software design”
Software Design • IEEE Recommended Practice for Software Design
Descriptions (IEEE 1016-1998)
1. Software Design
Fundamentals
2. Key Issues in
Software Design
3. Software Structure
and Architecture
4. Software Design
Quality Analysis and
5. Software
Design Notations
6. Software Design
Strategies and
• Booch, Object oriented analysis and design with
Evaluation Methods
applications, AW 1993
General design Quality attributes Structural General Strategies
Concurrency Architectural
concepts
Distribution of
Architectural styles
(macroarchitectural
patterns)
evaluation techniques Behavior descriptions
(dynamic view)
(structured) design
Object-oriented
Responsibilities and Collaborations, AW 2002
process components Measures design
Error and exception Design patterns
handline and fault (microarchitectural Data-structrure
Enabling techniques tolerance patterns) centered design
Interaction and Component-based
presentation Families of programs design (CBD)
and frameworks
Data persistence
Other methods
81