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

Giáo án - Bài giảng: Công nghệ thông tin: Phân tích thiết kế hướng đối tượng với uml trong lập trình

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 (3.88 MB, 159 trang )


1


t r × n h ® é ® µ o t ¹ o




cc




































GIÁO TRÌNH



















PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG VỚI UML




2

MỤC LỤC

 TRANG

01. L  3
02.  4
03.  5
04.  9
05. Bài 1  11
06. Bài 2  19
07. Bài 3  69
08. Bài 4  80
09. Bài 5  94
10. Bài 6  109
11. Bài 7  116
12. Bài 8  132
13.  170
14.  158
15.  160
15.  162


3
BÀI 1
Tên bài : TỔNG QUAN VỀ OOAD VÀ UML
Mã bài : ITPRG3_16.1
Giới thiệu :
 t


Mục tiêu thực hiện:

- 
- 
- 
- 
- 

Nội dung chính:
I. Giới thiệu về OOAD và UML
1. Phân tích và thiết kế 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
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 n các ng dng hin th
ng có 
Li tip cng là mt l v theo li ánh x các thành phn trong
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c lp v
xây dng ng dng bng cách chi v
ng các mu gu tiên là to hay mua mt vài loi mu g n, t o
nên các khi xây dn ca mình. Mi xây dn có th

chp ráp chúng li v t y mng mt s i
n trong th gii máy tính, bn có th chp chúng li v to ng dng
ca mình.
Xin ly mt ví d n: v rút tin mt tu gn  
s là ánh x ci thng
dng s c s c nhn di
 pháp phân tích và thit k ng thc hin theo các thut ng và khái nim
ca phc ng dng (tc là ca doanh nghi mà h thn
phc v), nên nó to s tip cng gia h thng và v thc ngoài i. Trong ví
d bán xe ô tô, mn phân tích thit k và thc hiu xoay quanh các khái nim
n phn mng thi

4
là quá trình cng tác ci dùng, nhà phân tích, nhà thit k, nhà phát trin,
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c d 
Mt trong nhm quan trng bc nht ct k ng
 ng là tính tái s dng: bn có th to các thành ph  ng) mt ln và dùng
chúng nhiu l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 ngôi nhà , m, b tái s
dng các thành phn trong các thit k 
ca mt h thng k toán, h thng kim kê, hoc mt h tht hàng.
c th nghim k càng trong l s
dng có tác dng gim thiu lc b
thit k và phát trin phn mm.
ng giúp chúng ta x lý các v 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 ng và bn chc.
2. Ngôn ngữ mô hình hóa thống nhất (Unifield Modeling Language – UML)
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ng vi ch 

 Mô hình hoá các h thng s dng các khái ning.
 Thit lp mt kt ni t nhn thc cn các s kin cn mô hình hoá.
 Gii quyt v v m 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c bi và máy.
II. Các quá trình OOAD
1. Phân tích hướng đối tượng (Object Oriented Analysis - OOA):
an phát trin mt mô hình chính xác và súc tích ca v, có thành phi
ng và khái nii thc, d hii vi s dng.
n OOA, v c trình bày bng các thut ng ng vng
có th thng cn phi không chuyên Tin
hc có th d dàng hic.
Da trên mt v có sn, nhà phân tích cn ánh x ng hay thc th có th
t k  t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 có thc và gi nguyên các
mu hình v cu trúc, quan h    a chúng. Nói mt cách khác, s dng

5
ng chúng ta có th mô hình hóa các thc th thuc mt v có
thc mà vn gi c cu trúc, quan h a chúng.
i vi ví d mn OOA s nhn bic các thc th 
 Khách hàng
 i bán hàng
 Phit hàng
 Phi
 Xe ô tô
 ging trên là:
 i bán hàng dy xe.
 Khách hàng chn mt chic xe
 Khách hàng vit phit xe

 Khách hàng tr tin xe
 n cho khách hàng
