Bài giảng Kỹ nghệ phần mềm - Nguyễn Văn Vỵ - Bài 5: Khái niệm thiết kế phần mềm

Thiết kế là chuyển đặc tả yêu cầu thành mô tả thiết kế mà người lập trình có thể chuyển thành chương trình với 1 ngôn ngữ, vận hành được đáp ứng được yêu cầu đặt ra

Là 1 quá trình sáng tạo:

Tìm giải pháp công nghệ (Cách thức, phương án)

Biểu diễn cách thức, phương án

Xem xét lại, chi tiết hóa

pdf45 trang | Chuyên mục: Công Nghệ Phần Mềm | Chia sẻ: dkS00TYs | Lượt xem: 2212 | Lượt tải: 1download
Tóm tắt nội dung Bài giảng Kỹ nghệ phần mềm - Nguyễn Văn Vỵ - Bài 5: Khái niệm thiết kế phần mềm, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
ính môdun: phân chia dữ liệu vμ chức năng
„ Kiến trúc: cấu trúc tổng thể của phần mềm
„ Thủ tục: thuật toán để thực hiện chức năng
„ Che dấu: điều khiển bằng giao diện
Bộ mụn Cụng nghệ phần mềm – ĐHCN 17
NguyễnVănVỵ
Trừu t−ợng hóa (abstraction)
„ Khái niệm cơ sở trong t− duy của con ng−ời
„ Lμ quá trinh ánh xạ một sự vật/hiện t−ợng của thế 
giới thực thμnh 1 khái niệm logic
„ Có nhiều mức trừu t−ợng khác nhau
„ cho phép con ng−ời tập trung (t− duy) vμo giải quyết vấn 
đề mμ không cần bận tâm đến chi tiết
„ biểu diễn vấn đề bằng một cấu trúc tự nhiên
Bộ mụn Cụng nghệ phần mềm – ĐHCN 18
NguyễnVănVỵ
Cửa
mó sụ: 256AD
loại: của ra vào
hướng mở: ra bờn trỏi
cao: 2.3
rộng: 0.85
trong lượng: 120
màu: nõu cỏnh dỏn
Trừ t−ợng dữ liệu
Bộ mụn Cụng nghệ phần mềm – ĐHCN 19
NguyễnVănVỵ
Mở cửa
Mụ tả chi tiến quỏ
trỡnh vào phũng 
qua của
Trừ t−ợng thủ tục
Bộ mụn Cụng nghệ phần mềm – ĐHCN 20
NguyễnVănVỵ
Lμm mịn từng b−ớc
Mở cửa
Bước đến gần cửa
Đưa chỡa khúa vào ổ xoay
Mở cửa
Bước qua vào phũng
Đúng cửa lại 
Lặp lại cho đến khi chốt khúa bật ra
Nếu chổt khụng mở thỡ
Rỳt khúa ra, tỡm chỡa khỏc phự
hợp, cắm vỏo ổ khúa, tiếp tục 
xoay cho đến khi mở được
Bước qua cuửa vào phũng
Đúng cửa lại 
Bộ mụn Cụng nghệ phần mềm – ĐHCN 21
NguyễnVănVỵ
Thiết kế mô đun
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: cụng sứ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
Bộ mụn Cụng nghệ phần mềm – ĐHCN 22
NguyễnVănVỵ
Cần xác định số môđun tối −u
giá
phần 
mềm
số mô đunkhoảng có số
mô đun tối −u
chi phí phát triển mô đun
chi phí
tích hợp
Số l−ợng môđun
Bộ mụn Cụng nghệ phần mềm – ĐHCN 23
NguyễnVănVỵ
Kích th−ớc?nội dung?
Mụđun
Kích cỡ môđun
„ Kích cỡ mô đun đ−ợc quyết định dựa trên khái niệm độc 
lập chức năng: mỗi mô đun nờn thực hiện 1 công việc: 
dễ hiểu, dễ sửa đổi, dễ tái sử dụng
Bộ mụn Cụng nghệ phần mềm – ĐHCN 24
NguyễnVănVỵ
Che giấu thông tin 
„ Sử dụng môđun thông qua các giao diện
„ danh sách tham số vμ giá trị trả lại
„ Không cần biết cách thức cμi đặt của nó:
„ thuật toán
„ cấu trúc dữ liệu
„ giao diện ngoại lai (mô đun thứ cấp, thiết bị vμo/ra)
„ tμi nguyên hệ thống
Bộ mụn Cụng nghệ phần mềm – ĐHCN 25
NguyễnVănVỵ
Lý do che giấu thông tin
„ Giảm hiệu ứng phụ khi sửa đổi môđun
„ Giảm tác động của thiết kế tổng thể lên thiết kế 
cục bộ
„ Nhấn mạnh 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 năng, 1 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
Bộ mụn Cụng nghệ phần mềm – ĐHCN 26
NguyễnVănVỵ
Chất l−ợng thiết kế
Ba đặc tr−ng xem nh− lμ h−ớng dẫn cho 1 thiết kế tốt 
(McMlaughli[MCG91]):
„ Thiết kế phảI triển khai đ−ợc tất cả yêu cầu trong mô hình 
phân tích & yêu cầu tiềm ẩn mμ khách hμng đòi hỏi.
„ Thiết kế cần là bản h−ớng dẫn dễ đọc, dễ hiểu cho ng−ời 
viết ch−ơng trình, ng−ời kiểm thử vμ ng−ời bảo trì.
„ Thiết kế cần cung cấp 1 bức tranh đầy đủ về phần mềm
trên quan điểm triển khai h−ớng đến các mặt dữ liệu, chức 
năng vμ hμnh vi của hệ thống 
MCG91: McMlaughli,R., Mộ số chú ý về thiết kế ch−ơng trình, Software Engineering 
Notes,vol.16, no.4,oct 1991, pp53-54.
Bộ mụn Cụng nghệ phần mềm – ĐHCN 27
NguyễnVănVỵ
Tiêu chí chất l−ợng
Cần thiết lập các tiêu chí kỹ thuật để đánh giá một thiết 
kế tốt hay không:
„ Thiết kế cần có kiến trúc tốt: cấu thμnh từ các mẫu 
(pattern), các thμnh phần có đặc tr−ng tốt, dễ tiến hoá.
„ Thiết kế đ−ợc môđul hoá cho mỗi thμnh phần chức 
năng
„ Chứa các biểu diễn tách biệt nhau về: dữ liệu, kiến 
trúc, giao diện, thμnh phần, môi tr−ờng 
„ Liên kết qua giao diện lμm giảm độ phức tạp liên kết 
giữa các môđul với nhau vμ giữa hệ thống vμ môI 
tr−ờng 
Bộ mụn Cụng nghệ phần mềm – ĐHCN 28
NguyễnVănVỵ
Độ đo chất l−ợng thiết kế
„ Phụ thuộc bμi toán, không có ph−ơng pháp chung
„ Một số độ đo:
 Coupling: mức độ ghép nối giữa các module
 Cohesion: mức độ liên kết giữa các thμnh phần trong 
