Bài giảng Kỹ nghệ phần mềm - Bài 5: Khái niệm thiết kế phần mềm - Nguyễn Văn Vỵ
Tóm tắt Bài giảng Kỹ nghệ phần mềm - Bài 5: Khái niệm thiết kế phần mềm - Nguyễn Văn Vỵ: ... cái nhìn tổng thể về hệ thống mối quan hệ giữa các mô đun giao diện giữa các mô đun Sử dụng biểu đồ cấu trúc (structure chart), mô tả: không cần chỉ ra: thứ tự thực hiện số lần thực hiện chi tiết thiết kế Bộ mụn Cụng nghệ phần mềm – ĐHCN 14 NguyễnVănVỵ Thiết kế cấu trúc dữ liệu ... 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ụ...hấ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...
Bộ môn Công nghệ phần mềm- Khoa CNTT- ĐHCN Email: vynv@coltech.vnu.vn Kỹ nghệ phần mềm Software Engeneering Nguyễn Văn Vỵ Bộ mụn Cụng nghệ phần mềm – ĐHCN 2 NguyễnVănVỵ Nội dung Bài 5: Khỏi niệm thiết kế phần mềm Khái niệm, nguyên lý, chất l−ợng Nội dung thiết kế vμ chất l−ợng Bộ mụn Cụng nghệ phần mềm – ĐHCN 3 NguyễnVănVỵ TÀI LiỆU THAM KHẢO 1. Nguyễn Văn Vỵ, Nguyễn Việt Hà. Giỏo trỡnh kỹ nghệ phần mềm. Nhà xuất bản Đại học Quốc gia Hà nội, 2008 2. Grady Booch, James Rumbaugh, Ivar Jacobson. The Unified Modeling language User Guid. Addison-Wesley, 1998. 3. M. Ould. Managing Software Quality and Business Risk, John Wiley and Sons, 1999. 4. Roger S.Pressman, Software Engineering, a Practitioner’s Approach. Fifth Edition, McGraw Hill, 2001. 5. Ian Sommerville, Software Engineering. Sixth Edition, Addison- Wasley, 2001. 6. Nguyễn Văn Vỵ. Phõn tớch thiết kế hệ thống thụng tin hiện đại. Hướng cấu trỳc và hướng đối tượng, NXB Thống kờ, 2002, Hà Nội. Bộ mụn Cụng nghệ phần mềm – ĐHCN 4 NguyễnVănVỵ Khái niệm thiết kế phần mềm 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 đủ chi tiết để ng−ời lập trình biết phải lμm nh− thế nμo để chuyển thμnh ch−ơng trình 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: Bộ mụn Cụng nghệ phần mềm – ĐHCN 5 NguyễnVănVỵ tạo mô hình cμi đặt của phần mềm lμ công cụ giao tiếp giữa các những ng−ời tham gia phát triển, cơ sở đảm bảo chất l−ợng hệ thống dễ đọc, dễ hiểu, dễ sửa đổi hơn mã ch−ơng trinh có nhiều mức chi tiết; cung cấp cái nhìn tổng thể lμm cơ sở để trao đổi, cải tiến Cung cấp đầy đủ thông tin cho việc bảo trì sau nμy: Giảm công sức mã hóa khi sửa đổi Tiện bảo trì phát triển, mở rộng Vai trò thiết kế Bộ mụn Cụng nghệ phần mềm – ĐHCN 6 NguyễnVănVỵ Cấu trúc thiết kế Phần mềm lμ tập các mô đun t−ơng tác lẫn nhau Mô đun hóa lμ chìa khóa cho phần mềm tốt Mục tiêu thiết kế lμ xác định: các mô đun chức năng cách thức cμi đặt mô đun t−ơng tác giữa các mô đun Bộ mụn Cụng nghệ phần mềm – ĐHCN 7 NguyễnVănVỵ 1. không bị bó buộc vμo một cách nhin hạn chế nμo nó cần đ−ợc lựa chọn từ các giải pháp có thể 2. cho phép lần ng−ợc lại mô hinh phân tích các mô đun & các yêu cầu không nhất thiết phải t−ơng ứng 1-1 nh−ng phải kiểm tra đ−ợc sự thỏa mãn các yêu cầu Nguyên lý thiết kế Bộ mụn Cụng nghệ phần mềm – ĐHCN 8 NguyễnVănVỵ 3. Không nên tạo lại các thiết kế (giải pháp) đã có, mμ cần tái sử dụng tối đa chúng 4. Mô hình thiết kế (giải pháp) nên tiến gần đến mô hinh thế giới thực (bμi toán) 5. Biểu diễn thiết kế phải nhất quán vμ có tính tích hợp: thiết kế do nhiều ng−ời tiến hμnh song song phải thống nhất cách biểu diễn, thống nhất giao diện 6. Thiết kế cần có cấu trúc để dễ hiểu, dễ thay đổi phải đ−ợc modun hóa, phân cấp Nguyên lý thiết kế (t) Bộ mụn Cụng nghệ phần mềm – ĐHCN 9 NguyễnVănVỵ 7. Thiết kế không phải lμ mã hóa thiết kế luôn có mức trừu t−ợng hơn mã hóa, đảm bảo dễ hiểu, dễ thay đổi 8. Thiết kế cần đ−ợc đánh giá chất l−ợng ngay trong khi đ−ợc tạo ra tính kết dính, tính ghép nối, hiệu quả thuật toán 9. Thiết kế cần đ−ợc thẩm định để tránh các lỗi mang tính hệ thống thiếu chức năng, chức năng không rõ, mâu thuẫn... Nguyên lý thiết kế (t) Bộ mụn Cụng nghệ phần mềm – ĐHCN 10 NguyễnVănVỵ Nôi dung & chất l−ợng thiết kế Nội dung thiết kế Thiết kế kiến trúc phân rã hệ thống thμnh hệ thống concác mô đun, xác định giao diện t−ơng tác gi−a các mô đun Thiết kế cấu trúc dữ liệu xây dựng mô hinh biểu diễn thông tin Thiết kế thủ tục (thuật toán) xác định các b−ớc thực hiện xử lý Thiết kế giao diện ng−ời dùng nên nhin nhận giao diện lμ một bμi toán độc lập Bộ mụn Cụng nghệ phần mềm – ĐHCN 11 NguyễnVănVỵ Mô hình tổng quát tiến trình thiết kế Tiến trình thiết kế lμ quá trình tăng c−ờng hình thức hóa vμ luôn quay lại các thiết kế đúng đắn vμ ít hình thức hóa hơn tr−ớc đó để kiểm tra vμ hoμn chỉnh phỏc thảo thiết kế phi hỡnh thức thiết kế phi hỡnh thức thiết kế hỡnh thức hơn(bỏn) thiết kế chi tiết cuối cựng Bộ mụn Cụng nghệ phần mềm – ĐHCN 12 NguyễnVănVỵ Tiến trình hoạt động thiết kế vμ sản phẩm Đặc tả cỏc yờu cầu kiến trỳc hệ thốngthiết kế kiến trỳc Đặc tả trừu tượng thiết kế giao diện thiết kế thành phần thiết kế dữ liệu thiết kế thuật toỏn đặc tả phần mềm đặc tả giao diện đặc tả thành phần đặc tả cấu trỳc dữ liệu đặc tả thuật toỏn Bộ mụn Cụng nghệ phần mềm – ĐHCN 13 NguyễnVănVỵ Thiết kế kiến trúc cái nhìn tổng thể về hệ thống mối quan hệ giữa các mô đun giao diện giữa các mô đun Sử dụng biểu đồ cấu trúc (structure chart), mô tả: không cần chỉ ra: thứ tự thực hiện số lần thực hiện chi tiết thiết kế Bộ mụn Cụng nghệ phần mềm – ĐHCN 14 NguyễnVănVỵ Thiết kế cấu trúc dữ liệu Chọn cách biểu diễn các đối t−ợng thiết kế có ảnh h−ởng mạnh mẽ đến chất l−ợng phần mềm Thiết kế cấu trúc lô gic Các quan hệ chuẩn Các khóa Các tham chiếu Các cấu trúc thao tác dữ liệu Các mức thiết kế Thiết kế cấu trúc vật lý - Các file - Các kiểu - Kích cỡ Bộ mụn Cụng nghệ phần mềm – ĐHCN 15 NguyễnVănVỵ Thiết kế thủ tục Mô tả các b−ớc hoạt động của mô đun Ph−ơng pháp mô tả - giả mã (pseudo code) - sơ đồ luồng (flow chart) - biểu đồ (diagram) Nassi-Shneiderman - biểu đồ hoạt động (activity diagram) - JSP Bộ mụn Cụng nghệ phần mềm – ĐHCN 16 NguyễnVănVỵ Các khái niệm thiết kế cơ sở Trừu t−ợng hóa: trừu t−ợng hóa dữ liệu, thủ tục, điều khiển Làm mịn: chi tiết hóa các trừu t−ợng theo ý đồ Tí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:
- bai_giang_ky_nghe_phan_mem_bai_5_khai_niem_thiet_ke_phan_mem.pdf