i vi ví d n OOA s nhn bic các thc th 
 Loi tài khon: ATM (rút tin t ng), Savings (tit kim), Current (bình

 Khách hàng
 Nhân viên
 Phòng máy tính.
 gi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
Chuyn tin t tài khon tit kim sang tài khon ATM
Xin chú ý là  n c hai khía cnh: thông tin và cách hong ca
h thng (tc là nhng gì có th xy ra vi nh
Li phân tích bng kiu ánh x i th  tht s m ln ca
ng.
2. Thiết kế hướng đối tượng (Object Oriented Design - OOD):

6
n t chp hng cng tác, mng trong
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n OOD là to thit k da trên kt qu cn OOA, da trên
nhnh phi chng yêu cu v ng, nhng yêu cu v kh 
thc thi, OOD tp trung vào vic ci thin kt qu ca OOA, tc
cung cp trong khi vm bo tho mãn tt c các yêu cc xác lp.
n OOD, nhà thit k  tc (operations), thuc tính
i quan h ca mt hay nhiu lp (class) và quynh chúng cn phi
u chnh sao cho phù hp vng phát tri 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n OOD, nhà thit k t lot các bi (diagram) khác nhau. Các
bi này có th ng. Các bi u th
các lng, trong khi bi ng biu th a các lc
ho ng chính xác ca chúng. Các l      c nhóm thành các gói
(Packages) t thành phn nh a ng dng.
3. Lập trình hướng đối tượng (Object Oriented Programming - OOP):
n xây dng phn mm có th c thc hin s dng k thut li
c thc hin thit k ng qua vic s dng mt ngôn ng
lp trình có h tr ng. Mt vài ngôn ng ng
c nhc ti là C++ và Java. Kt qu chung cuc cn này là mt lot các code
chc, nó ch  di qua nhiu vòng quay ca nhic
th nghim khác nhau.
III. Tiến trình Objectory
Chu trình ca mt phn mm có th 
 Nghiên c (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ộ:

7
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
ng phi câu hi v k thut. Nó là mt câu h có
v c bit khó tr lt h th thc hin
n là chính câu hi này trong thc t ng chng h t ra và li
c tr li. Mc dù vic lm ln v nh sai lm v k
thu dn ti tht bng thì d án có th c cu vãn n

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 chng mt ai và
mu gì cu vãn cho mt h thng phn mm hoàn toàn chc cn ti hoc c gng
t ng hóa mt quy trình lm lc.
c khi bt tay vào mt d án, bn phi có m
vi vic nm bt các yêu cu và xut hin khu. Nó hoàn tt mt phát
biu: "H thng mà chúng ta mong mun s c nhng vit giai
n này, chúng ta to nên mt bc tranh v t nhiu gi thuyt s c công
nhn hay loi b. Các hong trong thng bao gm thu th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
thng cn cung cp, và có th to mt vài nguyên m ng các khái nim
ca h thng có th n t nhiu ngun khác nhau: khách hàng, 
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 
vic xem xét các h thn ti. Mt khía cnh cn nhc ti là code vit trong
thi k ng s b "b c vit nhm mm tra hay tr giúp
các gi thuyt khác nhau, ch i th c vit theo kt qu phân tích và thit k
th
an nghiên c, 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 
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i, phân tích kh i-l, phân tích các
ng hp s dng và to các nguyên m xây dng nên mt khái nim cho h th
cùng vi các mm vi ca nó.
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 n nghiên c  lp nên tp hp các yêu cu (dù  m khái
i vi mt h thng kh c mong mun, k c v n k thut
ln xã hi. Mn nghiên c c thc hin tho  dn ti các h
thc mong mut tin, bt kh m lc  nhng h
thng thc hoàn tt hay s dng.


8
Kt qu cn nghiên c là Báo Cáo Kt Qu Nghiên Cu Tính Kh Thi. Khi
h thc chp nhn da trên bn Phân tích
bu.
b- Phân tích yêu cầu
 tính kh thi ca h tho lp mt b ca d
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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ng ca nó và nhng v trí có th c nâng cao, ci thin. Bên cnh
c nghiên cu xem xét các ch thng cn cung cp và các mi quan h
ci phía ngoài h thng. Trong toàn b n này, nhà
i dùng cn cng tác mt thit v nh các yêu ci vi h
thng, ti cn ph thng.
Nhng mc tiêu c th cn phân tích là:
 nh h thng cn phi làm gì.
 Nghiên cu tht c các ch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 t m ng nhìn có thc
i sng thc).
  v nhn s 
 Kt qu c  n phân tích là b c T Yêu Cu (Requirements
Specifications).
c - Thiết kế hệ thống
n phân tích, khi các yêu cu c th i vi h th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 tha mãn các yêu cc T Yêu Cu?
Mt s các công vic thc hi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 to database

9
 c tính các th tc gii thích quá trình x lý t n output.
Kt qu n thit k c T Thit K (Design Specifications). Bc T Thit K
Chi Tit s c chuyn sang cho các l thc hin xây dng phn
mm.
d - Xây dựng phần mềm
n vit lnh (code) thc s, to h thng. Ti vit code thc hin nhng
yêu cc nhà thit k nh si vit code chu trách nhim vit tài
lii thích th tc (procedure) mà anh ta tc vit
 nào và lý do cho vic này.
 m bc vit nên phi tho mãn mi yêu cc trong bn
c T Thit K Chi Tii ving thi phi tin hành th nghim phn
a mình. Phn th nghim n này có th c
chính:
Thử nghiệm đơn vị:
i vit code chy th các pha mình vi d liu gi (test/dummy data).
Vic thc hin theo mt k hoch thi vit code son ra. Mc
n th ng kt qu i.
n th nghi nhic gi là "Th hp trng" (White Box Testing)
Thử nghiệm đơn vị độc lập:
Công vic này do mt thành viên khác trong nhóm trách. Cn chi không có liên
quan trc tin vic vit code c n th nghi m bo tính
c lc th c thc hin da trên k hoch th i vit
code son nên.
e- Thử nghiệm hệ thống
Sau khi các th tc th nghim riêng, cn phi th nghim toàn b h thng. Mi th

tc tích hp và chy th, kim tra xem mi chi tic T Yêu Cu và nhng
mong ch cc tho mãn. D liu th cc chn lc bit, kt qu
c phát hin mi lch lc so vi mong ch.
f - Thực hiện, triển khai
 n này, h thng va phát trin s c tri i dù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n luy m bo h thc
s dng hu hiu nht.
g - Bảo trì, nâng cấp

10
Tùy theo các bing s dng, h thng có th tr nên li thi hay cn phi
c si nâng c s dng có hiu qu. Hong bo trì h thng có th rt khác bit
tùy theo m s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:  tn ca Chu Trình Phát Trin Phn Mm
Câu hỏi và bài tập
1. Hỏi: Mt s tp hp d liu phc tp nh   c trình bày b  th s
truyn tn c nhii các d liu thô?
2. 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.
3. Hỏim ln nht cng là tính tái s dng (Reusable)?
Bài tập thực hành :  160


11
BÀI 2

Tên bài : KHẢO SÁT HỆ THỐNG
Mã bài : ITPRG3_16.2


Giới thiệu :


Mục tiêu thực hiện:
- 
- 
- 
- 
- case.
Nội dung chính:
I. Giới thiệu UML.
1- 
 phc, mc tiêu c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 c trình bày theo
ng nhìn (View) ci s d h hic. Mô hình
 c s d nh các yêu cu ci vi h thng và
 thi ca d án.
Tm quan trng ci mt cách tht c các
ngành khoa hc k thut t nhiu th k nay. Bt k  n xây dng mt vt th
o nên các bn v  quynh c ngoi hình lc
ho ng ca nó. Chng hn các bn v k thu 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  tn ti
trong mt s n nhn thit k 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ng nhìn, mi
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 c xây dng trong nhin và  mi giai
n, mô hình s c b sung thêm mt s chi tit nhnh.
c mô t trong ngôn ng trn các thông
c th hin bng các ký hi 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c biu din  dn ng "Mt bc tranh
nói nhi ngàn t". To mô hình cho các h thng phn mc khi thc s xây
d thành mt chun mc trong vic phát trin phn mc chp

12
nhn trong cng làm phn mm git k 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  thng cn xây dng.
 ng nhc mâu thun vi
nhau.
 Có th hic (understandable): Cho nhi xây dng ln s
dng
 D 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 hoá hin thc xây dng nên
 chúng ta d dàng hiu và hiu t thng cn xây dng. To mô hình s giúp cho
chúng ta hiu th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
 Hình dung mt h thng theo thc t hay theo mong mun ca chúng
ta.
 Ch rõ cu trúc hoc ng x ca h thng.
 To mt khuôn m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nh ca nhà phát tri s dng sau này.
2- Trước khi UML ra đời:
u nh phn mm ch có duy nht mt ngôn ng i

ng là Simula. Sang na sau ca thp k 1980, các ngôn ng    
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ng. Và mt vài trong s nhng ngôn ng mô hình hoá xut hin
nhu thp k c nhii dùng là:
 
 ect Modeling Technique  OMT
 
 Hewlett- 
 

13
Mn và ngôn ng u có h thng ký hi lý
riêng và công c h tr riêng, khin ny ra cuc tranh lut nh
là cuc tranh lun khó có câu tr li, bi tt c  u có nhm
mm yu riêng. Vì th, các nhà phát trin phn mm nhiu kinh nghing s
dng phi hm mnh ca mi png dng ca mình. Trong thc t,
s khác bit gi và theo cùng tin trình thi
gian, tt c nhm cn li và b sung ln cho nhau. Chính hin thc
c nhi ting nhn ra và
h quynh ngi l tích hp nhm mnh ca m
ra mt mô hình thng nhc công ngh phn mm.
3- Sự ra đời của UML:
Trong bi ci ta nhn thy cn thit phi cung cp mm cn
c chun hoá và thng nht cho ving. Yêu cu c th 
ra mt tp hp chun hoá các ký hiu (Notation) và các bi  nm bt các
quynh v mt thit k mt cách rõ ràng, rành mm
ti mc thc hii s o ca James Rumbaugh, Grady Booch
và Ivar Jacobson. Chính nhng c gng này dn kt qu là xây d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ng s d 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u cho
nhiu khía cnh khác nhau ca mt h thng có n phn mm cao. UML có th c s
dng làm công c giao tip gii dùng, nhà phân tích, nhà thit k và nhà phát trin
phn mm.
Trong quá trình phát trin có nhi tr và khuyn khích phát trin UML có th
k t
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c xây dng bi ba tác gi trên vi ch 
 Mô hình hoá các h thng s dng các khái ning.
 Thit lp mt kt ni t nhn thc cn các s kin cn mô hình
hoá.
 Gii quyt v v m 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c bi và máy.

14
5- Phương pháp và các ngôn ngữ mô hình hoá:
c (method) là mt cách trc tip cu trúc hoá s 
ng ci s dng bit ph nào,
khi nào và ti sao (ma các mô hình (model), các mô
 mô t nhng gì s dng cho vic truyt kt qu trong quá trình s
dm khác nhau chính gia 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i s dng cn làm.
M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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ng và cách kt hp chúng

trong ngôn ng.
 Semantic (Ng a mi bi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 ng
khác.
    a bi  sao cho m  a mô
c th hin và mi có th hic.
II Khái niệm mô hình của UML.
UML có th c s dng trong nhin, t phát trin, thit k cho ti thc hin và
bo trì. Vì ma ngôn ng này là dùng các bi  mô t h
thng nên min ng dng ca UML bao gm nhiu loi h th
 Hệ thống thống tin (Information System): Ct gi, ly, bii biu din
i s dng. X lý nhng khong d liu ln có các quan
h phc t  d liu quan h hay
ng.
 Hệ thống kỹ thuật (Technical System): X u khin các thit b k
thu  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c bit, không có phn mm
chu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 n thou khi 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 không có các thit b 

15
 Hệ thống phân bố c phân b trên mt s máy
cho phép truyn d liu t t cách d dàng. Chúng
 liên lng b  m bo toàn vn d ling
c xây dng trên mt s các k thu    
COM/DCOM, hay Java Beans/RMI.
 Hệ thống Giao dịch (Business System): Mô t m tài nguyên (con

 c (lut pháp, chin thu 
chc hong kinh doanh.
 Phần mềm hệ thống       h tng k
thut cho phn mm khác s dng, chng h u hàn d
liu, giao dii s dng.
UML 
 Preliminary Investigation: use cases th hin các yêu cu ci dùng. Phn
miêu t 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an này là trng hóa và tìm hi
cu có trong phm vi bài toán. Class diagrams trên bình din trng hóa các
thc th i thc s d làm rõ s tn ti quan h
ca chúng. Ch nhng lp (class) nm trong phm vi bài toán m
 Design: Kt qu ph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 cung cp h tng k thun, nn tng
t qu phc t chi tin xây dng
phn mm.
 Developmentc chuyn thành code. Programmer s dng các
 hiu v và to code.
 Testing: S doc. Có 4 hình thc
kim tra h thng:
o Unit testing (class diagrams & class specifications): kim tra t
th kim tra các l.
o 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 xem
chúng hong v
o System testing (use-case diagrams): kim tra xem h thng
c chi s dng yêu cu hay không.

16

o Acceptance testing: Kim tra tính chp nhc ca h thng
c thc hin bi khách hàng, vic kim tra này thc hi
m tra h thng.


III. Khả năng sử dụng UML.

1- UML và các giai đoạn của chu trình phát triển phần
1.1- Giai đoạn nghiên cứu sơ bộ:
ái nim Use Case  nm bt các yêu cu ci s dng).
UML s dng bi  nêu bt mi quan h  giao
tip vi h thng.
 n h
thng s c mô hình hóa song song vi ch i t phía h thng (tc là
c mô hình hóa cùng các mi quan h c
miêu t trong bi Use case ca UML. Mi m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 u gì  phía h thng mà
không h  n vic ch c thc thi ra sao.
1.2- Giai đoạn phân tích:
n quá trình tru tiên (các lng)
 hin hu trong phm vi vn bic các
lp thành phn ci quan h gia chúng vi nhau, các lp cùng các mi
quan h  c miêu t bng công c bi lp (class diagram) ca UML. S cng tác
gia các lp nhm thc hi c miêu t nh ng
(dynamic models) cn phân tích, ch duy nht các lp có tn ti trong
phm vi v (các khái nim i thc mô hình hóa. Các lp k thu
ti i pháp trong h thng phn mm, ví d  p cho giao dii
dùng, cho ngân hàng d liu, cho s giao tip, trùng hi là mi quan tâm
cn này.
1.3- Giai đoạn thiết kế:

n này, kt qu c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  to thành mt h t k thut: Giao dii
dùng, các ch  i 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 có t n phân tích s c "nhúng" vào h t k
thut này, to ra kh i trong c n: Phm vi v và h t
sn thit k s t qu là bc t chi tin xây dng h thng.

17
1.4- Giai đoạn xây dựng:
n xây dn lp trình), các lp c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ng c th (không
nên dùng mt ngôn ng lng ch thuc vào kh a ngôn ng
c s d là mt công vi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i các
mô hình này thành các dòng code. Trong nhc s d 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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n.
n xây dng là mn riêng bic chuyn thành code.
1.5- Thử nghiệm:
Nh    n Chu Trình Phát Trin Phn Mm, mt h thng phn mm
c th nghim qua nhi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 UML khác nhau làm nn tng cho công vic ca mình: Th
nghi s dng bi lc t lp, th nghim tích hng
s dng bi  thành phn (component diagram) và bi  cng tác (collaboration
n th nghim h thng s dng bi Use case (use case diagram
m bo h thc ho u trong
các bi này.
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 to ra các bi. Bt ngôn ng
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): ng nhìn ch ra nhng khía cnh khác nhau ca h
thng cn phc mô hình hóa. Mng nhìn không phi là mt bn
v, mà là mt s trng hóa bao gm mt lot các bi khác nhau.
Ch qua vi   a mt lo  ng nhìn khác nhau, mi
ng nhìn ch ra mt khía cnh riêng bit ca h th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 nhìn này ni kt ngôn ng mô hình hóa vc chn cho
n phát trin.
 Biểu đồ (diagram): Bi  là các hình v miêu t ni dung trong mt
ng nhìn. UML có tt c 9 loi bi kc s dng trong
nhng s kt h cung cp tt c ng nhìn ca mt h
thng.

18
 Phần tử mô hình hóa (model element): Các khái nic s dng trong
các bi c gi là các phn t mô hình, th hin các khái ning
i tng quen thuc. Ví d 
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 c s dng trong nhiu bi khác
 mà mt kí hiu.
 Cơ chế chung:  chung cung cp thêm nhng li nhn xét b sung,
 c ng pháp chung v mt phn t mô
hình; chúng còn cung c   có th m rng ngôn ng
UML cho phù hp vi mnh (mt quy trình, mt t
chc hoc mi dùng).
3- Hướng nhìn (View)
Mô hình hóa mt h thng phc tp là mt ving nht là toàn b h

thc miêu t ch trong mt bn v, mt bn v 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ng thì
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 miêu
t mt h thng. Mt h thng cn phc miêu t vi mt lot các khía cnh khác nhau:
V mt chng), v mt phi ch
(yêu cu v thi gian, v  y, v quá trình th 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
c miêu t trong mt long nhìn khác nhau, m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 2.1- Các View trong UML
Mi mc miêu t trong mt lot các bi, chng các thông tin nêu
bt khía cc bi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 trên tht t có th là thành phn ca nhing
nhìn khác nhau. Khi nhìn h thng t nhing nhìn khác nhau, ti mt thm có th

19
i ta ch tp trung vào mt khía cnh ca h thng. Mt bi trong mng nhìn c
th n ph   tu kin giao tip d  dính lin vi các
bi 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 ng nhìn. Mt bi 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 ng nhìn
sau:
 ng nhìn ch ra khía cnh
cha mt h thng, nhìn t ng tác nhân bên ngoài.
 ng nhìn logic (logical view): ch ra ch   c thit k bên
trong h th nào, qua các khái nim v c
ng x ng ca h thng.
 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.

 ng nhìn song song (concurrency view): ch ra s tn ti song song/
trùng hp trong h thn v giao ting b hóa trong
h thng.
 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, hãy chn công c nào tu kin d dàng chuyn t
ng nhìn khác. Ngoài ra, cho mmt ch
c thit k  nào, công c i tu kin d dàng cho bn chuyn sang
 xem chc miêu t  nào t phía tác nhân), hoc
chuyng nhìn tri xem ch 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).
ng nhìn k trên, ngành công nghip phn mm còn s dng c ng nhìn
khác, ví d -ng nhìn logic-vt lý, quy trình nghip v (workflow) và
ng nhìn khác. UML không yêu cu chúng ta phi s d
ng nhìn mà các nhà thit k ci, nên có kh
u công c s d
3.1- Hướng nhìn Use case (Use case View):
ng nhìn Use case miêu t cha h thng s phi cung cc tác nhân t
i. Tác nhân là thc th i h th là mi s
dng hoc là mt h thng nng nhìn dành cho khách hàng,
nhà thit k, nhà phát trii th nghic miêu t qua các bi Use case

20
(use case diagram) và thnh thom c các bi hong (activity diagram).
Cách s dng h thng nhìn chung s c miêu t qua mt long
i mt Use case là mt li miêu t c thù cho m
ca h tht chi).
ng nhìn Use case mang tính trung tâm, bi nt ra ny s phát trin các
ng nhìn khác. Mc tiêu chung ca h thng là cung cp các ch    trong

ng nhìn này  cùng vi mt vài các thuc tính mang tính phi ch  vì th
ng nhìn này có n tt c c s
d thm tra (verify) h thng qua vic th nghi
vi ca khách hàng (Hi là th bn mui h
thng vc hoàn thành (Hi: "H thng có hoc t
3.2- Hướng nhìn logic (Logical View):
ng nhìn logic miêu t c mà các cha h thng s c cung cp. Ch
yc s dng cho các nhà thit k và nhà phát tric li vng nhìn Use
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
(lng, và quan h ng s xng gi thông
 cung cp chnh sc tính
ng tn (persistency) ho
cu trúc ni ti ca các lp.
Cc miêu t bng các bi lp (class diagram) và bi ng (object
diagram). Quá trìn     c miêu t trong các bi  trng thái (state
diagram), bi trình t (sequence diagram), bi 
bi hong (activity diagram).
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 ph thuc gia chúng vi nhau.
c s dng cho nhà phát tring bao gm nhiu bi thành phn.
Thành phn  nh thuc nhiu loi khác nhau, s c ch ra trong bi
cùng vi c ph thuc ca chúng. Các thông tin b sung v các thành phn,
ví d  trí ca tài nguyên (trách nhii vi mt thành phn), hoc các thông tin qun
tr khác, ví d t bn báo cáo v tin trình ca công vió th c b sung vào

3.4- Hướng nhìn song song (Concurrency View):
ng nhìn song song nhm ti s chia h thng thành các qui trình (process) và các b x lý
(processor). Khía cnh này, vn là mt thuc tính phi ch  a h thng, cho phép
chúng ta s dng mt cách hu hiu các ngun tài nguyên, th lý
các s king b t ng. Bên cnh vic chia h thng thành các tiu trình có


21
th c thn v giao ting
b hóa các ti
ng nhìn song song giành cho nhà phát trii tích hp h thng, nó bao gm các
bi ng (trng thái, trình tng) cùng các bi thc thi (bi
thành phn và bi trin khai).
3.5- Hướng nhìn triển khai (Deployment View):
Cung nhìn trin khai ch  trin khai v mt vt lý ca h thng,
ví d  liên kt gia chúng vng
nhìn trin khai giành cho các nhà phát trii tích hi th nghim h
thc th hin bng các bi trim s ánh x
các thành phn ca h thng vào cu trúc vt lý; ví d ng
nào s c thc thi trên máy tính nào.
4- Biểu đồ (diagram)
Bi là các hình v bao gm các ký hiu phn t c sp x minh ha
mt thành phn c th hay mt khía cnh c th ca h thng. Mt mô hình h thng
có nhiu loi bi, mi loi có nhiu bi khác nhau. Mt bi là mt thành phn
ca m ng nhìn c th c v  c xp vào mt
ng nhìn. Mt khác, mt s loi bi có th là thành phn ca nhing nhìn khác
nhau, tùy thuc vào ni dung ca bi.
Phn sau miêu t các khái nin nng sau mi loi bi. Tt c các chi tit v
bi, ng cnh ca chúng và s a chúng vi
c miêu t chi ting  ng). Các
bi ly làm ví d  c ly ra t nhiu loi h th ch ra nét phong
phú và kh ng rng khp ca ULM.
4.1- Biểu đồ Use case (Use Case Diagram):
Mt bi Use case ch ra mt s ng các tác nhân ngoi cnh và mi liên kt ca chúng
i vi Use case mà h thng cung cp (nhìn hình 3.2). Mt Use case là mt li miêu t ca
mt ch thng cung cp. Li miêu t ng là mn tài liu,

ó th là mt bi hoc miêu t duy
nhng nhìn t ngoài vào ca các tác nhân (hành vi ca h th mong
i ci s dng), không miêu t chc cung cp s hong ni b bên
trong h thng ra   u v mt chi vi h
thng. Các bi Use case s c miêu t chi ti (Use case).

22

Hình 2.2- Bi use case ca mt công ty bo him
4.2- Biểu đồ lớp (Class Diagram):
Mt bi lp ch ra ca các lp trong h thng (nhìn hình 3.3). Các li
dic x lý trong h thng. Các lp có th quan h vi nhau trong nhiu
dng thc: liên kt (associated - c ni kt vi nhau), ph thuc (dependent - mt lp này
ph thuc vào lp khác), chuyên bit hóa (specialized - mt lp này là mt kt qu chuyên
bit hóa ca l- hp vi nhau thành m). Tt c các
mi quan h c th hin trong bi li cu trúc bên trong ca các
lp theo khái nim thuc tính (attribute) và th tc (operation). Bi c coi là bi
n cc miêu t  u lc ti bt k thm nào trong
toàn b i h thng.
Mt h thng s có mt lot các bi lp  chng phi bao gi tt c các bi
lc nhp vào mt bi lp tng th duy nht  và mt lp có th tham gia
vào nhiu bi lp. Bi lc miêu t chi ti

Hình 2.3 - Bi lp cho mt giao dch Tài chính

23
4.3- Biểu đồ đối tượng (Object Diagram):
Mt bi ng là mt phiên bn ca bi l dng các ký hiu
 lp. S khác bit gia hai loi bi này nm  ch bi ng ch ra
mt long thc th ca lp, thay vì các lp. Mt bi ng vì vy là mt

ví d ca bi lp, ch ra mt bc tranh thc t có th xy ra khi h thng thc thi: bc
tranh mà h thng có th có ti mt th ng s dng chung các
ký hiu ca bi lp, ch tr hai ngoi lc vit vc gi và
tt c các thc th trong mt mi quan h c ch ra (nhìn hình 3.4).
Bi ng không quan trng bng bi lp, chúng có th c s d ví d
hóa mt bi lp phc tp, ch ra vi nhng thc th c th và nhng mi quan h 
thì bc tranh toàn cnh s ra sao. Mt bi c s dng làm
mt thành phn ca mt bi cng tác (collaboration), ch ra li ng x ng gia mt lot
i ng.

Hình 2.4 - Bi lp và bi ng th hin ca lp
4.4- Biểu đồ trạng thái (State Diagram):
Mt bi trng là mt s b sung cho li miêu t mt lp. Nó ch ra tt c các
trng ca lp này có th có, và nhng s kin (event) nào s gây ra s thay
i trng thái (hình 3.5). Mt s kin có th xy ra khi mng t gn
cho nó - ví d  thông báo rng mt khong th hay là
mt s u kic tha mãn. Mt s i trc gi là mt s
chuyển đổi trạng thái (State Transition). Mt chuyi tr có mt hành
u gì phc thc hin khi s chuyi trng thái này din ra.

24
Bi trc v cho tt c các lp, mà ch riêng cho nhng lp có mt s
ng các tra lp b nh i qua
các trng thái khác nhau. Bi tr c v cho h thng tng th. Biu
 trc miêu t chi ting).

Hình 2.5- Mt ví d v bi trng thái
2.5- Biểu đồ trình tự (Sequence Diagram):
Mt bi trình t ch ra mt cng gia mt long (xem hình 3.6).
Khía cnh quan trng ca bi này là ch ra trình t c gi

gi ra trình t u s xy ra ti
mt thm c th  thc thi ca h thng. Các bi trình t cha
mt loc biu din bng thng. Trc thng
t trên xui trong bi, và bi ch ra s p ging
khi thc biu din bng gch ngang gn lin vi
ên (biu th p) ni lin gia nhng thng th hing. Trc
thi gian cùng nhng li nhng s n l ca bi.

Hình 2.6 - Mt bi trình t cho Print Server
4.6- Biểu đồ cộng tác (Collaboration Diagram):
Mt bi  cng tác ch ra mt s c     t bi  trình t.
i ta s chn hoc dùng bi trình t hoc dùng bi cng tác. Bên cnh
vic th hin s c gi là tương tác), bi cng tác ch i
ng và quan h ca chúng (nhic gi là ng cnh). Vic nên s dng bi trình
t hay bi cng s c quynh theo nguyên tc chung sau: Nu thi gian

25
hay trình t là yu t quan trng nht cn phi nhn mnh thì hãy chn bi trình t; nu
ng cnh là yu t quan trn bi cng tác. Trình t i
c th hin trong c hai loi bi này.
Bi cc v theo dng mt bi t loc
ch ra cùng vi mi quan h gia chúng vi nhau (s dng nhng ký hi
lp/ bi c v gi ch ra dòng chy thông
p git
trong nhng cha nhãn là ch ra th t c g
th ch u kin, ch ra nhng giá tr c tr vi cách vit
nhãn, mt nhà phát trin có th c bi cng tác và tuân th theo dòng th
s   p. Mt bi c     cha c  ng tích cc
(active objects), hong song song vng tích cc khác (hình 3.7). Bi cng
c miêu t chi ti


Hình 2.7 - Mt bi công tác ca mt printer server
4.7- Biểu đồ hoạt động (Activity Diagram):
Mt bi hong ch ra mt trình t lt ca các hong (activity) (hình 3.8).
Bi hoc s d miêu t các hoc thc hin trong mt
th tc, m c s d miêu t các dòng chy hong khác, ví d
t Use case hay trong mt trình t  hong bao gm các
trng, chc t ca mt hong cn phc thc hin (mng
- action). Mt trng s c thc hin xong (khác vi
bi trng thái: mt trng thái ch chuyn sang try ra mt s
kiu khin  y gia các trng liên kt vi nhau.
Bi còn có th ch ra các quyu kin thc thi song song ca
các trng. Bi ngoài ra còn có th cha các loc t p
c gc nhn vn cc thc hin.

×