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
í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:
- 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.pdf