Bài giảng Nhập môn công nghệ phần mềm (Introduction to software engineering) - Chương 1

I. Phần mềm

• 1. Định nghĩa

• 2. Đặc tính của phần mềm

• 3. Thế nào là phần mềm tốt?

• 4. Phân loại phần mềm

II. Công nghệ phần mềm

• 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

Bài giảng Nhập môn công nghệ phần mềm (Introduction to software engineering) - Chương 1 trang 1

Trang 1

Bài giảng Nhập môn công nghệ phần mềm (Introduction to software engineering) - Chương 1 trang 2

Trang 2

Bài giảng Nhập môn công nghệ phần mềm (Introduction to software engineering) - Chương 1 trang 3

Trang 3

Bài giảng Nhập môn công nghệ phần mềm (Introduction to software engineering) - Chương 1 trang 4

Trang 4

Bài giảng Nhập môn công nghệ phần mềm (Introduction to software engineering) - Chương 1 trang 5

Trang 5

Bài giảng Nhập môn công nghệ phần mềm (Introduction to software engineering) - Chương 1 trang 6

Trang 6

Bài giảng Nhập môn công nghệ phần mềm (Introduction to software engineering) - Chương 1 trang 7

Trang 7

Bài giảng Nhập môn công nghệ phần mềm (Introduction to software engineering) - Chương 1 trang 8

Trang 8

Bài giảng Nhập môn công nghệ phần mềm (Introduction to software engineering) - Chương 1 trang 9

Trang 9

pdf 9 trang xuanhieu 6780
Bạn đang xem tài liệu "Bài giảng Nhập môn công nghệ phần mềm (Introduction to software engineering) - Chương 1", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Nhập môn công nghệ phần mềm (Introduction to software engineering) - Chương 1

Bài giảng Nhập môn công nghệ phần mềm (Introduction to software engineering) - Chương 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
 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
 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
 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
 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
 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
 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
 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
 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

File đính kèm:

  • pdfbai_giang_nhap_mon_cong_nghe_phan_mem_introduction_to_softwa.pdf