Nguyên lý thiếtkế và
mẫuthiếtkế
Nguyên lý thiếtkế…
2
NguyễnViệtHà
Nội dung
Thiết kế module
Chất lượng thiết kế
Độ đo thiết kế tốt
Khái niệm về mẫu thiết kế
Nguyên lý thiếtkế…
3
NguyễnViệtHà
Tài liệu tham khảo
Bruce Eckel, Thinking in Patterns
Erich Gamma, Design Patterns –
Elements of Reusable Object-Oriented
Software
Nguyờn lý thitk
4
NguynVitH
Thit k module
Dựa trên quan điểm "chia để trị"
C(p1 + p2) > C(p1) + C(p2)
E(p1 + p2) > E(p1) + E(p2)
C: độ phức tạp
E: nỗ lực thực hiện
giảm độ phức tạp
cục bộ, dễ sửa đổi
có khả n
ng phát triển song song
Che giấu thụng tin: lý do
Giảm hiệu ứng phụ khi sửa đổi module
Giảm sự tác động của thiết kế tổng thể lên
thiết kế cục bộ
Nhấn mạnh việc trao đổi thông tin thông
qua giao diện
Loại bỏ việc sử dụng d liệu dùng chung
Hớng tới sự đóng gói chức nng - thuộc
tính của thiết kế tốt
Tạo ra các sản phẩm phần mềm tốt hơn
Nguyờn lý thitk
8
NguynVitH
Chất lợng thiết kế
Phụ thuộc bài toán, không có phơng
pháp tổng quát
Một số độ đo
Coupling: mức độ ghép nối gia các module
Cohesion: mức độ liên quan lẫn nhau của các
thành phần bên trong một module
Understandability: tính hiểu đợc
Adaptability: tính thích nghi đợc
Nguyờn lý thitk
9
NguynVitH
Coupling and Cohesion
Coupling (ghép nối)
độ đo sự liên kết (trao đổi d liệu) gia các mô
đun
ghép nối chặt chẽ thỡ khó hiểu, khó sửa đổi (thiết
- c¸c ng«n ng
ữ bËc thÊp kh«ng cã biÕn côc bé
- l¹m dông lÖnh Goto
• Lµ tr−êng hîp xÊu nhÊt
Nguyờn lý thitk
12
NguynVitH
Ghép nối chung (common coupling)
Các module trao đổi d liệu thông qua biến tổng thể
Lỗi của module này có thể ảnh hởng đến hoạt động
của module khác
Khó sử dụng lại các module
D liệu
A
B
C
mô đun gây lỗi
mô đun gặp lỗi
Nguyên lý thiếtkế…
13
NguyễnViệtHà
GhÐp nèi ®iÒu khiÓn (control coupling)
• C¸c module trao ®æi th«ng tin ®iÒu khiÓn
• Lµm cho thiÕt kÕ khã hiÓu, khã söa ®æi, dÔ nhÇm
printName
(name, sex)
printRecord
Nguyờn lý thitk
14
NguynVitH
communicational still ok
procedural not bad at all
temporal still not bad at all
logical still not bad at all
coincidental lowest and worst by far
Nguyờn lý thitk
17
NguynVitH
Các chủng loại kết dính
Kết dính gom góp (coincidental cohesion)
- các thành phần không liên quan đến nhau
Kết dính lô gic (logical cohesion)
- các thành phần làm chức n
ng lô gic tơng tự
- vd: hàm xử lý lỗi chung
Kết dính thời điểm (temporal cohesion)
- các thành phần hoạt động cùng thời điểm
- vd: hàm khởi tạo (đọc d
liệu, cấp phát bộ nhớ )
Nguyờn lý thitk
18
NguynVitH
Các chủng loại kết dính
Kết dính thủ tục (procedural cohesion)
- các thành phần tạo có một thứ tự xác định
- vd: tính lơng cơ bản, tính phụ cấp, tính bảo hiểm
Kết dính truyền thông (communicational cohesion)
- các thành phần truy cập cùng d
liệu
- vd: thống kê (tính max, min, mean, variation )
lµ c¸c thùc thÓ ho¹t ®éng ®éc lËp
trao ®æi dữ liÖu qua th«ng ®iÖp
cã kh¶ năng kÕ thõa
côc bé, dÔ hiÓu, dÔ t¸i sö dông
Nguyên lý thiếtkế…
22
NguyễnViệtHà
Adaptability
TÝnh thÝch nghi ®−îc
HiÓu ®−îc
söa ®æi ®−îc, t¸i sö dông được
Tù chøa
kh«ng sö dông th− viÖn ngoµi
m©u thuÉn víi xu h−íng t¸i sö dông
Nguyên lý thiếtkế…
23
NguyễnViệtHà
Adaptability (2)
Các chức năng cần đượcthiếtkế sao cho dễ
dàng mở rộng mà không cầnsửacácmãđãcó
(Open closed principle)
Trừutượng hóa là chìa khóa để giải quyết vấn
đề này
các chứcnăng trừutượng hóa thường bấtbiến
các lớpdẫnxuấtcàiđặtcácgiải pháp cụ thể
sử dụng đa hình
Mẫuthiết kế: là thiếtkế chuẩn cho các bài toán
thường gặp
Nguyên lý thiếtkế…
24