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  
pdf 13 trang baolam 21640 Free
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:

  • pdfbai_giang_cong_nghe_phan_mem_chuong_6_thiet_ke_nguyen_thanh.pdf