Tải bản đầy đủ (.pdf) (122 trang)

Giáo án - Bài giảng học tập công nghệ thông tin: Phân tích thiết kế hệ thống ngôn ngữ UML

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.48 MB, 122 trang )



1








TÀI LIU MÔN HC PHÂN TÍCH VÀ THIT K HTTT
THEO UML
(ây là tài liu su tm, tng hp)

GING VIÊN PH TRÁCH: NGUYN C CNG








GING VIÊN: TÔN THT HOÀ AN – DNG KIU HOA
(Su tm tng hp)


2
MC LC
CHNG 1: TNG QUAN V PHÂN TÍCH THIT K H THNG 6



1.1. Dn nhp 6

1.1.1. Tính trc quan 6

1.1.2. Mô hình tru tng 6

1.1.3. Mô hình hóa trc quan 6

1.2. Mô t chu trình phát trin phn mm 7

1.2.1. Software Development – mt bài toán phc tp 7

1.2.2. Chu Trình Phát Trin Phn Mm (Software Development Life Cycle) 8

1.2.3. Các giai on ca Chu Trình Phát Trin Phn Mm 9

1.3. Phng pháp hng chc nng và phng pháp hng i tng 13

1.4. u im ca mô hình hng i tng 13

1.4.1. Tính tái s dng (Reusable) 13

1.4.2. Các giai on ca chu trình phát trin phn mm vi mô hình hng i tng 14

1.5. Phn câu hi 16

CHNG 2: NGÔN NG MÔ HÌNH HÓA THNG NHT LÀ GÌ? 17

2.1. Gii thiu UML 17


2.1.1. Mô hình hóa h thng phn mm 17

2.1.2. Trc khi UML ra i 18

2.1.3. S ra i ca UML 18

2.1.4. UML (Unifield Modeling Language) 19

2.1.5. Phng pháp và các ngôn ng mô hình hoá 19

2.2. UML trong phân tích thi!t k! h thng 19

2.3. UML và các giai o"n phát trin h thng 20

2.4. Phn câu hi 21

CHNG 3: KHÁI QUÁT V UML 22

3.1. UML và các giai o"n ca chu trình phát trin phn mm 22

3.1.1. Giai on nghiên cu s b 22

3.1.2. Giai on phân tích 22

3.1.3. Giai on thit k 22

3.1.4. Giai on xây dng 22

3.1.5. Th nghim 23


3.2. Các thành phn ca ngôn ng# UML 23

3.3. Hng nhìn (View) 23

3.3.1. Hng nhìn Use case (Use case View) 25

3.3.2. Hng nhìn logic (Logical View) 25

3.3.3. Hng nhìn thành phn (Component View) 25

3.3.4. Hng nhìn song song (Concurrency View) 26

3.3.5. Hng nhìn trin khai (Deployment View) 26

3.4. Biu $ (diagram) 26

3.4.1. Biu  Use case (Use Case Diagram) 26

3.4.2. Biu  lp (Class Diagram) 27

3.4.3. Biu  i tng (Object Diagram) 28

3.4.4. Biu  trng thái (State Diagram) 28



3
3.4.5. Biu  trình t (Sequence Diagram) 29


3.4.6. Biu  cng tác (Collaboration Diagram) 29

3.4.7. Biu  hot ng (Activity Diagram) 30

3.4.8. Biu  thành phn (Component Diagram) 30

3.4.9. Biu  trin khai (Deployment Diagram) 31

3.5. Phn t% mô hình (model element) 32

3.6. C ch! chung (General Mechanism) 33

3.6.1. Trang trí (Adornment) 33

3.6.2. Ghi chú (Note) 34

3.6.3. c t (Specification) 34

3.7. M& r'ng UML 35

3.7.1. Khuôn mu (Stereotype) 35

3.7.2. Giá tr ính kèm (Tagged Value) 36

3.7.3. Hn ch (Constraint) 36

3.8. Mô hình hóa vi UML 37

3.9. Công c( (Tool) 40


3.10. Tóm t)t v UML 41

3.11. Phn câu hi 42

CHNG 4: MÔ HÌNH HÓA USE CASE 43

4.1. Gii thiu Use Case 43

4.2. M't s ví d( Use Case 44

4.3. S* cn thi!t phi có Use Case 44

4.4. Mô hình hóa Use Case 45

4.5. Biu $ Use Case 46

4.5.1. H thng 47

4.5.2. Tác nhân 48

4.5.3. Tìm tác nhân 49

4.5.4. Biu din tác nhân trong ngôn ng UML 49

4.5.5. Use Case 50

4.5.6. Tìm Use Case 51

4.5.7. Ví d tìm Use Case 52


4.6. Các bi!n th (Variations) trong m't Use Case 53

4.7. Quan h gi#a các Use Case 54

4.7.1. Quan h m rng 54

4.7.2. Quan h s dng 55

4.7.3. Quan h chung nhóm 56

4.8. Miêu t Use Case 57

4.9. Th% Use Case 60

4.10. Th*c hin các Use Case 61

4.11. Tóm t)t v Use Case 63

4.12. Phn câu hi 63

CHNG 5 : MÔ HÌNH I T+NG 65

5.1. Lp, i tng và quan h – các thành phn c bn ca mô hình 65

5.1.1. i tng (Object) 65

5.1.2. Trng thái, ng x và nhn din ca i tng 65

5.1.3. Lp (Class) 66




4
5.1.4. Biu  lp (Class diagram) 67

5.2. Tìm lp 68

5.2.1. Phân tích phm vi bài toán  tìm lp 69

5.2.2. Các lp ng c viên 72

5.2.3. Loi b các lp ng c viên không thích hp 73

5.3. Lp và i tng trong UML 74

5.3.1. Tên lp (class name) 74

5.3.2. Thuc tính (attribute) 74

5.3.3. Phng thc (method) 75

5.3.4. Kí hiu i tng 76

5.4. Quan h gi#a các lp 77

5.5. Liên h (Association) 78

5.5.1. Vai trò trong liên h 78

5.5.2. Liên h mt chiu (Uni-Directional Association) 79


5.5.3. S lng (Cardinality) trong liên h 79

5.5.4. Phát hin liên h 80

5.5.5. X lý các liên h không cn thit 80

5.5.6. Nâng c!p các mi liên h 81

5.6. Quan h k!t tp (Aggregation) 85

5.6.1. Khái nim kt tp 85

5.6.2. Kí hiu kt tp 86

5.6.3. Kt tp và liên h 87

5.7. Khái quát hóa và chuyên bit hóa (Generalization & Specialization) 87

5.7.1. Kí hiu khái quát hóa và chuyên bit hóa 88

5.7.2. Yu t phân bit (Discriminatior) 89

5.8. Quan h ph( thu'c và nâng c,p (Dependency & Refinement) 92

5.9. Nâng c,p mô hình qua các vòng l-p k! ti!p 94

5.10. Ch,t lng mô hình 95

5.10.1. Th nào là mt mô hình tt? 96


5.10.2. Ta có th giao tip vi mô hình? 96

5.10.3. Mô hình có phù hp vi mc ích ca nó không? 96

5.10.4. N"m b"t nhng im tr#ng yu 97

5.10.5. Phi hp các mô hình 97

5.10.6.  phc tp ca mô hình 97

5.11. Tóm t)t v mô hình i tng 97

5.12. Phn câu hi 98

CHNG 6 : MÔ HÌNH HÓA .NG 100

6.1. S* cn thi!t có mô hình 'ng (Dynamic Model) 100

6.2. Các thành phn ca mô hình 'ng 100

6.3. u im ca mô hình 'ng 102

6.4. S* kin và thông ip (Event & Message) 103

6.4.1. S kin (Event) 103

6.4.2. Thông ip (Message) 105

6.5. Biu $ tun t* (Sequence Diagram) 106


6.6. Biu $ c'ng tác (Collaboration Diagram) 108



5
6.7. Biu $ tr"ng thái (State Diagram) 109

6.7.1. Trng thái và s bin i trng thái (State transition) 109

6.7.2. Biu  trng thái 110

6.7.3. Nhn bit trng thái và s kin 111

6.7.4. Mt s li mách bo cho vic to dng biu  trng thái 112

6.8. Biu $ ho"t 'ng (Activity Diagram) 114

6.9. Vòng /i i tng (Object Lifecycle) 117

