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 Vy
Bạn đang xem 20 trang mẫu của tài liệu "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 Vy", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_ky_nghe_phan_mem_bai_5_khai_niem_thiet_ke_phan_mem.pdf
Nội dung text: 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 Vy
- Kỹ nghệ phần mềm Software Engeneering Nguyễn Văn Vỵ Bộ môn Công nghệ phần mềm- Khoa CNTT- ĐHCN Email: vynv@coltech.vnu.vn
- Bài 5: Khỏi niệm thiết kế phần mềm NguyễnVănVỵ Nội dung 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 2
- TÀI LiỆU THAM KHẢO NguyễnVănVỵ 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 3
- Khái niệm thiết kế phần mềm NguyễnVănVỵ 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 đủ 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 Bộ mụn Cụng nghệ phần mềm – ĐHCN 4
- Vai trò thiết kế 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 Bộ mụn Cụng nghệ phần mềm – ĐHCN 5
- Cấu trúc thiết kế NguyễnVănVỵ 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 6
- Nguyên lý thiết kế 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 Bộ mụn Cụng nghệ phần mềm – ĐHCN 7
- Nguyên lý thiết kế (t) 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 Bộ mụn Cụng nghệ phần mềm – ĐHCN 8
- Nguyên lý thiết kế (t) 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 Bộ mụn Cụng nghệ phần mềm – ĐHCN 9
- Nôi dung & chất l−ợng thiết kế NguyễnVănVỵ 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 10
- Mô hình tổng quát tiến trình thiết kế NguyễnVănVỵ 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ế thiết kế thiết kế chi thiết kế phi phi hỡnh hỡnh thức tiết cuối hỡnh thức thức hơn(bỏn) cựng Bộ mụn Cụng nghệ phần mềm – ĐHCN 11
- Tiến trình hoạt động thiết kế vμ sản phẩm NguyễnVănVỵ Đặc tả cỏc yờu cầu thiết kế kiến trỳc kiến trỳc hệ thống Đặc tả trừu tượng đặc tả phần mềm thiết kế giao diện đặc tả giao diện thiết kế thành phần đặc tả thành phần thiết kế dữ liệu đặc tả cấu trỳc dữ liệu thiết kế thuật toỏn đặc tả thuật toỏn Bộ mụn Cụng nghệ phần mềm – ĐHCN 12
- Thiết kế kiến trúc NguyễnVănVỵ Sử dụng biểu đồ cấu trúc (structure chart), mô tả: 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 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 13
- Thiết kế cấu trúc dữ liệu NguyễnVănVỵ 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 Các mức thiết kế Thiết kế cấu trúc lô gic Thiết kế cấu trúc vật lý Các quan hệ chuẩn - Các file Các khóa -Các kiểu Các tham chiếu -Kích cỡ Các cấu trúc thao tác dữ liệu Bộ mụn Cụng nghệ phần mềm – ĐHCN 14
- Thiết kế thủ tục NguyễnVănVỵ 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 15
- Các khái niệm thiết kế cơ sở NguyễnVănVỵ 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 16
- Trừu t−ợng hóa (abstraction) NguyễnVănVỵ 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 17
- Trừ t−ợng dữ liệu 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 Bộ mụn Cụng nghệ phần mềm – ĐHCN 18
- Trừ t−ợng thủ tục NguyễnVănVỵ Mở cửa Mụ tả chi tiến quỏ trỡnh vào phũng qua của Bộ mụn Cụng nghệ phần mềm – ĐHCN 19
- Lμm mịn từng b−ớc NguyễnVănVỵ Mở cửa Bước đến gần cửa Đưa chỡa khúa vào ổ xoay Mở cửa Lặp lại cho đến khi chốt khúa bật ra Nếu chổt khụng mở thỡ Bước qua vào phũng Rỳt khúa ra, tỡm chỡa khỏc phự Đúng cửa lại 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 20
- Thiết kế mô đun NguyễnVănVỵ Dựa trên quan điểm "chia để trị" C: độ phức tạp C(p1 + p2) > C(p1) + C(p2) E: cụng sức thực hiện E(p1 + p2) > E(p1) + E(p2) 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 21
- Số l−ợng môđun NguyễnVănVỵ Cần xác định số môđun tối −u chi phí phát triển mô đun giá phần mềm chi phí tích hợp khoảng có số số mô đun mô đun tối −u Bộ mụn Cụng nghệ phần mềm – ĐHCN 22
- Kích cỡ môđun NguyễnVănVỵ nội dung? Kích th−ớ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 23
- Che giấu thông tin NguyễnVănVỵ 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 24
- Lý do che giấu thông tin NguyễnVănVỵ 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 25
- Chất l−ợng thiết kế NguyễnVănVỵ 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 26
- Tiêu chí chất l−ợng NguyễnVănVỵ 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 27
- Độ đo chất l−ợng thiết kế NguyễnVănVỵ 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 28
- Độ đo chất l−ợng thiết kế (t) 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 Bộ mụn Cụng nghệ phần mềm – ĐHCN 29
- Ghép nối - Coupling NguyễnVănVỵ mức độ quan hệ của ghép nối th−ờng loose and best các module: ghép nối dữ liệu still very good module nên ghép nối ok lỏng lẻo ghép nối nh∙n ok Mức lỏng lẻo thể ghép nối điều khiển hiện qua loại hình ghép nối (hình bên) ghép nối chung very bad ghép nối nội dung tight and worst Bộ mụn Cụng nghệ phần mềm – ĐHCN 30
- Ghép nối nội dung NguyễnVănVỵ 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 60 print k, y 20 gosub 100 70 stop 30 if y > 120 goto 60 100 Y =3*k*k+7*k-3 40 k = k+1 110 return 50 goto 20 Bộ mụn Cụng nghệ phần mềm – ĐHCN 31
- Ghép nối chung NguyễnVănVỵ 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 A B mô đun gây lỗi mô đun chịu lỗi Biến tổng thể C Bộ mụn Cụng nghệ phần mềm – ĐHCN 32
- Ghép nối điều khiển NguyễnVănVỵ 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 procedure DisplayName (in : name, begin sex) is Display Name (name, begin sex); if sex = m then end PrintRec; print Mr. else print Ms print name end DisplayName; Bộ mụn Cụng nghệ phần mềm – ĐHCN 33
- Ghép nối nhãn NguyễnVănVỵ 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 (bản ghi nhân sự) (tuổi) calc_age Bộ mụn Cụng nghệ phần mềm – ĐHCN 34
- Ghép nối dữ liệu NguyễnVănVỵ Truyền dữ liệu qua tham số Nhận kết quả qua tham số vμ giá trị trả lại (ngμy của tuần) (ngμy) calc_day_of_week Bộ mụn Cụng nghệ phần mềm – ĐHCN 35
- Kết dính - Cohesion NguyễnVănVỵ mỗi môđun chỉ nên thực hiện 1 chức chức năng high and best tuần tự ok năng truyền thông still ok mọi thμnh phần của thủ tục not bad at all môđun phải tham thời điểm still not bad at all logic still not bad at all gia thực hiện chức năng đó gom góp lowest and worst by far Bộ mụn Cụng nghệ phần mềm – ĐHCN 36
- Các loại kết dính NguyễnVănVỵ 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 37
- Các loại kết dính(t) NguyễnVănVỵ 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 38
- Tính hiểu đ−ợc -Understandability NguyễnVănVỵ 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 39
- Tính thích nghi đ−ợc (Adaptability) NguyễnVănVỵ 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 40
- Thiết kế h−ớng đối t−ợng vμ chất lượng NguyễnVănVỵ 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 41
- Câu hỏi ôn tập NguyễnVănVỵ 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 42
- Câu hỏi ôn tập NguyễnVănVỵ 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 43
- Câu hỏi ôn tập NguyễnVănVỵ 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 44
- Câu hỏi và thảo luận NguyễnVănVỵ Bộ mụn Cụng nghệ phần mềm – ĐHCN 45