kỹ nghệ phần mềm c

16 317 0
kỹ nghệ phần mềm c

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

1 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 1 Nhập môn Kỹ nghệ Phần mềm Bài giảng cho lớp K50CA và K50CB Giảng viên: PGS.TS. Nguyễn NgọcBình Email: nnbinh@vnu.edu.vn Http://www.jaist.ac.jp/~jaist 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 2 Cấutrúcmônhọc z 45 tiết+ Bàitậplớn+ Kiểmtra 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) z Cung cấpkiếnthức để học các môn chuyên ngành hẹpnhư Phân tích và thiếtkế phần mềm, Xây dựng và đánh giá phầnmềm, Quảntrị dự án phầnmềm, Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 3 Website môn học http://10.10.0.10/courses/ z Thông báo z Diễn đàn z Tài liệu tham khảo z Bài giảng z Yêu cầu bài tập/ đề bài kiểmtra Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 4 Mụctiêumônhọc z Truyền đạt các nguyên lý / kỹ thuật chung để phát triển đượcphầnmềm chấtlượng cao, giá cả hợplý (Làm phầnmềmmột cách chuyên nghiệp, công nghiệp) 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 5 Nội dung môn học z Tổng quan phầnmềmvàkỹ nghệ phần mềm • Vai trò và tầm quan trọng củaphầnmềm • Khó khănvàtháchthức đốivới phát triển phầnmềm • Tổng quan về kỹ nghệ phầnmềm z Tiến trình và mô hình tiến trình phần mềm • Khái niệm • Cácmôhìnhtiếntrìnhtổng quát, cụ thể Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 6 Nội dung môn học (tiếp) z Quảnlýdự án phát triểnphầnmềm • Khái niệm, vai trò, mụctiêucủaquảnlýdự án • Các yếutố quảnlý • Các hoạt động quảnlý(phương pháp, công cụ hỗ trợ) z Phân tích và đặctả yêu cầu • Vai trò của phân tích và đặctả yêu cầu • Các hoạt động phân tích, đặctả yêu cầu. • Phương pháp, công cụ để phân tích, đặctả yêu cầu. 2 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 7 Nội dung môn học (tiếp) z Thiếtkế phầnmềm • Khái niệm, nguyên lý, chấtlượng thiếtkế phầnmềm • Thiếtkế kiến trúc, thiếtkế giao diện • Mộtsố phương pháp, công cụ thiếtkế z Lậptrình • Phong cách lậptrình • Lậptrìnhtránhlỗi • Lậptrìnhhướng hiệuquả Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 8 Nội dung môn học (tiếp) z Kiểmthử • Khái niệm, các loạikiểmthử • Quy trình, công cụ trợ giúp kiểmthử • Viếttàiliệukiểmthử z Tích hợp, chuyểngiaovàbảotrì • Khái niệm • Các nguyên lý, hoạt động tích hợp • Các hoạt động chuyển giao, bảotrì • 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 9 Tài liệuthamkhảo z http://10.10.0.10/courses/ - website môn học z Bài giảng Kỹ nghệ phầnmềm (NguyễnViệt Hà, trên website môn học) 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 – Khoa Công nghệ thông tin – Trường ĐHCN) z R. Pressman, Software Engineering: A Practioner’s Approach. 6th Ed., McGraw-Hill, 2004 z R. Pressman, Kỹ nghệ phầnmềm. Tập 1, 2, 3. NXB Giáo dục, Hà Nội, 1997 (Ngườidịch: Ngô Trung Việt) z I. Sommerville, Software Engineering. 7th Ed., Addison-Wesley, 2004 z K. Kawamura, Nhập môn Công nghệ họcPhầnmềm. NXB Kinki- 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 10 Yêu cầu z Nắm được các nguyên lý / khái niệm cơ bảncủakỹ nghệ phầnmềm z Vậndụng kiếnthức vào bài tập nhóm • Hiểuvề quá trình làm phầnmềm • Minh họa nguyên lý / kỹ thuật z Tìm hiểumộtsố chủ đề mở rộng Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 11 Yêu cầu z Thường xuyên theo dõi thông tin trên Website z Lấyyêucầu bài tậpvànộp bài trên Website z Xem điểm bài tậptrênWebsite z Tham gia diễn đàn môn họctrênWebsite 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 12 Điểmsố, đánh giá z Điểmthicuốikỳ (50-60%) z Bài tậplớn theo nhóm (20-30%) z Kiểmtragiữakỳ (20-30%) z Xét điềukiệnthicuốikỳ z Tính điểm chung 3 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 13 NHẬP MÔN KỸ NGHỆ PHẦN MỀM CHƯƠNG 1: 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 14 1.1 Định nghĩa chung về phầnmềm 1.2 Kiếntrúcphầnmềm 1.3 Các khái niệm 1.4 Đặctínhchungcủaphầnmềm 1.5 Thế nàolàphầnmềmtốt? 1.6 Các ứng dụng phầnmềm Nội dung Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 15 1.1. Định nghĩa chung về phầnmềm z Phầnmềm (Software - SW) như một khái niệm đối nghĩavớiphầncứng (Hardware - HW), tuy nhiên, đây là 2 khái niệmtương đối z Từ xưa, SW như thứ được cho không hoặc bán kèm theo máy (HW) z Dầndần, giá thành SW ngày càng cao và nay cao hơnHW Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 16 Các đặctínhcủaSW vàHW HW z Vật“cứng” z Kim loại z Vậtchất z Hữuhình z Sảnxuất công nghiệpbởimáymóc là chính z Định lượng là chính z Hỏng hóc, hao mòn SW z Vật“mềm” z Kỹ thuậtsử dụng z Trừutượng z Vô hình z Sảnxuấtbởi con người là chính z Định tính là chính 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 17 Định nghĩa1: Phầnmềmlà z Các lệnh (chương trình máy tính) khi đượcthựchiện thì cung cấp những chứcnăng và kếtquả mong muốn z Các cấutrúcdữ liệulàmcho chương trình thao tác thông tin thích hợp z Các tư liệumôtả thao tác và cách 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 18 SW đối nghĩavớiHW z Vai trò SW ngày càng thể hiệntrội z Máy tính là . . . chiếchộp không có SW z Ngày nay, SW quyết định chất lượng mộthệ thống máy tính (HTMT), là chủ đề cốt lõi, trung tâm củaHTMT z Hệ thống máy tính gồmHW vàSW 4 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 19 Định nghĩa2 z Trong mộthệ thống máy tính, nếutrừ bỏ đicácthiếtbị và các loạiphụ kiệnthì phầncònlại chính là phầnmềm(SW) z Nghĩahẹp: SW là dịch vụ chương trình để tăng khả năng xử lý củaphầncứng củamáytính(như hệ điều hành - OS) z Nghĩarộng: SW là tấtcả các kỹ thuật ứng dụng để thựchiệnnhững dịch vụ 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 20 SW theo nghĩarộng z Không chỉ SW cơ bảnvàSW ứng dụng z Phảigồmcả Khả năng, kinh nghiệm thựctiễnvàkỹ năng củakỹ sư (người chế ra phầnmềm): Know-how of Software Engineer z Là tấtcả các kỹ thuậtlàmchosử dụng phầncứng máy tính đạthiệuquả cao Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 21 Phầnmềmlàgì? Nhóm các Kỹ thuật, Phương pháp luận Nhóm các chương trình Nhóm các tư liệu 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 22 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 z Các phương pháp tiếpcậngiải quyếtvấn đề z Các trình tự thiếtkế và phát triển được chuẩn hóa z Các phương pháp đặctả yêu cầu, thiếtkế hệ 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 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 23 Nhóm các chương trình z Là phầngiaodiệnvớiphầncứng, tạo thành từ các nhóm lệnh chỉ thị cho máy tính biết trình tự thao tác xử lý dữ liệu z Phầnmềmcơ bản: vớichứcnăng cung cấp môi trường thao tác dễ dàng cho ngườisử 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) 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, . . .), 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 24 Nhóm các tư liệu z Những tư liệuhữu ích, có giá trị cao và rấtcầnthiết để phát triển, vận hành và bảotrìphầnmềm z Để chế ra phầnmềmvới độ tin cậycao cầntạoracáctư liệuchấtlượng cao: đặctả yêu cầu, mô tả thiếtkế từng loại, điềukiệnkiểmthử, thủ tụcvận hành, hướng dẫnthaotác, … 5 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 25 Những yếutố khác z Sảnxuấtphầnmềmphụ thuộcrất nhiều vào con người(kỹ sư phầnmềm). Khả năng hệ thống hóa trừutượng, khả năng lập trình, kỹ năng công nghệ, kinh nghiệmlàmviệc, tầm bao quát, . . .: khác nhau ở từng người z Phầnmềmphụ thuộcnhiềuvàoýtưởng (idea) và kỹ năng (know-how) của người/nhóm tác giả Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 26 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 (http://www.sei.cmu.edu/architecture/community_definitions.html) 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 với nhau thành một hệ thống (the overall structure of the software and the ways in which that structure provides conceptual integrity for a system) 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 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 dùng trong các thành phần(the hierachical structure of program components (modules), the manner in which these components interact, the the structure of the data that are used by the components). Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 27 Kiến trúc phần mềm (Software Architecture) z Software Architecture is defined as it is an organized collection of inter-related structural elements types for solving a software design problem. z Structural Elements Types: • a) Components • b) Connectors • c) Configuration • d) Constraints and • e) Rationale z Characteristics, Classification, and Definations must be given for all the above. Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 28 1.2 Kiếntrúcphầnmềm 1.2.1 Phầnmềm nhìn từ cấutrúcphâncấp z Cấutrúcphầnmềmlàcấu trúc phân cấp (hierarchical structure): mứctrên là hệ thống (system), dướilàcáchệ thống con (subsystems) z Dướihệ thống con là các chương trình z Dướichương trình là các Modules hoặc Subroutines vớicácđốisố (arguments) Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 29 Kiếntrúcphầnmềm System Subsystem Subsystem Program Program Module Module Subroutine Master files Temporary files Arguments Arguments Job unit Jobstep unit Member unit Common Module ≈ ≈ Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 30 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 • Phương diệncấutrúc • Phương diệnthủ tục z Cấutrúcphầnmềm: biểuthị kiếntrúccác chứcnăng mà phầnmềm đócóvàđiềukiện phân cấpcácchứcnăng (thiếtkế cấutrúc) 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) 6 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 31 Cấutrúcphầnmềm Fuction A Function B Function C Function D Function E Function F Cấutrúcchiều ngang (Horizontal structure) Cấutrúcchiều ứng (Vertical structure) Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 32 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ó z 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) z Là cấutrúclôgicbiểuthị từng chứcnăng có trong phầnmềmvàtrìnhtự thựchiện chúng z Thiếtkế cấutrúctrướcrồi sang chứcnăng Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 33 1.3 Các khái niệm z Khi chế tác phầnmềmcầnnhiềukỹ thuật • Phương pháp luận (Methodology): những chuẩnmựccơ bản để chế tạophầnmềm với các chỉ tiêu định tính • Các phương pháp kỹ thuật (Techniques): những trình tự cụ thể để chế tạophần mềm và là cách tiếpcậnkhoahọcmang tính định lượng 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 34 Các khái niệmphầnmềm (Software concepts) z Khái niệm tính môđun (modularity concept) z Khái niệm chi tiết hóa dầntừng bước (stepwise refinement concept) z Khái niệmtrừutượng hóa (abstraction concept): về thủ tục, điềukhiển, dữliệu z Khái niệm che giấu thông tin (information hiding concept) z Khái niệmhướng đốitượng (object oriented) Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 35 Từ phương pháp luậnphầnmềm sang kỹ thuậtphầnmềm Tính Môđun Chi tiếthóadần Trừutượng hóa (Che giấut.tin) Phân tích cấutrúc Thiếtkế cấutrúc Lậptrìnhcấutrúc Dữ liệutrừutượng Hướng đốitượng Khái niệmphầnmềm Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 36 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 cho phép quảnlýtổng thể: khái niệm phân chia và hợp (partion and merge) z Hai phương pháp phân chia môđun theo chiều • sâu (depth, thẳng đứng): điềukhiểnphứctạpdần • rộng (width, nằm ngang): môđun phụ thuộcdần z Quan hệ giữacácmôđun: qua các đốisố (arguments) 7 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 37 Chuẩn phân chia môđun Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 38 1.3.2 Chi tiết hóa từng bước Cách tiếpcậntừ trên xuống (top-down approach) Ngôn ngữ chương trình Chi tiÕt hãa tõng b−íc Thế giới bên ngoài Đặctả yêu cầu Trừutượng hóa mứccao: Thế giới bên ngoài, trạng thái chưarõràng Trừutượng hóa mức trung gian: Xác định yêu cầuvàđặctả Những định nghĩayêucầu Trừutượng hóa mứcthấp: Từng lệnh củachương trình được 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 39 Ví dụ: Trình tự giải quyếtvấn đề từ mức thiếtkế chương trình đếnmứclậptrình 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 (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 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 nhị phân) Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 40 Cụ thể hóa thủ tụcqua cácchứcnăng Bài toán đãcho Nhậpgiátrị K Nhậngiátrị nhóm N số Tìm kiếmgiátrị (PP 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 41 Cụ thể hóa bướctiếptheo Tìm kiếmgiátrị (pp nhị phân) Xác lậpphạmvi mảng số Lặplạixử lý tìm kiếmgiátrị K trong phạmvi tìmkiếm Tìm vị trí giữa phân đôi mảng So sánh K với giá trị giữa Đặtlạiphạm vi tìm kiếm Lặplạitìmkiếm K trong phạm vi tìm kiếm Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 42 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) MIN = 1 MAX = N DO WHILE (Có giá trị bằng K không? Cho đến khi MIN > MAX) Lấy MID = (MIN + MAX) / 2 IF A(MID) > K THEN MAX = MID - 1 ELSE IF A(MID) < K THEN MIN = MID + 1 ELSE In giá trị MID ENDIF ENDIF ENDDO Kếtthúc 8 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 43 1.3.3 Khái niệmChegiấu thông tin z Để phân rã phầnmềm thành các môđun mộtcáchtốtnhất, cần tuân theo nguyên lý che giấu thông tin: “các mô đ un nên đ ược đ ặctrưng bởinhững quyết đ ịnh thiếtkế sao cho mỗimô đ un ẩnkín đ ối vớicácmô đ un khác” [Parnas1972] z Rấthữu ích cho kiểmthử và bảotrì phầnmềm Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 44 Khái niệmTrừutượng hóa z Abstraction cho phép tập trung vấn đềở mứctổng quát, gạt đinhững chi tiếtmức thấp ít liên quan z 3 mứctrừutượng • Trừutượng thủ tục: dãy các chỉ thị vớichứcnăng đặc thù và giớihạnnàođó • Trừutượng dữ liệu: tậphợpdữ liệumôtả đối tượng dữ liệunàođó • 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 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 45 1.4 Đặctínhchungcủaphầnmềm z Là hàng hóa vô hình, không nhìn thấy được z Chấtlượng phầnmềm: không mòn đimàcó xu hướng tốtlênsaumỗilầncólỗi (error/bug) được phát hiệnvàsửa z Phầnmềmvốnchứalỗitiềm tàng, theo quy mô càng lớnthìkhả năng chứalỗi càng cao z Lỗiphầnmềmdễ được phát hiệnbởingười ngoài Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 46 Đặc tính chung củaphầnmềm z Chứcnăng củaphầnmềmthường biếnhóa, thay đổi theo thời gian (theo nơisử dụng) z Hiệu ứng làn sóng trong thay đổiphầnmềm z Phầnmềmvốnchứaýtưởng và sáng tạo của tác giả / nhóm tác giả làm ra nó z Cầnkhả năng “tư duy nhị phân” (binary thinking) trong xây dựng, phát triểnphần 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 47 1.5 Thế nào là phầnmềmtốt? Hiệusuấtxử lý Các chỉ tiêu cơ bản Tính dễ hiểu Thờigian (Phầncứng phát triển) Yếu tố khái niệm phần mềm tốt Đặc trưng gần đây Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 48 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) z Chứaítlỗitiềm tàng z Giá thành không vượt quá giá ước lượng ban đầu z Dễ vận hành, sử dụng z Tính an toàn và độ tin cậycao 9 Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 49 1.5.2 Hiệusuấtxử lý cao z Hiệusuấtthờigiantốt (efficiency): • Độ phứctạptínhtoánthấp(Time complexity) • Thời gian quay vòng ngắn (Turn Around Time: TAT) • Thờigianhồi đáp nhanh (Response time) z Sử dụng tài nguyên hữuhiệu: CPU, RAM, HDD, Internet resources, . . . Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 50 1.5.3 Tính dễ hiểu z Kiếntrúcvàcấutrúcthiếtkế dễ hiểu z Dễ kiểmtra, kiểmthử, kiểmchứng z Dễ bảotrì z Có tài liệu(môtả yêu cầu, điềukiệnkiểm thử, vận hành, bảo trì, FAQ, . . .) vớichất lượng cao 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 51 1.6 Các ứng dụng phầnmềm z Phầnmềmhệ thống (System SW) z Phầnmềmthờigianthực (Real-time SW) z Phầnmềm nghiệpvụ (Business SW) z Phầnmềm tính toán KH&KT (Eng.&Scie. SW) z Phầnmềm nhúng (Embedded SW) z Phầnmềm máy cá nhân (Personal computer SW) z Phầnmềm trên Web (Web-based SW) 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 52 CHƯƠNG 2: Khủng hoảng phầnmềm (Software Crisis) và Khái niệmKỹ nghệ phần mềm (Software Engineering) 2.1 Khủng hoảng phầnmềmlàgì? 2.2 Những vấn đề (khó khăn) trong sảnxuấtphầnmềm 2.3 Định nghĩa Kỹ nghệ phần mềm Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 53 2.1 Khủng hoảng phầnmềmlàgì? z 10/1968 tạiHội nghị củaNATO cácchuyêngia phầnmềm đã đưarathuậtngữ “Khủng hoảng phầnmềm” (Software crisis). Qua hàng chụcnăm, thuậtngữ này vẫn được dùng và ngày càng mang tính cấpbách z Khủng hoảng là gì ? [Webster’s Dict.] • Điểm ngoặt trong tiếntrìnhcủasự vật, sự kiện nào đó; thời điểm, giai đoạnhoặcbiếncố quyết định hay chủ chốt • Điểm ngoặt trong quá trình diễnbiếnbệnh khi trở nên rõ ràng bệnh nhân sẽ sống hay chết 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 54 Khủng hoảng phầnmềm là gì? (tiếp) Là sự day dứtkinhniên(kéodàitheothờigianhoặc thường tái diễn, liên tục không kết thúc) gặpphải trong phát triểnphầnmềm máy tính, như z Phảilàmthế nào vớiviệcgiảmchấtlượng và những lỗi tiềm tàng có trong phầnmềm? z Phảixử lý ra sao khi bảodưỡng phầnmềm đãcó? z Phảigiải quyếtthế nào khi thiếukỹ thuậtviênphầnmềm? z Phảichế tác phầnmềmrasaokhicóyêucầu phát triển theo qui cách mớixuấthiện? z Phảixử lý ra sao khi sự cố phầnmềmgâyranhững vấn đề xã hội? 10 B mụn Cụng ngh phnmm Khoa CNTT- HCN- HQGHN K ngh phnmm Slide 55 Mts yut z Phnmmcnglns kộotheophc tphúavtng chi phớ phỏt trin z i vai trũ giỏ thnh SW vs. HW z Cụng scchobotrỡcngtng thỡ chi phớ cho Backlog cng ln z Nhõn lccha ỏp ng cnhucu phnmm z Nhng phinhcaphnmmgõyra nhng vn xó hi B mụn Cụng ngh phnmm Khoa CNTT- HCN- HQGHN K ngh phnmm Slide 56 So sỏnh chi phớ cho Phncng v Phnmm % 100 80 60 40 20 0 - - - - + 1955 + 1970 + 2000 + 1985 Phncng Phỏt trin Botrỡ Phn Mm B mụn Cụng ngh phnmm Khoa CNTT- HCN- HQGHN K ngh phnmm Slide 57 So sỏnh chi phớ cho cỏc pha 3 3 5 7 8 7 67 Xác định yêu cầu 3% Đặc tả 3% Thiết kế 5% Lập trình 7% Kiểm thử môđun 8% Kiểm thử tích hợp 7% Bảo trì 67% B mụn Cụng ngh phnmm Khoa CNTT- HCN- HQGHN K ngh phnmm Slide 58 2.2 Nhng vn (khú khn) trong snxutphnmm (1) Khụng cú phngphỏpmụt rừ rng nh nghayờucucangi dựng (khỏch hng), sau khi bn giao snphm d phỏt sinh nhng trctrc (troubles) (2) Vinhng phnmm quy mụ ln, t liu ct óc nh thi gian di, do vy khú ỏp ng nhu cu thay icangi dựng mtcỏchkpthitrongthigianú B mụn Cụng ngh phnmm Khoa CNTT- HCN- HQGHN K ngh phnmm Slide 59 Nhng vn trong snxutphnmm(tip) (3) NukhụngcúPhng phỏp lunthit k nhtquỏnmthitk theo cỏch riờng (ca cụng ty, nhúm), thỡ s dn n suy gimchtlng phnmm (do ph thuc quỏ nhiu vo con ngi) (4) Nukhụngcúchunv lm t liu quy trỡnh snxutphnmm, thỡ nhng ct khụng rừ rng s lm gimchtlng phnmm B mụn Cụng ngh phnmm Khoa CNTT- HCN- HQGHN K ngh phnmm Slide 60 Nhng vn trong snxutphnmm(tip) (5) Nu khụng kimth tớnh ỳng nca phnmm tng giai onmch kim giai oncui v phỏt hinrali, thỡ thng bn giao snphm khụng ỳng hn (6) Nucoitrng viclptrỡnhhn khõu thit k thỡ thng dn n lm gimchtlng phnmm (7) Nucoithng victỏis dng ph nmm (software reuse), thỡ nng sutlaong s gim [...]... ĐHQGHN Kỹ nghệ phần mềm Slide 64 2.3 Kỹ nghệ Phần mềm (Software Engineering) Problems? Lịch sử tiến triển Kỹ nghệ phần mềm Sự tiến triển c a c c phương pháp thiết kế phần mềm Định nghĩa Kỹ nghệ phần mềm Vòng đời c a phần mềm Source: VnExpress, Nov 2004 Bộ môn C ng nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 65 Bộ môn C ng nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide... từ năm 1981 • Cu c c ch tân sản xuất phần mềm đã bắt đầu trên phạm vi c cc công nghiệp Bộ môn C ng nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 70 Lịch sử tiến triển c a KNPM Lịch sử tiến triển c a KNPM Nửa đầu những năm 1980: Trình độ h c vấn và ứng dụng KNPM đư c nâng cao, c c công nghệ đư c chuyển vào th c tế Xuất hiện c c sản phẩm phần mềmc c công c kh c nhau làm tăng... chất lượng c a từng quy trình và c a chính phần mềm Bộ môn C ng nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 87 Suy nghĩ mới về vòng đời phần mềm Bộ môn C ng nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 88 C c phương pháp luận và kỹ thuật cho từng pha (7) C n chuẩn hóa mẫu biểu, c ch ghi chép tạo tư liệu cho từng pha, nhằm đảm bảo chất lượng phần mềm (8) Thao t c. .. lĩnh v c h c vấn về c c kỹ thuật, phương pháp luận c ng nghệ h c (lý luận và kỹ thuật đư c hiện th c hóa trên những nguyên t c, nguyên lý nào đó) trong toàn bộ quy trình phát triển phần mềm nhằm nâng cao c chất và lượng c a sản xuất phần mềm Bộ môn C ng nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mề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, ... ĐHQGHN Kỹ nghệ phần mềm Slide 83 Bộ môn C ng nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 84 14 d Vòng đời phần mềm (Software life-cycle) Vòng đời phần mềm là thời kỳ tính từ khi phần mềm đư c sinh (tạo) ra cho đến khi chết đi (từ l c hình thành đáp ứng yêu c u, vận hành, bảo trì cho đến khi loại bỏ không đâu dùng) Quy trình phần mềm (vòng đời phần mềm) đư c phân chia thành c c pha chính:... Thao t c bảo trì phần mềm là vi c xử lý quay vòng trở lại c c pha trong vòng đời phần mềm nhằm biến đổi, sửa chữa, nâng c p phần mềm Bộ môn C ng nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 89 Bộ môn C ng nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 90 15 Bài tập lớn: C c đề tài 1 CMM and CMMI (www.sei.cmu.edu) 2 ISO 9001,… for SE 3 UML and RUP 4 CBSE 5 Java and JSP... KNPM là bộ môn tích hợp c quy trình, c c phương pháp, c c công c để phát triển phần mềm máy tính Bộ môn C ng nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 81 Bộ môn C ng nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 80 Định nghĩa KNPM (tiếp) Sommerville [1995]: KNPM là lĩnh v c liên quan đến lý thuyết, phương pháp và c ng c dùng cho phát triển phần mềm K Kawamura... xuất phần mềm) c Định nghĩa Kỹ nghệ phần mềm Bauer [1969]: KNPM là vi c thiết lập và sử dụng c c nguyên t c công nghệ h c đúng đắn dùng để thu đư c phần mềm một c ch kinh tế vừa tin c y vừa làm vi c hiệu quả trên c c máy th c Parnas [1987]: KNPM là vi c xây dựng phần mềm nhiều phiên bản bởi nhiều người Ghezzi [1991]: KNPM là một lĩnh v c của khoa h c máy tính, liên quan đến xây dựng c c hệ thống phần mềm. .. xuất phần mềm bằng c ch đưa những kỹ thuật c ng nghệ h c (Engineering techniques) thành c sở khoa h c của KNPM Thể chế hóa lý luận trong sản xuất phần mềm và ứng dụng những phương pháp luận một c ch nhất quán Tăng c ờng nghiên c u và tạo c ng c trợ giúp sản xuất phần mềm Bộ môn C ng nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 73 Sơ khởi: nửa đầu 1970 Khái niệm về tính môđun, c thể... tượng OOP; Phần mềm dựa theo thành phần; Hỗ trợ phát triển phần mềm từ c c hệ chuyên gia, v.v Bộ môn C ng nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 78 13 Hình thái sản xuất Phần mềm Đưa ra c c kỹ thuật, phương pháp luận ứng dụng th c tế vào từng quy trình C i biên, biến đổi vào từng sản phẩm và c ng c phần mềm (tin h c hóa từng phần) Tổng hợp, hệ thống hóa cho từng loại c ng c (Máy . Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 13 NHẬP MÔN KỸ NGHỆ PHẦN MỀM CHƯƠNG 1: 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. 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 12 Bộ môn Công nghệ phầnmềm. sảnxuấtphầnmềm 2.3 Định nghĩa Kỹ nghệ phần mềm Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 53 2.1 Khủng hoảng phầnmềmlàgì? z 10/1968 tạiHội nghị củaNATO cácchuyêngia phầnmềm

Ngày đăng: 01/07/2014, 12:54

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan