Bài giảng Kỹ nghệ phần mềm - Chương 1: Bản chất phần mềm - Nguyễn Ngọc Bình

pdf 16 trang ngocly 1700
Bạn đang xem tài liệu "Bài giảng Kỹ nghệ phần mềm - Chương 1: Bản chất phần mềm - Nguyễn Ngọc Bình", để 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:

  • pdfbai_giang_ky_nghe_phan_mem_chuong_1_ban_chat_phan_mem_nguyen.pdf

Nội dung text: Bài giảng Kỹ nghệ phần mềm - Chương 1: Bản chất phần mềm - Nguyễn Ngọc Bình

  1. Cấutrúcmônhọc Nhập môn z 45 tiết+ Bàitậplớn+ Kiểmtra Kỹ nghệ Phần mềm z Cầnnhững kiếnthứccănbảnvề CNTT z Cung cấpnhững nguyên lý chung về Kỹ nghệ Phầnmềm(KNPM) Bài giảng cho lớp K50CA và K50CB z Cung cấpkiếnthức để học các môn chuyên Giảng viên: PGS.TS. Nguyễn NgọcBình ngành hẹpnhư Phân tích và thiếtkế phần Email: nnbinh@vnu.edu.vn mềm, Xây dựng và đánh giá phầnmềm, Quảntrị dự án phầnmềm, Giảng viên hỗ trợ: TS. Trương Anh Hoàng Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 1 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 2 Website môn học Mụctiêumônhọc z Truyền đạt các nguyên lý / kỹ thuật z Thông báo chung để phát triển đượcphầnmềm z Diễn đàn chấtlượng cao, giá cả hợplý z Tài liệu tham khảo (Làm phầnmềmmột cách chuyên nghiệp, công nghiệp) z Bài giảng z Yêu cầu bài tập/ đề bài kiểmtra z Tầmquantrọng củakỹ thuật này z Định hướng cho việctiếpcậncáckiến thức liên quan Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 3 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 4 Nội dung môn học Nội dung môn học (tiếp) z Tổng quan phầnmềmvàkỹ nghệ phần z Quảnlýdự án phát triểnphầnmềm mềm • Khái niệm, vai trò, mụctiêucủaquảnlýdự án • Vai trò và tầm quan trọng củaphầnmềm • Các yếutố quảnlý • Khó khănvàtháchthức đốivới phát triển • Các hoạt động quảnlý(phương pháp, công phầnmềm cụ hỗ trợ) • Tổng quan về kỹ nghệ phầnmềm z Phân tích và đặctả yêu cầu z Tiến trình và mô hình tiến trình phần • Vai trò của phân tích và đặctả yêu cầu mềm • Các hoạt động phân tích, đặctả yêu cầu. • Khái niệm • Phương pháp, công cụ để phân tích, đặctả • Cácmôhìnhtiếntrìnhtổng quát, cụ thể yêu cầu. Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 5 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 6 1
  2. Nội dung môn học (tiếp) Nội dung môn học (tiếp) z Thiếtkế phầnmềm z Kiểmthử • Khái niệm, nguyên lý, chấtlượng thiếtkế • Khái niệm, các loạikiểmthử phầnmềm • Quy trình, công cụ trợ giúp kiểmthử • Thiếtkế kiến trúc, thiếtkế giao diện • Viếttàiliệukiểmthử Mộtsố phương pháp, công cụ thiếtkế • z Tích hợp, chuyểngiaovàbảotrì z Lậptrình • Khái niệm • Phong cách lậptrình • Các nguyên lý, hoạt động tích hợp • Lậptrìnhtránhlỗi • Các hoạt động chuyển giao, bảotrì • Lậptrìnhhướng hiệuquả • Cácvấnđềcủahoạtđộngbảotrì Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 7 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 8 Tài liệuthamkhảo Yêu cầu z - website môn học z đ z Bài giảng Kỹ nghệ phầnmềm (NguyễnViệt Hà, trên website môn Nắm ược các nguyên lý / khái niệm học) cơ bảncủakỹ nghệ phầnmềm z 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ệ (có tại bộ môn Công nghệ phần mềm – z Khoa Công nghệ thông tin – Trường ĐHCN) Vậndụng kiếnthức vào bài tập z R. Pressman, Software Engineering: A Practioner’s Approach. 6th nhóm Ed., McGraw-Hill, 2004 z R. Pressman, Kỹ nghệ phầnmềm. Tập 1, 2, 3. NXB Giáo dục, Hà • Hiểuvề quá trình làm phầnmềm Nội, 1997 (Ngườidịch: Ngô Trung Việt) z I. Sommerville, Software Engineering. 7th Ed., Addison-Wesley, • Minh họa nguyên lý / kỹ thuật 2004 z K. Kawamura, Nhập môn Công nghệ họcPhầnmềm. NXB Kinki- z Tìm hiểumộtsố chủ đề mở rộng Kagaku, Tokyo, 2001 (Tiếng Nhật) Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 9 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 10 Yêu cầu Điểmsố, đánh giá z Điểmthicuốikỳ (50-60%) z Thường xuyên theo dõi thông tin trên Website z Bài tậplớn theo nhóm (20-30%) z Lấyyêucầu bài tậpvànộp bài trên Website z Kiểmtragiữakỳ (20-30%) z Xem điểm bài tậptrênWebsite z Xét điềukiệnthicuốikỳ z Tham gia diễn đàn môn họctrênWebsite z Tính điểm chung z Đưacácthắcmắc, kiếnnghị về môn học trên Website Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 11 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 12 2
  3. Nội dung NHẬP MÔN 1.1 Định nghĩa chung về phầnmềm KỸ NGHỆ PHẦN MỀM 1.2 Kiếntrúcphầnmềm 1.3 Các khái niệm 1.4 Đặctínhchungcủaphầnmềm CHƯƠNG 1: 1.5 Thế nàolàphầnmềmtốt? 1.6 Các ứng dụng phầnmềm Bản chất phần mềm Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 13 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 14 1.1. Định nghĩa chung về phầnmềm Các đặctínhcủaSW vàHW z Phầnmềm (Software - SW) như một HW SW khái niệm đối nghĩavớiphầncứng z Vật“cứng” z Vật“mềm” (Hardware - HW), tuy nhiên, đây là 2 z Kim loại z Kỹ thuậtsử dụng z Vậtchất khái niệmtương đối z Trừutượng z Hữuhình z Từ xưa, SW như thứ được cho không z Vô hình z Sảnxuất công z Sảnxuấtbởi con hoặc bán kèm theo máy (HW) nghiệpbởimáymóc người là chính z Dầndần, giá thành SW ngày càng cao là chính z Định tính là chính và nay cao hơnHW z Định lượng là chính z Hỏng hóc, hao mòn z Không hao mòn Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 15 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 16 Định nghĩa1: Phầnmềmlà SW đối nghĩavớiHW z Các lệnh (chương trình máy tính) z Vai trò SW ngày càng thể hiệntrội khi đượcthựchiện thì cung cấp z Máy tính là . . . chiếchộp không có những chứcnăng và kếtquả mong SW muốn z Ngày nay, SW quyết định chất z Các cấutrúcdữ liệulàmcho lượng mộthệ thống máy tính chương trình thao tác thông tin (HTMT), là chủ đề cốt lõi, trung tâm thích hợp củaHTMT z Các tư liệumôtả thao tác và cách z Hệ thống máy tính gồmHW vàSW sử dụng chương trình Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 17 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 18 3
  4. Định nghĩa2 SW theo nghĩarộng z Trong mộthệ thống máy tính, nếutrừ bỏ z Không chỉ SW cơ bảnvàSW ứng dụng đicácthiếtbị và các loạiphụ kiệnthì z Phảigồmcả Khả năng, kinh nghiệm phầncònlại chính là phầnmềm(SW) thựctiễnvàkỹ năng củakỹ sư (người z Nghĩahẹp: SW là dịch vụ chương trình để tăng khả năng xử lý củaphầncứng chế ra phầnmềm): Know-how of củamáytính(như hệ điều hành - OS) Software Engineer z Nghĩarộng: SW là tấtcả các kỹ thuật z Là tấtcả các kỹ thuậtlàmchosử dụng ứng dụng để thựchiệnnhững dịch vụ phầncứng máy tính đạthiệuquả cao chứcnăng cho mục đích nào đóbằng phầncứng Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 19 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 20 Phầnmềmlàgì? Nhóm các kỹ thuật, phương pháp luận z Các khái niệmvàtrìnhtự cụ thể hóa mộthệ thống Nhóm các Kỹ thuật, z Các phương pháp tiếpcậngiải quyếtvấn đề Phương pháp luận z Các trình tự thiếtkế và phát triển được chuẩn hóa z đ Nhóm các Nhóm các Các phương pháp ặctả yêu cầu, thiếtkế hệ chương trình tư liệu thống, thiếtkế chương trình, kiểmthử, toàn bộ quy trình quản lý phát triểnphầnmềm Kinh nghiệmkỹ sư, know-how Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 21 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 22 Nhóm các chương trình Nhóm các tư liệu z Là phầngiaodiệnvớiphầncứng, tạo thành z Những tư liệuhữu ích, có giá trị cao và từ các nhóm lệnh chỉ thị cho máy tính biết rấtcầnthiết để phát triển, vận hành và trình tự thao tác xử lý dữ liệu bảotrìphầnmềm z Phầnmềmcơ bản: vớichứcnăng cung cấp z Để chế ra phầnmềmvới độ tin cậycao môi trường thao tác dễ dàng cho ngườisử cầntạoracáctư liệuchấtlượng cao: dụng nhằmtăng hiệunăng xử lý củaphần cứng (ví dụ như OS là chương trình hệ thống) đặctả yêu cầu, mô tả thiếtkế từng loại, điềukiệnkiểmthử, thủ tụcvận hành, z Phầnmềm ứng dụng: dùng để xử lý nghiệp vụ thích hợp nào đó(quản lý, kế toán, . . .), hướng dẫnthaotác, phầnmềm đóng gói, phầnmềmcủangười dùng, . . . Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 23 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 24 4
  5. Những yếutố khác 1.2 Kiến trúc phần mềm (Software Architecture) z Có hàng chục định nghĩa khác nhau về KTPM z Sảnxuấtphầnmềmphụ thuộcrất nhiều ( vào con người(kỹ sư phầnmềm). Khả z Kiến trúc phần mềm là cấu trúc tổng thể của phần mềm và những cách thức mà cấu trúc đó cung cấp gắn kết khái niệm năng hệ thống hóa trừutượng, khả năng với nhau thành một hệ thống (the overall structure of the lập trình, kỹ năng công nghệ, kinh software and the ways in which that structure provides conceptual integrity for a system) nghiệmlàmviệc, tầm bao quát, . . .: z Kiến trúc phần mềm là cấu trúc phân cấp của các thành phần khác nhau ở từng người chương trình (mô-đun) và cách thức để những thành phần này tương tác với nhau, cũng như những cấu trúc dữ liệu được z Phầnmềmphụ thuộcnhiềuvàoýtưởng dùng trong các thành phần(the hierachical structure of program components (modules), the manner in which these (idea) và kỹ năng (know-how) của components interact, the the structure of the data that are used người/nhóm tác giả by the components). Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 25 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 26 Kiến trúc phần mềm (Software Architecture) 1.2 Kiếntrúcphầnmềm z Software Architecture is defined as it is an 1.2.1 Phầnmềm nhìn từ cấutrúcphâncấp organized collection of inter-related structural z Cấutrúcphầnmềmlàcấu trúc phân elements types for solving a software design problem. cấp (hierarchical structure): mứctrên là hệ thống (system), dướilàcáchệ z Structural Elements Types: • a) Components thống con (subsystems) • b) Connectors z Dướihệ thống con là các chương • c) Configuration trình • d) Constraints and • e) Rationale z Dướichương trình là các Modules z Characteristics, Classification, and hoặc Subroutines vớicácđốisố Definations must be given for all the above. (arguments) Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 27 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 28 Kiếntrúcphầnmềm 1.2.2 Phầnmềm nhìn từ cấutrúcvàthủ tục z Hai yếutố cấu thành củaphầnmềm System • Phương diệncấutrúc • Phương diệnthủ tục Subsystem Subsystem Job unit z Cấutrúcphầnmềm: biểuthị kiếntrúccác Master files chứcnăng mà phầnmềm đócóvàđiềukiện ≈ phân cấpcácchứcnăng (thiếtkế cấutrúc) Program Temporary Program Jobstep unit files z Thiếtkế chứcnăng: theo chiều đứng (càng ≈ sâu càng phứctạp) và chiều ngang (càng rộng càng nhiềuchứcnăng, qui mô càng lớn) Module Module Subroutine Arguments Arguments Member unit Common Module Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 29 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 30 5
  6. Cấutrúcphầnmềm Thủ tục (procedure) phầnmềm z Là những quan hệ giữa các trình tự mà phần mềm đócó Fuction A structure) (Vertical C ấ z utrúcchi Thuật toán vớinhững phép lặp, rẽ nhánh, điềukhiểnluồng xử lý (quay lui hay bỏ qua) Function B Function C ề z Là cấutrúclôgicbiểuthị từng chứcnăng có u đ ứ trong phầnmềmvàtrìnhtự thựchiện chúng ng ă Function D Function E Function F z Thiếtkế cấutrúctrướcrồi sang chứcn ng Cấutrúcchiều ngang (Horizontal structure) Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 31 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 32 Các khái niệmphầnmềm 1.3 Các khái niệm (Software concepts) z Khi chế tác phầnmềmcầnnhiềukỹ z Khái niệm tính môđun (modularity concept) thuật z Khái niệm chi tiết hóa dầntừng bước • Phương pháp luận (Methodology): những (stepwise refinement concept) chuẩnmựccơ bản để chế tạophầnmềm với các chỉ tiêu định tính z Khái niệmtrừutượng hóa (abstraction đ • Các phương pháp kỹ thuật (Techniques): concept): về thủ tục, iềukhiển, dữliệu những trình tự cụ thể để chế tạophần z Khái niệm che giấu thông tin (information mềm và là cách tiếpcậnkhoahọcmang hiding concept) tính định lượng z Khái niệmhướng đốitượng (object oriented) z Từ phương pháp luậntriểnkhaiđến kỹ thuật Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 33 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 34 Từ phương pháp luậnphầnmềm sang kỹ thuậtphầnmềm 1.3.1 Tính môđun (Modularity) z Là khả năng phân chia phầnmềm thành các môđun ứng vớicácchứcnăng, đồng thời Phân tích cấutrúc cho phép quảnlýtổng thể: khái niệm phân Tính Môđun chia và hợp (partion and merge) Thiếtkế cấutrúc z Hai phương pháp phân chia môđun theo Chi tiếthóadần chiều Lậptrìnhcấutrúc • sâu (depth, thẳng đứng): điềukhiểnphứctạpdần Trừutượng hóa Dữ liệutrừutượng • rộng (width, nằm ngang): môđun phụ thuộcdần (Che giấut.tin) z Quan hệ giữacácmôđun: qua các đốisố Hướng đốitượng Khái niệmphầnmềm (arguments) Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 35 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 36 6
  7. Chuẩn phân chia môđun 1.3.2 Chi tiết hóa từng bước Cách tiếpcậntừ trên xuống (top-down approach) Trừutượng hóa mứccao: Thế giới bên ngoài Thế giới bên ngoài, trạng thái chưarõràng Chi tiÕt hãa Trừutượng hóa mức trung gian: Đặctả yêu cầu Xác định yêu cầuvàđặctả tõng Những định nghĩayêucầu b−íc Trừutượng hóa mứcthấp: Ngôn ngữ Từng lệnh củachương trình được chương trình viếtbởingônngữ thủ tụcnàođó Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 37 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 38 Ví dụ: Trình tự giải quyếtvấn đề từ mức thiếtkế chương trình đếnmứclậptrình Cụ thể hóa thủ tụcqua cácchứcnăng z Bài toán: từ một nhóm N số khác nhau tăng dần, hãy tìm số có giá trị bằng K Bài toán đãcho Nhậpgiátrị K (nhậptừ ngoài vào) và in ra vị trí củanó z Giảitừng bước, từ khái niệm đến chi tiết Nhậngiátrị nhóm N số hóa từng câu lệnh bởi ngôn ngữ lập trình nào đó z Chọngiảithuật tìm kiếmnhị phân (pp Tìm kiếmgiátrị (PP nhị phân) nhị phân) In ra vị trí (nếucó) Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 39 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 40 Cụ thể hóa bướctiếptheo Mứcmôtả chương trình (bằng PDL) Bắt đầu ĐọcK Nhậngiá trị cho mảng 1 chiều A(I), (I =1, 2, . . . ,.N) Tìm kiếmgiátrị Xác lậpphạmvi mảng số MIN = 1 MAX = N (pp nhị phân) DO WHILE (Có giá trị bằng K không? Cho đến khi MIN > MAX) Lặplạixử lý tìm kiếmgiátrị K Lấy MID = (MIN + MAX) / 2 IF A(MID) > K THEN trong phạmvi tìmkiếm MAX = MID - 1 ELSE IF A(MID) < K THEN MIN = MID + 1 Lặplạitìmkiếm K trong Tìm vị trí giữa phân đôi mảng ELSE phạm vi tìm kiếm In giá trị MID So sánh K với giá trị giữa ENDIF ENDIF ENDDO Đặtlạiphạm vi tìm kiếm Kếtthúc Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 41 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 42 7
  8. 1.3.3 Khái niệmChegiấu thông tin Khái niệmTrừutượng hóa z Để phân rã phầnmềm thành các môđun z Abstraction cho phép tập trung vấn đềở mộtcáchtốtnhất, cần tuân theo nguyên mứctổng quát, gạt đinhững chi tiếtmức thấp ít liên quan lý che giấu thông tin: “các môđun nên z 3 mứctrừutượng đ đ đ ược ặctrưng bởinhững quyết ịnh • Trừutượng thủ tục: dãy các chỉ thị vớichứcnăng thiếtkế sao cho mỗimôđun ẩnkínđối đặc thù và giớihạnnàođó đ • Trừutượng dữ liệu: tậphợpdữ liệumôtả đối vớicácmô un khác” [Parnas1972] tượng dữ liệunàođó z Rấthữu ích cho kiểmthử và bảotrì • Trừutượng điềukhiển: Cơ chế điềukhiển chương trình không cần đặctả những chi tiếtbên phầnmềm trong z Ví dụ: Mở cửa. Thủ tục: Mở gồm . . .; Dữ liệu: Cửalà. . . Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 43 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 44 1.4 Đặctínhchungcủaphầnmềm Đặc tính chung củaphầnmềm z Là hàng hóa vô hình, không nhìn thấy được z Chứcnăng củaphầnmềmthường biếnhóa, z Chấtlượng phầnmềm: không mòn đimàcó thay đổi theo thời gian (theo nơisử dụng) xu hướng tốtlênsaumỗilầncólỗi (error/bug) z Hiệu ứng làn sóng trong thay đổiphầnmềm được phát hiệnvàsửa z Phầnmềmvốnchứaýtưởng và sáng tạo z Phầnmềmvốnchứalỗitiềm tàng, theo quy của tác giả / nhóm tác giả làm ra nó mô càng lớnthìkhả năng chứalỗi càng cao z Cầnkhả năng “tư duy nhị phân” (binary z Lỗiphầnmềmdễ được phát hiệnbởingười thinking) trong xây dựng, phát triểnphần ngoài mềm z Có thể sao chép rất đơngiản Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 45 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 46 1.5 Thế nào là phầnmềmtốt? 1.5.1 Các chỉ tiêu cơ bản z Phản ánh đúng yêu cầungườidùng (tính hiệuquả - effectiveness) Hiệusuấtxử lý Yếu Đặc z Chứaítlỗitiềm tàng tố trưng z khái gần Giá thành không vượt quá giá ước niệm Tính dễ hiểu đây lượng ban đầu phần mềm z Dễ vận hành, sử dụng tốt Các chỉ tiêu cơ bản z Tính an toàn và độ tin cậycao Thờigian (Phầncứng phát triển) Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 47 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 48 8
  9. 1.5.2 Hiệusuấtxử lý cao 1.5.3 Tính dễ hiểu z Hiệusuấtthờigiantốt (efficiency): z Kiếntrúcvàcấutrúcthiếtkế dễ hiểu • Độ phứctạptínhtoánthấp(Time z Dễ kiểmtra, kiểmthử, kiểmchứng complexity) z Dễ bảotrì • Thời gian quay vòng ngắn (Turn Around Time: TAT) z Có tài liệu(môtả yêu cầu, điềukiệnkiểm • Thờigianhồi đáp nhanh (Response time) thử, vận hành, bảo trì, FAQ, . . .) vớichất lượng cao z Sử dụng tài nguyên hữuhiệu: CPU, RAM, HDD, Internet resources, . . . Tính dễ hiểu: chỉ tiêu ngày càng quan trọng Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 49 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 50 CHƯƠNG 2: 1.6 Các ứng dụng phầnmềm Khủng hoảng phầnmềm z Phầnmềmhệ thống (System SW) (Software Crisis) z Phầnmềmthờigianthực (Real-time SW) và Khái niệmKỹ nghệ phần mềm z Phầnmềm nghiệpvụ (Business SW) (Software Engineering) z Phầnmềm tính toán KH&KT (Eng.&Scie. SW) z Phầnmềm nhúng (Embedded SW) 2.1 Khủng hoảng phầnmềmlàgì? z Phầnmềm máy cá nhân (Personal computer 2.2 Những vấn đề (khó khăn) trong SW) sảnxuấtphầnmềm z Phầnmềm trên Web (Web-based SW) 2.3 Định nghĩa Kỹ nghệ phần mềm z Phầnmềmtrítuệ nhân tạo(AI SW) Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 51 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 52 2.1 Khủng hoảng phầnmềmlàgì? Khủng hoảng phầnmềm là gì? (tiếp) Là sự day dứtkinhniên(kéodàitheothờigianhoặc z 10/1968 tạiHội nghị củaNATO cácchuyêngia thường tái diễn, liên tục không kết thúc) gặpphải trong phầnmềm đã đưarathuậtngữ “Khủng hoảng phát triểnphầnmềm máy tính, như phầnmềm” (Software crisis). Qua hàng chụcnăm, z Phảilàmthế nào vớiviệcgiảmchấtlượng và những lỗi thuậtngữ này vẫn được dùng và ngày càng mang tiềm tàng có trong phầnmềm? tính cấpbách z Phảixử lý ra sao khi bảodưỡng phầnmềm đãcó? z Khủng hoảng là gì ? [Webster’s Dict.] z Phảigiải quyếtthế nào khi thiếukỹ thuậtviênphầnmềm? • Điểm ngoặt trong tiếntrìnhcủasự vật, sự kiện nào đó; z Phảichế tác phầnmềmrasaokhicóyêucầu phát triển thời điểm, giai đoạnhoặcbiếncố quyết định hay chủ chốt theo qui cách mớixuấthiện? Điểm ngoặt trong quá trình diễnbiếnbệnh khi trở nên rõ • z Phảixử lý ra sao khi sự cố phầnmềmgâyranhững vấn ràng bệnh nhân sẽ sống hay chết đề xã hội? z Trong phầnmềm: Day dứt kinh niên (chronic affliation, by Prof. Tiechrow, Geneva, Arp. 1989) Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 53 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 54 9
  10. So sánh chi phí cho Mộtsố yếutố Phầncứng và Phầnmềm z Phầnmềmcànglớnsẽ kéotheophức tạphóavàtăng chi phí phát triển % z Đổi vai trò giá thành SW vs. HW 100 z ă 80 Công sứcchobảotrìcàngt ng thì chi - Phầncứng phí cho Backlog càng lớn Phát triển 60 - z Nhân lựcchưa đáp ứng đượcnhucầu Phần 40 phầnmềm - Mềm Bảotrì 20 z Những phiềnhàcủaphầnmềmgâyra - những vấn đề xã hội 0 + + + + 1955 1970 1985 2000 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 55 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 56 So sánh chi phí cho các pha 2.2 Những vấn đề (khó khăn) trong sảnxuấtphầnmềm (1) Không có phươngphápmôtả rõ ràng 8 7 định nghĩayêucầucủangười dùng 7 X¸c ®Þnh yªu cÇu 3% 5 (khách hàng), sau khi bàn giao sảnphẩm §Æc t¶ 3% 3 ThiÕt kÕ 5% dễ phát sinh những trụctrặc (troubles) 3 LËp tr×nh 7% (2) Vớinhững phầnmềm quy mô lớn, tư liệu KiÓm thö m«®un 8% đặctả đãcố định thời gian dài, do vậy KiÓm thö tÝch hîp 7% khó đáp ứng nhu cầu thay đổicủangười B¶o tr× 67% 67 dùng mộtcáchkịpthờitrongthờigianđó Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 57 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 58 Những vấn đề trong Những vấn đề trong sảnxuấtphầnmềm(tiếp) sảnxuấtphầnmềm(tiếp) (3) NếukhôngcóPhương pháp luậnthiết (5) Nếu không kiểmthử tính đúng đắncủa kế nhấtquánmàthiếtkế theo cách phầnmềm ở từng giai đoạnmàchỉ kiểm ở riêng (của công ty, nhóm), thì sẽ dẫn giai đoạncuối và phát hiệnralỗi, thì đến suy giảmchấtlượng phầnmềm thường bàn giao sảnphẩm không đúng (do phụ thuộc quá nhiều vào con hạn người) (6) Nếucoitrọng việclậptrìnhhơn khâu thiết kế thì thường dẫn đến làm giảmchấtlượng (4) Nếukhôngcóchuẩnvề làm tư liệu phầnmềm quy trình sảnxuấtphầnmềm, thì (7) Nếucoithường việctáisử dụng phầnmềm những đặctả không rõ ràng sẽ làm (software reuse), thì năng suấtlaođộng sẽ giảmchấtlượng phầnmềm giảm Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 59 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 60 10
  11. Những vấn đề trong Những vấn đề trong sảnxuấtphầnmềm(tiếp) sảnxuấtphầnmềm(tiếp) (8) Phầnlớn trong quy trình phát triểnphần (11) Khi đầutư nhân lựclớnvàobảotrì mềm có nhiều thao tác do con ngườithực sẽ làm giảmhiệusuấtlaođộng của hiện, do vậynăng suấtlaođộng thường bị giảm nhân viên (9) Không chứng minh được tính đúng đắn (12) Công việcbảo trì kéo dài làm giảm củaphầnmềm, do vậy độ tin cậycủaphần chấtlượng củatư liệuvàảnh hưởng mềmsẽ giảm xấu đếnnhững việc khác (10) Chuẩnvề mộtphầnmềmtốt không thể đo đượcmộtcáchđịnh lượng, do vậy không thể đánh giá đượcmộthệ thống đúng đắn hay không Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 61 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 62 Những vấn đề trong IT Challenges for Vietnam sảnxuấtphầnmềm(tiếp) (13) Quảnlýdự án lỏng lẻokéotheoquảnlý • Lack of IT Skill Standards (ITSS). Curriculum? lịch trình cũngkhôngrõràng • Foreign Language Skill (English, Japanese, Korean, (14) Khôngcótiêuchuẩn đểướclượng nhân lực French, etc.) và dự toán sẽ làm kéo dài thờihạnvàvượt • Practice Skill kinh phí củadự án • IT Project Managers, Leaders • Documentations Skill Đây là những vấn đề phản ánh các khía cạnh khủng • SQA: Few qualified IT Corp. with ISO9000 (32); CMM5 hoảng phầnmềm, hãy tìmm cách nỗ lựcvượt qua (FPT); CMM4, CMMI-5 (PSV, FSOFT); CMM3 (SilkRood) để tạoraphầnmềmtốt! • ICT Education&Training Environment • Lack of IT Books/Textbooks/Journals/Symposiums • Recognition of Copyrights/IP Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 63 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 64 Problems? 2.3 Kỹ nghệ Phầnmềm (Software Engineering) z Lịch sử tiếntriểnKỹ nghệ phầnmềm z Sự tiếntriểncủacácphương pháp thiết kế phầnmềm z Định nghĩaKỹ nghệ phần mềm z Vòng đờicủaphầnmềm Source: VnExpress, Nov. 2004 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 65 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 66 11
  12. a. Lịch sử tiếntriểncủaKNPM Lịch sử tiếntriểncủa KNPM z Nửa đầu 1960: ít quan tâm đếnphần z Năm 1968: TạiTâyĐức, Hội nghị khoa học mềm, chủ yếutập trung nâng cao tính củaNATO đã đưaratừ “Software năng và độ tin cậycủaphầncứng Engineering”. Bắt đầu bàn luậnvề khủng khoảng phầnmềmvàxuhướng hình thành z Giữanhững năm 1960: Phát triểnhệ KNPM như một chuyên môn riêng điều hành như phầnmềmlớn(IBM z Nửacuối 1960: IBM đưa ra chính sách phân OS/360, EC OS). Xuấthiện nhu cầuvề biệtgiácả giữaphầncứng và phầnmềm. Từ quy trình phát triểnphầnmềmlớnvà đó, ý thứcvề phầnmềm ngày càng cao. Bắt quy trình gỡ lỗi, kiểmthử trong phạmvi đầunhững nghiên cứucơ bảnvề phương giớihạn pháp luậnlậptrình Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 67 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 68 Lịch sử tiếntriểncủa KNPM Lịch sử tiếntriểncủa KNPM z Nửa đầunhững năm 1970: Nhằm nâng cao z Nửasaunhững năm 1970: Quan tâm chấtlượng phầnmềm, không chỉ có các đếnmọi pha trong quy trình phát triển nghiên cứuvề lậptrình, kiểmthử, mà có cả phầnmềm, nhưng tậptrungchínhở những nghiên cứu đảmbảo tính tin cậy trong những pha đầu. ICSE tổ chứclần2, 3 và quy trình sảnxuấtphầnmềm. Kỹ thuật: lập 4 vào 1976, 1978 và 1979 trình cấu trúc hóa, lậptrìnhmôđun, thiếtkế cấu trúc hóa, vv • NhậtBảncó“Kế hoạch phát triểnkỹ thuậtsản xuấtphầnmềm” từ năm 1981 z Giữanhững năm 1970: Hội nghị quốctế đầu • Cuộc “cách tân sảnxuấtphầnmềm” đãbắt tiên về KNPM đượctổ chức (1975): đầutrênphạmvi cácnước công nghiệp International Conference on SE (ICSE) Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 69 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 70 Lịch sử tiếntriểncủa KNPM Lịch sử tiếntriểncủa KNPM z Nửa đầunhững năm 1980: Trình độ họcvấn z Nửacuốinhững năm 1980 đến nay: Từ học và ứng dụng KNPM được nâng cao, các vấn sang nghiệpvụ! Chấtlượng phầnmềm công nghệ được chuyểnvàothựctế. Xuất tập trung chủ yếu ở tính năng suất, độ tin cậy hiệncácsảnphẩmphầnmềm và các công và tính bảo trì. Nghiên cứahỗ trợ tự động cụ khác nhau làm tăng năng suấtsảnxuất hóa sảnxuấtphầnmềm phầnmềm đáng kể • NhậtBảncó“Kế hoạch hệ thống công nghiệp hóa sản • ICSE tổ chứclần 5 và 6 năm 1981 và 1982 vớitrên xuấtphầnmềm”(SIGMA: Software Industrialized 1000 người tham dự mỗinăm Generator & Maintenance Aids, 1985-1990) • NhậtBản sang “Kế hoạch phát triểncáckỹ thuậtbảo • Nhiều trung tâm, viện nghiên cứu KNPM ra đời. Các trì phầnmềm” (1981-1985) trường đưa vào giảng dạySE Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 71 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 72 12
  13. b. Sự tiếntriểncủacácphương Ngày nay pháp thiếtkế phầnmềm z Công nghiệp hóa sảnxuấtphầnmềm z Phương pháp luận trong KNPM: bắt đầu bằng cách đưanhững kỹ thuật công từ những năm 1970 nghệ học (Engineering techniques) z Trong phát triểnphầnmềm: nâng cao thành cơ sở khoa họccủaKNPM năng suất, độ tin cậy, giá thành - tính z Thể chế hóa lý luậntrongsảnxuấtphần năng (productivity, reliability, cost- mềmvàứng dụng những phương pháp performance) luậnmộtcáchnhất quán z Tiếntriểnphương pháp thiếtkế: Sơ khởi, z Tăng cường nghiên cứuvàtạo công cụ Trưởng thành, Phát triểnvàBiến đổi trợ giúp sảnxuấtphầnmềm Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 73 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 74 Sơ khởi: nửa đầu 1970 Trưởng thành: nửacuối1970 z Khái niệmvề tính môđun, cụ thể hóa z Phương pháp luậnvề quy trình thiếtkế phần từng bước trong phương pháp luậnthiết mềmvớiphương pháp phân chia môđun và thiếtkế trong từng môđun. kế z L.L. Constantine, 1974: Thiếtkế cấutrúchóa z N. Wirth: Chi tiết hóa từng giai đoạn. (phân chia môđun); Thiếtkế trên xuống. Lậptrìnhmôđun z E.W. Dijkstra, 1972: Lậptrìnhcấu trúc hóa (trong môđun) . Phương pháp M.A. Jackson (1975) và J.D. Warnier (1974) z Trừutượng hóa dữ liệu: B.H. Liskov (1974);D.L. Parnas (1972) Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 75 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 76 Phát triển: nửa đầu 1980 Biến đổi: nửacuối 1980 đếnnay z Triển khai các công cụ hỗ trợ phát triểnphần z Đưaracácmôitrường mớivề phát triển mềmdựatrêncácphương pháp và kỹ thuật phầnmềm. Triển khai mớivề kếthợpgiữa đưaranhững năm 1970 KNPM và Kỹ nghệ Tri thức (Knowledge z Bộ khởitạochương trình (program Engineering) generators: pre-compiler; graphics-input z Triển khai những môi trường bậccaovề phát editors, etc.) triểnphầnmềm; Tự động hóa sảnxuấtphần z Ngôn ngữ đốithoại đơngiản (4GL, DB SQL) mềm; Chế phầnmềm theo kỹ thuậtchế thử (Prototyping); Lậptrìnhhướng đốitượng - z Hệ trợ giúp: Hệ trợ giúp kiểmthử; Hệ trợ giúp quảnlýthư việnmôđun; Hệ trợ giúp tái OOP; Phầnmềmdựa theo thành phần; Hỗ sử dụng trợ phát triểnphầnmềmtừ các hệ chuyên gia, v.v. Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 77 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 78 13
  14. Hình thái sảnxuấtPhầnmềm c. Định nghĩaKỹ nghệ phần mềm z Bauer [1969]: KNPM là việcthiếtlậpvàsử Đưaracáckỹ thuật, phương pháp luận dụng các nguyên tắc công nghệ học đúng đắn dùng để thu đượcphầnmềmmộtcách ứng dụng thựctế vào từng quy trình kinh tế vừatin cậyvừalàmviệchiệuquả trên các máy thực Cải biên, biến đổivàotừng sảnphẩmvà z Parnas [1987]: KNPM là việcxâydựng phần công cụ phầnmềm (tin họchóatừng phần) mềm nhiềuphiênbảnbởinhiềungười z Ghezzi [1991]: KNPM là mộtlĩnh vựccủa Tổng hợp, hệ thống hóa cho từng loại công cụ khoa học máy tính, liên quan đếnxâydựng (Máy tính hóa toàn bộ quy trình sảnxuấtphầnmềm) các hệ thống phầnmềmvừalớnvừaphức tạpbởimột hay mộtsố nhóm kỹ sư Hướng tớisảnxuấtphầnmềmtự động Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 79 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 80 Định nghĩa KNPM (tiếp) Định nghĩa KNPM (tiếp) z IEEE [1993]: KNPM là z Sommerville [1995]: KNPM là lĩnh vựcliên • (1) việcápdụng phương pháp tiếpcậncóhệ quan đến lý thuyết, phương pháp và công cụ thống, bài bảnvàđượclượng hóa trong phát dùng cho phát triểnphầnmềm triển, vận hành và bảotrìphầnmềm; z K. Kawamura [1995]: KNPM là lĩnh vựchọc • (2) nghiên cứu các phương pháp tiếpcận được dùng trong (1) vấnvề các kỹ thuật, phương pháp luận công nghệ học(lýluậnvàkỹ thuật đượchiệnthực z Pressman [1995]: KNPM là bộ môn tích hóa trên những nguyên tắc, nguyên lý nào hợpcả quy trình, các phương pháp, các đó) trong toàn bộ quy trình phát triểnphần công cụ để phát triểnphầnmềmmáy mềmnhằm nâng cao cả chấtvàlượng của tính sảnxuấtphầnmềm Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 81 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 82 Tính kỹ nghệ trong KNPM ? Tính kỹ nghệ trong KNPM ? (1) Như các ngành kỹ nghệ khác, KNPM cũng (4) Trong vòng đờiphầnmềm không chỉ có chế lấycácphương pháp khoa họclàmcơ sở tạo mà bao gồmcả thiếtkế, vận hành và (2) Các kỹ thuậtvề thiếtkế, chế tạo, kiểmthử bảo trì (tính quan trọng củathiếtkế và bảo và bảotrìphầnmềm đã đượchệ thống hóa trì) hóa thành phương pháp luận và hình thành (5) Trong khái niệmphầnmềm, không chỉ có nên KNPM chương trình mà cả tư liệuvề phầnmềm (3) Toàn bộ quy trình quản lý phát triểnphần mềmgắnvới khái niệm vòng đờiphầnmềm, (6) Cách tiếpcậnkỹ nghệ (khái niệm công được mô hình hóa vớinhững kỹ thuậtvà nghiệp hóa) thể hiện ở chỗ nhằm nâng cao phương pháp luậntrở thành các chủ đề năng suất (tính năng suất) và độ tin cậycủa khác nhau trong KNPM phầnmềm, đồng thờigiảm chi phí giá thành Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 83 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 84 14
  15. d. Vòng đờiphầnmềm Mô hình vòng đờiphầnmềmcủa Boehm (Software life-cycle) (1981) Xác định yêu cầuhệ thống z Vòng đờiphầnmềmlàthờikỳ tính từ khi Kiểmchứng phầnmềm đượcsinh(tạo) ra cho đến Xác định yêu cầuphầnmềm khi chết đi(từ lúc hình thành đáp ứng Kiểmchứng đ Thiếtkế yêu cầu, vận hành, bảotrìcho ếnkhi cănbản loạibỏ không đâu dùng) Kiểmchứng Thiếtkế z Quy trình phầnmềm (vòng đờiphần chi tiết Kiểmchứng mềm) được phân chia thành các pha Lậptrình chính: phân tích, thiếtkế, chế tạo, kiểm Gỡ lỗi thử, bảo trì. Biểudiễn các pha có khác Kiểmthử nhau theo từng người Chạythử Vậnhành Bảotrì Kiểmchứng Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 85 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 86 Suy nghĩ mớivề vòng đờiphầnmềm Suy nghĩ mớivề vòng đờiphầnmềm (1) Pha xác định yêu cầuvàthiếtkế có vai trò (4) Trước khi chuyển sang pha kế tiếpphải quyết định đếnchấtlượng phầnmềm, đảmbảo pha hiện nay đã đượckiểmthử chiếmphầnlớn công sứcso vớilập trình, không còn lỗi kiểmthử và chuyểngiaophầnmềm (5) Cầncócơ chế kiểmtrachấtlượng, xét (2) Pha cụ thể hóa cấutrúcphầnmềmphụ duyệtgiữa các pha nhằm đảmbảo không thuộcnhiều vào suy nghĩ trên xuống (top- gây lỗi cho pha sau down) và trừutượng hóa, cũng như chi tiết (6) Tư liệucủamỗi pha không chỉ dùng cho hóa pha sau, mà chính là đốitượng quan trọng (3) Pha thiếtkế, chế tạo thì theo trên xuống, cho kiểmtravàđảmbảochấtlượng của pha kiểmthử thì dưới lên (bottom-up) từng quy trình và của chính phầnmềm Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 87 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 88 Các phương pháp luậnvà Suy nghĩ mớivề vòng đờiphầnmềm kỹ thuậtchotừng pha (7) Cầnchuẩn hóa mẫubiểu, cách ghi chép tạotư liệuchotừng pha, nhằm đảmbảochấtlượng phầnmềm (8) Thao tác bảotrìphầnmềmlàviệcxử lý quay vòng trở lại các pha trong vòng đờiphầnmềmnhằmbiến đổi, sửa chữa, nâng cấpphầnmềm Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 89 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 90 15
  16. Bài tậplớn: Các đề tài Bài tậplớn: cách làm 1. CMM and CMMI 12. RTPA (www.sei.cmu.edu) 13. COCOMO I, II z Mỗi nhóm 3 – 5 SV, thựchiện1 đề tài, mỗi đề tài chỉ 1 nhóm 2. ISO 9001, for SE 14. Oracle PM z Phân công nhóm trưởng, trách nhiệmtừng thành viên 3. UML and RUP 15. Postgre-SQL z Thu thậptư liệu, nghiên cứu, triển khai (minh họahoặccàiđặt đơn 4. CBSE 16. FreeBSD giản) 5. Java and JSP 17. Turbo Linux z Viết báo cáo đầy đủ (15 trang / 1người) và chuẩnbị PPT trình bày 6. ASP and .NET 18. GCC trong 15-20’ một nhóm 7. PHP and MySQL 19. CMS.NET and Related z Đóng quyển theo quy cách báo cáo thựctập. Các thành viên ký tên. 8. RAISE Issues Nộp theo CD có ghi các tệpbáocáovàtư liệu liên quan (1 CD có thể 9. Z-Method 20. Design Patterns ghi cho nhiều nhóm) đ đ 10. B-Method 21. Software Metrics z Thờihạn: tuầnthứ 14 nộp. Thờigianvà ịa iểmcụ thể sẽ thông báo sau 11. rCOS method 22. XP (Extreme Progr.) z Ghi chú: có thể đề xuất đề tài khác (ví dụ tìm hiểu yêu cầu và đặc tả hệ thống nào đó, ), nhưng phải đượcGV đồng ý Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 91 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 92 16