6.9.1. Vòng i sinh ra và cht i 118

6.9.2. Vòng i lp 118

6.10. Xem xét l"i mô hình 'ng 118

6.10.1. Th$m v!n biu  trng thái 118

6.10.2. Phi hp s kin 119


6.10.3. Bao gi thì s dng biu  nào 119

6.10.4. Lp con và biu  trng thái 120

6.11. Phi hp mô hình i tng và mô hình 'ng 120

6.12. Tóm t)t v mô hình 'ng 121

6.13. Phn câu hi 121




6
CHNG 1: TNG QUAN V PHÂN TÍCH THIT K H THNG
1.1. Dn nhp
1.1.1. Tính trc quan
Chúng ta có th th!y r%ng: "Mt s tp hp d liu phc tp nh!t nh khi c trình bày b%ng  th s&
truyn ti n ngi #c nhiu thông tin hn so vi các d liu thô". Vi phn mm c'ng vy, khi
ngành Công nghip ca chúng ta ngày càng phát trin, các h thng s& tr nên phc tp hn. Kh n(ng
n"m b"t và kim soát s phc tp ó ca chúng ta i kèm vi kh n(ng trình bày h thng mt cách
toàn din - mt s trình bày vt ra ngoài gii hn ca nhng dòng lnh thô. S thành công trên th
trng ca nhng ngôn ng nh Visual Basic và phn giao din trc quan ca C++, Java ã cho th!y
s trình bày trc quan mang tính ct yu i vi quá trình phát trin các h thng phc tp.
1.1.2. Mô hình tru tng
Trc ây, có mt thi gian dài, ngành công nghip chúng ta ã phi nói ti mt "Cuc khng hong
phn mm". Các cuc tranh lun u da trên thc t là ch)ng nhng nhiu  án phn mm không th
sn sinh ra nhng h thng tho mãn òi h i và nhu cu ca khách hàng, mà còn vt quá ngân sách và
thi hn. Các công ngh mi nh lp trình hng i tng, lp trình trc quan c'ng nh các môi
trng phát trin tiên tin có giúp chúng ta nâng cao n(ng su!t lao ng, nhng trong nhiu trng

hp, chúng ch* hng ti tng th!p nh!t ca vic phát trin phn mm: phn vit lnh (coding). Mt
trong nhng v!n  chính ca ngành phát trin phn mm thi nay là có nhiu  án b"t tay vào lp
trình quá sm và tp trung quá nhiu vào vic vit code. Lý do mt phn là do ban qun tr thiu hiu
bit v quy trình phát trin phn mm và h# ny lo âu khi th!y i quân lp trình ca h# không vit
code. Và bn thân các lp trình viên c'ng cm th!y an tâm hn khi h# ngi vit code - vn là tác v mà
h# quen thuc! – hn là khi xây dng các mô hình tru tng cho h thng mà h# phi to nên.
1.1.3. Mô hình hóa trc quan
Mô hình hoá trc quan là mt phng thc t duy v v!n  s dng các mô hình c t chc xoay
quanh các khái nim i thc. Mô hình giúp chúng ta hiu v!n , giao tip vi m#i ngi có liên quan
n d án (khách hàng, chuyên gia l+nh vc thuc  án, nhà phân tích, nhà thit k, …). Mô hình r!t
hu dng trong vic mô hình hoá doanh nghip, son tho tài liu, thit k chng trình c'ng nh ngân
hàng d liu. Mô hình giúp hiu các òi h i ca h thng tt hn, to các thit k rõ ràng hn và xây
dng nên các h thng d bo trì hn.
Mô hình là kt qu ca s tru tng hóa nh%m miêu t các thành phn ct yu ca mt v!n  hay mt
c!u trúc phc tp qua vic l#c bt các chi tit không quan tr#ng và làm cho v!n  tr thành d hiu
hn. Tru tng hóa là mt n(ng lc c(n bn ca con ngi, cho phép chúng ta gii quyt các v!n 
phc tp. Các k, s, ngh s+ và th th công ã xây dng mô hình t hàng ngàn n(m nay  th
nghim thit k trc khi thc hin. Phát trin phn mm c'ng không là ngoi l.  xây dng các h
thng phc tp, nhà phát trin phi tru tng hóa nhiu hng nhìn khác nhau ca h thng, s dng
ký hiu chính xác  xây dng mô hình, kim tra xem mô hình có th a mãn các òi h i ca h thng,
và dn dn b sung thêm chi tit  chuyn các mô hình thành thc hin.
Chúng ta xây dng mô hình cho các h thng phc tp bi chúng ta không th hiu th!u áo nhng h
thng nh th trong trng thái toàn v-n ca chúng. Kh n(ng th!u hiu và n"m b"t tính phc tp ca


7
con ngi là có hn. iu này ta có th th!y rõ trong ví d ca ngành xây dng. Nu bn mun to mt
túp lu  góc vn, bn có th b"t tay vào xây ngay. Nu bn xây mt ngôi nhà, có l& bn s& cn ti
bn v&, nhng nu bn mun xây mt toà nhà ch#c tri thì ch"c ch"n bn không th không cn bn v&.
Th gii phn mm ca chúng ta c'ng th. Ch* tp trung vào các dòng code hay thm chí c phân tích

Forms trong Visual Basic ch)ng cung c!p mt cái nhìn toàn cc v vic phát trin  án. Xây dng mô
hình cho phép nhà thit k tp trung vào bc tranh ln v s tng tác gia các thành phn trong  án,
tránh b sa ly vào nhng chi tit riêng bit ca tng thành phn.
Mt môi trng kinh doanh mang tính cnh tranh gay g"t và luôn luôn thay i dn n tính phc tp
ngày càng t(ng cao, và tính phc tp này t ra nhng thách thc c trng cho các nhà phát trin h
thng. Mô hình giúp chúng ta t chc, trình bày trc quan, th!u hiu và to nên các h thng phc tp.
Chúng giúp chúng ta áp ng các thách thc ca vic phát trin phn mm, hôm nay c'ng nh ngày
mai.
1.2. Mô t chu trình phát trin phn mm
1.2.1. Software Development – mt bài toán phc tp
Kinh nghim ca nhiu nhà thit k và phát trin cho th!y phát trin phn mm là mt bài toán phc
tp. Xin nêu mt s các lý do thng c k n:
Nhng ngi phát trin phn mm r!t khó hiu cho úng nhng gì ngi dùng cn
Yêu cu ca ngi dùng thng thay i trong thi gian phát trin.
Yêu cu thng c miêu t b%ng v(n bn, dài dòng, khó hiu, nhiu khi thm chí
mâu thun.
i quân phát trin phn mm, vn là ngi "ngoài cuc", r!t khó nhn thc th!u áo
các mi quan h tim $n và phc tp cn c th hin chính xác trong các ng dng
ln.
Kh n(ng n"m b"t các d liu phc tp ca con ngi (ti cùng mt thi im) là có
hn.
Khó nh lng chính xác hiu su!t ca thành ph$m và th a mãn chính xác s mong
ch t phía ngi dùng.
Ch#n la phn cng và phn mm thích hp cho gii pháp là mt trong nhng thách
thc ln i vi Designer.
Phn mm ngoài ra cn có kh n(ng thích ng và m rng. Phn mm c thit k tt là phn mm
ng vng trc nhng bin i trong môi trng, dù t phía cng ng ngi dùng hay t phía công
ngh. Ví d phn mm ã c phát trin cho mt nhà b(ng cn có kh n(ng tái s dng cho mt nhà
b(ng khác vi r!t ít sa i hoc hoàn toàn không cn sa i. Phn mm tho mãn các yêu cu ó
c coi là phn mm có kh n(ng thích ng.

Mt phn mm có kh n(ng m rng là phn mm c thit k sao cho d phát trin theo yêu cu ca
ngi dùng mà không cn sa cha nhiu.
Chính vì vy, mt s các khim khuyt thng gp trong phát trin phn mm là:


8
Hiu không úng nhng gì ngi dùng cn
Không th thích ng cho phù hp vi nhng thay i v yêu cu i vi h thng
Các Module không khp vi nhau
Phn mm khó bo trì và nâng c!p, m rng
Phát hin tr các l. hng ca d án
Ch!t lng phn mm kém
Hiu n(ng ca phn mm th!p
Các thành viên trong nhóm không bit c ai ã thay i cái gì, khi nào,  âu, ti sao
phi thay i.
1.2.2. Chu Trình Phát Trin Phn Mm (Software Development Life Cycle)
Vì phát trin phn mm là mt bài toán khó, nên có l& trc ht ta cn im qua mt s các công vic
c(n bn ca quá trình này. Thng ngi ta hay tp hp chúng theo tin trình thi gian mt cách tng
i, xoay quanh chu trình ca mt phn mm, dn ti kt qa khái nim Chu Trình Phát Trin Phn
Mm (Software Development Life Cycle - SDLC) nh sau:
Chu Trình Phát Trin Phn Mm là mt chu.i các hot ng ca nhà phân tích (Analyst), nhà thit k
(Designer), ngi phát trin (Developer) và ngi dùng (User)  phát trin và thc hin mt h thng
thông tin. Nhng hot ng này c thc hin trong nhiu giai #an khác nhau.
Nhà phân tích (Analyst): là ngi nghiên cu yêu cu ca khách hàng/ngi dùng  nh
ngh+a mt phm vi bài toán, nhn dng nhu cu ca mt t chc, xác nh xem nhân lc,
phng pháp và công ngh máy tính có th làm sao  ci thin mt cách tt nh!t công tác ca
t chc này.
Nhà thi!t k! (Designer): thit k h thng theo hng c!u trúc ca database, screens, forms
và reports – quyt nh các yêu cu v phn cng và phn mm cho h thng cn c phát
trin.

Chuyên gia l0nh v*c (Domain Experts): là nhng ngi hiu thc ch!t v!n  cùng t!t c
nhng s phc tp ca h thng cn tin h#c hoá. H# không nh!t thit phi là nhà lp trình,
nhng h# có th giúp nhà lp trình hiu yêu cu t ra i vi h thng cn phát trin. Quá trình
phát trin phn mm s& có r!t nhiu thun li nu i ng' làm phn mm có c s tr giúp
ca h#.
Lp trình viên (Programmer): là nhng ngi da trên các phân tích và thit k  vit
chng trình (coding) cho h thng b%ng ngôn ng lp trình ã c thng nh!t.
Ng/i dùng (User): là i tng phc v ca h thng cn c phát trin.
 cho rõ hn, xin l!y ví d v mt v!n  n gin sau:
Ngi bình thng chúng ta khi nhìn mt chic xe ô tô thng s& có mt bc tranh t bên ngoài nh
sau:


9
V,n 

Hình 1.1: Nhìn v!n  ô tô ca ngi bình thng
Chuyên gia l+nh vc s& giúp nhà phân tích "trình bày li" v!n  nh sau:

Hình 1.2: Nhìn v!n  ô tô ca chuyên gia phân tích
Chính vì s tr giúp ca chuyên gia l+nh vc có th óng vai trò r!t quan tr#ng nên trong nhng giai
on u ca quá trình phát trin phn mm, kt qu phân tích nên c th hin sao cho d hiu i
vi các chuyên gia l+nh vc. ây c'ng là môt trong r!t nhiu lý do khin cho phng pháp hng i
tng c nhiu ngi hng ng.
1.2.3. Các giai on ca Chu Trình Phát Trin Phn Mm
Chu trình ca mt phn mm có th c chia thành các giai on nh sau:
Nghiên cu s b (Preliminary Investigation hay còn g#i là Feasibility Study)
Phân tích yêu cu (Analysis)
Thit k h thng (Design of the System)
Xây dng phn mm (Software Construction)

Th nghim h thng (System Testing)
Thc hin, trin khai (System Implementation)
Bo trì, nâng c!p (System Maintenance)
a) Nghiên cu s b':
Câu h i quan tr#ng nh!t khi phát trin mt h thng hoàn toàn không phi câu h i mang tính phng
pháp lun. Mà c'ng ch)ng phi câu h i v k, thut. Nó là mt câu h i dng nh có v/ n gin,


10
nhng tht ra c bit khó tr li: “ây có úng là mt h thng  thc hin không?” áng bun là
chính câu h i này trong thc t thng ch)ng h c t ra và li càng không c tr li. Mc dù
vic lm ln v phng pháp hay quyt nh sai lm v k, thut c'ng có th dn ti th!t bi, nhng
thng thì d án có th c cu vãn nu có y  tài nguyên cùng s c g"ng quên mình ca các
nhân viên tài gi i. Nhng s& ch)ng mt ai và mt iu gì cu vãn cho mt h thng phn mm hoàn
toàn ch)ng c cn ti hoc c g"ng t ng hóa mt quy trình lm lc.
Trc khi b"t tay vào mt d án, bn phi có mt ý tng cho nó. Ý tng này i song song vi vic
n"m b"t các yêu cu và xu!t hin trong giai on khi u. Nó hoàn t!t mt phát biu: "H thng mà
chúng ta mong mun s& làm c nhng vic nh sau ". Trong sut giai on này, chúng ta to nên
mt bc tranh v ý tng ó, r!t nhiu gi thuyt s& c công nhn hay loi b . Các hot ng trong
thi gian này thng bao gm thu thp các ý tng, nhn bit ri ro, nhn bit các giao din bên ngoài,
nhn bit các các chc n(ng chính mà h thng cn cung c!p, và có th to mt vài nguyên mu dùng
 “minh chng các khái nim ca h thng”. Ý tng có th n t nhiu ngun khác nhau: khách
hàng, chuyên gia l+nh vc, các nhà phát trin khác, chuyên gia v k, ngh, các bn nghiên cu tính kh
thi c'ng nh vic xem xét các h thng khác ang tn ti. Mt khía cnh cn nh"c ti là code vit trong
thi k0 này thng s& b "b i”, bi chúng c vit nh%m mc ích th$m tra hay tr giúp các gi
thuyt khác nhau, ch cha phi th code c vit theo kt qu phân tích và thit k th!u áo.
Trong giai #an nghiên cu s b, nhóm phát trin h thng cn xem xét các yêu cu ca doanh nghip
(cn dùng h thng), nhng ngun tài nguyên có th s dng, công ngh c'ng nh cng ng ngi
dùng cùng các ý tng ca h# i vi h thng mi. Có th thc hin tho lun, nghiên cu, xem xét
khía cnh thng mi, phân tích kh n(ng li-l., phân tích các trng hp s dng và to các nguyên

mu  xây dng nên mt khái nim cho h thng ích cùng vi các mc ích, quyn u tiên và phm
vi ca nó.
Thng trong giai on này ngi ta c'ng tin hành to mt phiên bn thô ca lch trình và k hoch
s dng tài nguyên.
Mt giai on nghiên cu s b thích áng s& lp nên tp hp các yêu cu (dù  mc  khái quát cao)
i vi mt h thng kh thi và c mong mun, k c v phng din k, thut ln xã hi. Mt giai
on nghiên cu s b không c thc hin tho áng s& dn ti các h thng không c mong
mun, "t tin, b!t kh thi và c nh ngh+a lm lc – nhng h thng thng ch)ng c hoàn t!t
hay s dng.
Kt qu ca giai on nghiên cu s b là Báo Cáo Kt Qu Nghiên Cu Tính Kh Thi. Khi h thng
tng lai c ch!p nhn da trên bn báo cáo này c'ng là lúc giai on Phân tích b"t u.
b) Phân tích yêu cu:
Sau khi ã xem xét v tính kh thi ca h thng c'ng nh to lp mt bc tranh s b ca d án, chúng
ta bc sang giai on thng c coi là quan tr#ng nh!t trong các công vic lp trình: hiu h thng
cn xây dng. Ngi thc hin công vic này là nhà phân tích.
Quá trình phân tích nhìn chung là h qu ca vic tr li câu h i "H thng cn phi làm gì?". Quá
trình phân tích bao gm vic nghiên cu chi tit h thng doanh nghip hin thi, tìm cho ra nguyên lý
hot ng ca nó và nhng v trí có th c nâng cao, ci thin. Bên cnh ó là vic nghiên cu xem
xét các chc n(ng mà h thng cn cung c!p và các mi quan h ca chúng, bên trong c'ng nh vi
phía ngoài h thng. Trong toàn b giai on này, nhà phân tích và ngi dùng cn cng tác mt thit
vi nhau  xác nh các yêu cu i vi h thng, tc là các tính n(ng mi cn phi c a vào h
thng.


11
Nhng mc tiêu c th ca giai on phân tích là:
Xác nh h thng cn phi làm gì.
Nghiên cu th!u áo t!t c các chc n(ng cn cung c!p và nhng yu t liên quan
Xây dng mt mô hình nêu bt bn ch!t v!n  t mt hng nhìn có thc (trong i
sng thc).

Trao nh ngh+a v!n  cho chuyên gia l+nh vc  nhn s ánh giá, góp ý.
Kt qu ca giai on phân tích là bn c T Yêu Cu (Requirements Specifications).
c) Thi!t k! h thng:
Sau giai on phân tích, khi các yêu cu c th i vi h thng ã c xác nh, giai on tip theo
là thit k cho các yêu cu mi. Công tác thit k xoay quanh câu h i chính: H thng làm cách nào 
th a mãn các yêu cu ã c nêu trong c T Yêu Cu?
Mt s các công vic thng c thc hin trong giai on thit k:
Nhn bit form nhp liu tùy theo các thành phn d liu cn nhp.
Nhn bit reports và nhng output mà h thng mi phi sn sinh
Thit k forms (v& trên gi!y hay máy tính, s dng công c thit k)
Nhn bit các thành phn d liu và bng  to database
1c tính các th tc gii thích quá trình x lý t input n output.
Kt qu giai on thit k là c T Thit K (Design Specifications). Bn c T Thit K Chi Tit
s& c chuyn sang cho các lp trình viên  thc hin giai on xây dng phn mm.
d) Xây d*ng phn mm:
ây là giai on vit lnh (code) thc s, to h thng. Tng ngi vit code thc hin nhng yêu cu
ã c nhà thit k nh s2n. C'ng chính ngi vit code chu trách nhim vit tài liu liên quan n
chng trình, gii thích th tc (procedure) mà anh ta to nên c vit nh th nào và lý do cho vic
này.
 m bo chng trình c vit nên phi tho mãn m#i yêu cu có ghi trc trong bn c T
Thit K Chi Tit, ngi vit code c'ng ng thi phi tin hành th nghim phn chng trình ca
mình. Phn th nghim trong giai on này có th c chia thành hai bc chính:
+ Th% nghim n v1: Ngi vit code chy th các phn chng trình ca mình vi d liu
gi (test/dummy data). Vic này c thc hin theo mt k hoch th, c'ng do chính ngi
vit code son ra. Mc ích chính trong giai on th này là xem chng trình có cho ra nhng
kt qu mong i. Giai on th nghim n v nhiu khi c g#i là "Th hp tr"ng" (White
Box Testing).
+ Th% nghim n v1 'c lp: Công vic này do mt thành viên khác trong nhóm m trách.
Cn ch#n ngi không có liên quan trc tip n vic vit code ca n v chng trình cn th



12
nghim  m bo tính “c lp”. Công vic th t này c'ng c thc hin da trên k
hoch th do ngi vit code son nên.
e) Th% nghim h thng:
Sau khi các th tc ã c th nghim riêng, cn phi th nghim toàn b h thng. M#i th tc c
tích hp và chy th, kim tra xem m#i chi tit ghi trong c T Yêu Cu và nhng mong ch ca
ngi dùng có c tho mãn. D liu th cn c ch#n l#c c bit, kt qu cn c phân tích 
phát hin m#i lch lc so vi mong ch.
f) Th*c hin, trin khai:
Trong giai on này, h thng va phát trin s& c trin khai sao cho phía ngi dùng. Trc khi 
ngi dùng tht s b"t tay vào s dng h thng, nhóm các nhà phát trin cn to các file d liu cn
thit c'ng nh hu!n luyn cho ngi dùng,  m bo h thng c s dng hu hiu nh!t.
g) Bo trì, nâng c,p:
Tùy theo các bin i trong môi trng s dng, h thng có th tr nên l.i thi hay cn phi c sa
i nâng c!p  s dng có hiu qu. Hot ng bo trì h thng có th r!t khác bit tùy theo mc 
sa i và nâng c!p cn thit.
S $ tng quát các giai o"n ca Chu Trình Phát Trin Phn Mm:

Hình 1.3: S  tng quát các giai on ca Chu Trình Phát Trin Phn Mm



13
1.3. Phng pháp hng chc nng và phng pháp hng i tng
1.3.1. Phng pháp hng chc nng
ây là li tip cn truyn thng ca ngành Công ngh phn mm. Theo li tip cn này, chúng ta quan
tâm ch yu ti nhng thông tin mà h thng s& gi gìn. Chúng ta h i ngi dùng xem h# s& cn nhng
thông tin nào, ri chúng ta thit k ngân hàng d liu  cha nhng thông tin ó, cung c!p Forms 
nhp thông tin và in báo cáo  trình bày các thông tin. Nói mt cách khác, chúng ta tp trung vào

thông tin và không m!y  ý n nhng gì có th xy ra vi nhng h thng ó và cách hot ng (ng
x) ca h thng là ra sao. ây là li tim cn xoay quanh d liu và ã c áp dng  to nên hàng
ngàn h thng trong sut nhiu n(m tri.
Li tip cn xoay quanh d liu là phng pháp tt cho vic thit k ngân hàng d liu và n"m b"t
thông tin, nhng nu áp dng cho vic thit k ng dng li có th khin phát sinh nhiu khó kh(n. Mt
trong nhng thách thc ln là yêu cu i vi các h thng thng xuyên thay i. Mt h thng xoay
quanh d liu có th d dàng x lý vic thay i ngân hàng d liu, nhng li khó thc thi nhng thay
i trong nguyên t"c nghip v hay cách hot ng ca h thng.
Phng pháp hng i tng ã c phát trin  tr li cho v!n  ó. Vi li tip cn hng i
tng, chúng ta tp trung vào c hai mt ca v!n  : thông tin và cách hot ng.
1.3.2. Phng pháp hng i tng
Hng i tng là thut ng thông dng hin thi ca ngành công nghip phn mm. Các công ty
ang nhanh chóng tìm cách áp dng và tích hp công ngh mi này vào các ng dng ca h#. Tht s
là a phn các ng dng hin thi u mang tính hng i tng. Nhng hng i tng có ngh+a là
gì?
Li tip cn hng i tng là mt li t duy v v!n  theo li ánh x các thành phn trong bài toán
vào các i tng ngoài i thc. Vi li tip cn này, chúng ta chia ng dng thành các thành phn
nh , g#i là các i tng, chúng tng i c lp vi nhau. Sau ó ta có th xây dng ng dng b%ng
cách ch"p các i tng ó li vi nhau. Hãy ngh+ n trò chi xây lâu ài b%ng các mu g Bc u
tiên là to hay mua mt vài loi mu g. c(n bn, t ó to nên các khi xây dng c(n bn ca mình.
Mt khi ã có các khi xây dng ó, bn có th ch"p ráp chúng li vi nhau  to lâu ài. Tng t
nh vy mt khi ã xây dng mt s i tng c(n bn trong th gii máy tính, bn có th ch"p chúng
li vi nhau  to ng dng ca mình.
Xin l!y mt ví d n gin: v!n  rút tin mt ti nhà b(ng. Các “mu g.“ thành phn  ây s& là ánh
x ca các i tng ngoài i thc nh tài khon, nhân viên, khách hàng, …Và ng dng s& c s&
c nhn din c'ng nh gii áp xoay quanh các i tng ó.
1.4. u im ca mô hình hng i tng
1.4.1. Tính tái s dng (Reusable)
Phng pháp phân tích và thit k hng i tng thc hin theo các thut ng và khái nim ca
phm vi l+nh vc ng dng (tc là ca doanh nghip hay n v mà h thng tng lai cn phc v),

nên nó to s tip cn tng ng gia h thng và v!n  thc ngoài i. Trong ví d bán xe ô tô, m#i
giai on phân tích thit k và thc hin u xoay quanh các khái nim nh khách hàng, nhân viên bán
hàng, xe ô tô, … Vì quá trình phát trin phn mm ng thi là quá trình cng tác ca khách


14
hàng/ngi dùng, nhà phân tích, nhà thit k, nhà phát trin, chuyên gia l+nh vc, chuyên gia k, thut,
nên li tip cn này khin cho vic giao tip gia h# vi nhau c d dàng hn.
Mt trong nhng u im quan tr#ng bc nh!t ca phng pháp phân tích và thit k hng i tng
là tính tái s dng: bn có th to các thành phn (i tng) mt ln và dùng chúng nhiu ln sau ó.
Ging nh vic bn có th tái s dng các khi xây dng (hay bn sao ca nó ) trong mt toà lâu ài,
mt ngôi nhà , mt con tàu v' tr, bn c'ng có th tái s dng các thành phn (i tng) c(n bn
trong các thit k hng i tng c'ng nh code ca mt h thng k toán, h thng kim kê, hoc
mt h thng t hàng.
Vì các i tng ã c th nghim k, càng trong ln dùng trc ó, nên kh n(ng tái s dng i
tng có tác dng gim thiu l.i và các khó kh(n trong vic bo trì, giúp t(ng tc  thit k và phát
trin phn mm.
Phng pháp hng i tng giúp chúng ta x lý các v!n  phc tp trong phát trin phn mm và
to ra các th h phn mm có kh n(ng thích ng và bn ch"c.
1.4.2. Các giai on ca chu trình phát trin phn mm vi mô hình hng i tng
Phân tích hng i tng (Object Oriented Analysis - OOA):
Là giai #an phát trin mt mô hình chính xác và súc tích ca v!n , có thành phn là các i tng
và khái nim i thc, d hiu i vi ngi s dng.
Trong giai on OOA, v!n  c trình bày b%ng các thut ng tng ng vi các i tng có thc.
Thêm vào ó, h thng cn phi c nh ngh+a sao cho ngi không chuyên Tin h#c có th d dàng
hiu c.
Da trên mt v!n  có s2n, nhà phân tích cn ánh x các i tng hay thc th có thc nh khách
hàng, ô tô, ngi bán hàng, … vào thit k  to ra c bn thit k gn cn vi tình hung thc. Mô
hình thit k s& cha các thc th trong mt v!n  có thc và gi nguyên các mu hình v c!u trúc,
quan h c'ng nh hành vi ca chúng. Nói mt cách khác, s dng phng pháp hng i tng chúng

ta có th mô hình hóa các thc th thuc mt v!n  có thc mà vn gi c c!u trúc, quan h c'ng
nh hành vi ca chúng.
i vi ví d mt phòng bán ô tô, giai on OOA s& nhn bit c các thc th nh:
Khách hàng
Ngi bán hàng
Phiu t hàng
Phiu (hoá n) thanh toán
Xe ô tô
Tng tác và quan h gia các i tng trên là:
Ngi bán hàng dn khách hàng tham quan phòng trng bày xe.
Khách hàng ch#n mt chic xe


15
Khách hàng vit phiu t xe
Khách hàng tr tin xe
Xe ô tô c giao n cho khách hàng
i vi ví d nhà b(ng l/, giai on OOA s& nhn bit c các thc th nh:
Loi tài khon: ATM (rút tin t ng), Savings (tit kim), Current (bình thng),
Fixed (u t),
Khách hàng
Nhân viên
Phòng máy tính.
Tng tác và quan h gia các i tng trên:
Mt khách hàng mi m mt tài khon tit kim
Chuyn tin t tài khon tit kim sang tài khon u t
Chuyn tin t tài khon tit kim sang tài khon ATM
Xin chú ý là  ây, nh ã nói, ta chú ý n c hai khía cnh: thông tin và cách hot ng ca h thng
(tc là nhng gì có th xy ra vi nhng thông tin ó).
Li phân tích b%ng kiu ánh x "i thc” vào máy tính nh th tht s là u im ln ca phng

pháp hng i tng.
Thi!t k! hng i tng (Object Oriented Design - OOD):
Là giai on t chc chng trình thành các tp hp i tng cng tác, m.i i tng trong ó là thc
th ca mt lp. Các lp là thành viên ca mt cây c!u trúc vi mi quan h tha k.
Mc ích ca giai on OOD là to thit k da trên kt qu ca giai on OOA, da trên nhng quy
nh phi chc n(ng, nhng yêu cu v môi trng, nhng yêu cu v kh n(ng thc thi, OOD tp
trung vào vic ci thin kt qu ca OOA, ti u hóa gii pháp ã c cung c!p trong khi vn m
bo tho mãn t!t c các yêu cu ã c xác lp.
Trong giai on OOD, nhà thit k nh ngh+a các chc n(ng, th tc (operations), thuc tính
(attributes) c'ng nh mi quan h ca mt hay nhiu lp (class) và quyt nh chúng cn phi c
iu ch*nh sao cho phù hp vi môi trng phát trin. ây c'ng là giai on  thit k ngân hàng d
liu và áp dng các k, thut tiêu chu$n hóa.
V cui giai on OOD, nhà thit k a ra mt lot các biu  (diagram) khác nhau. Các biu  này
có th c chia thành hai nhóm chính là T+nh và ng. Các biu  t+nh biu th các lp và i tng,
trong khi biu  ng biu th tng tác gia các lp và phng thc hot ng chính xác ca chúng.
Các lp ó sau này có th c nhóm thành các gói (Packages) tc là các n v thành phn nh hn
ca ng dng.
Lp trình hng i tng (Object Oriented Programming - OOP):


16
Giai on xây dng phn mm có th c thc hin s dng k, thut lp trình hng i tng. ó là
phng thc thc hin thit k hng i tng qua vic s dng mt ngôn ng lp trình có h. tr các
tính n(ng hng i tng. Mt vài ngôn ng hng i tng thng c nh"c ti là C++ và Java.
Kt qu chung cuc ca giai on này là mt lot các code chy c, nó ch* c a vào s dng
sau khi ã tri qua nhiu vòng quay ca nhiu bc th nghim khác nhau.
1.5. Phn câu hi
Hi: Mt s tp hp d liu phc tp nh!t nh khi c trình bày b%ng  th s& truyn ti n
ngi #c nhiu thông tin hn so vi các d liu thô?
áp: úng

Hi: Mô hình giúp chúng ta t chc, trình bày trc quan, th!u hiu và to nên các h thng phc tp.
áp: úng
Hi: 1u im ln nh!t ca mô hình hng i tng là tính tái s dng (Reusable)?
áp: úng.
  



17
CHNG 2: NGÔN NG MÔ HÌNH HÓA THNG NHT LÀ GÌ?


 

 



2.1. Gii thiu UML
2.1.1. Mô hình hóa h thng phn mm
Nh ã trình bày  phn trc, mc tiêu ca giai on phân tích h thng là sn xu!t ra mt mô hình
tng th ca h thng cn xây dng. Mô hình này cn phi c trình bày theo hng nhìn (View) ca
khách hàng hay ngi s dng và làm sao  h# hiu c. Mô hình này c'ng có th c s dng 
xác nh các yêu cu ca ngi dùng i vi h thng và qua ó giúp chúng ta ánh giá tính kh thi
ca d án.
Tm quan tr#ng ca mô hình ã c l+nh hi mt cách th!u áo trong hu nh t!t c các ngành khoa
h#c k, thut t nhiu th k3 nay. B!t k0  âu, khi mun xây dng mt vt th nào ó, u tiên ngi
ta ã to nên các bn v&  quyt nh c ngoi hình ln phng thc hot ng ca nó. Ch)ng hn các
bn v& k, thut thng gp là mt dng mô hình quen thuc. Mô hình nhìn chung là mt cách mô t
ca mt vt th nào ó. Vt ó có th tn ti trong mt s giai on nh!t nh, dù ó là giai on thit

k hay giai on xây dng hoc ch* là mt k hoch. Nhà thit k cn phi to ra các mô hình mô t t!t
c các khía cnh khác nhau ca sn ph$m. Ngoài ra, mt mô hình có th c chia thành nhiu hng
nhìn, m.i hng nhìn trong s chúng s& mô t mt khía cnh riêng bit ca sn ph$m hay h thng cn
c xây dng. Mt mô hình c'ng có th c xây dng trong nhiu giai on và  m.i giai on, mô
hình s& c b sung thêm mt s chi tit nh!t nh.
Mô hình thng c mô t trong ngôn ng trc quan, iu ó có ngh+a là a phn các thông tin c
th hin b%ng các ký hiu  h#a và các kt ni gia chúng, ch* khi cn thit mt s thông tin mi c
biu din  dng v(n bn; Theo úng nh câu ngn ng "Mt bc tranh nói nhiu hn c ngàn t". To
mô hình cho các h thng phn mm trc khi thc s xây dng nên chúng, ã tr thành mt chu$n
mc trong vic phát trin phn mm và c ch!p nhn trong cng ng làm phn mm ging nh
trong b!t k0 mt ngành khoa h#c k, thut nào khác. Vic biu din mô hình phi thoã mãn các yu t
sau:
Chính xác (accurate): Mô t úng h thng cn xây dng.
ng nh!t (consistent): Các view khác nhau không c mâu thu$n vi nhau.
Có th hiu c (understandable): Cho nhng ngi xây dng ln s dng
D thay i (changeable)
D dàng liên lc vi các mô hình khác.
Có th nói thêm r%ng mô hình là mt s n gin hoá hin thc. Mô hình c xây dng nên  chúng
ta d dàng hiu và hiu tt hn h thng cn xây dng. To mô hình s& giúp cho chúng ta hiu th!u áo
mt h thng phc tp trong s toàn th ca nó.
Nói tóm li, mô hình hóa mt h thng nh%m mc ích:
Hình dung mt h thng theo thc t hay theo mong mun ca chúng ta .


18
Ch* rõ c!u trúc hoc ng x ca h thng.
To mt khuôn mu hng dn nhà phát trin trong sut quá trình xây dng h thng.
Ghi li các quyt nh ca nhà phát trin  s dng sau này.
2.1.2. Trc khi UML ra i
u nhng n(m 1980, ngành công ngh phn mm ch* có duy nh!t mt ngôn ng hng i tng là

Simula. Sang na sau ca thp k3 1980, các ngôn ng hng i tng nh Smalltalk và C++ xu!t
hin. Cùng vi chúng, ny sinh nhu cu mô hình hoá các h thng phn mm theo hng i tng. Và
mt vài trong s nhng ngôn ng mô hình hoá xu!t hin nhng n(m u thp k3 90 c nhiu ngi
dùng là:
Grady Booch’s Booch Modeling Methodology
James Rambaugh’s Object Modeling Technique – OMT
Ivar Jacobson’s OOSE Methodology
Hewlett- Packard’s Fusion
Coad and Yordon’s OOA and OOD
M.i phng pháp lun và ngôn ng trên u có h thng ký hiu riêng, phng pháp x lý riêng và
công c h. tr riêng, khin ny ra cuc tranh lun phng pháp nào là tt nh!t. ây là cuc tranh lun
khó có câu tr li, bi t!t c các phng pháp trên u có nhng im mnh và im yu riêng. Vì th,
các nhà phát trin phn mm nhiu kinh nghim thng s dng phi hp các im mnh ca m.i
phng pháp cho ng dng ca mình. Trong thc t, s khác bit gia các phng pháp ó hu nh
không áng k và theo cùng tin trình thi gian, t!t c nhng phng pháp trên ã tim cn li và b
sung ln cho nhau. Chính hin thc này ã c nhng ngi tiên phong trong l+nh vc mô hình hoá
hng i tng nhn ra và h# quyt nh ngi li cùng nhau  tích hp nhng im mnh ca m.i
phng pháp và a ra mt mô hình thng nh!t cho l+nh vc công ngh phn mm.
2.1.3. S ra i ca UML
Trong bi cnh trên, ngi ta nhn th!y cn thit phi cung c!p mt phng pháp tim cn c chu$n
hoá và thng nh!t cho vic mô hình hoá hng i tng. Yêu cu c th là a ra mt tp hp chu$n
hoá các ký hiu (Notation) và các biu  (Diagram)  n"m b"t các quyt nh v mt thit k mt
cách rõ ràng, rành mch. ã có ba công trình tiên phong nh"m ti mc tiêu ó, chúng c thc hin
di s lãnh o ca James Rumbaugh, Grady Booch và Ivar Jacobson. Chính nhng c g"ng này dn
n kt qu là xây dng c mt Ngôn Ng Mô Hình Hoá Thng Nh!t (Unifield Modeling Language
– UML).
UML là mt ngôn ng mô hình hoá thng nh!t có phn chính bao gm nhng ký hiu hình h#c, c
các phng pháp hng i tng s dng  th hin và miêu t các thit k ca mt h thng. Nó là
mt ngôn ng  c t, trc quan hoá, xây dng và làm su liu cho nhiu khía cnh khác nhau ca
mt h thng có nng  phn mm cao. UML có th c s dng làm công c giao tip gia ngi

dùng, nhà phân tích, nhà thit k và nhà phát trin phn mm.


19
Trong quá trình phát trin có nhiu công ty ã h. tr và khuyn khích phát trin UML có th k ti nh
: Hewlett Packard, Microsoft, Oracle, IBM, Unisys.
2.1.4. UML (Unifield Modeling Language)
Ngôn ng mô hình hóa thng nh!t (Unifield Modeling Language – UML) là mt ngôn ng  biu din
mô hình theo hng i tng c xây dng bi ba tác gi trên vi ch ích là:
Mô hình hoá các h thng s dng các khái nim hng i tng.
Thit lp mt kt ni t nhn thc ca con ngi n các s kin cn mô hình hoá.
Gii quyt v!n  v mc  tha k trong các h thng phc tp, có nhiu ràng buc
khác nhau.
To mt ngôn ng mô hình hoá có th s dng c bi ngi và máy.
2.1.5. Phng pháp và các ngôn ng mô hình hoá
Phng pháp hay phng thc (method) là mt cách trc tip c!u trúc hoá s suy ngh+ và hành ng
ca con ngi. Phng pháp cho ngi s dng bit phi làm gì, làm nh th nào, khi nào và ti sao
(mc ích ca hành ng). Phng pháp cha các mô hình (model), các mô hình c dùng  mô t
nhng gì s dng cho vic truyn t kt qu trong quá trình s dng phng pháp. im khác nhau
chính gia mt phng pháp và mt ngôn ng mô hình hoá (modeling language) là ngôn ng mô hình
hoá không có mt tin trình (process) hay các câu lnh (instruction) mô t nhng công vic ngi s
dng cn làm.
Mt mô hình c biu din theo mt ngôn ng mô hình hoá. Ngôn ng mô hình hoá bao gm các ký
hiu – nhng biu tng c dùng trong mô hình – và mt tp các quy t"c ch* cách s dng chúng.
Các quy t"c này bao gm:
Syntactic (Cú pháp): cho bit hình dng các biu tng và cách kt hp chúng trong
ngôn ng.
Semantic (Ng ngh+a): cho bit ý ngh+a ca m.i biu tng, chúng c hiu th nào
khi n%m trong hoc không n%m trong ng cnh ca các biu tng khác.
Pragmatic : nh ngh+a ý ngh+a ca biu tng  sao cho mc ích ca mô hình c

th hin và m#i ngi có th hiu c.

2.2. UML trong phân tích thi!t k! h thng
UML có th c s dng trong nhiu giai on, t phát trin, thit k cho ti thc hin và bo trì. Vì
mc ích chính ca ngôn ng này là dùng các biu  hng i tng  mô t h thng nên min
ng dng ca UML bao gm nhiu loi h thng khác nhau nh:
H thng thng tin (Information System): C!t gi, l!y, bin i biu din thông tin cho
ngi s dng. X lý nhng khong d liu ln có các quan h phc tp , mà chúng c lu
tr trong các c s d liu quan h hay hng i tng .


20
H thng k2 thut (Technical System): X lý và iu khin các thit b k, thut nh vin
thông, h thng quân s, hay các quá trình công nghip. ây là loi thit b phi x lý các giao
tip c bit , không có phn mm chu$n và thng là các h thng thi gian thc (real time).
H thng nhúng (Embeded System): Thc hin trên phn cng g"n vào các thit b nh in
thoi di ng, iu khin xe hi, … iu này c thc hin b%ng vic lp trình mc th!p vi
h. tr thi gian thc. Nhng h thng này thng không có các thit b nh màn hình +a cng,

H thng phân b ( Distributed System): c phân b trên mt s máy cho phép truyn d
liu t ni này n ni khác mt cách d dàng. Chúng òi h i các c ch liên lc ng b 
m bo toàn v-n d liu và thng c xây dng trên mt s các k, thut i tng nh
CORBA, COM/DCOM, hay Java Beans/RMI.
H thng Giao d1ch (Business System): Mô t mc ích, tài nguyên (con ngi, máy tính,
…), các quy t"c (lut pháp, chin thut kinh doanh, c ch, …), và công vic hot ng kinh
doanh.
Phn mm h thng (System Software): nh ngh+a c s h tng k, thut cho phn mm
khác s dng, ch)ng hn nh h iu hành, c s d liu, giao din ngi s dng.
2.3. UML và các giai o"n phát trin h thng
Preliminary Investigation: use cases th hin các yêu cu ca ngi dùng. Phn miêu t use

case xác nh các yêu cu, phn diagram th hin mi quan h và giao tip vi h thng.
Analysis: Mc ích chính ca giai #an này là tru tng hóa và tìm hiu các c c!u có
trong phm vi bài toán. Class diagrams trên bình din tru tng hóa các thc th ngoài i
thc c s dng  làm rõ s tn ti c'ng nh mi quan h ca chúng. Ch* nhng lp (class)
n%m trong phm vi bài toán mi áng quan tâm.
Design: Kt qu phn analysis c phát trin thành gii pháp k, thut. Các lp c mô
hình hóa chi tit  cung c!p h tng k, thut nh giao din, nn tng cho database, … Kt qu
phn Design là các c t chi tit cho giai on xây dng phn mm.
Development: Mô hình Design c chuyn thành code. Programmer s dng các UML
diagrams trong giai on Design  hiu v!n  và to code.
Testing: S dng các UML diagrams trong các giai on trc. Có 4 hình thc kim tra h
thng:
Unit testing (class diagrams & class specifications) : kim tra tng n th,
c dùng  kim tra các lp hay các nhóm n th.
Integration testing (integration diagrams & collaboration diagrams) : kim tra
tích hp là kim tra kt hp các component vi các lp  xem chúng hot ng
vi nhau có úng không.
System testing (use-case diagrams) : kim tra xem h thng có áp ng c
chc n(ng mà ngi s dng yêu cu hay không.


21
Acceptance testing: Kim tra tính ch!p nhn c ca h thng, thng c
thc hin bi khách hàng, vic kim tra này thc hin tng t nh kim tra h
thng.
2.4. Phn câu hi
Hi: UML (Unifield Modeling Language) là gì?
áp: Ngôn ng mô hình hóa thng nh!t – UML là mt ngôn ng  biu din mô hình theo
hng i tng.
Hi: im khác nhau c bn gia phng pháp (method) và mt ngôn ng mô hình hoá (modeling

language) là gì?
áp: im khác nhau c bn gia mt phng pháp và mt ngôn ng mô hình hoá là ngôn
ng mô hình hoá không có mt tin trình (process) hay các câu lnh (instruction) mô t nhng
công vic ngi s dng cn làm mà nó bao gm các ký hiu – nhng biu tng c dùng
trong mô hình – và mt tp các quy t"c ch* cách s dng chúng.



22
CHNG 3: KHÁI QUÁT V UML


 

 



3.1. UML và các giai o"n ca chu trình phát trin phn mm
3.1.1. Giai on nghiên cu s b
UML a ra khái nim Use Case  n"m b"t các yêu cu ca khách hàng (ngi s dng). UML s
dng biu  Use case (Use Case Diagram)  nêu bt mi quan h c'ng nh s giao tip vi h thng.
Qua phng pháp mô hình hóa Use case, các tác nhân (Actor) bên ngoài quan tâm n h thng s&
c mô hình hóa song song vi chc n(ng mà h# òi h i t phía h thng (tc là Use case). Các tác
nhân và các Use case c mô hình hóa cùng các mi quan h và c miêu t trong biu  Use case
ca UML. M.i mt Use case c mô t trong tài liu, và nó s& c t các yêu cu ca khách hàng:
Anh ta hay ch ta ch i iu gì  phía h thng mà không h  ý n vic chc n(ng này s& c
thc thi ra sao.
3.1.2. Giai on phân tích
Giai on phân tích quan tâm n quá trình tru tng hóa u tiên (các lp và các i tng) c'ng

nh c ch hin hu trong phm vi v!n . Sau khi nhà phân tích ã nhn bit c các lp thành phn
ca mô hình c'ng nh mi quan h gia chúng vi nhau, các lp cùng các mi quan h ó s& c
miêu t b%ng công c biu  lp (class diagram) ca UML. S cng tác gia các lp nh%m thc hin
các Use case c'ng s& c miêu t nh vào các mô hình ng (dynamic models) ca UML. Trong giai
on phân tích, ch* duy nh!t các lp có tn ti trong phm vi v!n  (các khái nim i thc) là c
mô hình hóa. Các lp k, thut nh ngh+a chi tit c'ng nh gii pháp trong h thng phn mm, ví d
nh các lp cho giao din ngi dùng, cho ngân hàng d liu, cho s giao tip, trùng hp, v.v , cha
phi là mi quan tâm ca giai on này.
3.1.3. Giai on thit k
Trong giai on này, kt qu ca giai on phân tích s& c m rng thành mt gii pháp k, thut.
Các lp mi s& c b sung  to thành mt h tng c s k, thut: Giao din ngi dùng, các chc
n(ng  lu tr các i tng trong ngân hàng d liu, giao tip vi các h thng khác, giao din vi
các thit b ngoi vi và các máy móc khác trong h thng, Các lp thuc phm vi v!n  có t giai
on phân tích s& c "nhúng" vào h tng c s k, thut này, to ra kh n(ng thay i trong c hai
phng din: Phm vi v!n  và h tng c s. Giai on thit k s& a ra kt qu là bn c t chi tit
cho giai on xây dng h thng.
3.1.4. Giai on xây dng
Trong giai on xây dng (giai on lp trình), các lp ca giai on thit k s& c bin thành nhng
dòng code c th trong mt ngôn ng lp trình hng i tng c th (không nên dùng mt ngôn ng
lp trình hng chc n(ng!). Ph thuc vào kh n(ng ca ngôn ng c s dng, ây có th là mt
công vic khó kh(n hay d dàng. Khi to ra các mô hình phân tích và thit k trong UML, tt nh!t nên
c g"ng né tránh vic ngay lp tc bin i các mô hình này thành các dòng code. Trong nhng giai
on trc, mô hình c s dng  d hiu, d giao tip và to nên c!u trúc ca h thng; vì vy, vi


23
vàng a ra nhng kt lun v vic vit code có th s& thành mt tr ngi cho vic to ra các mô hình
chính xác và n gin. Giai on xây dng là mt giai on riêng bit, ni các mô hình c chuyn
thành code.
3.1.5. Th nghim

Nh ã trình bày trong phn Chu Trình Phát Trin Phn Mm, mt h thng phn mm thng c
th nghim qua nhiu giai on và vi nhiu nhóm th nghim khác nhau. Các nhóm s dng nhiu
loi biu  UML khác nhau làm nn tng cho công vic ca mình: Th nghim n v s dng biu
 lp (class diagram) và c t lp, th nghim tích hp thng s dng biu  thành phn
(component diagram) và biu  cng tác (collaboration diagram), và giai on th nghim h thng s
dng biu  Use case (use case diagram)  m bo h thng có phng thc hot ng úng nh ã
c nh ngh+a t ban u trong các biu  này.
3.2. Các thành phn ca ngôn ng# UML
Ngôn ng UML bao gm mt lot các phn t  h#a (graphic element) có th c kp hp vi nhau
 to ra các biu . Bi ây là mt ngôn ng, nên UML c'ng có các nguyên t"c  kt hp các phn
t ó.
Mt s nhng thành phn ch yu ca ngôn ng UML:
Hng nhìn (view): Hng nhìn ch* ra nhng khía cnh khác nhau ca h thng cn phi
c mô hình hóa. Mt hng nhìn không phi là mt bn v&, mà là mt s tru tng hóa bao
gm mt lot các biu  khác nhau. Ch* qua vic nh ngh+a ca mt lot các hng nhìn khác
nhau, m.i hng nhìn ch* ra mt khía cnh riêng bit ca h thng, ngi ta mi có th to
dng nên mt bc tranh hoàn thin v h thng. C'ng chính các hng nhìn này ni kt ngôn
ng mô hình hóa vi quy trình c ch#n cho giai on phát trin.
Biu  (diagram): Biu  là các hình v& miêu t ni dung trong mt hng nhìn. UML có
t!t c 9 loi biu  khác nhau c s dng trong nhng s kt hp khác nhau  cung c!p t!t
c các hng nhìn ca mt h thng.
Phn t mô hình hóa (model element): Các khái nim c s dng trong các biu  c
g#i là các phn t mô hình, th hin các khái nim hng i tng quen thuc. Ví d nh lp,
i tng, thông ip c'ng nh các quan h gia các khái nim này, bao gm c liên kt, ph
thuc, khái quát hóa. Mt phn t mô hình thng c s dng trong nhiu biu  khác nhau,
nhng nó luôn luôn có ch* mt ý ngh+a và mt kí hiu.
C ch chung: C ch chung cung c!p thêm nhng li nhn xét b sung, các thông tin c'ng
nh các quy t"c ng pháp chung v mt phn t mô hình; chúng còn cung c!p thêm các c ch
 có th m rng ngôn ng UML cho phù hp vi mt phng pháp xác nh (mt quy trình,
mt t chc hoc mt ngi dùng).

3.3. Hng nhìn (View)
Mô hình hóa mt h thng phc tp là mt vic làm khó kh(n. Lý tng nh!t là toàn b h thng c
miêu t ch* trong mt bn v&, mt bn v& nh ngh+a mt cách rõ ràng và mch lc toàn b h thng,
mt bn v& ngoài ra li còn d giao tip và d hiu. Mc dù vy, thng thì ây là chuyn b!t kh thi.
Mt bn v& không th n"m b"t t!t c các thông tin cn thit  miêu t mt h thng. Mt h thng cn


24
phi c miêu t vi mt lot các khía cnh khác nhau: V mt chc n(ng (c!u trúc t+nh ca nó c'ng
nh các tng tác ng), v mt phi chc n(ng (yêu cu v thi gian, v  áng tin cy, v quá trình
thc thi, v.v. và v.v.) c'ng nh v khía cnh t chc (t chc làm vic, ánh x nó vào các code module,
). Vì vy mt h thng thng c miêu t trong mt lot các hng nhìn khác nhau, m.i hng
nhìn s& th hin mt bc nh ánh x ca toàn b h thng và ch* ra mt khía cnh riêng ca h thng.

Hình 3.1- Các View trong UML
M.i mt hng nhìn c miêu t trong mt lot các biu , cha ng các thông tin nêu bt khía
cnh c bit ó ca h thng. Trong thc t khi phân tích và thit k r!t d xy ra s trùng lp thông
tin, cho nên mt biu  trên tht t có th là thành phn ca nhiu hng nhìn khác nhau. Khi nhìn h
thng t nhiu hng nhìn khác nhau, ti mt thi im có th ngi ta ch* tp trung vào mt khía cnh
ca h thng. Mt biu  trong mt hng nhìn c th nào ó cn phi   n gin  to iu
kin giao tip d dàng,  dính lin vi các biu  khác c'ng nh các hng nhìn khác, làm sao cho
bc tranh toàn cnh ca h thng c miêu t b%ng s kt hp t!t c các thông tin t t!t c các hng
nhìn. Mt biu  cha các kí hiu hình h#c mô t các phn t mô hình ca h thng. UML có t!t c
các hng nhìn sau:
Hng nhìn Use case (use case view) : ây là hng nhìn ch* ra khía cnh chc n(ng ca mt
h thng, nhìn t hng tác nhân bên ngoài.
Hng nhìn logic (logical view): ch* ra chc n(ng s& c thit k bên trong h thng nh th
nào, qua các khái nim v c!u trúc t+nh c'ng nh ng x ng ca h thng.
Hng nhìn thành phn (component view): ch* ra khía cnh t chc ca các thành phn code.
Hng nhìn song song (concurrency view): ch* ra s tn ti song song/ trùng hp trong h

thng, hng n v!n  giao tip và ng b hóa trong h thng.
Hng nhìn trin khai (deployment view): ch* ra khía cnh trin khai h thng vào các kin
trúc vt lý (các máy tính hay trang thit b c coi là trm công tác).
Khi bn ch#n công c  v& biu , hãy ch#n công c nào to iu kin d dàng chuyn t hng nhìn
này sang hng nhìn khác. Ngoài ra, cho mc ích quan sát mt chc n(ng s& c thit k nh th
nào, công c này c'ng phi to iu kin d dàng cho bn chuyn sang hng nhìn Use case ( xem
chc n(ng này c miêu t nh th nào t phía tác nhân), hoc chuyn sang hng nhìn trin khai (
xem chc n(ng này s& c phân b ra sao trong c!u trúc vt lý - Nói mt cách khác là nó có th n%m
trong máy tính nào).


25
Ngoài các hng nhìn k trên, ngành công nghip phn mm còn s dng c các hng nhìn khác, ví
d hng nhìn t+nh-ng, hng nhìn logic-vt lý, quy trình nghip v (workflow) và các hng nhìn
khác. UML không yêu cu chúng ta phi s dng các hng nhìn này, nhng ây c'ng chính là nhng
hng nhìn mà các nhà thit k ca UML ã ngh+ ti, nên có kh n(ng nhiu công c s& da trên các
hng nhìn ó.
3.3.1. Hng nhìn Use case (Use case View)
Hng nhìn Use case miêu t chc n(ng ca h thng s& phi cung c!p do c tác nhân t bên ngoài
mong i. Tác nhân là thc th tng tác vi h thng; ó có th là mt ngi s dng hoc là mt h
thng khác. Hng nhìn Use case là hng nhìn dành cho khách hàng, nhà thit k, nhà phát trin và
ngi th nghim; nó c miêu t qua các biu  Use case (use case diagram) và th*nh thong c'ng
bao gm c các biu  hot ng (activity diagram). Cách s dng h thng nhìn chung s& c miêu
t qua mt lot các Use case trong hng nhìn Use case, ni m.i mt Use case là mt li miêu t mang
tính c thù cho mt tính n(ng ca h thng (có ngh+a là mt chc n(ng c mong i).
Hng nhìn Use case mang tính trung tâm, bi nó t ra ni dung thúc $y s phát trin các hng
nhìn khác. Mc tiêu chung ca h thng là cung c!p các chc n(ng miêu t trong hng nhìn này –
cùng vi mt vài các thuc tính mang tính phi chc n(ng khác – vì th hng nhìn này có nh hng
n t!t c các hng nhìn khác. Hng nhìn này c'ng c s dng  th$m tra (verify) h thng qua
vic th nghim xem hng nhìn Use case có úng vi mong i ca khách hàng (H i: "ây có phi là

th bn mun") c'ng nh có úng vi h thng va c hoàn thành (H i: "H thng có hot ng
nh ã c t?”).
3.3.2. Hng nhìn logic (Logical View)
Hng nhìn logic miêu t phng thc mà các chc n(ng ca h thng s& c cung c!p. Ch yu nó
c s dng cho các nhà thit k và nhà phát trin. Ngc li vi hng nhìn Use case, hng nhìn
logic nhìn vào phía bên trong ca h thng. Nó miêu t k c c!u trúc t+nh (lp, i tng, và quan h)
c'ng nh s tng tác ng s& xy ra khi các i tng gi thông ip cho nhau  cung c!p chc
n(ng ã nh s2n. Hng nhìn logic nh ngh+a các thuc tính nh trng tn (persistency) hoc song
song (concurrency), c'ng nh các giao din c'ng nh c!u trúc ni ti ca các lp.
C!u trúc t+nh c miêu t b%ng các biu  lp (class diagram) và biu  i tng (object diagram).
Quá trình mô hình hóa ng c miêu t trong các biu  trng thái (state diagram), biu  trình t
(sequence diagram), biu  tng tác (collaboration diagram) và biu  hot ng (activity diagram).
3.3.3. Hng nhìn thành phn (Component View)
Là mt li miêu t ca vic thc thi các modul c'ng nh s ph thuc gia chúng vi nhau. Nó thng
c s dng cho nhà phát trin và thng bao gm nhiu biu  thành phn. Thành phn  ây là các
modul lnh thuc nhiu loi khác nhau, s& c ch* ra trong biu  cùng vi c!u trúc c'ng nh s ph
thuc ca chúng. Các thông tin b sung v các thành phn, ví d nh v trí ca tài nguyên (trách nhim
i vi mt thành phn), hoc các thông tin qun tr khác, ví d nh mt bn báo cáo v tin trình ca
công vic c'ng có th c b sung vào ây.

×