,OSURJHWWRGLGHWWDJOLR //'

Transcription

,OSURJHWWRGLGHWWDJOLR //'
,OSURJHWWRGLGHWWDJOLR//'
Scopo della fase di LLD, detta anche di SURJHWWR SURFHGXUDOH, è
quello di specificare il come debba essere poi implementato
ciascun FRPSRQHQWH, specificando:
•
•
•
•
dettagli algoritmici,
strutture reali dei dati,
relazioni tra funzioni e strutture dati,
packaging del software: cioè come mettere insieme in
moduli funzioni e strutture dati.
Ingegneria del Software
Prof. G. A. Di Lucca - Univ. del Sannio
1
:KDWLVD&RPSRQHQW"
• 20*8QLILHG0RGHOLQJ/DQJXDJH6SHFLILFDWLRQ [OMG01]
defines a component as
– “… a modular, deployable, and replaceable part of a system
that encapsulates implementation and exposes a set of
interfaces.”
• 22 YLHZ: a component contains a set of collaborating classes
• &RQYHQWLRQDOYLHZ: logic, the internal data structures that are
required to implement the processing logic, and an interface
that enables the component to be invoked and data to be
passed to it.
Ingegneria del Software
Prof. G. A. Di Lucca - Univ. del Sannio
Ingegneria del Software
2
1
22&RPSRQHQW
=J=HUOEO ?H=OO
@AOECJ ?KILKJAJP
?KILQPA'K>
-NEJP'K>
JQI>AN,B-=CAO
JQI>AN,B0E@AO
L=LAN1ULA
I=CJEBE?=PEKJ
LNK@Q?PEKJ#A=PQNAO
-NEJP'K>
EJEPE=PA'K>
?KILQPA'K> KOP L=OO'K>PK-NEJPAN EJPANB=?A
?KILQ PA'K>
?KILQPA-=CA KOP ?KILQPA-=LAN KOP ?KILQPA-NK@ KOP ?KILQPA1KP=H'K> KOP EJ PANB=?A
EJ EPE=PA'K>
>QEH@4KNG,N@AN ?DA?G-NEKNEPU L=OO'K>PK -NK@Q?PEKJ AH=>KN=PA@ @AO ECJ ? H=O O
-NEJP' K>
JQI>AN,B-=CAO
JQI>AN,B0E@AO
L=LAN1ULA
L=LAN4AECDP
L=LAN0EVA
L=LAN KHKN
I=CJEBE?=PEKJ
?KHKN/AMQENAIAJPO
LNK@Q?PEKJ#A=PQNAO
?KHH=PEKJ,LPEKJO
>EJ@EJC,LPEKJO
?KRAN0PK?G
>HAA@
LNEKNEPU
PKP=H'K> KOP
4,JQI>AN
?KILQPA-=CA KOP ?KILQPA-=LAN KOP ?KILQPA-NK@ KOP ?KILQPA1KP=H'K> KOP >QEH@4KNG,N@AN ?DA?G-NEKNEPU L=OO'K>PK -NK@Q?PEKJ Ingegneria del Software
Prof. G. A. Di Lucca - Univ. del Sannio
3
&RQYHQWLRQDO&RPSRQHQW
@AOECJ ?KILKJAJP
CAP'K>!=P=
KILQPA-=CA KOP
=??AOO KOPO!
AH=>KN=PA@IK@QHA
-=CA KOP
EJ JQI>AN-=CAO
EJ JQI>AN!K?O
EJ OE@AO
EJ ?KHKN
EJ L=CAOEVA L=CA?KOP
KQP
EJ
FK>OEVA
EJ
?KHKN
EJ
L=CA0EVA KQP
- KQP
0#
CA P'K>!=P= J Q I >A N-=CAOJQ I >AN!K?O
OE@A O?KHKN L=CA 0EVA L=CA
=??AOO KOPO!
-
?KI LQ PA -=CA
KOP
FK>OEVA '0
FK>0EVA?KHKN L=CA 0EVA J QI >A N- =CA OJQ I >AN!K?O
KOP =??A OO KOPO! '0?KHKN
HKKGQ L>=OA L=CA ?KOP -
0# HKKGQ LOEVAB=?PKN
0#
=??A OO KOP! '0?KHKNOEVA
FK>?KI LHA TEPU B=?PKN ' #
OE@A O
OE@A
L=CA?KOP-
Ingegneria del Software
Prof. G. A. Di Lucca - Univ. del Sannio
Ingegneria del Software
KOP 0#9
' #
4
2
%DVLF//'3ULQFLSOHV
•
•
•
•
•
•
The Open-Closed Principle (OCP). ³$PRGXOH>FRPSRQHQW@VKRXOGEHRSHQ
IRUH[WHQVLRQEXWFORVHGIRUPRGLILFDWLRQ
Dependency Inversion Principle (DIP). ³'HSHQGRQDEVWUDFWLRQV'RQRW
GHSHQGRQFRQFUHWLRQV´
The Interface Segregation Principle (ISP). ³0DQ\FOLHQWVSHFLILFLQWHUIDFHVDUH
EHWWHUWKDQRQHJHQHUDOSXUSRVHLQWHUIDFH
The Release Reuse Equivalency Principle (REP). ³7KHJUDQXOHRIUHXVHLVWKH
JUDQXOHRIUHOHDVH´
The Common Closure Principle (CCP). ³&ODVVHVWKDWFKDQJHWRJHWKHUEHORQJ
WRJHWKHU´
The Common Reuse Principle (CRP). ³&ODVVHVWKDWDUHQ¶WUHXVHGWRJHWKHU
VKRXOGQRWEHJURXSHGWRJHWKHU´
Ingegneria del Software
Prof. G. A. Di Lucca - Univ. del Sannio
5
$OJRULWKP'HVLJQ
• the closest design activity to coding
• the approach:
– review the design description for the component
– use stepwise refinement to develop algorithm
– use structured programming to implement procedural logic
– use ‘formal methods’ to prove logic
… non è ancora la fase di codifica: per i dettagli algoritmici ci
si concentra più sugli aspetti semantici che su quelli sintattici
… gli algoritmi sono rappresentati ad un livello di astrazione
maggiore rispetto all’implementazione.
Ingegneria del Software
Prof. G. A. Di Lucca - Univ. del Sannio
Ingegneria del Software
6
3
$OJRULWKP'HVLJQ0RGHO
• represents the algorithm at a level of detail that can be reviewed
for quality
• options:
– graphical (e.g. flowchart, box diagram)
– pseudocode (e.g., PDL) ... choice of many
– programming language
– decision table
– conduct walkthrough to assess quality
Ingegneria del Software
Prof. G. A. Di Lucca - Univ. del Sannio
7
6WUXFWXUHG3URJUDPPLQJIRU3URFHGXUDO'HVLJQ
uses a limited set of logical constructs:
6HTXHQFH
FRQGLWLRQDO— if-then-else, select-case
ORRSV — do-while, repeat until
• leads to more readable, testable code
• can be used in conjunction with ‘proof of correctness’
• important for achieving high quality, but not enough
Ingegneria del Software
Prof. G. A. Di Lucca - Univ. del Sannio
Ingegneria del Software
8
4
3URJUDP'HVLJQ/DQJXDJH3'/
if condition x
then process a;
else process b;
endif
PDL
if-then-else
easy to combine with source code
machine readable, no need for graphics input
graphics can be generated from PDL
enables declaration of data as well as procedure
easier to maintain
Ingegneria del Software
Prof. G. A. Di Lucca - Univ. del Sannio
9
)ORZFKDUW
a
x1
b
x2
x3
d
f
c
e
x4
g
x5
Ingegneria del Software
Prof. G. A. Di Lucca - Univ. del Sannio
Ingegneria del Software
10
5
&DUWHGL1DVVL6KQHLGHUPDQ
Le FDUWH GL 1DVVL6KQHLGHUPDQ 16, dette anche carte GL
&KDSLQ, o GLDJUDPPL D VFDWROH ER[ GLDJUDP, permettono di
rappresentare un algoritmo usando le seguenti primitive:
&RQGL]LRQH
&RQGL]LRQH
LVWUX]LRQH
)
LVWUX]LRQH
«
6HTXHQ]D
9
3DUWH
3DUWH
(/6(
7+(1
&DVR
&DVR
«
&DVR
&RUSR
&RUSR
«
&RUSR
Q
6HOH]LRQHDSLYLH
6HOH]LRQHDYLH
&RQGL]LRQH
&RUSR
5(3($7
&RUSR
817,/
:+,/('2
&RQGL]LRQH
,WHUD]LRQH
Ingegneria del Software
Prof. G. A. Di Lucca - Univ. del Sannio
11
'HFLVLRQ7DEOH
QuaNdo c’è una complessa combinazione di condizioni con le
relative azioni da intraprendere nei vari casi si possono utilizzare le
WDYROH GL GHFLVLRQH che permettono di specificare queste
combinazioni e di selezionare le azioni appropriate sulla base delle
condizioni.
/QHAO
KJ@EPEKJO
NACQH=N?QOPKIAN
7
7
OEHRAN?QOPKIAN
CKH@?QOPKIAN
OLA?E=H@EO?KQJP
7
7
)
7
7 7
)
7
)
7
/QHAO
JK@EO?KQJP
=LLHULAN?AJP@EO?KQJP
=LLHULAN?AJP@EO?KQJP
=LLHU=@@EPEKJ=HTLAN?AJP@EO?KQJP
Ingegneria del Software
Prof. G. A. Di Lucca - Univ. del Sannio
Ingegneria del Software
12
6
'HFLVLRQ7DEOH
La tavola viene così costruita:
• nel TXDGUDQWH VXSHULRUH VLQLVWUR è riportato l’elenco delle
condizioni;
• nel TXDGUDQWH LQIHULRUH VLQLVWUR è riportato l’elenco delle
azioni;nel TXDGUDQWHVXSHULRUHGHVWUR vengono riportate tutte le
combinazioni di condizioni possibili: una 9 nella casella indica
che la condizione è soddisfatta, una ) che non lo è, un trattino è
indifferente (GRQ¶WFDUH);
• nel TXDGUDQWH LQIHULRUH GHVWUR, per ciascuna combinazione di
condizioni, viene posta una ; in corrispondenza dell’azione
appropriata da eseguire.
Ingegneria del Software
Prof. G. A. Di Lucca - Univ. del Sannio
13
'HFLVLRQ7DEOH
Per la costruzione della tavola bisogna:
• elencare tutte le azioni che possono essere associate ad una
procedura specifica ( o modulo);
• elencare tutte le condizioni ( o decisioni) che si hanno nella
procedura;
• associare gli specifici insiemi di condizioni alle azioni
corrispondenti, eliminando le combinazioni impossibili; altrimenti
sviluppare ogni possibile permutazione delle condizioni elencate;
• definire le regole, indicando quale/i azione/i si applicano ad un
determinato insieme di condizioni.
Ingegneria del Software
Prof. G. A. Di Lucca - Univ. del Sannio
Ingegneria del Software
14
7
'HFLVLRQ7DEOH
Se nella tavola compaiono 2 o più colonne con la stessa combinazione
di condizioni essa è detta DPELJXD;
le associate regole di decisione sono dette ULGRQGDQWL se l’azione
specificata è la stessa, altrimenti sono dette FRQWUDGGLWWRULH (il che
significa che bisogna eseguire più azioni in maniera concorrente fra
loro o non deterministiche).
La tavola di decisione è detta FRPSOHWD se ogni possibile
combinazione di condizioni ha un’azione corrispondente, il che
significa Q combinazioni per Q condizioni. Se qualche combinazione,
e la relativa azione, non è specificata, la tavola è detta LQFRPSOHWD.
Ingegneria del Software
Prof. G. A. Di Lucca - Univ. del Sannio
Ingegneria del Software
15
8