Là các phần mềm khác nhau được xây dựng trên cơ sở những mô hình và phương pháp cụ thể Cung cấp sự trợ giúp cho việc tự động hay bán tự động hóa các hoạt động phát triển Thường được tích[r]
(1)NHẬP MÔN CÔNG NGHỆ PHẦN MỀM GV Phùng Đức Hòa Số tiết: 60 Trong đó: Lên lớp: 30 tiết Bài tập lớn+Thảo luận: 25 tiết Kiểm tra: Tiết Điểm quá trình = Điểm BT lớn + Chuyên cần (2) Tài liệu tham khảo Nguyễn Văn Vỵ, Nguyễn Việt Hà, Giáo trình Kỹ nghệ phần mềm, Khoa CNTT, ĐH Công nghệ R Pressman, Software Engineering: A Practioner’s Approach 6th Ed., McGraw-Hill, 2004 R Pressman, Kỹ nghệ phần mềm Tập 1, 2, NXB Giáo dục, HàNội, 1997 (Người dịch: Ngô Trung Việt) I Sommerville, Software Engineering 7th Ed., AddisonWesley, 2004 Vũ Đức Thi, Lê Văn Phùng: Giáo trình Kỹ nghệ phần mềm Hà Nội 2003 (3) Yêu cầu môn học Nắm các nguyên lý / khái niệm kỹ nghệ phần mềm Vận dụng kiến thức vào bài tập nhóm Hiểu quá trình làm phần mềm Minh họa nguyên lý / kỹ thuật Chủ động tìm hiểu kiến thức Tìm hiểu số chủ đề mở rộng (4) Chương trình Tổng quan phần mềm và CNPM Đặc tả phần mềm Thiết kế phần mềm Sơ lược kiểm chứng phần mềm Bài tập lớn (SV tự chọn đề tài -> thảo luận và bảo vệ trước lớp – theo nhóm) (5) Tổng quan Cung cấp các khái niệm và có liên quan đến CNPM (6) Các khái niệm Phần mềm (software) – Theo nghĩa hẹp là tập hợp các câu lệnh viết ngôn ngữ lập trình -> Giải bài toán Công nghệ (Engineering) là cách sử dụng các công cụ, kỹ thuật để giải vấn đề Công nghệ phần mềm (SE – Software Emgineering): Áp dụng các công cụ, các KT cách có hệ thống để P/triển các ƯD dựa trên máy tính (7) Các khái niệm liên quan Kỹ sư phần mềm (Software Engineer) Phát triển phần mềm (SW Developtment) – quá trình từ định SX PM đến chuyển giao cho KH Sử dụng (Operations) – Sử lý, vận hành PM Bảo trì (Maintenance) – Quá trình khắc phục lỗi, thay đổi logic -> Phần mềm tốt Loại bỏ (Retirement) – Thay ứng dụng ứng dụng (8) Tiến hóa phần mềm Những năm đầu (từ 1950 đến 1960): Mỗi máy sử dụng cho ứng dụng riêng Phương thức xử lý theo lô (batch) Việc phát triển phần mềm chưa quản lý, Môi trường lập trình có tính chất cá nhân Thời kỳ năm 1960 đến năm 1970: Các hệ thống đa nhiệm, đa người dùng xuất -> tương tác người máy Tiến lưu trữ trực tuyến làm xuất hệ đầu tiên hệ quản trị CSDL Yêu cầu lớn công việc bảo trì phần mềm (9) Tiến hóa phần mềm Thời kỳ năm 1970 đến đầu năm 1990: Hệ thống phân tán xuất làm tăng quy mô và độ phức tạp phần mềm ứng dụng Mạng máy tính triển mạnh -> nhu cầu truy cập liệu trực tuyến C/nghệ chế tạo máy tính phát triển -> chi phí cho phần mềm tăng Thời kỳ sau 1990: Kỹ nghệ hướng đối tượng nhanh chóng thay cách tiếp cận phát triển phần mềm truyền thống Sự phát triển Internet -> phát triển nhanh phần cứng và phần mềm Phần mềm trí tuệ nhân tạo ứng dụng các thuật toán phi số hệ chuyên gia, mạng nơ ron nhân tạo ứng dụng (10) Khủng hoảng phần mềm và đời CNPM Từ tiến hóa phần mềm => thách thức: Sự tăng quy mô PM Sự tăng chi phí làm PM Sự kéo dài thời gian PT PM Sự phụ thuộc nhiều vào kinh nghiệm người làm PM Chất lượng PM không ổn đinh Sự thiếu KS làm PM Gánh nặng bảo trì hệ thống cũ để tiếp tục HĐ 10 (11) Thách thức PT PM Máy tính Thách thức PTPM gia tăng, nguyên nhân: Khả PM không thể SD hết tiềm phần cứng Khả XD phần mềm không bắt nhịp với nhu cầu SD PM tăng lên, đặc biệt là Internet phát triển Quy mô và độ phức tạp PM ngày càng tăng Khả bảo trì hệ thống PM cũ tồn khó khăn và chi phí lớn 11 (12) Phần mềm Được thể với phận cấu thành Tập các lệnh – Chương trình máy tính Cấu trúc liệu - Được lưu trữ trên nhớ, gồm việc lưu trữ thông tin mã hóa Các tài liệu kỹ thuật liên quan – mô tả quá trình và hướng dẫn sử dụng hiệu 12 (13) Đặc trưng phần mềm Phần mềm là hệ thống logic, không phải là hệ thống vật lý Được phát triển mà không biết trước hiệu và giá thành cụ thể Phần mềm không hỏng mà thoái hóa theo thời gian – Đường cong lỗi thực tế và lý tưởng 13 (14) Đặc trưng phần mềm (tiếp) Thường xây dựng theo đơn đặt hàng khách Bản chất là có phức tạp và tính thay đổi Hiện chủ yếu phát triển theo nhóm 14 (15) Phân loại phần mềm Có nhiều cách để phân loại phần mềm Phân loại theo lĩnh vực phục vụ Phần mềm hệ thống Phần mềm thời gian thực Phần mềm nghiệp vụ Phần mềm khoa học và kỹ thuật Phần mềm nhúng Phần mềm cho máy tính cá nhân Phần mềm trí tuệ nhân tạo 15 (16) Phân loại phần mềm (tiếp) Ngoài còn có phần mềm phục vụ kỹ nghệ phần mềm Chương trình dịch, phần mềm gỡ rối, các công cụ hỗ trợ phân tích thiết kế (CASE) Các phần mềm này có thể xuất dạng phần mềm máy tính cá nhân, phần mềm hệ thống là phần mềm nghiệp vụ 16 (17) Tiêu chuẩn phần mềm tốt Khó trả lời câu hỏi này, có số tiêu chí: Đạt mục tiêu thiết kế đề Chi phí vận hành là chấp nhận Đáp ứng chuẩn mực hệ thống thông tin hành vd: tính sẵn sàng, an toàn… Sản phẩm tạo có giá trị xác đáng, thiết thực, góp phần làm nâng cao chất lượng SP 17 (18) Tiêu chuẩn phần mềm tốt (tiếp) Bảo trì được, không tốn kém Có tính khả dụng – dễ dàng nhiều đối tượng Mềm dẻo, có khả thích nghi cho việc phát triển tiếp Tính khả chuyển: Dễ dàng chuyển đổi môi trường 18 (19) Kiến trúc phần mềm (Software Architecture) Có nhiều định nghĩa KTPM Kiến trúc phần mềm là cấu trúc tổng thể phần mềm và cách thức mà cấu trúc đó cung cấp gắn kết khái niệm với thành hệ thống Kiến trúc phần mềm là cấu trúc phân cấp các thành phần chương trình (mô-đun) và cách thức để thành phần này tương tác với nhau, cấu trúc liệu dùng các thành phần 19 (20) Công nghệ phần mềm - SE Công nghệ phần mềm theo Fritz Bauer: Kỹ nghệ phần mềm là quá trình sử dụng các nguyên tắc kỹ thuật có sở để xây dựng các phần mềm cách kinh tế để hoạt động tin cậy và chạy hiệu trên hệ thống máy thật Công nghệ phần mềm theo IEEE: Việc áp dụng cách nghiên cứu và tiếp cận có hệ thống, quy tắc, có thể xác định số lượng để phát triển, vận hành và bảo trì phần mềm; nghĩa là áp dụng kỹ thuật vào phần mềm 20 (21) Các vấn đề liên quan đến CNPM Kỹ nghệ phần mềm đề cập đến việc xây dựng các chương trình lớn Trung tâm vấn đề là kiểm soát phức tạp Tiến hóa phần mềm Quan tâm đến hiệu phát triển phần mềm 21 (22) Các vấn đề liên quan đến CNPM Sự phối hợp thường xuyên các cá nhân là cần thiết các dự án phần mềm lớn Bản thân phần mềm phải hỗ trợ người dùng hiệu Kỹ nghệ phần mềm là lĩnh vực mà đó các thành viên tạo sản phẩm vì lợi ích lĩnh vực khác 22 (23) Các yếu tố chủ chốt CNPM CNPM là công nghệ có phân lớp Là quá trình gồm loạt các bước chứa đựng yếu tố chủ chốt: Phương pháp (Method) Công cụ (Tools) Thủ tục (Procedure) 23 (24) Quy trình phần mềm Là tập hợp các hành động nhằm xây dựng và phát triển phần mềm, thường gồm: Đặc tả: đặc tả gì hệ thống phải làm và các ràng buộc quá trình xây dựng hệ thống Phát triển: xây dựng hệ thống phần mềm Kiểm thử: kiểm tra xem liệu phần mềm đã thoả mãn yêu cầu khách hàng Mở rộng: điều chỉnh và thay đổi phần mềm tương ứng với thay đổi yêu cầu 24 (25) Mô hình quy trình phần mềm Là thể đơn giản quy trình p/mềm, nhìn từ góc độ cụ thể, vdụ: Mô hình luồng công việc (workflow): chuỗi hành động Mô hình luồng liệu (data-flow): luồng thông tin Mô hình Vai trò/Hành động (Role/action): vai trò và nhiệm vụ người liên quan Một số mô hình quy trình chung đề xuất như: Thác nước (Water Fall) Phát triển tiến hóa (Evolutionary Development) Phát triển hệ thống hình thức (Formal Systems Development) CNPM dựa thành phần (Component-Based SW) 25 (26) I.Mô hình thác nước Gồm pha 26 (27) Mô hình thác nước (Tiếp) Định nghĩa yêu cầu: Thu thập và phân tích thông tin bài toán Thiết kế: Quá trình chuyển hóa yêu cầu thành mô tả thiết kế Cài đặt kiểm thử: mã hóa các đặc tả thiết kế thành các chương trình mã nguồn, việc kiểm thử chủ yếu trên lỗi logic và modul Tích hợp kiểm thử hệ thống: Tích hợp các modul đơn lẻ và các thành phần thành hệ thống, kiểm thử toàn 27 (28) Mô hình thác nước (Tiếp) Vận hành và bảo trì: Đưa chương trình vào sử dụng, có thay đổi thích ứng suốt quá trình Các pha trên phải thực cách theo đúng thứ tự Mô hình cổ điển sử dụng rộng rãi Thích hợp có yêu cầu rõ ràng Khó khăn việc thay đổi các pha thực 28 (29) II.Mô hình tiến hóa Gồm các mô hình: Mô Mô Mô Mô Mô hình hình hình hình hình làm mẫu xoắn ốc RUP (Rational Unified Process) phát triển tăng dần phát triển ứng dụng nhanh RAD 29 (30) Mô hình tiến hóa (Tiếp) Được mô tả chung sau: 30 (31) II.1.Mô hình làm mẫu Xây dựng mẫu thử (Mô hình thực tế) ban đầu và đưa cho người sử dụng->tinh chỉnh mẫu thử qua nhiều phiên thoả mãn yêu cầu người sử dụng Có phương pháp thực hiện: Phát triển thăm dò Loại bỏ mẫu thử 31 (32) II.1.Mô hình làm mẫu (tiếp) Mô hình có thể dạng: Bản mẫu trên giấy hay trên PC – Bản mô tả YC Bản mẫu cài đặt: Chứa tập các ch/năng PM Bản mẫu là chương trình có thể thực Đây là cách tiếp cận thực tế Thích hợp cho hệ thống vừa và nhỏ, đặc biệt YC chưa rõ ràng Được SD hiệu kết hợp với các mô hình khác (VD GĐ xác định YC MH thác nước) 32 (33) II.2.Mô hình xoắn ốc Quá trình chia làm các bước lặp 33 (34) II.2.Mô hình xoắn ốc (tiếp) Gồm có bước hoạt động chính Thiết lập mục tiêu: xác định mục tiêu cho pha dự án Đánh giá và giảm thiểu rủi ro: rủi ro đánh giá và thực các hành động để giảm thiểu rủi ro Phát triển và đánh giá: sau đánh giá rủi ro chọn lựa mô hình phát triển cụ thể Lập kế hoạch: đánh giá dự án và pha mô hình xoắn ốc lập kế hoạch 34 (35) II.3.Mô hình RUP(Rational Unified Process) Là mô hình dành riêng cho hướng ĐT Có đặc trưng: Lấy kiến trúc làm trung tâm Điều khiển các ca sử dụng Lặp lại và tăng dần Tương đồng với mô hình xoắn ốc, nhiên bước lặp RUP, nội dung Hoạt động có ND riêng gắn với ngôn ngữ mô hình hóa thống UML 35 (36) II.4.Mô hình phát triển tăng dần Phát triển HT càng nhanh càng tốt=> Cải biên HT đạt YC đặt Nó là biến thể Mô hình tiến hóa, nó có ý tưởng giống với mô hình làm mẫu và xoắn ốc, thực trên khối độc lập, khối có Đặc tả, thiết kế, triển khai tích hợp, Chuyển cho khách 36 (37) II.5.Mô hình phát triển ƯD nhanh RAD Là phương pháp luận gộp các HĐ phân tích, thiết kế, xây dựng vào loạt vòng lặp phát triển ngắn Hướng đến nhu cầu đưa người SD tham gia vào PTTK cách SD CASE Đáp ứng nhu cầu hiệu và chi phí bảo trì thấp Thích hợp cho đội phát triển nhỏ 37 (38) III.Phát triển HT hình thức hóa Được mô tả với các bước: Xác định yêu cầu Đặc tả hình thức Biến đổi hình thức Kiểm thử tích hợp và hệ thống Tư tưởng chính là biểu diễn các đặc tả yêu cầu các ký pháp toán học Áp dụng các biến đổi khác để chuyển từ đặc tả H Thức->C trình Khi chuyển đổi Các biểu diễn đặc tả chi tiết dần luôn đảm bảo tính đúng đắn=> C trình là triển khai đúng đặc tả 38 (39) III.Phát triển HT hình thức hóa (tiếp) Ưu điểm: Có thể áp dụng chứng minh tính đúng đắn đặc tả Chứng minh chương trình đáp ứng y/cầu đặc tả đã cho Chi phí đặc tả cao, chi phí sau đó lại nhỏ nhiều so với phương pháp khác Dễ theo dõi các bước nhỏ quá trình chuyển đổi Nhược điểm: Việc đặc tả đòi hỏi trình độ trừu tượng cao Việc chứng minh đúng đắn là khó khăn Phương pháp này là tương đối khó 39 (40) IV.Mô hình hướng thành phần Dựa trên kỹ thuật tái sử dụng cách có hệ thống, tích hợp từ nhiều thành phần tồn các thành phần thương mại 40 (41) IV.Mô hình hướng thành phần (tiếp) Các trạng thái chính quy trình bao gồm: Phân tích thành phần sẵn có Điều chỉnh yêu cầu Thiết kế hệ thống với kỹ thuật tái sử dụng Xây dựng và tích hợp hệ thống 41 (42) V.Mô hình p/triển lặp lại, tăng lên Thay vì phải xây dựng và chuyển giao hệ thống lần->được chia thành nhiều vòng, tăng dần Mỗi vòng là phần kết chức yêu cầu 42 (43) Phương pháp phát triển p/mềm Gồm các thủ tục, kỹ thuật, tiến trình sử dụng để điều khiển các hoạt động Các phương pháp bao gồm các thành phần: Các khái niệm Các ký pháp Các quy tắc Quy trình xây dựng Hướng dẫn 43 (44) Phương pháp phát triển p/mềm Các phương pháp: Hướng chức Hướng liệu Hướng đối tượng Định hướng tiến trình Không xác định 44 (45) Phương pháp hướng chức Dựa trên sở modul hóa các chương trình để dễ theo dõi, quản lý, bảo trì Thể quá trình phát triển hệ thống hướng cấu trúc Sử dụng phương pháp luận top-down Đặc tính cấu trúc thể qua cấu trúc Cấu trúc DL (mô hình quan hệ) Cấu trúc hệ thống chương trình (Cấu trúc phân cấp điều khiển các modul và phần chung) Cấu trúc chương trình và modul (cấu trúc chương trình và cấu trúc LT bản) 45 (46) Phương pháp hướng chức (tiếp) Ứng dụng Ứng dụng Ứng dụng … Tầng ứng dụng Tầng liệu Cơ sở liệu 46 (47) Phương pháp hướng chức (tiếp) Ưu điểm: Làm giảm phức tạp Tập trung vào ý tưởng Chuẩn hóa tạo độc lập Hướng tương lai cho phép thay đổi dễ dàng (bảo trì) Giảm bớt tính nghệ thuật thiết kế 47 (48) Phương pháp hướng liệu Tập trung vào liệu đặc trưng cách tiếp cận định hướng liệu Tập trung vào việc tổ chức liệu lý tưởng là xác định nguồn gốc DL Hai ý tưởng chính là: Tách liệu khỏi các quá trình xử lý Tách biệt sở liệu và các ứng dụng 48 (49) Phương pháp hướng liệu (tiếp) Ứng dụng Ứng dụng Ứng dụng … Tầng ứng dụng Tầng liệu Cơ sở liệu 49 (50) Phương pháp hướng liệu (tiếp) Ưu điểm: Cho phép quản lý liệu tập trung, quán Dễ dàng áp dụng các công cụ toán học để xử lý liệu Tối ưu hóa mặt không gian lưu trữ và mặt sử dụng như: giảm dư thừa, tìm kiếm thuận lợi, truy cập nhanh… Sử dụng cho nhiều ứng dụng độc lập khác 50 (51) Phương pháp hướng đối tượng Đây là cách tiếp cận để PT hệ thống Hệ thống gồm các thành phần liên kết với gọi là các đối tượng Đối tượng tương ứng với vật thực HTTT Dữ liệu và các hoạt động liệu đặt đối tượng Mục tiêu cách này là làm cho các hệ thống trở nên độc lập tương đối có thể dùng lại Cách này đã cải thiện chất lượng hệ thống 51 (52) Phương pháp hướng đối tượng Ý tưởng khác là kế thừa và bao gói thông tin Các đối tượng tổ chức thành lớp Kế thừa cho phép tạo các lớp có chung với lớp cũ các đặc trưng và có đặc trung riêng Đối tượng A Dữ liệu message Đối tượng C Dữ liệu 52 Đối tượng B Dữ liệu (53) Phương pháp định hướng tiến trình Ra đời thời gian đầu, đặc đặc điểm máy tính còn chậm -> Chỉ tập trung vào tiến trình Việc xử lý tập trung vào hiệu -> Yêu cầu tự động hóa tiến trình Hệ thống quản lý dự án Hệ thống trả lương Dữ liệu dự án Dữ liệu nhân Dữ liệu nhân 53 Dữ liệu dự án (54) Phương pháp định hướng tiến trình Các liệu đặc tả dự án xem xét cách tách biệt Các kỹ thuật theo phương pháp này không chú ý đến định thời gian hay kích hoạt các bước xử lý Chú ý đến trình tự thực Nhược điểm là dư thừa liệu, hao phí công sức cho việc thu thập và tổ chức liệu Phải tổ chức xây dựng lại CT liệu có thay đổi tiến trình 54 (55) Công cụ, môi trường phát triển phần mềm Là các phần mềm khác xây dựng trên sở mô hình và phương pháp cụ thể Cung cấp trợ giúp cho việc tự động hay bán tự động hóa các hoạt động phát triển Thường tích hợp đến mức: bàn thợ và môi trường phát triển, tất gọi là kỹ nghệ phần mềm có trợ giúp máy tính (CASE) Bàn thợ (workbenches): Thông tin chúng tạo có thể dùng cho công cụ khác hay g/đoạn phát triển tiếp Môi trường (Environment): H/thống trợ giúp p/triển phần mềm 55 (56) CASE (Computer-Aided Software Engineering) Các hệ thống CASE thường sử dụng để hỗ trợ các hoạt động quy trình xây dựng phần mềm Có hai loại CASE: Upper-CASE: công cụ để hỗ trợ các hoạt động đầu tiên đặc tả yêu cầu và thiết kế Lower-CASE: công cụ để hỗ trợ các hoạt động sau lập trình, gỡ lỗi và kiểm thử 56 (57) CASE (Computer-Aided Software Engineering) Có nhiều các phương pháp sử dụng chúng thiếu quán và đồng Ngôn ngữ mô hình hóa thống (UML – Unified Modeling Language) cung cấp cho ngôn ngữ chung cho tất các giai đoạn phát triển phần mềm hướng đối tượng Một số các công cụ dựa trên ngôn ngữ ngày Rational Rose, PowerDesigner 57 (58) CASE (Computer-Aided Software Engineering) Môi trường CASE chuẩn bao gồm: Một kho chứa (repository) Công cụ đồ họa (Graphic drawing tools) Phần mềm soạn thảo văn (Text Definition software) Phần mềm giao diện kho chứa (Repository interface software) Phần mềm đánh giá (Evaluative software) Giao diện người sử dụng (Human Interface) 58 (59) CASE (Computer-Aided Software Engineering) Phân loại các công cụ phát triển phần mềm Công nghệ CASE Công cụ đơn Bộ soạn thảo Chương trình dịch Phân tích và thiết kế Bàn thợ đa phương pháp Bàn thợ đơn phương pháp Bàn thợ Bộ so sánh tệp Môi trường PT Môi trường tích hợp Lập trình Bàn thợ cho mục đích chung 59 Môi trường theo tiến trình Kiểm thử Bàn thợ cho ngôn ngữ cụ thể (60) Môi trường phát triển Môi trường Microsoft (Visual Studio phiên 6.0 và NET) Môi trường tích hợp – tập các công cụ hoàn chỉnh xây dựng các ứng dụng chạy trên windows NET Framework – Các chương trình phát triển sử dụng NET không biên dịch sang mã máy -> Biên dịch sang mã trung gian MSIL (MS Intermediate Language) CIL(Common Languge Infrastructure) -> Nó có thể chạy trên Linux MAC OS X Giao diện thân thiện – Kết dính tốt, giao diện kéo thả, tích hợp điều khiển… 60 (61) Môi trường phát triển (tiếp) Môi trường Microsoft (Tiếp) Tích hợp công cụ hỗ trợ phân tích/thiết kế - cung cấp các mô hình lập trình phong phú Sử dụng Visual Paradigm Smart Developtment Environment, chuyển thiết kế hệ thống(Sơ đồ UML) sang mã nguồn Khả mở rộng – Cho phép viết các add-in để mở rộng khả 61 (62) Môi trường phát triển (tiếp) Môi trường JAVA Là môi trường sử dụng khá phổ biến Khả chạy độc lập và hướng đối tượng hoàn toàn Độ an toàn và tái sử dụng mã cao Sử lý, hoạt động theo cấu trúc dòng lệnh – nhanh và đơn giản Có số tools như: JDK, J2SE, J2EE… 62 (63) Một số vấn đề lý thuyết – BT lớn CMM and CMMI (www.sei.cmu.edu) ISO 9001,… for SE UML and RUP CBSE Java and JSP ASP and NET PHP and MySQL RAISE Z-Method 10 B-Method 11 rCOS method 12 RTPA 63 (64) Một số vấn đề lý thuyết – BT lớn 13 COCOMO I, II 14 Oracle PM 15 Postgre-SQL 16 FreeBSD 17 Turbo Linux 18 GCC 19 CMS.NET and Related Issues 20 Design Patterns 21 Software Metrics 22 XP (Extreme Progr.) 64 (65) Một số vấn đề lý thuyết – BT lớn Các mô hình quy trình phần mềm Các phương pháp phát triển phần mềm Yêu cầu phần mềm Các phương pháp phát triển PM Các công cụ trợ giúp thiết kế tự động Kiểm thử phần mềm Quản lý dự án phần mềm 65 (66) Các bài toán quản lý Quản lý nhân Quản lý vật tư hàng hóa Bài toán tối ưu Quản lý bán hàng Vv…… 66 (67)