Mô tả:
12
giai ®o¹n thiÕt kÕ
(DESIGN PHASE)
Néi dung:
Kh¸i qu¸t chung
ThiÕt kÕ vµ trõu tưîng hãa
ThiÕt kÕ hưíng sù kiÖn
ThiÕt kÕ hưíng d÷ liÖu
ThiÕt kÕ hưíng ®èi tưîng
KiÓm thö
§¸nh gi¸
Huúnh Xu©n HiÖp - CNPM
158
Kh¸i qu¸t chung
(overview)
Hµng tr¨m kü thuËt thiÕt kÕ ®· ra ®êi trong h¬n 30 n¨m qua
ThiÕt kÕ hưíng sù kiÖn (action-oriented)
ph©n r· s¶n phÈm thµnh c¸c m«-®un cã tÝnh chÆt chÏ cao vµ Ýt g¾n kÕt víi
nhau
ThiÕt kÕ hưíng d÷ liÖu (data-oriented)
phô thuéc vµo cÊu tróc d÷ liÖu mµ c¸c xö lý ®ưîc thùc hiÖn trªn ®ã
c¸c kü thuËt næi tiÕng như [Jackson, 1975;1983], [Wanier, 1976;1981] vµ [Orr,
1981]
ThiÕt kÕ hưíng ®èi tưîng
d¹ng tæng hîp, bao gåm c¶ sù kiÖn vµ d÷ liÖu
§Çu vµo: tµi liÖu ®Æc t¶, cho biÕt s¶n phÈm ph¶i lµm g× (what?)
§Çu ra: ®Ó ®¹t ®ưîc nh÷ng c«ng viÖc ®· m« t¶ ë ®Çu vµo, s¶n phÈm ph¶i
thùc hiÖn như thÕ nµo (how?)
Huúnh Xu©n HiÖp - CNPM
159
ThiÕt kÕ vµ trõu tưîng hãa
(design and abstraction)
Giai ®o¹n thiÕt kÕ phÇn mÒm cã 3 ho¹t ®éng chÝnh: kiÕn tróc, chi tiÕt vµ
kiÓm thö
ThiÕt kÕ kiÕn tróc (architectural design, general design, logical design,
high-level design): theo quan ®iÓm trõu tưîng hãa lµ ph©n chia s¶n phÈm
thµnh c¸c m«-®un
ThiÕt kÕ chi tiÕt (detailed design, modular design, physical design, lowlevel design): chi tiÕt hãa tõng m«-®un
chän gi¶i thuËt
chän cÊu tróc d÷ liÖu
KiÓm thö thiÕt kÕ (design testing)
Huúnh Xu©n HiÖp - CNPM
160
Ph©n tÝch dßng d÷ liÖu
(data flow analysis - DFA)
ThiÕt kÕ hưíng sù kiÖn, t¹o ra c¸c m«-®un víi tÝnh chÆt chÏ cao
®Çu vµo: s¬ ®å dßng d÷ liÖu (data flow diagram - DFD)
sau khi hoµn thµnh DFD, nhµ thiÕt kÕ phÇn mÒm ph¶i hoµn tÊt c¸c th«ng tin
vµo/ra cña tõng module
§iÓm trõu tưîng hãa cao nhÊt ®Çu vµo (point of highest abstraction of
input): ®iÓm biÕn chuyÓn d÷ liÖu ®Çu vµo thµnh d÷ liÖu néi t¹i
§iÓm trõu tưîng hãa cao nhÊt ®Çu ra (point of highest abstraction of
output): ®iÓm biÕn chuyÓn d÷ liÖu néi t¹i thµnh ®Çu ra
Huúnh Xu©n HiÖp - CNPM
161
®Çu vµo
®Çu ra
a
b
c
d
e
f
g
h
H×nh 12.1 ThÓ hiÖn d÷ liÖu vµ sù kiÖn cña s¶n phÈm b»ng DFD
®Çu vµo
®Çu ra
a
b
m«-®un ®Çu vµo
c
d
e
f
h
m«-®un ®Çu ra
m«-®un chuyÓn ®æi
®iÓm trõu tîng hãa
cao nhÊt ®Çu vµo
g
®iÓm trõu tîng hãa
cao nhÊt ®Çu ra
H×nh 12.2 C¸c ®iÓm trõu tîng hãa cao nhÊt ®Çu vµo vµ ®Çu ra
Huúnh Xu©n HiÖp - CNPM
162
VÝ dô vÒ DFA : ®Õm sè tõ (words) trong tËp tin
tªn
tËp tin
®äc tªn
tËp tin
tªn
tËp tin
c«ng
nhËn tËp
tin hîp lÖ
c«ng
nhËn tªn
tËp tin
®Õm sè
tõ
®Õm sè
tõ
®Þnh d¹ng
sè lîng tõ
®· ®Õm
®Çu vµo t¹i ®©y
hiÓn thÞ
sè tõ
®Çu ra t¹i ®©y
®iÓm trõu tîng hãa
cao nhÊt ®Çu vµo
Huúnh Xu©n HiÖp - CNPM
®Þnh
d¹ng sè
tõ ®·
®Õm
®Çu ra
mong
®îi
®iÓm trõu tîng hãa
cao nhÊt ®Çu ra
H×nh 12.3 DFD t¹i lÇn lµm
mÞn thø nhÊt
163
cê tr¹ng
th¸i
tªn tËp tin
hîp lÖ
NhËn ®Çu vµo
tªn
tËp tin
§äc tªn tËp tin
Thùc hiÖn ®Õm sè tõ
tªn tËp tin
hîp lÖ
sè lîng
tõ ®· ®Õm
sè lîng
tõ ®· ®Õm
T¹o ®Çu ra
§Õm sè lîng tõ
tªn
tËp tin
cê tr¹ng
th¸i
C«ng nhËn tªn tËp tin
sè lîng
tõ ®· ®Õm
sè tõ ®Õm
®îc ®·
®Þnh d¹ng
§Þnh d¹ng sè tõ ®· ®Õm
sè tõ ®Õm
®îc ®·
®Þnh d¹ng
ThÓ hiÖn sè tõ ®· ®Õm
d÷ liÖu
®iÒu khiÓn
H×nh 12.4 BiÓu ®å cÊu tróc
Huúnh Xu©n HiÖp - CNPM
164
ThiÕt kÕ chi tiÕt 4 m«-®un
Tªn m«-®un
KiÓu tr¶ vÒ
C¸c tham sè ®Çu vµo
C¸c tham sè ®Çu ra
C¸c th«ng b¸o lçi
C¸c tËp tin truy xuÊt
C¸c tËp tin cã thay ®æi trªn ®ã
C¸c m«-®un ®ưîc gäi
M« t¶
Tªn m«-®un
KiÓu tr¶ vÒ
C¸c tham sè ®Çu vµo
C¸c tham sè ®Çu ra
C¸c th«ng b¸o lçi
C¸c tËp tin truy xuÊt
C¸c tËp tin cã thay ®æi trªn ®ã
C¸c m«-®un ®ưîc gäi
M« t¶
Huúnh Xu©n HiÖp - CNPM
§äc tËp tin
String
kh«ng
kh«ng
kh«ng
kh«ng
kh«ng
kh«ng
S¶n phÈm ®ưîc thi hµnh khi ngưêi dïng gâ lÖnh:
word count
Sö dông mét lêi gäi hÖ thèng, m«-®un nµy sÏ truy xuÊt néi dung
chuçi lÖnh do ngưêi sö dông nhËp vµo, t¸ch ra tªn tËp tin vµ tr¶
vÒ kÕt qu¶ lµ tªn tËp tin ®· t¸ch ®ưîc.
C«ng nhËn tªn tËp tin hîp lÖ
boolean
tªn tËp tin: String
kh«ng
kh«ng
kh«ng
kh«ng
kh«ng
M«-®un nµy t¹o mét lêi gäi hÖ thèng ®Ó x¸c ®Þnh sù tån t¹i cña
tËp tin víi tham sè ®Çu vµo lµ tªn tËp tin. M«-®un tr¶ vÒ kÕt qu¶
true nÕu tËp tin ®· tån t¹i vµ false nÕu ngưîc l¹i.
165
Tªn m«-®un
KiÓu tr¶ vÒ
C¸c tham sè ®Çu vµo
C¸c tham sè ®Çu ra
C¸c th«ng b¸o lçi
C¸c tËp tin truy xuÊt
C¸c tËp tin cã thay ®æi trªn ®ã
C¸c m«-®un ®ưîc gäi
M« t¶
§Õm sè lưîng tõ
integer
tªn tËp tin hîp lÖ: String
kh«ng
kh«ng
kh«ng
kh«ng
kh«ng
M«-®un nµy x¸c ®Þnh víi tªn tËp tin hîp lÖ ®Çu vµo lµ tËp tin v¨n
b¶n. Khi ®ã m«-®un sÏ tr¶ vÒ sè tõ cã trong tËp tin v¨n b¶n ,
ngưîc l¹i tr¶ vÒ -1.
Tªn m«-®un
KiÓu tr¶ vÒ
C¸c tham sè ®Çu vµo
C¸c tham sè ®Çu ra
C¸c th«ng b¸o lçi
C¸c tËp tin truy xuÊt
C¸c tËp tin cã thay ®æi trªn ®ã
C¸c m«-®un ®ưîc gäi
T¹o ®Çu ra
void
sè lưîng tõ: integer
kh«ng
kh«ng
kh«ng
kh«ng
§Þnh d¹ng sè tõ
c¸c tham sè: sè tõ:integer, sè tõ ®· ®ưîc ®Þnh d¹ng:String
ThÓ hiÖn sè tõ ®· ®Õm
c¸c tham sè: sè tõ ®· ®ưîc ®Þnh d¹ng:integer: String
M«-®un nµy lÊy tham sè ®Çu vµo lµ sè tõ ®· ®Õm ®ưîc b¾ng
c¸ch gäi m«-®un §Þnh d¹ng sè tõ vµ sau ®ã gäi m«-®un ThÓ
hiÖn sè tõ ®· ®Õm ®Ó thÓ hiÖn sè tõ ®· ®Õm ®ưîc.
M« t¶
H×nh 12.5 ThiÕt kÕ chi tiÕt c¸c m«-®un
Huúnh Xu©n HiÖp - CNPM
166
Ph©n tÝch giao dÞch
(transaction analysis - TA)
ThiÕt kÕ hưíng sù kiÖn
Mét giao dÞch lµ mét thao t¸c theo quan ®iÓm cña ngưêi sö dông s¶n
phÈm
VD: xö lý mét yªu cÇu, in ra danh s¸ch c¸c ®Æt hµng trong ngµy
Xö lý giao dÞch
Bé ph©n tÝch
Xö lý giao dÞch
t1
Xö lý giao dÞch
t2
Bé ®iÒu vËn
Xö lý giao dÞch
t3
HiÖu chØnh mét sè giao dÞch
H×nh 12.6 ThiÕt kÕ d¹ng giao dÞch-xö lý
Huúnh Xu©n HiÖp - CNPM
Xö lý giao dÞch
t4
Xö lý giao dÞch
t5
CËp nhËt mét sè tËp tin
Ghi vµo sæ kÕ to¸n
167
ThiÕt kÕ hưíng ®èi tưîng
(object-oriented design - OOD)
ThiÕt kÕ s¶n phÈm thµnh c¸c ®èi tưîng(object) lµ c¸c thÓ hiÖn cña c¸c líp
(classe) hay c¸c líp con (subclass)
C¸c ng«n ng÷ lËp tr×nh hưíng ®èi tưîng th«ng dông như Smalltalk
[Goldberg vµ Robson, 1989], C++ [Stroustrup, 1991], Eiffel [Meyer,
1992b], Ada95 [ISO/IEC 8652, 1995] vµ Java [Flanagan, 1996]
Khi cµi ®Æt trªn c¸c ng«n ng÷ lËp tr×nh kh«ng hưíng ®èi tưîng tiÕn hµnh
thiÕt kÕ trªn c¸c kiÓu d÷ liÖu trõu tưîng (abstract data type design)
Bao gåm 4 bưíc:
x©y dùng s¬ ®å tư¬ng t¸c cho tõng kÞch b¶n
x©y dùng s¬ ®å líp chi tiÕt
thiÕt kÕ s¶n phÈm theo c¸c ®èi tưîng cña kh¸ch hµng
tiÕn hµnh thiÕt kÕ chi tiÕt
Huúnh Xu©n HiÖp - CNPM
168
Nót
s¸ng lªn: boolean
t¾t nót (abstract)
bËt nót (abstract)
øng dông thang m¸y
Nót trong thang m¸y
t¾t nót
bËt nót
mn
C¸c tiÖn Ých thang m¸y
Nót t¹i c¸c tÇng
t¾t nót
bËt nót
2m-2
®iÒu khiÓn
®iÒu khiÓn
n
Bé ®iÒu khiÓn thang m¸y
1
®iÒu khiÓn
n
1
C¸c cöa thang m¸y
cöa më: Boolean
cöa ®ãng
cöa më
Thang m¸y
cöa më: boolean
chuyÓn thang m¸y lªn trªn
chuyÓn thang m¸y xuèng
H×nh 12.7 S¬ ®å líp chi tiÕt
Huúnh Xu©n HiÖp - CNPM
169
øng dông thang m¸y
bé ®×Òu khiÓn thang m¸y
thang m¸y
nót trong thang m¸y
c¸c tiÖn Ých thang m¸y
c¸c cöa thang m¸y
nót t¹i c¸c tÇng
H×nh 12.8 Quan hÖ kh¸ch hµng-®èi tîng
Huúnh Xu©n HiÖp - CNPM
170
KiÓm thö trong giai ®o¹n thiÕt kÕ
(testing during the design phase)
T×m thÊy lçi trong giai ®o¹n nµy lµ rÊt quan träng
Cã thÓ sö dông
walkthroughs
thanh tra tư¬ng tù như trong giai ®o¹n ®Æc t¶ nhưng cã thÓ kh«ng cã ®¹i
diÖn cña kh¸ch hµng
Ph¶i ph¶n ¸nh ®ưîc hưíng thiÕt kÕ
§¸nh gi¸ giai ®o¹n thiÕt kÕ
(metrics for the design phase)
Cã nhiÒu phư¬ng ph¸p ®¸nh gi¸ trªn c¸c mÆt cña giai ®o¹n thiÕt kÕ
sè lưîng c¸c m«-®un: ®¸nh gi¸ th« vÒ kÝch thưíc cña s¶n phÈm
®é g¾n kÕt cña m«-®un: ®¸nh gi¸ vÒ chÊt lưîng
Huúnh Xu©n HiÖp - CNPM
171
®é nèi kÕt gi÷a c¸c m«-®un: thèng kª vÒ lçi
§é phøc t¹p cña thiÕt kÕ chi tiÕt M b»ng sè lưîng quyÕt ®Þnh nhÞ ph©n
céng víi 1 [McCabe, 1976] (hay sè lưîng nh¸nh trong mét m«-®un)
VD: ®é phøc t¹p khi viÕt mét m«-®un toascii:
- cã sö dông switch cã 128 nh¸nh : 128
- sö dông b¶ng chuyÓn ®æi trùc tiÕp: 1
[Henry vµ Kafura, 1981] M = length × (fan-in × fan-out)2
length : kÝch thưíc m«-®un
fan-in : sè lưîng c¸c luång ®i vµo m«-®un + sè lưîng cÊu tróc d÷ liÖu mµ
m«-®un truy xuÊt
fan-out : sè lưîng c¸c luång ®i ra m«-®un + sè lưîng c¸c cÊu tróc d÷ liÖu
toµn côc mµ m«-®un cËp nhËt
Phư¬ng ph¸p thµnh c«ng nhÊt cho thiÕt kÕ hưíng ®èi tưîng: CDM
[Kitchenham, Pickard vµ Linkman, 1990; Shepperd, 1990]
Mét sè phư¬ng ph¸p kh¸c : [Chidamber vµ Kemerer, 1994], [Binkley and
Schach, 1996;1997;1998]
Huúnh Xu©n HiÖp - CNPM
172
- Xem thêm -