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

Tổng quan về phân tích thiết kế hệ thống hướng đối tượng

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 (222.67 KB, 24 trang )

1
1
PHÂN TÍCH THIT K  THNG
NG I TNG
GVGD: Lê Th Bích Hng
Khoa CNTT - Trng i hc Nha Trang
Email:
2
Mc tiêu
 Trang b cho sinh viên k ng phân tích và
thit k t h thng theo hng i tng
 ng các mô hình UML
  ng công c thit k mô hình UML nh
Rational Software Architecture, Power
Designer…
 ánh giá:
 Chuyên cn: 5%
 Bài tp: 10%
 Kim tra: 25%
 Thi: 60%
2
3
Tài liu tham kho
 Phát trin h thng hng i tng vi UML
2.0 và C++ - Nguyn Vn Ba, NXB HQGHN,
2005
 Phân tích thit k ng i tng bng UML
- ng V c, NXB Giáo dc, 2002
 Trang web ca OMG: www.omg.org
 UML in a nutshell – Alhir S., O’Reilly &
Associates 1998


 …
4
Ni dung chng trình
 Chng 1: Tng quan v phân tích thit k 
thng
 Chng 2: Khái quát v UML
 Chng 3: Bi  Use Case
 Chng 4: Bi  p
 Chng 5: Mô hình ng
 Chng 6: Mô hình ng (tt)
 Báo cáo bài tp ln
3
5
Chng 1: Tng quan v phân
tích thitkhthng
6
Ni dung
 Khái quát vòng i phát trin h thng thông
tin
 Các cách tip cn phân tích và thit k 
thng
 Các khái nim c n ca hng i tng
4
7
Nhng khó khn khi phát trin
phnmm
Cha thu hiu yêu cu, hoc hiu lm
 Yêu cu thng thay i trong thi gian phát
trin.
 Yêu cu thng c miêu t ng vn bn,

dài dòng, khó hiu.
 i quân phát trin phn mm rt khó nhn
thc th áo các mi quan h ti n và
phc tp c c th hin chính xác trong
các ng dng ln.
 Kh 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 m) là có hn.
8
Tintrìnhphnmm
Tin trình phn mm là phng cách sn xut
ra phn mm vi các thành phn ch u bao
m:
 Mô hình vòng i phát trin phn mm
 Các công c  tr cho phát trin phn mm
 Nhng ngi trong nhóm phát trin phn mm.
5
9

Planning

Requirements Determination

Conceptual Design

Physical Design

Construction and/or Purchase (prototype)

Conversion - old to new


Implementation

Training

Evolution - maintenance & enhancements
Analysis
Design
Implementation
Deployment
Software Development Life Cycle –SDLC
10
Nghiên cusb(Planning)
 p k hoch cho d án
 Kh ng d án
 Thit l i ng nhân viên cho vic kh ng d án
 Thit lp quan h i khách hàng
 p k hoch cho d án
 Mô t phm vi ca d án
 Chia d án thành các tác v có th thc hi c
 c lng tài nguyên, lp k hoch tài nguyên
 ánh giá ri ro
 p k hoch hi hp
 c lng s  chi phí
 Thc thi d án: giám sát tin trình trong k hoch
6
11
Nghiên cusb
Nhn bit các chc nng chính ca h thng
 ánh giá s  i ro
 Xem xét các yêu cu, các ngun tài nguyên có

th  ng
 Tho lun, xem xét các khía cnh thng mi,
phân tích kh ng li l, ánh giá m  i
ro
 Phi tr  c câu hi: “Có nên phát trin
 thng này hay không?”
12
Phân tích (Analysis)
 Xác nh yêu cu (Determining Requirement)
 Phng vn và lng nghe
 a ra các câu hi phng vn
 Câu hi Open-ended
 Câu hi closed-ended
 Xác nh tng th  thng cn làm nhng gì
  thng li các yêu cu: bng cách xây dng
mô hình x lý
 Xây dng mô hình d liu quan nim
