Bài giảng Nhập môn công nghệ phần mềm - Chương 6: Thiết kế phần mềm cung cấp cho người học các kiến thức: Định nghĩa thiết kế phần mềm, các giai đoạn thiết kế, thiết kế và sự thay đổi, thiết kế hướng mô-đun,...Mời các bạn cùng tham khảo.
Trang 1Thi ế t k ế (6)
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 ầ
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 ấ ñị 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 ể
Trang 2Cá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 ầ
• ñị nh ngh ĩ a giao di ệ n gi ữ a các thành ph ầ
• ñị nh ngh ĩ a ph ầ n v ấ n ñề ñượ c gi ả i quy ế t b ở i m ỗ i thành ph ầ
• 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
Các giai ñ o ạ n thi ế t k ế
Architectural design
Abstract specificatio n
Interface design
Component design
Data structure design
Algorithm design
System architecture
Software specification specificationInterface specificationComponent
Data structure specification
Algorithm specification
Requirements specification
Design activities
Design products
Trang 3Cá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 ầ
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
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)
Trang 4Thi ế 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
Thi ế t k ế và s ự 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
Trang 5Thi ế 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
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)
Trang 6Cá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
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
Trang 7Cá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 ể
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á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
Trang 8Cá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
Thi ế t k ế ki ế n trúc
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ế
Trang 9Ch ấ 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
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)
Trang 10Mô 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
Mô hình “Repository”
Trang 11Mô 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
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
Trang 12Mô hình “Client-Server”
Ví d ụ
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
Trang 13Mô 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
Mô hình l ớ p