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

Tài liệu Nguyên lý thiết kế và mẫu thiết kế docx

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 (294.48 KB, 48 trang )

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
dễ sửa đổi, dễ hiểu nên dễ tái sử dụng
Nguyên lý thiếtkế…
5
NguyễnViệtHà
Số lượng module
CÇn x¸c ®Þnh sè m«®un tèi −u
gi¸
phÇn
mÒm
sè module
sè module
tèi −u
chi phÝ ph¸t triÓn module
chi phÝ
tÝch hîp
Nguyờn lý thitk
6
NguynVitH
Chất lợng = Che giấu thông tin

Sử dụng module thông qua các giao diện

tham số và giá trị trả lại


Không cần biết cách thức cài đặt thực tế

thuật toán

cấu trúc d liệu

giao diện ngoại lai (các mô đun thứ cấp, thiết
bị vào/ra)

tài nguyên hệ thống
Nguyờn lý thitk
7
NguynVitH
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
kết tồi)


Cohesion (kết dính)

độ đo sự phụ thuộc lẫn nhau của các thành phần
trong một module

kết dính cao thỡ tính cục bộ cao (độc lập chức
nng); dễ hiểu, dễ sửa đổi
Nguyên lý thiếtkế…
10
NguyễnViệtHà
Coupling

møc ®é quan hÖ
cña c¸c module

module nªn
ghÐp nèi láng lÎo

cµng láng lÎo
cµng dÔ söa ®æi
thiÕt kÕ
normal coupling loose

and best
data coupling still very good
stamp coupling ok
control coupling ok
common coupling very bad
content coupling tight and worst
Nguyên lý thiếtkế…

11
NguyễnViệtHà
GhÐp nèi néi dung (content coupling)
• C¸c module dïng lÉn d

liÖu cña nhau
- 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
Ghép nối nhãn (stamp coupling)
Các module trao đổi thừa thông tin
Module có thể thực hiện chức n

ng ngoài ý muốn
Làm giảm tính thích nghi
calcAge
(personel record)(age)
Nguyên lý thiếtkế…
15
NguyễnViệtHà
GhÐp nèi dữ liÖu (data coupling)
• TruyÒn d

liÖu qua tham sè
• NhËn kÕt qu¶ qua tham sè vµ gi¸ trÞ tr¶ l¹i
(date)(day of week)
calcDayOfWeek
Nguyờn lý thitk

16
NguynVitH
Cohesion

mỗi module
chỉ nên thực
hiện một chức
nng

mọi thành
phần nên
tham gia thực
hiện chức
nng đó
functional high and best
sequential ok
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...)
Nguyờn lý thitk
19
NguynVitH
Các chủng loại kết dính
Kết dính tuần tự (sequential cohesion)
- output của một thành phần là input của
thành phần tiếp theo
- vd: ảnh mầu -> đen trắng -> ảnh nén
Kết dính chức n

ng (functional cohesion)

- các thành phần cùng góp phần thực hiện
một chức n

ng
- vd: sắp xếp

×