7
13
Thitk(Design)
 Phi tr i câu hi: “H thng làm cách nào
 tha mãn các yêu cu”
 Thit k menu, form nhp, báo cáo (report)
 Thit k logic và vt lý các thành phn d liu
a h thng  o database
 Thit k các chc nng x lý ca h thng
14
Thc hin (Implementation)
 Xây dng phn mm
 Vit code theo yêu cu quy nh sn

 Vit tài liu gii thích rõ các chng trình, th c, hàm
 Kim nghim chng trình ch úng
 Th nghim h thng
 Th nghi n v
 Th nghim tích hp (tích hp nhiu thành phn)
 Th nghim toàn b  thng
 Khách hàng th nghim (v   chp nhn)
8
15
Trin khai (Deployment)
 Thc hin trin khai
 Hun luyn ngi s ng
 o các file d liu cn thit
 o trì nâng cp
 Ho ng bo trì tùy thuc vào s thay i ca
môi trng s ng
 Các h thng khác nhau có nhng m  o
trì khác nhau
16
Mô hình thác nc (Waterfall model)
Nghiên cu S 
Xácnhyêucu
Thit k quan nim
Thit k logic
Thit k t lý
Xây dng phn mm
ào to
Analysis
Design
Th nghim h thng

Implementation
Deployment
o trì-Nâng cp
9
17
Mô hình thác nc
  m
 Có vòng lp, cho phép tr  pha tr  a
cha khi phát hin li hoc khi có thay i.
  o trì: tt c các pha trong chu trình  c
vit tài liu cn thn và c kim tra trc khi
chuyn sang pha tip theo.
 Khuy m
 n phm phn mm cui cùng có th không tha
mãn nhu cu thc s a khách hàng
18
Nhng thành viên trong nhóm phát
trin PM
 Nhà phân tích (Analyst)
 Nghiên cu yêu cu ca khách hàng  nh
ngha 1 phm vi bài toán
 Nhn dng nhu cu t chc
 Xác nh nhu cu ca nhân lc
 Xác nh phng pháp và công ngh
 Thit k u trúc Database
 Nhà thit k (Designer)
 Giao din chng trình (menu, form, report)
 Quy nh các yêu cu v phn cng và phn
m
10

19
Nhng thành viên trong nhóm phát
trin PM
 Chuyên gia lnh vc (Domain Expert)
 p trình viên (Programmer)
 Ngi dùng (User).
20
Giihncahthng
11
21
Các cách tipcnphântíchhthng
 Phng pháp hng chc nng
 Phng pháp hng i tng
22
Phng pháp hng chc nng
 Phân rã các chc nng ca ngi dùng thành các
chc nng nh n
 n v nh nht gi là th c hay hàm
  thng hoàn chnh khi các chc nng cng hoàn
chnh và không c thay i theo thi gian
Chc nng chính
Chc nng con 1 Chc nng con 2
Chc nng
con 1.1
Chc nng
con 1.2
Chc nng
con 2.1
Chc nng
con 2.2

12
23
Phng pháp hng chc nng
  m
 Phân tích thit k rõ ràng
 Chng trình sáng sa d hiu
 Nh m
 Ch quan tâm n vic qun lý d liu mà h thng cn
u tr (nhp xut thông tin)
 p trung vào thông tin mà không quan tâm n nhng
gì xy ra vi thông tin và cách ho ng ca h thng
 p nhiu khó khn khi h thng thng xuyên thay i
 các nguyên tc nghip v.
 Không phù hp cho phát trin các phn mm ln
24
Phng pháp hngi tng
 Xem các thành phn trong h thng nh các
i tng ngoài i thc
 ng dng có th chia thành các thành phn
nh i là i tng, sau ó chúng c tích
p li thành ng dng
13
25
Phng pháp hngi tng
  m
  tr  ng li mã ngun
 Phù hp vi các h thng ln: Các i tng ho ng
c lp và ch thc hin hành ng khi nh c yêu
u t các i tng khác
 Gim li, tng t  thit k và phát trin phn mm

