Nhập môn Công nghệ phần mềm - Chương 1: Tổng quan về công nghệ phần mềm

pdf 9 trang Gia Huy 17/05/2022 3480
Bạn đang xem tài liệu "Nhập môn Công nghệ phần mềm - Chương 1: Tổng quan về công nghệ phần mềm", để 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:

  • pdfnhap_mon_cong_nghe_phan_mem_chuong_1_tong_quan_ve_cong_nghe.pdf

Nội dung text: Nhập môn Công nghệ phần mềm - Chương 1: Tổng quan về công nghệ phần mềm

  1. Nội dung I. Phần mềm NHẬP MÔN • 1. Định nghĩa • 2. Đặc tính của phần mềm CÔNG NGHỆ PHẦN MỀM • 3. Thế nào là phần mềm tốt? (INTRODUCTION TO SOFTWARE • 4. Phân loại phần mềm II. Công nghệ phần mềm ENGINEERING) • 1. Định nghĩa • 2. Công nghệ học trong CNPM • 3. Mục tiêu của công nghệ học phần mềm • 4. SE - công nghệ phân lớp • 5. SE - các pha • 6. Những khó khăn trong sản xuất phần mềm 1 2 1 2 I. Phần mềm Các đặc tính của SW và HW 1. Định nghĩa về phần mềm Hardware Software – Phần mềm (Software - SW) như một khái niệm đối • Vật “cứng” • Vật “mềm” nghĩa với phần cứng (Hardware - HW), tuy nhiên, • Kim loại • Kỹ thuật sử dụng đây là 2 khái niệm tương đối • Vật chất • Trừu tượng – Từ xưa, SW như thứ được cho không hoặc bán • Hữu hình • Vô hình kèm theo máy (HW) • Sản xuất công nghiệp bởi • Sản xuất bởi con người là máy móc là chính chính – Dần dần, giá thành SW ngày càng cao và nay cao • Định lượng là chính • Định tính là chính hơn HW • Hỏng hóc, hao mòn • Không hao mòn 3 4 3 4
  2. SW đối nghĩa với HW Định nghĩa 1 • Vai trò SW ngày càng thể hiện trội • Phần mềm là – Các lệnh (chương trình máy tính) khi được thực hiện • Máy tính là . . . chiếc hộp không có SW thì cung cấp những chức năng và kết quả mong muốn • – Các cấu trúc dữ liệu làm cho chương trình thao tác Ngày nay, SW quyết định chất lượng một hệ thông tin thích hợp thống máy tính (HTMT), là chủ đề cốt lõi, – Các tư liệu mô tả thao tác và cách sử dụng chương trung tâm của HTMT trình • IEEE: Computer programs, procedures, and • Hệ thống máy tính gồm HW và SW possibly associated documentation and data pertaining to the operation of a computer system. 5 6 5 6 Định nghĩa 2 SW theo nghĩa rộng • Trong một hệ thống máy tính, nếu trừ bỏ đi • Không chỉ SW cơ bản và SW ứng dụng các thiết bị và các loại phụ kiện thì phần còn • Phải gồm cả khả năng, kinh nghiệm thực tiễn lại chính là phần mềm (SW) và kỹ năng của kỹ sư (người chế ra phần • Nghĩa hẹp: SW là dịch vụ chương trình để tăng mềm): Kỹ năng của kỹ sư phầm mềm (Know- khả năng xử lý của phần cứng của máy tính how of Software Engineer) (như hệ điều hành - OS) • Nghĩa rộng: SW là tất cả các kỹ thuật ứng dụng • Là tất cả các kỹ thuật làm cho sử dụng phần để thực hiện những dịch vụ chức năng cho cứng máy tính đạt hiệu quả cao mục đích nào đó bằng phần cứng 7 8 7 8
  3. 2. Đặc tính chung của phần mềm 2. Đặc tính chung của phần mềm • Là hàng hóa vô hình, không nhìn thấy được • Chức năng của phần mềm thường biến hóa, • Chất lượng phần mềm: không mòn đi mà có thay đổi theo thời gian (theo nơi sử dụng) xu hướng tốt lên sau mỗi lần có lỗi • Hiệu ứng làn sóng trong thay đổi phần mềm (error/bug) được phát hiện và sửa • Phần mềm vốn chứa ý tưởng và sáng tạo của • Phần mềm vốn chứa lỗi tiềm tàng, theo quy tác giả/nhóm làm ra nó mô càng lớn thì khả năng chứa lỗi càng cao • Cần khả năng “tư duy nhị phân” trong xây • Lỗi phần mềm dễ được phát hiện bởi người dựng, phát triển phần mềm ngoài • Có thể sao chép rất đơn giản 9 10 9 10 3. Thế nào là phần mềm tốt ? 3.1. Các chỉ tiêu cơ bản • Phản ánh đúng yêu cầu người dùng (tính hiệu Yếu Đặc quả - effectiveness) Hiệu suất xử lý tố trưng khái gần • Chứa ít lỗi tiềm tàng niệm đây phần Tính dễ hiểu • Giá thành không vượt quá giá ước lượng ban mềm tốt Các chỉ tiêu cơ bản đầu • Dễ vận hành, sử dụng • Tính an toàn và độ tin cậy cao 11 12 11 12
  4. 3.2. Hiệu suất xử lý cao 3.3. Dễ hiểu • Hiệu suất thời gian tốt (efficiency): • Kiến trúc và cấu trúc thiết kế dễ hiểu – Độ phức tạp tính toán thấp (Time complexity) • Dễ kiểm tra, kiểm thử, kiểm chứng – Thời gian quay vòng ngắn (Turn Around Time: TAT) • Dễ bảo trì – Thời gian hồi đáp nhanh (Response time) • Có tài liệu (mô tả yêu cầu, điều kiện kiểm thử, • Sử dụng tài nguyên hữu hiệu: CPU, RAM, HDD, vận hành, bảo trì, FAQ, . . .) với chất lượng cao Internet resources, . . . Tính dễ hiểu: chỉ tiêu ngày càng quan trọng 13 14 13 14 4. Phân loại phần mềm 4. Phân loại phần mềm Phần mềm • Phần mềm hệ thống (System SW) • Phần mềm thời gian thực (Real-time SW) Phần mềm hệ Phần mềm ứng thống dụng • Phần mềm nghiệp vụ (Business SW) Hệ điều hành Phần mềm mục • Phần mềm tính toán KH&KT (Engineering & Science đích chung Phần mềm xử lý văn SW) Phần mềm bản nhúng Phần mềm mục • Phần mềm nhúng (Embedded SW) đích đặc biệt Chương trình tiện ích Phần mềm tính • Phần mềm máy cá nhân (Personal computer SW) toán KHKT Chương trình Phần mềm trên • thư viện Phần mềm trên Web (Web-based SW) web • Phần mềm trí tuệ nhân tạo (Artificial Intelligent SW) Chương trình Phần mềm nghiệp dịch vụ Phần mềm đặt hàng 15 16 15 16
  5. Câu hỏi: Phân biệt các khái niệm II. Công nghệ phần mềm (Software sau Engineering) • Hệ thống, phần mềm, ứng dụng 1. Định nghĩa – Bauer [1969]: CNPM là việc thiết lập và sử dụng các • Lập trình, phát triển phần mềm nguyên tắc công nghệ học đúng đắn dùng để thu • Lập trình viên và kỹ sư phần mềm đượ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]: CNPM 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]: CNPM 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 vừa lớn vừa phức tạp bởi một hay một số nhóm kỹ sư 17 18 17 18 1. Định nghĩa 1. Định nghĩa • IEEE [1993]: CNPM là • Sommerville [1995]: CNPM là lĩnh vực liên quan – (1) việc áp dụng phương pháp tiếp cận có hệ đến lý thuyết, phương pháp và công cụ dùng cho thống, bài bản và được lượng hóa trong phát phát triển phần mềm triển, vận hành và bảo trì phần mềm; • K. Kawamura [1995]: CNPM là lĩnh vực học vấn về – (2) nghiên cứu các phương pháp tiếp cận được các kỹ thuật, phương pháp luận công nghệ học (lý dùng trong (1) luận và kỹ thuật được hiện thực hóa trên những • Pressman [1995]: CNPM là bộ môn tích hợp cả nguyên tắc, nguyên lý nào đó) trong toàn bộ quy quy trình, các phương pháp, các công cụ để trình phát triển phần mềm nhằm nâng cao cả phát triển phần mềm máy tính chất và lượng của sản xuất phần mềm 19 20 19 20
  6. 1. Định nghĩa 2. Công nghệ học trong CNPM • Công nghệ phần mềm là lĩnh vực khoa học về các • Như các ngành công nghệ học khác, CNPM cũng phương pháp luận, kỹ thuật và công cụ tích hợp lấy các phương pháp khoa học làm cơ sở trong quy trình sản xuất và vận hành phần mềm • Các kỹ thuật về thiết kế, chế tạo, kiểm thử và bảo nhằm tạo ra phần mềm với những chất lượng trì phần mềm đã được hệ thống hóa thành mong muốn phương pháp luận và hình thành nên CNPM [Software Engineering is a scientific field to deal • Toàn bộ quy trình quản lý phát triển phần mềm with methodologies, techniques and tools gắn với khái niệm vòng đời phần mềm, được mô integrated in software production-maintenance hình hóa với những kỹ thuật và phương pháp process to obtain software with desired qualities] luận trở thành các chủ đề khác nhau trong CNPM 21 22 21 22 2. Công nghệ học trong CNPM Các mục tiêu chính • Trong vòng đời phần mềm không chỉ có chế tạo mà bao gồm cả thiết kế, vận hành và bảo dưỡng – Tăng năng suất và chất lượng phần mềm (tính quan trọng của thiết kế và bảo dưỡng) – Quản lý lập lịch hiệu quả – Giảm chi phí phát triển phần mềm • Trong khái niệm phần mềm, không chỉ có chương – Đáp ứng yêu cầu và nhu cầu của khách hàng trình mà cả tư liệu về phần mềm – Tăng cường quy trình kỹ nghệ phần mềm • Cách tiếp cận công nghệ (khái niệm công nghiệp – Tăng cường thực hành kỹ thuật phần mềm hóa) thể hiện ở chỗ nhằm nâng cao năng suất – Hỗ trợ hiệu quả và có hệ thống các hoạt động của kĩ sư (tính năng suất) và độ tin cậy của phần mềm, phát triển đồng thời giảm chi phí giá thành 23 24/46 23 24
  7. What is SE? What is SE? • Quy trình - Process – Gắn kết các lớp với nhau – Nền tảng cho kỹ thuật phần mềm – Đảm bảo thời gian phát triển – Tạo cơ sở cho việc kiểm soát, quản lý dự án phần mềm – Thiết lập bối cảnh mà các phương pháp kỹ thuật được sử • SE là công nghệ phân lớp dụng – Quy trình (Process) – Tạo sản phẩm – Các phương pháp (Methods) – Thiết lập các cột mốc – Các công cụ (Tools) – Đảm bảo chất lượng – Quản lý thay đổi 25 26/46 25 26 What is SE? What is SE? • Các phương pháp - Methods • Công cụ - Tools – Tự động hoặc bán tự động hỗ trợ cho quy trình và các phương pháp – Cung cấp kỹ thuật cho xây dựng phần mềm – Các tác vụ: giao tiếp, phân tích yêu cầu, mô hình thiết kế, xây dựng chương trình, kiểm thử và hỗ trợ. • Hướng đến chất lượng - A quality focus – Dựa trên các nguyên tắc cơ bản – Nền tảng • Để chi phối từng lĩnh vực công nghệ – Bất kỳ cách tiếp cận kỹ thuật nào đều phải dựa trên cam • Bao gồm các hoạt động mô hình hóa kết về chất lượng – Thúc đẩy liên tục việc cải tiến quy trình 27/46 28/46 27 28
  8. SE các pha - phases Definition phase • Được phân thành ba giai đoạn chung • Xác định cái gì “WHAT”. • Thông tin nào được xử lý, • Chức năng và hiệu quả mong muốn, – Pha định nghĩa (Definition phase) • Hành vi mong đợi của hệ thống, • Các giao điện cần thiết lập, • – Pha phát triển (Development phase) Những ràng buộc về thiết kế, • Và những tiêu chí cần thẩm định. – Pha hỗ trợ (Support phase) • Các yêu cầu chính của hệ thống và phần mềm được xác định. 29 30 29 30 Development phase Support phase • Xác định như thế nào “HOW”. • Liên kết với các thay đổi “CHANGE” • Cách thức dữ liệu được cấu trúc, • Sửa lỗi, • Chức năng được triển khai trong kiến trúc phần mềm, • Thích nghi với yêu cầu của môi trường, • Các chi tiết thủ tục được cài đặt, • Và các thay đổi bởi yêu cầu của khách hàng. • Cách xác định các đặc điểm của giao diện, • 4 loại thay đổi: Sửa chữa, Thích ứng, Nâng cao, và • Cách chuyển từ thiết kế sang lập trình, Phòng ngừa (Correction, Adaptation, Enhancement, • Và cách thức kiểm thử. and Prevention). 31 32 31 32
  9. 6. Những khó khăn trong sản xuất 6. Những khó khăn trong sản xuất phần mềm phần mềm • Không có phương pháp mô tả rõ ràng định nghĩa yêu cầu của người dùng • Không kiểm thử tính đúng đắn của phần mềm ở từng giai đoạn mà chỉ (khách hàng) kiểm ở giai đoạn cuối và phát hiện ra lỗi à Sau khi bàn giao sản phẩm dễ phát sinh những trục trặc (troubles) à thường bàn giao sản phẩm không đúng hạn • Với những phần mềm quy mô lớn, tư liệu đặc tả đã cố định thời gian dài • Coi trọng việc lập trình hơn khâu thiết kế à Khó đáp ứng nhu cầu thay đổi của người dùng một cách kịp thời à giảm chất lượng phần mềm trong thời gian đó • Coi thường việc tái sử dụng phần mềm (software reuse) • Phương pháp luận thiết kế không nhất quán à giảm năng suất lao động à Thiết kế theo cách riêng (của công ty, nhóm), thì sẽ dẫn đến suy giảm • Phần lớn các thao tác trong quy trình phát triển phần mềm do con người chất lượng phần mềm (do phụ thuộc quá nhiều vào con người) thực hiện • Không có chuẩn về việc tạo tư liệu quy trình sản xuất phần mềm à giảm năng suất lao động à Đặc tả không rõ ràng sẽ làm giảm chất lượng phần mềm • Không chứng minh được tính đúng đắn của phần mềm à giảm độ tin cậy của phần mềm 33 34 33 34 6. Những khó khăn trong sản xuất phần mềm • Chuẩn về một phần mềm tốt không thể đo được một cách định lượng à Không thể đánh giá được một hệ thống đúng đắn hay không • Đầu tư nhân lực lớn vào bảo trì à giảm hiệu suất lao động của nhân viên • Công việc bảo trì kéo dài à giảm chất lượng của tư liệu và ảnh hưởng xấu đến những việc khác • Quản lý dự án lỏng lẻo à quản lý lịch trình sản xuất phần mềm không rõ ràng • Không có tiêu chuẩn để ước lượng nhân lực và dự toán à làm kéo dài thời hạn và vượt kinh phí của dự án 35 35