Bài giảng Nhập môn Công nghệ phần mềm - Phần 4: Thiết kế và lập trình cung cấp cho người học các kiến thức: Phương pháp thiết kế hệ thống, kỹ thuật thiết kế chương trình, kỹ thuật lập trình phần mềm. Mời các bạn cùng tham khảo nội dung chi tiết.
9/4/2011 Phần IV Thiết kế Lập trình Design and Programming Nhập môn Công nghệ học Phần mềm Introduction to Software Engineering Chương 6: Phương pháp thiết kế hệ thống 6.1 Thiết kế hệ thống gì? 6.2 Phương pháp thiết kế hệ thống Department of Software Engineering Faculty of Information Technology Hanoi University of Technology TEL: 04-8682595 FAX: 04-8692906 Email: cnpm@it-hut.edu.vn HUT, Falt of IT Dept of SE, 2001 SE-IV.1 6.1 Thiết kế hệ thống gì? Dept of SE, 2001 SE-IV.3 Quy trình thiết kế hệ thống (tiếp) • Tìm nguồn tài nguyên chung chế điều khiển truy nhập chúng • Thiết kế chế điều khiển thích hợp cho hệ thống, kể quản lý nhiệm vụ • Xem xét điều kiện biên xử lý • Xét duyệt xem xét thỏa hiệp (trade-offs) HUT, Falt of IT CuuDuongThanCong.com Dept of SE, 2001 Dept of SE, 2001 SE-IV.2 Quy trình thiết kế hệ thống • Là thiết kế cấu hình phần cứng cấu trúc phần mềm (gồm chức liệu) để có hệ thống thỏa mãn u cầu đề • Có thể xem Thiết kế cấu trúc (WHAT), Thiết kế Logic (HOW) HUT, Falt of IT HUT, Falt of IT SE-IV.5 • Phân chia mơ hình phân tích hệ • Tìm tương tranh (concurrency) hệ thống • Phân bố hệ cho xử lý nhiệm vụ (tasks) • Phát triển thiết kế giao diện • Chọn chiến lược cài đặt quản trị liệu HUT, Falt of IT Dept of SE, 2001 SE-IV.4 Các điểm lưu ý thiết kế hệ thống (1) Có thể trích luồng liệu từ hệ thống: phần nội dung đặc tả yêu cầu giao diện (2) Xem xét tối ưu tài nguyên kiến trúc lên hệ thống định kiến trúc (3) Theo trình biến đổi liệu, xem chức kiến trúc HUT, Falt of IT Dept of SE, 2001 https://fb.com/tailieudientucntt SE-IV.6 9/4/2011 Các điểm lưu ý (tiếp) Các điểm lưu ý (tiếp) (4) Từ kiến trúc chức theo (3), xem xét chỉnh lại, từ chuyển sang kiến trúc chương trình thiết kế chi tiết (5) Quyết định đơn vị chương trình theo chức hệ phần mềm có dựa theo luồng liệu phân chia thành phần (6) Khi cấu trúc chương trình lớn quá, phải phân chia nhỏ thành môđun (7) Xem xét liệu vào-ra tệp dùng chung chương trình Truy cập tệp tối ưu (8) Hãy nghĩ xem để có thiết kế nên dùng phương pháp luận kỹ thuật ? Dept of SE, 2001 HUT, Falt of IT SE-IV.7 • Thiết kế hệ thống • Thiết kế hệ thống phần mềm – Thiết kế tệp (file design) [(7)] – Thiết kế chức hệ thống [(3)-(6)] SE-IV.9 HUT, Falt of IT Thiết kế cấu trúc hóa biên luồng; (3) ánh xạ DFD sang cấu trúc chương trình; (4) xác định phân cấp điều khiển; (5) tinh lọc cấu trúc; (6) chọn mô tả kiến trúc CuuDuongThanCong.com Dept of SE, 2001 Dept of SE, 2001 SE-IV.10 Thiết kế cấu trúc hóa • Bắt nguồn từ modularity, top-down design, structured programming • Cịn xem Phương pháp thiết kế hướng luồng liệu (Data flow-oriented design) • Quy trình bước: (1) tạo kiểu luồng thơng tin; (2) HUT, Falt of IT SE-IV.8 • Phương pháp thiết kế cấu trúc hóa (Structured Design) Constantine • Ngồi cịn phương pháp khác, Phương pháp thiết kế tổng hợp (Composite Design) Myers – Thiết kế hệ thống phần cứng [(1), (2)] – Thiết kế hệ thống phần mềm [(3)-(7)] Dept of SE, 2001 Dept of SE, 2001 6.2 Phương pháp thiết kế hệ thống Thiết kế hệ thống HUT, Falt of IT HUT, Falt of IT SE-IV.11 (1) Môđun tham số (2) Lưu đồ bong bóng cấu trúc phân cấp Lưu đồ bong bóng (Bubble chart) Cấu trúc phân cấp (Hierarchical structured chart) (3) Phương pháp phân chia STS (Source/Transform/Sink) TR (Transaction) (4) Phân tích cấu trúc hóa (5) Chuẩn phân chia môđun HUT, Falt of IT Dept of SE, 2001 https://fb.com/tailieudientucntt SE-IV.12 9/4/2011 (1) Môđun (2a) Lưu đồ bong bóng (Bubble chart) • Dãy lệnh nhằm thực chức (function) • Có thể biên dịch độc lập • Mơđun dịch mơđun khác gọi tới • Giao diện môđun thông qua biến tham số (arguments) Dept of SE, 2001 HUT, Falt of IT SE-IV.13 • Biểu thị luồng xử lý liệu • Ký pháp SE-IV.15 Hierarchical structured chart (Dữ liệu ra) Dept of SE, 2001 SE-IV.14 – Tên mơđun biểu thị chức (“làm gì”), đặt tên cho mơđun phía tổng hợp lại biểu thị đủ chức môđun tương ứng phía – Biến số (arguments) biểu thị giao diện môđun, biến số môđun gọi/bịgọi khác – Mũi tên với trịn trắng biểu thị liệu, trịn đen (hồng) biểu thị flag – Chiều mũi tên hướng truyền tham số HUT, Falt of IT Dept of SE, 2001 SE-IV.16 (3) Phương pháp phân chia STS, TR • Thiết kế cấu trúc: Module A – Phương pháp phân chia STS (Source/Transform/Sink: Nguồn/Biếnđổi/Hấpthụ) – Phương pháp phân chia TR (Transaction) Module C Luồng liệu (Bong bóng) • Các quy ước (tiếp): – Khơng liên quan đến trình tự gọi môđun, ngầm định từ trái qua phải – Mỗi môđun xuất cấu trúc lần, gọi nhiều lần – Quan hệ dưới: không cần nêu số lần gọi Module B (Dữ liệu vào) Tên liệu Hierarchical structured chart • Là phân cấp biểu thị quan hệ phụ thuộc mơđun giao diện (interface) chúng • Các quy ước: Dept of SE, 2001 Tên chức HUT, Falt of IT (2b) Cấu trúc phân cấp (Hierarchical structured chart) HUT, Falt of IT Tên liệu Module D • Minh họa phân chia chức theo bong bóng DFD (biểu đồ luồng liệu) Module E Luồng flag HUT, Falt of IT CuuDuongThanCong.com Dept of SE, 2001 SE-IV.17 HUT, Falt of IT Dept of SE, 2001 https://fb.com/tailieudientucntt SE-IV.18 9/4/2011 Quyết định luồng liệu (3a) Phương pháp phân chia STS 1) Chia đối tượng “bài tốn” thành chức thành phần 2) Tìm luồng liệu qua chức năng: từ đầu vào (Input) tới đầu (Output) INPUT F3 F3 Bài tốn Problem F1 F5 F4 Luồng liệu F2 Dept of SE, 2001 HUT, Falt of IT SE-IV.19 INPUT F1 Data2 Data3 F2 F3 Data4 Data5 F4 F5 Data6 F2 OUTPUT Dept of SE, 2001 4) Xác định vị trí trừu tượng hóa tối đa đầu vào đầu INPUT F1 Data2 Data3 F2 F3 Dept of SE, 2001 SE-IV.21 Data1 F1 Data2 Data3 F2 F3 Data4 Trừu t-ợng hóa tối đa đầu vào Data5 F4 Transform Module Source Module F5 Trừu t-ợng hóa tối đa đầu F4 Data5 F5 Data6 OUTPUT Trừu tượng hóa tối đa đầu Transform Module Sink Module Dept of SE, 2001 HUT, Falt of IT SE-IV.22 6) Xác định tham số môđun dựa theo quan hệ phụ thuộc 5) Chuyển sang sơ đồ phân cấp INPUT Data4 Trừu tượng hóa tối đa đầu vào OUTPUT Source Module HUT, Falt of IT SE-IV.20 Từ sơ đồ bong bóng sang sơ đồ phân cấp Data1 Data1 F4 HUT, Falt of IT Quyết định bong bóng liệu 3) Theo luồng liệu chính: thay chức bong bóng làm rõ liệu bong bóng F5 F1 Data6 OUTPUT Module Sink Module 3 Control Module Source Module HUT, Falt of IT CuuDuongThanCong.com Transform Module Dept of SE, 2001 Module Sink Module Module Module 3 SE-IV.23 HUT, Falt of IT Dept of SE, 2001 https://fb.com/tailieudientucntt SE-IV.24 9/4/2011 7) Với môđun (Source, Transform, Sink) lại áp dụng cách phân chia STS lặp lại bước từ 1) đến 6) Đôi có trường hợp khơng chia thành mơ đun nhỏ mà thành 8) Tiếp tục chia đến mức cấu trúc lôgic môđun tương ứng với thuật tốn biết dừng Tổng hợp lại ta cấu trúc phân cấp: nút môđun với số nhánh phía khơng nhiều Dept of SE, 2001 HUT, Falt of IT SE-IV.25 SE-IV.27 • Dễ thích ứng với mơ hình vịng đời thác nước tính thân thiện cao • Thiết kế theo tiến trình, khơng hợp với thiết kế xử lý theo lơ (batch system) • Dùng phân chia - kết hợp để giải tính phức tạp hệ thống • Topdown phân chia mơđun • Kỹ thuật lập trình hiệu CuuDuongThanCong.com Dept of SE, 2001 Dept of SE, 2001 SE-IV.26 – Decomposability – Composability – Understandability – Continuity – Protection Đặc trưng thiết kế cấu trúc hóa HUT, Falt of IT HUT, Falt of IT • Tính độc lập: Độ kết hợp (coupling) Độ bền vững (strength) • tiêu chuẩn Myers • Xác định luồng liệu • Luồng tuyến tính theo phân chia STS • Luồng phân nhánh theo phân chia TR Dept of SE, 2001 • Khi khơng tồn luồng liệu chính, mà liệu vào có đặc thù khác nguồn khác xem Giao dịch khác • Mỗi giao dịch ứng với mơđun xử lý • Phân chia mơđun có thể: theo kinh nghiệm; theo tính độc lập mơđun; theo số bước tối đa mơđun (ví dụ < 50) theo chuẩn (5) Chuẩn phân chia môđun (4) Phân tích cấu trúc hóa HUT, Falt of IT (3b) Phương pháp phân chia TR SE-IV.29 HUT, Falt of IT Dept of SE, 2001 SE-IV.28 Chương 7: Kỹ thuật thiết kế chương trình 7.1 Thiết kế chương trình ? 7.2 Phương pháp thiết kế chương trình 7.3 Cơng cụ thiết kế HUT, Falt of IT Dept of SE, 2001 https://fb.com/tailieudientucntt SE-IV.30 9/4/2011 7.1 Thiết kế chương trình ? • Là thiết kế chi tiết cấu trúc bên phần mềm: thiết kế tính mơđun giao diện tương ứng • Cấu trúc ngồi phần mềm: thiết kế hệ thống • Trình tự xử lý bên trong: Thuật toán (giải thuật, Algorithm); Logic Dept of SE, 2001 HUT, Falt of IT SE-IV.31 Kỹ thuật thiết kế chương trình – Hướng tiến trình (process) : Kỹ thuật thiết kế cấu trúc điều khiển – Hướng cấu trúc liệu (data): Kỹ thuật thiết kế cấu trúc liệu – Hướng vật / đối tượng (object): Kỹ thuật thiết kế hướng đối tượng Dept of SE, 2001 SE-IV.33 Loại bỏ GOTO • Tại cần loại bỏ GOTO ? – Phá vỡ tính cấu trúc lập trình cấu trúc hóa • Phương pháp loại bỏ GOTO • Có thể loại bỏ GOTO trường hợp? • Thế “kỹ lập trình cấu trúc” CuuDuongThanCong.com Dept of SE, 2001 SE-IV.32 • Khái niệm bản: tuần tự, nhánh (chọn), lặp; cấu trúc mở rộng, tiền xử lý, hậu xử lý • Những điểm lợi thiết kế thuật toán – Tính độc lập mơđun: quan tâm vào-ra – Làm cho chương trình dễ hiểu – Dễ theo dõi chương trình thực – Hệ phức tạp dễ hiểu nhờ tiếp cận phân cấp HUT, Falt of IT Dept of SE, 2001 SE-IV.34 • Phụ thuộc vào kỹ kinh nghiệm người thiết kế • Cần chuẩn hóa tài liệu đặc tả thiết kế chi tiết • Khi thiết kế cấu trúc điều khiển giải thuật, theo quy ước cấu trúc hóa nên đơi tính sáng tạo người thiết kế bị hạn chế, bó buộc theo khn mẫu có – Cho phép thực bước nhảy đến nhãn định Dept of SE, 2001 HUT, Falt of IT Lưu ý thiết kế chương trình • GOTO dùng để làm gì? HUT, Falt of IT • Khơng có trạng thái mờ (fuzzy), để đảm bảo thiết kế cấu trúc đắn • Ngơn ngữ lập trình phù hợp • Triển khai đắn đặc tả chức mơđun chương trình nhờ phương pháp luận thiết kế chi tiết • Dùng quy trình thiết kế dễ chuẩn hóa bước 7.2.1 Lập trình cấu trúc hóa • Kỹ thuật thiết kế mơ hình hệ phần mềm HUT, Falt of IT 7.2 Phương pháp thiết kế chương trình SE-IV.35 HUT, Falt of IT Dept of SE, 2001 https://fb.com/tailieudientucntt SE-IV.36 9/4/2011 Lưu đồ Nassi-Shneiderman (NS chart by IBM) 7.2.2 Lưu đồ cấu trúc hóa • • • • a- Nối (concatination) Tác dụng lưu đồ (flow chart) Quy phạm (discipline) Trừu tượng hóa thủ tục Lưu đồ cấu trúc hóa Xử lý SE-IV.37 TT2 Xử lý Đ I ề u TT1 k i ệ n TT3 TT2 TT4 Xử lý Xử lý Xử lý d- Lặp (repetition) WHILE Đkiện Xử lý UNTIL Đkiện Dept of SE, 2001 SE-IV.38 Xử lý Xử lý Dept of SE, 2001 HUT, Falt of IT SE-IV.39 Thiết kế cấu trúc liệu (Data step) Thiết kế cấu trúc chương trình (Program step) Thiết kế thủ tục (Operation step) Thiết kế đặc tả chương trình (Text step) HUT, Falt of IT CuuDuongThanCong.com Dept of SE, 2001 HUT, Falt of IT Dept of SE, 2001 SE-IV.40 7.2.4 Về Phương pháp Wa-ny (Warnier’s method) Trình tự thiết kế chung • • • • REPEAT UNTIL (Đkiện) – Cơ sở (elementary) – Tuần tự (sequence) – Lặp – Rẽ nhánh Xử lý c- Đa nhánh (CASE) HUT, Falt of IT Xử lý Xử lý • JSP: Jackson Structured Programming • Các ký pháp: Điều kiện Xử lý TT3 Xử lý 7.2.3 Về Phương pháp Giắc-sơn (Jackson’s method) b- Chọn (selection) Xử lý d- Lặp (repetition) DO WHILE (Đkiện) Xử lý Lưu đồ Phân tích tốn (PAD chart by Hitachi) Trục N Xử lý ĐIều kiện TT1 Xử lý a- Nối (concatination) Xử lý c- Đa nhánh (CASE) Dept of SE, 2001 ĐIều kiện Y Xử lý – Cấu trúc điều khiển – Chi tiết hóa bước giải thuật – Thể trình tự điều khiển thực HUT, Falt of IT b- Chọn (selection) SE-IV.41 • Khái niệm chung • Trình tự thiết kế – Thiết kế liệu – Thiết kế liệu vào – Thiết kế cấu trúc chương trình – Thiết kế lưu đồ – Thiết kế lệnh thủ tục – Thiết kế đặc tả chi tiết HUT, Falt of IT Dept of SE, 2001 https://fb.com/tailieudientucntt SE-IV.42 9/4/2011 8.1 Lịch sử ngơn ngữ lập trình Chương 8: Kỹ thuật lập trình • Các ngơn ngữ hệ thứ nhất: – Ngơn ngữ lập trình mã máy (machine code) – Ngơn ngữ lập trình assembly • Các ngơn ngữ thế thứ hai: 8.1 Lịch sử phát triển ngôn ngữ lập trình 8.2 Cấu trúc chương trình - Cấu trúc liệu dễ hiểu - Cấu trúc thuật toán dễ hiểu 8.3 Các cơng cụ lập trình HUT, Falt of IT Dept of SE, 2001 – FOTRAN, COBOL, ALGOL, BASIC – Phát triển 1950-1970 • Các ngơn ngữ hệ thứ ba – Ngơn ngữ lập trình cấp cao vạn (cấu trúc) – Lập trình hướng đối tượng – Lập trình hướng suy diễn – logic • Các ngôn ngữ hệ thứ tư – Truy vấn – Các ngôn ngữ hỗ trợ định SE-IV.43 8.2 Cấu trúc liệu dễ hiểu Dept of SE, 2001 SE-IV.45 • Algorithm • Structured coding điểm lưu ý: – – – – – – – – – HUT, Falt of IT CuuDuongThanCong.com Dept of SE, 2001 SE-IV.46 CASE / switch 0 ĐK Công việc1 =0 Ngôn ngữ C Công việc if (điều kiện) { công việc 1} else {công việc 2} Dept of SE, 2001 Tuân theo quy cách lập trình Một đầu vào, đầu Tránh GOTO, trừ phải khỏi lặp dừng Dùng comments hợp lý Dùng tên biến có nghĩa, gợi nhớ Cấu trúc lồng rõ ràng Tránh dùng CASE / switch nhiều lồng Mã nguồn chương trình / môđun nên viết trang Tránh viết nhiều lệnh dòng HUT, Falt of IT IF THEN / IF THEN ELSE PASCAL if điều kiện then begin công việc end; else begin công việc end SE-IV.44 Cấu trúc thuật tốn dễ hiểu • Nên xác định tất cấu trúc liệu thao tác cần thực cấu trúc liệu • Việc biểu diễn/khai báo cấu trúc liệu nên thực mô đun sử dụng trực tiếp liệu • Nên thiết lập sử dụng từ điển liệu thiết liệu HUT, Falt of IT Dept of SE, 2001 HUT, Falt of IT SE-IV.47 PASCAL CASE OF gtrị1: ; gtrị2: ; gtrịN: ; ELSE ; END; HUT, Falt of IT Ngôn ngữ C switch () { case : ;[break;] case : ; [break;] case : ; [break;] [default : ; [break;] ] } Dept of SE, 2001 https://fb.com/tailieudientucntt SE-IV.48 9/4/2011 FOR TO / DOWNTO PASCAL Bắt đầu FOR biếnđkhiển := GTđầu TO GTCuối DO begin Biến điều khiển = Giá trị đầu end; Biến điều khiển > Giá trị cuối KThúc Thực Đặc biệt: có lệnh break; continue; exit Biến điều khiển = giá trị biến điều khiển) Dept of SE, 2001 HUT, Falt of IT Ngôn ngữ C for ( [biểuthức1] ; [biểuthứcĐK]; [biểuthức2] ) { ; } SE-IV.49 HUT, Falt of IT Bắt đầu Sai Ngôn ngữ C while () { ; } Đúng Cơng việc • Kiểm tra điều kiện trước thực • Lỗi thường gặp: Lặp vô hạn KThúc Dept of SE, 2001 HUT, Falt of IT SE-IV.50 PASCAL While BiểuthứcBoolean DO begin end; DO WHILE Biểu thức Logic Dept of SE, 2001 SE-IV.51 REPEAT UNTIL HUT, Falt of IT Dept of SE, 2001 SE-IV.52 PASCAL Repeat until Biểu_thức_Boolean; Bắt đầu Ngôn ngữ C { ; } while (); Công việc Biểu thức Logic Sai Đúng • Có khác hai ngôn ngữ? Kthúc HUT, Falt of IT CuuDuongThanCong.com Dept of SE, 2001 SE-IV.53 HUT, Falt of IT Dept of SE, 2001 https://fb.com/tailieudientucntt SE-IV.54 9/4/2011 8.3 Các cơng cụ lập trình Chú thích chương trình • Tại cần đặt thích chương trình ? • Vị trí đặt thích chương trình – – – – Thành phần/ Module Lớp Hàm/thủ tục Các vị trí đặc biệt khác • Một số quy định đặt thích: – Ngắn gọn – Gợi nhớ HUT, Falt of IT CuuDuongThanCong.com Dept of SE, 2001 SE-IV.55 • Environments: DOS, WINDOWS, UNIX/LINUX • Editors, Compilers, Linkers, Debuggers • TURBO C, PASCAL • MS C, Visual Basic, Visual C++, ASP • UNIX/LINUX: C/C++, gcc (Gnu C Compiler) • JAVA, CGI, perl • C#, NET HUT, Falt of IT Dept of SE, 2001 https://fb.com/tailieudientucntt SE-IV.56 10 ... mơđun (4) Phân tích cấu trúc hóa HUT, Falt of IT (3b) Phương pháp phân chia TR SE-IV.29 HUT, Falt of IT Dept of SE, 2001 SE-IV.28 Chương 7: Kỹ thuật thiết kế chương trình 7.1 Thiết kế chương... https://fb.com/tailieudientucntt SE-IV. 54 9 /4/ 2011 8.3 Các cơng cụ lập trình Chú thích chương trình • Tại cần đặt thích chương trình ? • Vị trí đặt thích chương trình – – – – Thành phần/ Module Lớp Hàm/thủ... SE, 2001 SE-IV .40 7.2 .4 Về Phương pháp Wa-ny (Warnier’s method) Trình tự thiết kế chung • • • • REPEAT UNTIL (Đkiện) – Cơ sở (elementary) – Tuần tự (sequence) – Lặp – Rẽ nhánh Xử lý c- Đa nhánh