Bài giảng Kỹ nghệ phần mềm - Bài 1: Khái niệm về phần mềm - Nguyễn Văn Vỵ
Tóm tắt Bài giảng Kỹ nghệ phần mềm - Bài 1: Khái niệm về phần mềm - Nguyễn Văn Vỵ: ...ủa phần mềm Phức tạp, khó hiểu, vô hình Phần mềm lμ hệ thống logic khó hiểu Nhiều khái niệm khác nhau, khó hiểu Mối liên kết lμ lôgic (không thấy) Để hiểu phảI t− duy trừu t−ợng Không nhìn thấy Không phảI vật thể vật lý Mỗi biểu diễn chỉ 1 khía cạnh (dữ liệu, hμnh vi, cấu tr...HCN 21 Nguyễn Văn Vỵ Phân loại theo chức năng 3. Phần mềm công cụ (Tools, CASE) Trợ giúp cho quá trình phát triển phần mềm Các ngôn ngữ lập trình (soạn thảo, dịch, gỡ rối,..) Công cụ trợ giúp 1 , nhiều giai đoạn phát triển (phân tích, thiế kế, quản lý dự án, kiểm thử,..) Developer200... dẫn (tính nhanh hơn, bộ nhớ khá), CSDL Yêu cầu bảo trì (sửa lỗi, thích nghi) Bộ mụn Cụng nghệ phần mềm – ĐHCN 29 Nguyễn Văn Vỵ Giai đoạn 3: ặ1990 Phần mềm cá nhân + mạng, hệ lớn, chia sẻ đ−ợc Ra đời phần mềm nhúng Xử lý số, ký tự, âm thanh, hình ảnh; theo lô, thời gian thực, phân...
Bộ môn Công nghệ phần mềm- Khoa CNTT- ĐHCN Email: vynv@coltech.vnu.vn Kỹ nghệ phần mềm Software Engeneering Nguyễn Văn Vỵ Bộ mụn Cụng nghệ phần mềm – ĐHCN 2 Nguyễn Văn Vỵ Bài 1: Khỏi niệm về phần mềm Nội dung ■ Phần mềm vμ tầm quan trọng ■ Tiến hóa phần mềm vμ thách thức ■ Kỹ nghệ phần mềm ■ Tiến trình phần mềm ■ Chất lượng phần mềm Bộ mụn Cụng nghệ phần mềm – ĐHCN 3 Nguyễn Văn Vỵ TÀI LiỆU THAM KHẢO 1. Nguyễn Văn Vỵ, Nguyễn Việt Hà. Giỏo trỡnh kỹ nghệ phần mềm. Nhà xuất bản Đại học Quốc gia Hà nội, 2008 2. Grady Booch, James Rumbaugh, Ivar Jacobson. The Unified Modeling language User Guid. Addison-Wesley, 1998. 3. M. Ould. Managing Software Quality and Business Risk, John Wiley and Sons, 1999. 4. Roger S.Pressman, Software Engineering, a Practitioner’s Approach. Fifth Edition, McGraw Hill, 2001. 5. Ian Sommerville, Software Engineering. Sixth Edition, Addison- Wasley, 2001. 6. Nguyễn Văn Vỵ. Phõn tớch thiết kế hệ thống thụng tin hiện đại. Hướng cấu trỳc và hướng đối tượng, NXB Thống kờ, 2002, Hà Nội. Bộ mụn Cụng nghệ phần mềm – ĐHCN 4 Nguyễn Văn Vỵ Phần mềm và tầm quan trọng Phần mềm gồm 3 phần: 1. Ch−ơng trình máy tính Mã nguồn Mã máy 2. Các cấu trúc dữ liệu Cấu trúc lμm việc (bộ nhớ trong) Cấu trúc l−u trữ (bộ nhớ ngoμi) a. Khái niệm về phần mềm file.exe file.com Dowhle Eddo If than End if wwscklrn File.text Bộ mụn Cụng nghệ phần mềm – ĐHCN 5 Nguyễn Văn Vỵ Khái niệm về phần mềm Phần mềm gồm 3 phần: 3. Cỏc tài liệu liờn quan h−ớng dẫn sử dụng (ng−ời dùng) tham khảo kỹ thuật (ng−ời bảo trì) tμi liệu phát triển (nhμ phát triển) User’s guid technical reference specification, design, test, .. Bộ mụn Cụng nghệ phần mềm – ĐHCN 6 Nguyễn Văn Vỵ Khái niệm về phần mềm Tạo sinh các thμnh phần Các thμnh phần vận hμnh đ−ợc Mã nguồn, mã máy, cấu trúc dữ liệu: tự động hóa đ−ợc Các thμnh phần không vận hμnh Các phần còn lại: hầu nh− ch−a đ−ợc tự động hóa Nhu cầu vμ khả năng tự động hóa Lμm thủ công lμ tất yếu Mong muốn tự động hóa cμng nhiều cμng tốt Tự động hóa khi có thể hình thức hóa Lμm tμI liệu lμ cực nhọc, nh−ng khó tự động Bộ mụn Cụng nghệ phần mềm – ĐHCN 7 Nguyễn Văn Vỵ Vai trò của phần mềm Phần mềm - linh hồn của các hệ thống máy tính Có vai trò nền tảng của mọi hoạt động xã hội tổ chức Cá nhân tổ chức quốc gia Toμn cầu Làm việc, giải trí Sản xuất, dịch vụ điều hành, phát triển Hội nhập phần mềm Hồn siêu, phách lạc ặ bất tỉnh Bộ mụn Cụng nghệ phần mềm – ĐHCN 8 Nguyễn Văn Vỵ Vai trò của phần mềm Mọi nền kinh tế phụ thuộc rất lớn vμo phần mềm Thu, chi từ phần mềm chiếm đáng kể trong GNP • 2006 ấn độ xuất gần 30 tỉ USD phần mềm • Thế giới có >7 triệu kỹ sư CNTT tạo ra 600 tỉ $/năm • Chi phí cho phần mềm năm 2000 lên tới: 770 tỉ $ phần mềm sai hỏng, kinh tế tổn thất lớn • vệ tinh Ariane 5 hỏng do lỗi phần mềm (1996) thiệt hại 500 triệu $. Website dùng 1 ngμy mất hμng triệu $ 9 [Pạnkaj Jalote. CMM in practice, Addison-Wesley, tr.1,3,11] Bộ mụn Cụng nghệ phần mềm – ĐHCN 9 Nguyễn Văn Vỵ Vai trò của phần mềm Phần mềm tạo nên sự khác biệt giữa các tổ chức: ắ phong cách ắ năng suất lao động T h ô n g t i n , d ữ l i ệ u>< Trời ơi ! Tuyệt vời ! Bộ mụn Cụng nghệ phần mềm – ĐHCN 10 Nguyễn Văn Vỵ Vai trò của phần mềm Ngμy cμng nhiều hệ thống đ−ợc phần mềm điều khiển, trợ giúp • Tính tự động hóa của các hệ thống ngμy một cao • Chi phí phần mềm >> phần cứng ứng dụng phần mềm có mặt trên mọi lĩnh vực xã hội: Kinh tế, quân sự, giáo dục, trò chơi, Chi phần cứng 10 triệu đồng Chi phần mềm 40 - 50 triệu đồng >> Hệ thống siêu thi Game online Bộ mụn Cụng nghệ phần mềm – ĐHCN 11 Nguyễn Văn Vỵ Đặc tr−ng của phần mềm Không mòn cũ, những thoái hóa theo thời gian Môi tr−ờng sử dụng, nhu cầu thay đổi -> không dùng Lỗi phát sinh tăng do nâng cấp -> quá mức Thời gian T ỷ l ệ h ỏ n g Lỗi đ−a vμo khi sửa đổi lí t−ởng thực tế đ−ờng mức Đ−ờng cong thoái hóa của phần mềm Bộ mụn Cụng nghệ phần mềm – ĐHCN 12 Nguyễn Văn Vỵ Đặc tr−ng của phần mềm Không đ−ợc lắp ráp từ mẫu có sẵn Không có danh mục chi tiết cho trước Sản phẩm đặt hμng theo từng yêu cầu riêng đặt hμng 1 Khảo sát Phân tích Thiết kế Lập trình Kiểm thử fần mềm1đặt hμng 2 fần mềm2 Bộ mụn Cụng nghệ phần mềm – ĐHCN 13 Nguyễn Văn Vỵ Đặc tr−ng của phần mềm Phức tạp, khó hiểu, vô hình Phần mềm lμ hệ thống logic khó hiểu Nhiều khái niệm khác nhau, khó hiểu Mối liên kết lμ lôgic (không thấy) Để hiểu phảI t− duy trừu t−ợng Không nhìn thấy Không phảI vật thể vật lý Mỗi biểu diễn chỉ 1 khía cạnh (dữ liệu, hμnh vi, cấu trúc, giao diện), không phảI hệ thống tổng thể Use case Tr−ờng hợp sử dụng − ? Bộ mụn Cụng nghệ phần mềm – ĐHCN 14 Nguyễn Văn Vỵ Đặc tr−ng của phần mềm Thay đổi lμ bản chất Lμ mô hình thế giới thực thay đổi theo thời gian Môi tr−ờng nghiệp vụ thay đổi Nhu cầu con ng−ời thay đổi ắ Thay đổi để đáp ứng ng−ời dùng Thay đổi thích ứng với môi tr−ờng vận hμnh − Các hệ phần mềm nền (hệ điều hμnh,..) − Thiết bị phần cứng (chip,..) Bộ mụn Cụng nghệ phần mềm – ĐHCN 15 Nguyễn Văn Vỵ ■ Cần phát triển theo nhóm Quy mô cμng lớn & yêu cầu kỹ năng khác nhau Nhu cầu bμn giao nhanh Năng suất nhóm không tỷ lệ với số thμnh viên (1 ng−ời giỏi > 5 lần ng−ời trung bình) Vấn đề Trao đổi thông tin lớn (10000 email/ngμy) Khó kiểm soát vμ đồng bộ Khó tăng tốc độ = cách thêm ng−ời Cá nhân ảnh h−ởng lớn lên kết quả nhóm Đặc tr−ng của phần mềm Bộ mụn Cụng nghệ phần mềm – ĐHCN 16 Nguyễn Văn Vỵ Phân loại phần mềm Ba cách phân loại: 1. Theo mức độ hoμn thiện 2. Theo chức năng thực hiện 3. Theo lĩnh vực ứng dụng - 1 2 3 SOFT- WARE Bộ mụn Cụng nghệ phần mềm – ĐHCN 17 Nguyễn Văn Vỵ Ch−ơng trình 1 ng−ời viết, 1 ng−ời dùng (ng−ời viết ≡ ng−ời dùng) mục đích thu thập, xử lý số liệu (dùng 1 lần) không tμi liệu, không kiểm thử triệt để Sản phẩm phần mềm nhiều ng−ời viết, nhiều ng−ời dùng độ phức tạp cao, đồng bộ, an toμn, an ninh Kinh nghiệm viết ch−ơng trình nhỏ không áp dụng cho sản phẩm lớn Phân loại theo mức hoμn thiện Bộ mụn Cụng nghệ phần mềm – ĐHCN 18 Nguyễn Văn Vỵ Tớnh phức tạp tặng nhanh (9 lần) từ : chương trỡnh -> sản phẩm-> hệ thống Phân loại theo mức hoμn thiện Ch−ơng trình Sản phẩm hệ thống x3 x3 x3x3 Ch−ơng trình hệ thống Sản phẩm Yêu tố ng−ời dùng Yêu tố ng−ời dùng Yêu tố môI tr−ờng cμI đặt Bộ mụn Cụng nghệ phần mềm – ĐHCN 19 Nguyễn Văn Vỵ Phân loại theo chức năng 1. Phần mềm hệ thống 2. Phần mềm nghiệp vụ Điều hμnh hoạt động máy tính, thiết bị & ch−ơng trình (OS) Trợ giúp các tiện ích (tổ chức tệp, nén, dọn đĩa..) Trợ giúp các hoạt động nghiệp vụ khác nhau. Có số l−ợng lớn, đa dạng Phân lμm hai loại theo cách lμm: - Bộ mụn Cụng nghệ phần mềm – ĐHCN 20 Nguyễn Văn Vỵ Phân loại theo chức năng y Sản phẩm đặt hμng – Sản xuất theo đơn đặt hμng (HTTT quản lý...) – đơn chiếc, yêu cầu đặc thù (nhận dạng) y Sản phẩm chung (software pakages) – bán rộng rãi (office) – thỏa mãn yêu cầu chung số lớn người dùng Mỗi loại có cách thức tiếp cận riêng, nhất lμ ở 1 số các b−ớc ặ chi phí, thời gian khác nhau Comercial softwware Comercial softwware Bộ mụn Cụng nghệ phần mềm – ĐHCN 21 Nguyễn Văn Vỵ Phân loại theo chức năng 3. Phần mềm công cụ (Tools, CASE) Trợ giúp cho quá trình phát triển phần mềm Các ngôn ngữ lập trình (soạn thảo, dịch, gỡ rối,..) Công cụ trợ giúp 1 , nhiều giai đoạn phát triển (phân tích, thiế kế, quản lý dự án, kiểm thử,..) Developer2000, Powerdesigner, WINER, Mcrosoft Project Management, - Bộ mụn Cụng nghệ phần mềm – ĐHCN 22 Nguyễn Văn Vỵ Phân loại theo lĩnh vực ứng dụng 1. Phần mềm hệ thống 2. Phần mềm thời gian thực Phục vụ cho các ch−ơng trình khác T−ơng tác trực tiếp với phần cứng Phục vụ nhiều ng−ời dùng Thu thập, xử lí các dữ kiện thế giới thực Đáp ứng yêu cầu chặt chẽ về thời gian - thu thập dữ liệu phân tích dữ liệu kiểm soát, điều khiển điều phối Bộ mụn Cụng nghệ phần mềm – ĐHCN 23 Nguyễn Văn Vỵ 3. Phần mềm nghiệp vụ (business software) • Xử lí thông tin nghiệp vụ, gắn với CSDL Xử lý các giao tác (mạng bán hμng...) Lĩnh vực ứng dụng rất lớn (hệ điều khiển vũ trụ) 4. Phần mềm khoa học kỹ thuật (scientific softwares) • Dùng huật toán phức tạp (vật lí, mô phỏng) Năng lực tính toán cao Phân loại theo lĩnh vực ứng dụng Bộ mụn Cụng nghệ phần mềm – ĐHCN 24 Nguyễn Văn Vỵ 5. Phần mềm nhúng (embeded software) • Chỉ đọc ra khi thiết bị khởi động, Thực hiện chức năng hạn chế (điều khiển sản phẩm) Lμ sự kết hợp giữa hệ thống vμ thời gian thực Phân loại theo lĩnh vực ứng dụng 6. Phần mềm máy tính cá nhân • Các bμi toán nghiệp vụ nhỏ, học tập, giảI trí Giao diện đồ họa phát triển Có nhu cầu rất cao Bộ mụn Cụng nghệ phần mềm – ĐHCN 25 Nguyễn Văn Vỵ 7. Phần mềm trí tuệ nhân tạo (Intelligent Softwares) • Dùng các thuật toán phi số (logic): suy luận, tìm kiếm Hệ chuyên gia, nhận dạng, trò chơi... 8. Phần mềm dựa trên nền web (Web-based Softwares) Cung cấp dịch vụ khai thác thông tin trên web. Ch−ơng trình khai thác lμ chung (browser) Phân loại theo lĩnh vực ứng dụng Bộ mụn Cụng nghệ phần mềm – ĐHCN 26 Nguyễn Văn Vỵ Tiến hóa và thách thức Phần mềm tiến hóa cùng tiến bộ của phần cứng: Về quy mô, sự phức tạp vμ tốc độ Về chức năng vμ mức hoμn thiện Công nghệ không ngừng phát triển, nhu cầu tăng ắ Khó khăn, thách thức ngμy cμng nhiều Bộ mụn Cụng nghệ phần mềm – ĐHCN 27 Nguyễn Văn Vỵ Tiến hóa phần mềm Ch−ơng trinh nhỏ, tính toán chuyên dụng Xử lí số, theo lô Ngôn ngữ: mã máy, hợp ngữ, đặc thù cho từng máy Tiêu chí đánh giá: Tính nhanh Giải đ−ợc bμi toán lớn (dùng bộ nhớ hiệu quả) Công nghệ: bóng điện tử (tính chậm, bộ nhớ nhỏ) a1. Giai đoạn 1: 1950ặ 1960 Bộ mụn Cụng nghệ phần mềm – ĐHCN 28 Nguyễn Văn Vỵ Giai đoạn 2: ặ giữa thập kỷ 70 Lμ sản phẩm: Đa nhiệm, đa ng−ời sử dụng Xử lý số, ký tự, theo lô & thời gian thực Xuất hiện l−u trữ trực tuyến (CSDL) Ngôn ngữ: có cấu trúc: PL1, Algol 60, Fortran, COBOL Tiêu chí đánh giá: ắ Tính nhanh ắ Giải đ−ợc bμi toán lớn ắ Nhiều ng−ời dùng Công nghệ: bán dẫn (tính nhanh hơn, bộ nhớ khá), CSDL Yêu cầu bảo trì (sửa lỗi, thích nghi) Bộ mụn Cụng nghệ phần mềm – ĐHCN 29 Nguyễn Văn Vỵ Giai đoạn 3: ặ1990 Phần mềm cá nhân + mạng, hệ lớn, chia sẻ đ−ợc Ra đời phần mềm nhúng Xử lý số, ký tự, âm thanh, hình ảnh; theo lô, thời gian thực, phân tán, song song Truy nhập dữ liệu phát triển, cả từ xa Ngôn ngữ: bậc cao, h−ớng đối t−ợng, lôgic Tiêu chí: • Tiện dụng • Tin cậy • Dễ bảo trì Công nghệ: mạch tích hợp lớn, vi mạch, các cấu hình mang, internet, CSDL quan hệ Bộ mụn Cụng nghệ phần mềm – ĐHCN 30 Nguyễn Văn Vỵ Giai đoạn 4: từ 1990 đến nay Phần mềm lớn, tinh vi, tin cậy, h−ớng ng−ời dùng Hệ chuyên gia, trí tuệ nhân tạo, phần mềm nhúng, webservice sử dụng rộng rãi, internet mở rộng CSDL h−ớng đối t−ợng, kho dữ liệu phát triển Ngôn ngữ: h−ớng đối t−ợng, thế hệ thứ 4, visual Tiêu chí đánh giá: • Tiện dụng, tinh vi • Tin cậy • Dễ bảo trì Công nghệ: vi mạch siêu tích hợp, internet, mạng không dây tốc độ cao, h−ớng đối t−ơng, web Bộ mụn Cụng nghệ phần mềm – ĐHCN 31 Nguyễn Văn Vỵ Tiêu chí phần mềm tốt hiện nay Phần mềm tốt có thể nhìn nhận từ hai phía: Ng−ời dùng: • Đủ chức năng nghiệp vụ • Dễ sử dụng, tinh vi (tính thông minh) • Tin cậy, an toμn Nhμ phát triển • Dễ bảo trì Bộ mụn Cụng nghệ phần mềm – ĐHCN 32 Nguyễn Văn Vỵ Khó khăn vμ thách thức b1. Thực trạng sản phẩm, phát triển 16%: DA đỳng lịch, trong ngõn sỏch, sản phẩm chất lượng 31%: DA bị ngừng 53% DA vượt ngõn sỏch, quỏ hạn, ít tớnh năng. 995, Mỹ chi 81 tỷ$ cho dự ỏn bị hủy, 59 tỷ$ thờm cho dự ỏn sai kế hoạch. [ Theo: Standish Group. The CHAOS Report, 1995 research/chaos Bộ mụn Cụng nghệ phần mềm – ĐHCN 33 Nguyễn Văn Vỵ Công nghiệp phần mềm trở thμnh ngμnh khổng lồ Phí phát triển OS 360 (1963~1966) : 200 triệu$ Chi cho phần mềm (2000) : 770 tỉ$ (tăng 12%/năm) Năng suất lập trình vẫn thấp phát triển mang tính thủ công, giá thμnh cao vấn đề chất l−ợng trở thμnh trọng tâm Thực trạng sản phẩm, phát triển Bộ mụn Cụng nghệ phần mềm – ĐHCN 34 Nguyễn Văn Vỵ Phần mềm bản chất lμ phức tạp Yêu cầu tăng về số l−ợng, quy mô, sự tiện ích ắ Nhu cầu phần mềm tăng gần 20% năm ắ Windows 2K : 100 M dòng lệnh Sự tiến bộ nhanh phần mềm vμ phần cứng: hạ tầng, môi tr−ờng thay đổi: ắ Window98, 2000, 2003,.. ắ Năng lực máy tăng gấp 2 sau 18 tháng (More) Bản chất của vấn đề Bộ mụn Cụng nghệ phần mềm – ĐHCN 35 Nguyễn Văn Vỵ Lý do chính Lý do Năng lực máy tính ngμy cμng mạnh Các hệ thống đ−ợc liên kết lại ngμy cμng lớn Thế giới thau đổi nhanh (cả nghiệp vụ, công nghệ) Ham muốn ng−ời dùng ngμy cμng nhiều ặ Yêu cầu tiến hóa phần mềm là tất yếu Bộ mụn Cụng nghệ phần mềm – ĐHCN 36 Nguyễn Văn Vỵ Thách thức đối với phần mềm Phần mềm lμm ra <<< nhu cầu Khai thác fần mềm <<< tiềm năng phần cứng Bảo trì hệ cũ lạc hậu để sử dụng cực kỳ khó khăn Công nghệ: Cần có công nghệ, công cụ hiện đại để phát triển phần mềm Quản lý: cần có ph−ơng pháp thích hợp (CMM, CMMI, RMM) Bộ mụn Cụng nghệ phần mềm – ĐHCN 37 Nguyễn Văn Vỵ Tóm tắt Phần mềm gồm: ch−ơng trình, cấu trúc dữ liêu, tμi liệu Phân loại: theo mức hoμn thiện, chức năng vμ lĩnh vực ứmg dụng Phần mềm quan trọng: tạo nên sự khác biệt của tổ chức, có vai trò lớn trong các hệ thống, nền kinh tế vμ các lĩnh vực xã hội. Phần mềm tiến hóa không ngừng: quy mô, xử lý, tiện ích Phát triển phần mềm lμ công việc phức tạp, rủi ro lμ phần tử logic, không trực quan, khó kiểm soát chất l−ợng không định hình tr−ớc, khó dự đoán hiệu năng lμm còn thủ công, phụ thuộc vμo con ng−ời chịu ảnh h−ớng lớn từ môI tr−ờng -> nhiều rủi ro Cần áp dụng các ph−ơng pháp tiên tiến (công nghệ + quản lý) Bộ mụn Cụng nghệ phần mềm – ĐHCN 38 Nguyễn Văn Vỵ Câu hỏi ôn tập 1. Định nghĩa phần mềm? 2. Tầm quan trọng của phần mềm? (mức đô: hệ thống, cá nhân, tổ chức, quốc gia, ứng dụng)? 3. Các đặc tr−ng của phần mềm vμ giảI thích? 4. Các loại phần mềm? Giải thích nội dung mỗi loại? 5. Phân biệt ch−ơng trình sản phẩm? 6. Tiến hóa phần mềm t−ơng ứng với công nghệ, nhu cầu? 7. Khó khăn phát triển phần mềm(bản chất, sự thay đổi môi tr−ờng kỹ thuật, nghiệp vụ, xã hội)? 8. Thách thức đối với phát triển phần mềm? (nhu cầu, bảo trì, thời gian, giá cả, khả năng phần cứng) Bộ mụn Cụng nghệ phần mềm – ĐHCN 39 Nguyễn Văn Vỵ Câu hỏi và thảo luận
File đính kèm:
- bai_giang_ky_nghe_phan_mem_bai_1_khai_niem_ve_phan_mem_nguye.pdf