26
Các nguyên tccbnca hngi
ng
Object Orientation
Abstraction Encapsulation Modularity Hierarchy
14
27
Các nguyên tccbnca hngi tng
 Tru tng hóa (Abstraction)
 Các lp s c tru tng hóa  nhiu m  o
thành mt s  các l c k tha ln nhau
 Tính óng gói (Encapsulation) và n du thông tin
 Các i tng có th có nhng phng thc hoc
thuc tính riêng mà các i tng khác không th 
ng c
 Tính modul hóa (Modularity)
 Các bài toán s c phân chia thành nhng v 
nh n, n gin và qun lý c
 Tính phân cp (Hierarchy)
 u trúc chung ca mt h thng hng i tng là
ng phân cp theo các m  tru tng t cao n
thp
28
 Phân tích hng i tng (Object Oriented
Analysis)
 Thit k ng i tng (Object Oriented
Design)
 p trình hng i tng (Object Oriented
Programming)
Các giai on PTTK hngi tng

15
29
Giai on phân tích hngi tng
(OOA)
 Giai n phát trin mt mô hình chính xác ca vn
, có thành phn là các i tng có thc và d hiu
i vi ngi s ng
 Trong giai n này, v  c trình bày bng các
thut ng ng ng vi các i tng có thc
 Mô hình thit k  cha các thc th trong mt vn
cóthcvàginguyêncácmuhìnhvutrúc,
quan h ng nh hành vi ca chúng
30
Giai on phân tích hngi tng
(OOA)
 Ví d: i vi ví d nhà bng l, giai n phân tích
 nhn bi 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
 ng tác và quan h gia các i tng trên:
 t khách hàng mi 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
16
31

Giai on thitkngi tng (OOD)
 Trong giai n OOD, nhà thit k nh ngha
các chc nng, th c (operations), thuc tính
(attributes) cng nh i quan h a mt
hay nhiu lp (class) và quy nh chúng cn
ph  u chnh sao cho phù hp vi môi
trng phát trin
 OOD cng là giai   thit k ngân hàng
 liu và áp dng các k thut tiêu chun hóa
32
Giai onlp trình hngi tng
(OOP)
 Giai n xây dng phn mm có th c
thc hin s ng k thut lp trình hng i
ng
 t vài ngôn ng ng i tng thng
c nhc ti là C++, C# và Java
17
33
 i tng
 p
 Thuc tính
 Phng thc
 Thit k  i tng
Các khái nimcbn
34
i tng là gì?
18
35
i tng là gì?

 i tng là 1 thc th có
thuc tính và hành vi (phng
thc)
 i tng là:
 Thc th  th (tangible)
hay
 Thc th tru tng
 Danh sách liên kt
 ng 1 hay 2 chiu (ma
trn), chui ký t,…
 t khái nim,…
36
Cácctrngci tng
  i tng có
cha:
 Tên i tng
 Các thuc tính  mô
 trng thái c i
ng
 Các thao tác hay
phng thc  là các
chc nng mà i
ng ó có
Change
Address
Print
Balance
List all
Update
Balance

Change
Phone No
Change
Name
Create
Customer
Delete
Customer
Name
Jo
Address
Here
Phone No
555
Balance
$1.49
Customer
Customer
19
37
Lp (Class)
 p là 1 tp hp các i tng có cùng tp
thuc tính (attributes), tp phng thc
(operations), các quan h (relationships), và
ng ngha (semantics)
 Các thành phn ca lp:
Professor
name
empID
create( )

save( )
delete( )
change( )
Class Name
Attributes
Operations
38
Lpvài tng
 p là nh ngha t i
ng
  nh ngha cu trúc
và hành vi ca các i
ng trong lp
  c xem nh 1
“khuôn mu  úc ra
i tng
 Các i tng có chung
kiu thuc tính và các
phng th c
nhóm li to thành lp
 i tng là th hin
(instance) ca lp
Các i tng
(Objects)
Class
Xe ô tô
20
39
Thuctínhcalplàgì?
p các thành phn d liu mô t và phân bit các

c trng c i tng thuc v p
 Th hin di dng d liu
 c tham gia x lý tính toán bi các phng thc
