Giáo trình Kỹ thuật phần mềm - Bài 1: Khái niệm về phần mềm - Nguyễn Văn Vy

pdf 39 trang huongle 2840
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Kỹ thuật phần mềm - Bài 1: Khái niệm về phần mềm - Nguyễn Văn Vy", để 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:

  • pdfgiao_trinh_ky_thuat_phan_mem_bai_1_nguyen_van_vy_nguyen_van.pdf

Nội dung text: Giáo trình Kỹ thuật phần mềm - Bài 1: Khái niệm về phần mềm - Nguyễn Văn Vy

  1. Kỹ nghệ phần mềm Software Engeneering Nguyễn Văn Vỵ Bộ môn Công nghệ phần mềm- Khoa CNTT- ĐHCN Email: vynv@coltech.vnu.vn
  2. Bài 1: Khỏi niệm về phần mềm Nguyễn Văn Vỵ 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 2
  3. TÀI LiỆU THAM KHẢO Nguyễn Văn Vỵ 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 3
  4. Phần mềm và tầm quan trọng Nguyễn Văn Vỵ a. Khái niệm về phần mềm Phần mềm gồm 3 phần: Dowhle 1. Ch−ơng trình máy tính Eddo file.exe If than  Mã nguồn End if wwscklrn Mãmáy file.com File.text 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) Bộ mụn Cụng nghệ phần mềm – ĐHCN 4
  5. Khái niệm về phần mềm Nguyễn Văn Vỵ User’s Phần mềm gồm 3 phần: guid 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) technical reference specification, design, test, Bộ mụn Cụng nghệ phần mềm – ĐHCN 5
  6. Khái niệm về phần mềm Nguyễn Văn Vỵ 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 6
  7. Vai trò của phần mềm Nguyễn Văn Vỵ ƒ 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 phần mềm Toμn cầu Làm việc, giải trí Sản xuất, dịch vụ điều hành, Hội nhập Hồn siêu, phách lạc phát triển ặ bất tỉnh Bộ mụn Cụng nghệ phần mềm – ĐHCN 7
  8. Vai trò của phần mềm Nguyễn Văn Vỵ „ 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 8
  9. Vai trò của phần mềm Nguyễn Văn Vỵ „ 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 u ữ liệ n, d >< ng ti Thô Trời ơi ! Tuyệt vời ! Bộ mụn Cụng nghệ phần mềm – ĐHCN 9
  10. Vai trò của phần mềm Nguyễn Văn Vỵ „ 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 Hệ thống Chi phầnmềm 40 Chi phầncứng siêu thi -50 triệu đồng >> 10 triệu đồ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, Game online Bộ mụn Cụng nghệ phần mềm – ĐHCN 10
  11. Đặc tr−ng của phần mềm Nguyễn Văn Vỵ „ 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 Lỗi đ−a vμo khi sửa đổi thực tế Tỷ lệ hỏng đ−ờng mức lí t−ởng Thời gian Đ−ờng cong thoái hóa của phần mềm Bộ mụn Cụng nghệ phần mềm – ĐHCN 11
  12. Đặc tr−ng của phần mềm Nguyễn Văn Vỵ „ 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 Phân tích đặt Lập trình hμng 1 Khảo sát đặt fần mềm1 hμng 2 Thiết kế Kiểm thử fần mềm2 Bộ mụn Cụng nghệ phần mềm – ĐHCN 12
  13. Đặc tr−ng của phần mềm Nguyễn Văn Vỵ „ 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 Use case  Mối liên kết lμ lôgic (không thấy) Tr−ờng hợp  Để hiểu phảI t− duy trừu t−ợng sử dụ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ể Bộ mụn Cụng nghệ phần mềm – ĐHCN 13
  14. Đặc tr−ng của phần mềm Nguyễn Văn Vỵ „ 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 14
  15. Đặc tr−ng của phần mềm 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) ™ Trao đổi thông tin lớn (10000 email/ngμy) ™ Khó kiểm soát vμ đồng bộ Vấn đề ™ 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 Bộ mụn Cụng nghệ phần mềm – ĐHCN 15
  16. Phân loại phần mềm Nguyễn Văn Vỵ Ba cách phân loại: 1. Theo mức độ hoμn thiện 1 2. Theo chức năng thực hiện 3. Theo lĩnh vực ứng dụng SOFT- WARE 23 Bộ mụn Cụng nghệ phần mềm – ĐHCN - 16
  17. Phân loại theo mức hoμn thiện 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 Bộ mụn Cụng nghệ phần mềm – ĐHCN 17
  18. Phân loại theo mức hoμn thiện Nguyễn Văn Vỵ Ch−ơng trình x3 Ch−ơng trình hệ thống Yêu tố Yêu tố Yêu tố môI ng−ời ng−ời x3 tr−ờng x3 dùng dùng cμI đặt Sản phẩm Sản phẩm x3 hệ thống Tớnh phức tạp tặng nhanh (9 lần) từ : chương trỡnh -> sản phẩm-> hệ thống Bộ mụn Cụng nghệ phần mềm – ĐHCN 18
  19. Phân loại theo chức năng Nguyễn Văn Vỵ 1. Phần mềm hệ thống ƒ Đ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 ) 2. Phần mềm nghiệp vụ ƒ 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 - 19
  20. Phân loại theo chức năng Nguyễn Văn Vỵ 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) Comercial – thỏa mãn yêu cầu chung số lớn người dùng Comercial softwwaresoftwware ™ 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 Bộ mụn Cụng nghệ phần mềm – ĐHCN 20
  21. Phân loại theo chức năng Nguyễn Văn Vỵ 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 - 21
  22. Phân loại theo lĩnh vực ứng dụng Nguyễn Văn Vỵ 1. Phần mềm hệ thống ƒ 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 2. Phần mềm thời gian thực ƒ 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  kiểm soát, điều khiển  phân tích dữ liệu  điều phối Bộ mụn Cụng nghệ phần mềm – ĐHCN - 22
  23. Phân loại theo lĩnh vực ứng dụng 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 Bộ mụn Cụng nghệ phần mềm – ĐHCN 23
  24. Phân loại theo lĩnh vực ứng dụng 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 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 24
  25. Phân loại theo lĩnh vực ứng dụng 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) Bộ mụn Cụng nghệ phần mềm – ĐHCN 25
  26. Tiến hóa và thách thức Nguyễn Văn Vỵ ‰ 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 26
  27. Tiến hóa phần mềm Nguyễn Văn Vỵ a1. Giai đoạn 1: 1950ặ 1960 ƒ 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ỏ) Bộ mụn Cụng nghệ phần mềm – ĐHCN 27
  28. Giai đoạn 2: ặ giữa thập kỷ 70 Nguyễn Văn Vỵ ƒ 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 28
  29. Giai đoạn 3: ặ1990 Nguyễn Văn Vỵ ƒ 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í: ™ Công nghệ: mạch tích hợp lớn, • Tiện dụng vi mạch, các cấu hình mang, • Tin cậy internet, CSDL quan hệ • Dễ bảo trì Bộ mụn Cụng nghệ phần mềm – ĐHCN 29
  30. Giai đoạn 4: từ 1990 đến nay Nguyễn Văn Vỵ ƒ 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á: ™ Công nghệ: vi mạch siêu tích • Tiện dụng, tinh vi hợp, internet, mạng không dây tốc • Tin cậy độ cao, h−ớng đối t−ơng, web • Dễ bảo trì Bộ mụn Cụng nghệ phần mềm – ĐHCN 30
  31. Tiêu chí phần mềm tốt hiện nay Nguyễn Văn Vỵ 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 31
  32. Khó khăn vμ thách thức Nguyễn Văn Vỵ 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 32
  33. Thực trạng sản phẩm, phát triển 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 Bộ mụn Cụng nghệ phần mềm – ĐHCN 33
  34. Bản chất của vấn đề 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ộ mụn Cụng nghệ phần mềm – ĐHCN 34
  35. Lý do chính Nguyễn Văn Vỵ 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 35
  36. Thách thức đối với phần mềm Nguyễn Văn Vỵ „ 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 36
  37. Tóm tắt Nguyễn Văn Vỵ „ 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 37
  38. Câu hỏi ôn tập Nguyễn Văn Vỵ 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 38
  39. Câu hỏi và thảo luận Nguyễn Văn Vỵ Bộ mụn Cụng nghệ phần mềm – ĐHCN 39