Bài giảng Công nghệ phần mềm - Chương 6: Thiết kế - Nguyễn Thanh Bình
Thiꢀt kꢀ (6)
Nguyꢀn Thanh Bình
Khoa Công nghꢁꢂThôngꢂtin
Trưꢃng ðꢄi hꢅc Bách khoa
ðꢄi hꢅc ðà Nꢆng
Thiꢀt kꢀ ?
ꢀ
ꢀ
ꢀ
phân tích bài toán/vꢁn ñꢂ
xuꢁt phát tꢃ yêu cꢄu
mô tꢅ mꢆt hoꢇc nhiꢂu giꢅi pháp
ñánh giá các giꢅi pháp, chꢈn giꢅi pháp tꢉt nhꢁt
ꢊ mꢆt mꢋc trꢃu tưꢌng nhꢁt ñꢍnh
sꢎ dꢏng các mô hình
ꢁ
ꢁ
ꢁ
ꢀ
3 tính chꢁt
ꢁ
ꢁ
ꢁ
trꢅ lꢐi câu hꢑi “như thꢀ nào”
mô tꢅ chꢒ yꢀu là cꢁu trúc
bꢑ qua các chi tiꢀt cài ñꢇt
• giꢅi pháp trꢃu tưꢌng ≠ giꢅi pháp cꢏ thꢓ
2
1
Các giai ñoꢔn thiꢀt kꢀ
ꢀ
Hoꢔt ñꢆng thiꢀt kꢀ xuꢁt hiꢕn trong các mô
hình phát triꢓn khác nhau
ꢀ
Hai giai ñoꢔn thiꢀt kꢀ chính
ꢁ
Thiꢀt kꢀ kiꢀn trúc
• phân tích giꢅi pháp thành các thành phꢄn
• ñꢍnh nghĩa giao diꢕn giꢖa các thành phꢄn
• ñꢍnh nghĩa phꢄn vꢁn ñꢂꢗñưꢌc giꢅi quyꢀt bꢊi mꢘi
thành phꢄn
• có thꢓꢗñưꢌc thꢙc hiꢕn bꢊi nhiꢂu mꢋc trꢃu tưꢌng
ꢁ
Thiꢀt kꢀ chi tiꢀt
• thiꢀt kꢀ thuꢚt toán, cꢁu trúc dꢖ liꢕu...
3
Các giai ñoꢔn thiꢀt kꢀ
Requirements
specification
Design activities
Component
Data
structure
design
Architectural
design
Abstract
specificatio
n
Interface
design
Algorithm
design
design
Data
structure
specification
Software
specification
System
architecture
Interface
specification
Component
specification
Algorithm
specification
Design products
4
2
Các giai ñoꢔn thiꢀt kꢀ
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
Architectural design
xác ñꢍnh các hꢕ thꢉng con
Abstract specification
ñꢇc tꢅ các hꢕ thꢉng con
Interface design
mô tꢅ giao diꢕn các hꢕ thꢉng con
Component design
phân tích hꢕ thꢉng con thành các thành phꢄn
Data structure design
các cꢁu trúc dꢖ liꢕu lưu trꢖ dꢖ liꢕu cꢒa bài toán
Algorithm design
thiꢀt kꢀ thuꢚt toán cho các hàm/mô-ñun
ꢁ
ꢁ
ꢁ
ꢁ
ꢁ
ꢁ
5
Tꢔi sao phꢅi thiꢀt kꢀ ?
ꢀ
có mꢆt kiꢀn trúc tꢉt
ꢁ
làm chꢒꢗñưꢌc cꢁu trúc hꢕ thꢉng
“chia ñꢓ trꢍ”
ꢁ
ꢀ
ñꢔt ñưꢌc các tiêu chuꢛn chꢁt lưꢌng
tái sꢎ dꢏng / dꢜ keꢝem thꢎ / dꢜ bꢅo trì...
ꢁ
ꢀ
thiꢀt kꢀꢗhưꢞng ñꢀn sꢙꢗthayꢗñꢟi (design for
change)
6
3
Thiꢀt kꢀ và sꢙꢗthayꢗñꢟi
ꢀ
ꢀ
ꢀ
Thay ñꢟi = tích chꢁt ñꢇc trưng cꢒa phꢄn
mꢂm
Dꢙ báo thay ñꢟi là cꢄn thiꢀt
ꢁ
giꢅm chi phí bꢅo trì
Dꢙ báo thay ñꢟi là khóꢗkhăn
ꢁ
sꢙꢗthayꢗñꢟi thưꢐng không ñưꢌc xác ñꢍnh
trưꢞc
ꢁ
ꢁ
nhiꢂu yꢀu tꢉꢗthayꢗñꢟi cùng lúc
thꢐi ñiꢓm thay ñꢟi là khó có thꢓ biꢀt trưꢞc
7
Thiꢀt kꢀ và sꢙꢗthayꢗñꢟi
ꢀ
Các yꢀu tꢉ có thꢀꢗthayꢗñꢟi
ꢁ
ꢁ
ꢁ
ꢁ
ꢁ
ꢁ
thuꢚt toán
cꢁu trúc dꢖ liꢕu
biꢓu diꢜn dꢖ liꢕu bên ngoài
thiꢀt bꢍ ngoꢔi vi
môi trưꢐng xã hꢆi
yêu cꢄu khách hàng
8
4
Thiꢀt kꢀꢗhưꢞng mô-ñun
ꢀ
ꢀ
ꢀ
Phꢄn mꢂm là tꢚp hꢌp gꢠm các mô-ñun
tương tác vꢞi nhau
Mô-ñun hóa ñóng vai trò quan trꢈng ñꢓ cóꢗ
ñưꢌc phꢄn mꢂm chꢁt lưꢌng vꢞi chi phí thꢁp
Mꢏc ñích thiꢀt kꢀ hꢕ thꢉng
ꢁ
xác ñꢍnh các mô-ñun có thꢓ
ꢁ
xác ñꢍnh tương tác giꢖa các mô-ñun
9
Các tiêu chuꢛn cꢒa mꢆt
phương pháp thiꢀt kꢀ
ꢀ
Các tiêu chuꢛn ñꢓꢗñánh giá mꢆt phương
pháp thiꢀt kꢀꢗhưꢞng mô-ñun
ꢁ
ꢁ
ꢁ
ꢁ
ꢁ
tính phân rã (modular decomposability)
tính tꢟng hꢌp (modular composability)
tính dꢜ hiꢓu (modular understandability)
tính liên tꢏc (modular continuity)
tính bꢅo vꢕ (modular protection)
10
5
Các tiêu chuꢛn cꢒa mꢆt
phương pháp thiꢀt kꢀ
ꢀ
tính phân rã (modular decomposability)
ꢁ
phân rã vꢁn ñꢂ thành các vꢁn ñꢂ con nhꢑꢗ
hơn
ꢁ
có thꢓ giꢅi quyꢀt các vꢁn ñꢂ con mꢆt cách
ñꢆc lꢚp
ꢁ
các phương pháp thiꢀt kꢀ tꢃ trên xuꢉng (to-
down design) thꢑa mãn tiêu chuꢛn này
11
Các tiêu chuꢛn cꢒa mꢆt
phương pháp thiꢀt kꢀ
ꢀ
tính tꢟng hꢌp (modular composability)
ꢁ
các mô-ñun dꢜ dàng ñưꢌc kꢀt hꢌp vꢞi nhau
ñꢓ tꢔo nên các hꢕ thꢉng mꢞi
ꢁ
ꢁ
có mꢉi quan hꢕ chꢇt chꢡ vꢞi tính tái sꢎ dꢏng
tính tꢟng hꢌp có thꢓꢗxungꢗñꢆt vꢞi tính phân
rã
• phân rã thành các mô-ñun chuyên biꢕt thay vì các
mô-ñun tꢟng quát
12
6
Các tiêu chuꢛn cꢒa mꢆt
phương pháp thiꢀt kꢀ
ꢀ
tính dꢜ hiꢓu (modular understandability)
ꢁ
thiꢀt kꢀ các mô-ñun mꢆt cách dꢜ hiꢓu
ꢁ
tính chꢁt mꢘi mô-ñun
• mꢘi mô-ñun có dꢜ hiꢓu ?
• các tên sꢎ dꢏng có ý nghĩa ?
• cso sꢎ dꢏng thuꢚt toán phꢋc tꢔp ?
ꢁ
Ví dꢏ
ꢂ sꢎ dꢏng “goto”
ꢂ chương trình vài nghìn dòng lꢕnh, nhưng không sꢎ
dꢏng hàm/thꢒ tꢏc
13
Các tiêu chuꢛn cꢒa mꢆt
phương pháp thiꢀt kꢀ
ꢀ
tính liên tꢏc (modular continuity)
ꢁ
mꢆt sꢙꢗthayꢗñꢟi trong ñꢇc tꢅ yêu cꢄu chꢝ dꢢn
ñꢀn sꢙꢗthayꢗñꢟi trong mꢆt (hoꢇc mꢆt sꢉ ít)
mô-ñun
ꢁ
Ví dꢏ
☺không sꢎ dꢏng sꢉ hoꢇc chuꢘi ký tꢙꢗtrongꢗchươngꢗ
trình, chꢝꢗñưꢌc sꢎ dꢏng các hꢣng ñã ñꢍnh nghĩa
ꢂsꢎ dꢏng mꢅng
14
7
Các tiêu chuꢛn cꢒa mꢆt
phương pháp thiꢀt kꢀ
ꢀ
tính bꢅo vꢕ (modular protection)
ꢁ
kiꢀn trúc ñươc thiꢀt kꢀ sao cho nꢀu mꢆt ñiꢂu
kiꢕn bꢁt thưꢐng xꢅy ra, chꢝ mꢆt (hoꢇc mꢆt sꢉ
ít) mô-ñun bꢍ ꢅnh hưꢊng
15
Thiꢀt kꢀ kiꢀn trúc
ꢀ
Kiꢀn trúc = tꢚp hꢌp các thành
phꢄn/mô-ñun và quan hꢕ giꢖa chúng
ꢁ
các thành phꢄn/mô-ñun
• hàm / nhóm các hàm / lꢞp ...
quan hꢕ
ꢁ
• sꢎ dꢏng / gꢈi / thꢃa kꢀ ...
16
8
Chꢁt lưꢌng cꢒa kiꢀn trúc
ꢀ
mꢘi mô-ñun có tính kꢀt cꢉ cao (high
cohesion)
ꢁ
mꢆt mô-ñun là mꢆt ñơn vꢍ lô-gíc
ꢁ
toàn bꢆꢗmô-ñun cùng ñóng góp thꢙc hiꢕn
mꢆt mꢏc tiêu
ꢀ
liên kꢀt lꢑng lꢡo (low coupling) giꢖa các mô-
ñun
ꢁ
ít ràng buꢆc, phꢏ thuꢆc lꢢn nhau
ꢀ
ꢀ
dꢜ hiꢓu
ñꢍnh nghĩa rꢑ ràng
ꢁ
các mô-ñun và quan hꢕ giꢖa chúng
17
Các loꢔi kiꢀn trúc
ꢀ
Ba loꢔi mô hình kiꢀn trúc thưꢐng ñưꢌc sꢎ
dꢏng
ꢁ
chia sꢡ dꢖ liꢕu: mô hình “Repository”
ꢁ
chia sꢡ dꢍch vꢏ, servers: mô hình “Client-
Server”
ꢁ
mô hình lꢞp (layered model)
18
9
Mô hình “Repository”
ꢀ
Nguyên tꢤc
ꢁ
dꢖ liꢕu chia sꢡꢗñưꢌc tꢚp trung trong mꢆt
CSDL
ꢁ
các hꢕ thꢉng con ñꢂu truy cꢚp vào CSDL
chung
ꢀ
Khi mꢆt lưꢌng dꢖ liꢕu lꢞn cꢄn chia sꢡ giꢖa
các hꢕ thꢉng con
ꢁ
mô hình “Repository”ꢗthưꢐng ñưꢌc sꢎ dꢏng
19
Mô hình “Repository”
ꢀ
Ví dꢏ kiꢀn trúc mꢆt công cꢏ CASE
20
10
Mô hình “Repository”
ꢀ
Ưu diꢓm
ꢁ
ꢁ
ꢁ
ñơn giꢅn
hiꢕu quꢅ khi chia sꢡꢗlưꢌng dꢖ liꢕu lꢞn
sꢙꢗñꢆc lꢚp cꢒa các hꢕ thꢉng con
ꢀ
Hꢔn chꢀ
ꢁ
các hꢕ thꢉng con phꢅi thꢉng nhꢁt trên mô
hình dꢖ liꢕu “repository”
ꢁ
khóꢗkhănꢗkhiꢗphânꢗtán dꢖ liꢕu
21
Mô hình “Client-Server”
ꢀ
Nguyên tꢤc
ꢁ
mô hình phân tán: dꢖ liꢕu và xꢎꢗlýꢗñưꢌc
phân tán trên nhiꢂu thành phꢄn khác nhau
ꢀ
Hꢕ thꢉng bao gꢠm
ꢁ
các servers cung cꢁp các dꢍch vꢏ
• có thꢓ có nhiꢂu servers
ꢁ
ꢁ
các clients yêu cꢄu các dꢍch vꢏ
phương thꢋc trao ñꢟi
• mꢔng hay trên mꢆt máy tính
22
11
Mô hình “Client-Server”
ꢀ
Ví dꢏ
23
Mô hình “Client-Server”
ꢀ
Ưu ñiꢓm
ꢁ
sꢎ dꢏng hiꢕu quꢅ mꢔng
ꢁ
dꢜ dàng thêm server mꢞi hoꢇc nâng cꢁp server hiꢕn
tꢔi
ꢁ
phân tán dꢖ liꢕu dꢜ dàng
ꢀ
Hꢔn chꢀ
ꢁ
mꢘi hꢕ thꢉng con quan lý dꢖ liꢕu riêng cꢒa nó
• có thꢓ dꢢn ñꢀn dư thꢃa
ꢁ
không có kiꢀn trúc tꢚp trung ghi nhꢚn các dich vꢏ
• khóꢗkhănꢗñꢓ xác ñꢍnh dꢖ liꢕu hay dꢍch vꢏ sꢎ dꢏng
24
12
Mô hình lꢞp
ꢀ
Nguyên tꢤc
ꢁ
tꢟ chꢋc hꢕ thꢉng thành tꢚp hꢌp các lꢞp
mꢘi lꢞp cung cꢁp tꢚp hꢌp các dꢍch vꢏ
ꢁ
ꢀ
ꢀ
ñưꢌc sꢎ dꢏng ñꢓ mô tꢅ quan hꢕ giꢖa các
hꢕ thꢉng con
khi giao diꢕn cꢒa mꢆt lꢞp thay ñꢟi, chꢝ lꢞp
kꢀ cꢚn bꢍ ꢅnh hưꢊng
ꢀ
hꢘ trꢌ mô hình phát triꢓn tăng trưꢊng
25
Mô hình lꢞp
ꢀ
Ví dꢏ: hꢕ thꢉng quꢅn lý phiên bꢅn
26
13
Bạn đang xem tài liệu "Bài giảng Công nghệ phần mềm - Chương 6: Thiết kế - Nguyễn Thanh Bình", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_cong_nghe_phan_mem_chuong_6_thiet_ke_nguyen_thanh.pdf