a lp
 Thuc tính cng có th là i tng
 Kiu thuc tính
 i thuc tính có 1 tên và thuc v 1 kiu d liu duy
nht
40
Thuc tính hay i tng?
 ulàdanhtvàcótên
Tuy nhiên
 Thuc tính là c trng c i tng
 Thuc tính mô t i tng
 u gp 1 danh t mà cha phân bi c
thuc tính hay i tng
 Xác nh các tính cht mô t cho danh t ó!!!
21
41
Phng thc
 Là chc nng hoc hành
ng mà i tng có th
thc hin
  lý các thành phn d
liu che du bên trong lp
42
Cách xác nhi tng
 Tìm hiu yêu cu
 Tìm hiu, quán trit các yêu c t ra ca bài toán
 Phân tích bài toán  xác nh c danh sách i

ng
 Phân tích i dung mô t bài toán m nhng danh
 ch ngi, ch t, ch  kin
 Phân tích các h thông thc và các tài liu h 
mô t  thng n vi h thng cn xây dng
 a vào kinh nghim và kin thc a ngi lp
trình  xác nh các i tung
 Chú ý:
  c này không nên quan tâm n nhim v bài
toán mà ch quan tâm n yu t o thành i
ng
22
43
Phân tích chi tit
 Phân tích bài toán
 Phân tích trong ni dung bài toán, c ng xác
nh các danh t.
  các danh t này có th xác nh các lp
trong bài toán.
 t nhiên ch n các danh t n thit
  các ng t, xác nh các tác v n x lý
trên lp này.
44
Víd1
Ví d: Cho 1 ng tròn bán kính R. Tính chu
vi và din tích ca hình tròn.
 Bài toán này có 2 danh t là “ng tròn”và“Bán
kính”. ng tròn chính là class, còn bán kính ch
là 1 thuc tính ca class ng tròn bi vì bán kính
ch là 1 i lng v giá tr chiu dài, không phi là

class.
 Hai ng t hay hai tác v n x lý là “Tính din
tích”và“Tính chu vi ca hình tròn” chính là 2 thành
phn phng thc ca class ng tròn
23
45
Thitkli tng
 Xác sinh s  ban u các lp và mi quan h a
các lp trong s tha k.
 Ví d: mô phng s ho ng c ng h có 3 kim: ng h
bao gm có m ng h (class FACE) và các kim ng h
(class KIM) và class CLOCK tha k  2 class trên
 Xác nh thành phn d liu và thành phn phng
thc ca lp.
 i 1 thành phn d liu hay hàm, phi xác nh kiu
 liu ca thành phn d liu và tham s + kiu d
liu tr  a các thành phn hàm
 i thành phn có quy nh: private, public,
protected….
46
Thitkli tng (tt1)
 Không quan tâm n chi tit ca tng hàm, ch xác nh
u vào và u ra ca tng phng thc
 i vi các thành phn d liu ca lp, ch chn các
thành phn (thuc tính) cn thit cho class
 1 i tng có th có nhiu thuc tính tuy nhiên tu theo tng
chng trình mà s thuc tính phi chn cn thit cho l ó
 p PTB2 có các thành phn d liu là: a, b, c, x1, x2, delta, x.
  dàng thy rng delta và x b  tha.
 u ý:

 p nên c tìm trong phm vi bài toán cn gii quyt
 Tên lp phi gi nh
24
47
Thitkli tng (tt2)
 Thành phn d liu ph c s ng bi 1 trong các
phng thc ca lp.
 Ví d i tng SINHVIEN có nhiu thuc tính nh hoten,
msinh, gii tính,…
 Thit k  tha k a các lp: xem các lp nào tha
  p nào to thành mô hình phân cp tha k.
 Xem xét áp dng tính a hình (polymorphism) nu có ca
ng dng.
48
Thitkli tng (tt3)
 Xác nh cách thc hin hoc thut gii ca tng
phng thc bng mã gi (peseudo code)
 Thit k constructor và destructor nu cn thit

×