một module
 Understandability: tính hiểu đ−ợc
 Adaptability: tính thích nghi đ−ợc
Bộ mụn Cụng nghệ phần mềm – ĐHCN 29
NguyễnVănVỵ
„ Coupling (ghép nối)
„ độ đo sự liên kết (trao đổi dữ liệu) giữa các mô đun
„ ghép nối chặt chẽ thì khó hiểu, khó sửa đổi do phảI 
tính đến các liên kết có thể, dễ gây lỗi lan truyền. 
„ 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 năng); 
dễ hiểu, dễ sửa đổi.
„ Tiêu chuẩn của thiết kế tốt: kết dính chặt, ghép nối 
lỏng
Độ đo chất l−ợng thiết kế (t)
Bộ mụn Cụng nghệ phần mềm – ĐHCN 30
NguyễnVănVỵ
Ghép nối - Coupling
mức độ quan hệ của 
các module:
„ module nên ghép nối 
lỏng lẻo
„ Mức lỏng lẻo thể
hiện qua loại hình 
ghép nối (hình bên)
ghép nối nội dung
loose and best
still very good 
ok
ok
very bad
tight and worst
ghép nối th−ờng
ghép nối điều khiển 
ghép nối chung
ghép nối nh∙n 
ghép nối dữ liệu
Bộ mụn Cụng nghệ phần mềm – ĐHCN 31
NguyễnVănVỵ
Ghép nối nội dung
„ Các module dùng dữ liệu hay thông tin điều khiển đ−ợc 
duy trì trong 1 mô dun khác
„ Lμ tr−ờng hợp xấu nhất. Ví dụ:
 các ngôn ngữ bậc thấp chỉ dùng biến chung
 lạm dụng lệnh Goto trong một chu trình
10 k =1
20 gosub 100
30 if y > 120 goto 60
40 k = k+1
50 goto 20
60 print k, y
70 stop
100 Y =3*k*k+7*k-3
110 return
Bộ mụn Cụng nghệ phần mềm – ĐHCN 32
NguyễnVănVỵ
Ghép nối chung
 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
Biến tổng thể
A B
C
mô đun gây lỗi
mô đun chịu lỗi
Bộ mụn Cụng nghệ phần mềm – ĐHCN 33
NguyễnVănVỵ
Ghép nối điều khiển 
„ 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
procedure PrintRec is
begin
Display Name (name, 
sex);
.....
end PrintRec;
procedure DisplayName (in : name, 
sex) is
begin
if sex = m
then 
print Mr.
else 
print Ms
print name
end DisplayName;
Bộ mụn Cụng nghệ phần mềm – ĐHCN 34
NguyễnVănVỵ
Ghép nối nhãn
„ Các môđun trao đổi thừa thông tin
„ Môđun có thể thực hiện chức năng ngoμi ý muốn
„ Lμm giảm tính thích nghi
calc_age
(bản ghi nhân sự)
(tuổi)
Bộ mụn Cụng nghệ phần mềm – ĐHCN 35
NguyễnVănVỵ
Ghép nối dữ liệu
„ Truyền dữ liệu qua tham số
„ Nhận kết quả qua tham số vμ giá trị trả lại
(ngμy)(ngμy của tuần)
calc_day_of_week
Bộ mụn Cụng nghệ phần mềm – ĐHCN 36
NguyễnVănVỵ
Kết dính - Cohesion
„ mỗi môđun chỉ nên 
thực hiện 1 chức 
năng
„ mọi thμnh phần của 
môđun phải tham 
gia thực hiện chức 
năng đó
chức năng high and best
ok
still ok
not bad at all
still not bad at all
still not bad at all
lowest and worst by far
thời điểm
thủ tục
gom góp
logic
truyền thông
tuần tự
Bộ mụn Cụng nghệ phần mềm – ĐHCN 37
NguyễnVănVỵ
Các loại kết dính
Kết dính gom góp (coincidental cohesion):
 gom các thμnh phần không liên quan đến nhau
 Kết dính lôgic (logical cohesion)
 gồm 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ớ...)
 Kết dính thủ tục (procedural cohesion)
 các thμnh phần thực hiên theo 1 thứ tự xác định (vd: tính 
l−ơng cơ bản, tính phụ cấp, tính bảo hiểm)
Bộ mụn Cụng nghệ phần mềm – ĐHCN 38
NguyễnVănVỵ
Các loại kết dính(t)
Kết dính truyền thông (communicational cohesion) 
 các thμnh phần truy cập đến cùng tập dữ liệu: tính toán 
thống kê (tính max, min, mean, variation...)
 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: ả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: các thao tác sắp xếp)
Bộ mụn Cụng nghệ phần mềm – ĐHCN 39
NguyễnVănVỵ
Tính hiểu đ−ợc -Understandability
„ Lμ kết quả tổng hợp từ nhiều thuộc tính
 Cấu trúc rõ rμng, tốt
 Ghép nối lỏng lẻo
 Kết dính cao
 Đ−ợc lập tμi liệu
 Thuật toán, cấu trúc dễ hiểu
Bộ mụn Cụng nghệ phần mềm – ĐHCN 40
NguyễnVănVỵ
Tính thích nghi đ−ợc (Adaptability)
„ 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
Bộ mụn Cụng nghệ phần mềm – ĐHCN 41
NguyễnVănVỵ
Thiết kế h−ớng đối t−ợng vμ chất lượng
„ Thiết kế h−ớng đối t−ợng h−ớng tới chất l−ợng thiết kế tốt
 đóng gói, che dấu thông tin (độc lập dữ liệu)
 các thực thể hoạt động độc lập (cục bộ, dùng lại)
 trao đổi dữ liệu qua truyền thông (liên kết yếu)
 có khả năng kế thừa (dùng lại)
 cục bộ, dễ hiểu, dễ tái sử dụng
Bộ mụn Cụng nghệ phần mềm – ĐHCN 42
NguyễnVănVỵ
Câu hỏi ôn tập
1. Thiết kế phần mềm lμ gi?
2. Nêu các nguyên lý thiết kê phần mềm?
3. Nêu các loại thiết kế vμ giảI thích nội dung của nó?
4. GiảI thích mộ số khái niệm cơ bản của thiết kế: 
ƒ trừu t−ợng?
ƒ lμm mịn?
ƒ mô đun hoá?
ƒ thủ tục?
ƒ che dấu thông tin?
5. Vẽ sơ đồ mô tả mỗi quan hệ gi−a số mô đun vμ chi phí phát 
triển? 
Bộ mụn Cụng nghệ phần mềm – ĐHCN 43
NguyễnVănVỵ
Câu hỏi ôn tập
6. Các đặc tr−ng của một thiết kế tốt?
7. Các tiêu chí kỹ thuật đánh giá một thiết kế tốt
8. Lợi ích của hệ thống có kiến trúc tốt
9. Lợi ích của việc mô đun hoá trong thiết kế phần mềm lμ gì?
10. Lợi ích của việc che dấu thông tin lμ gì?
11. Có các độ đo chất l−ợng thiết kế nμo?
Bộ mụn Cụng nghệ phần mềm – ĐHCN 44
NguyễnVănVỵ
Câu hỏi ôn tập
12. Ghép nối lμ gì? Kể các loại ghép nối theo mức độ chặt 
(tồi) dần?
13. Kết dính lμ gì? Kể các loại kết dính theo mức độ chặt 
giảm (kém) dần?
14. Thế nμo lμ tính hiểu đ−ợc?
15. Thế nμo lμ tính thích nghi đ−ợc?
16. Thiết kế h−ớng đối t−ợng h−ớng đến chất l−ợng tốt ở
những mặt nμo? 
Bộ mụn Cụng nghệ phần mềm – ĐHCN 45
NguyễnVănVỵ
Câu hỏi và thảo luận

File đính kèm:

  • pdfBài giảng Kỹ nghệ phần mềm - Nguyễn Văn Vỵ - Bài 5 Khái niệm thiết kế phần mềm.pdf