Bài giảng 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

Nội dung  
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  
NHẬP MÔN  
CÔNG NGHỆ PHẦN MỀM  
(INTRODUCTION TO SOFTWARE  
ENGINEERING)  
• 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  
• Vật “cứng”  
• Kim loại  
• Vật chất  
• Hữu hình  
• Vật “mềm”  
• Kỹ thuật sử dụng  
• Trừu tượng  
• Vô hình  
– Phần mềm (Software - SW) như một khái niệm đối  
nghĩa với phần cứng (Hardware - HW), tuy nhiên,  
đây là 2 khái niệm tương đối  
– Từ xưa, SW như thứ được cho không hoặc bán  
kèm theo máy (HW)  
– Dần dần, giá thành SW ngày càng cao và nay cao  
• 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  
• Định lượng là chính  
• Hỏng hóc, hao mòn  
chính  
• Định tính là chính  
• Không hao mòn  
hơn HW  
3
4
3
4
SW đối nghĩa với HW  
Định nghĩa 1  
• Phần mềm là  
• Vai trò SW ngày càng thể hiện trội  
– 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 máy tính (HTMT), là chủ đề cốt lõi,  
trung tâm của HTMT  
thông tin thích hợp  
– Các tư liệu mô tả thao tác và cách sử dụng chương  
trình  
• IEEE: Computer programs, procedures, and  
possibly associated documentation and data  
pertaining to the operation of a computer  
system.  
• Hệ thống máy tính gồm HW và SW  
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  
các thiết bị và các loại phụ kiện thì phần còn  
lại chính là phần mềm (SW)  
• Nghĩa hẹp: SW là dịch vụ chương trình để tăng  
khả năng xử lý của phần cứng của máy tính  
(như hệ điều hành - OS)  
• Nghĩa rộng: SW là tất cả các kỹ thuật ứng dụng  
để thực hiện những dịch vụ chức năng cho  
mục đích nào đó bằng phần cứng  
• Không chỉ SW cơ bản và SW ứng dụng  
• Phải gồm cả khả năng, kinh nghiệm thực tiễn  
và kỹ năng của kỹ sư (người chế ra phần  
mềm): Kỹ năng của kỹ sư phầm mềm (Know-  
how of Software Engineer)  
• Là tất cả các kỹ thuật làm cho sử dụng phần  
cứng máy tính đạt hiệu quả cao  
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,  
thay đổi theo thời gian (theo nơi sử dụng)  
• Chất lượng phần mềm: không mòn đi mà có  
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  
Đặc  
trưng  
gần  
quả - effectiveness)  
Yếu  
tố  
Hiệu suất xử lý  
khái  
niệm  
phần  
mềm  
tốt  
• Chứa ít lỗi tiềm tàng  
đây  
Tính dễ hiểu  
• Giá thành không vượt quá giá ước lượng ban  
đầu  
Các chỉ tiêu cơ bản  
• 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  
• Dễ kiểm tra, kiểm thử, kiểm chứng  
• Dễ bảo trì  
– Độ phức tạp tính toán thấp (Time complexity)  
– Thời gian quay vòng ngắn (Turn Around Time: TAT)  
– 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 nghiệp vụ (Business SW)  
Phần mềm hệ  
thống  
Phần mềm ứng  
dụng  
Phần mềm mục  
đích chung  
Hệ điều hành  
• Phần mềm tính toán KH&KT (Engineering & Science  
Phần mềm xử lý văn  
bản  
Phần mềm  
nhúng  
SW)  
Phần mềm mục  
đích đặc biệt  
• Phần mềm nhúng (Embedded SW)  
Chương trình  
tiện ích  
Phần mềm tính  
toán KHKT  
• Phần mềm máy cá nhân (Personal computer SW)  
• Phần mềm trên Web (Web-based SW)  
Chương trình  
thư viện  
Phần mềm trên  
web  
Phần mềm nghiệp  
vụ  
Chương trình  
dịch  
• Phần mềm trí tuệ nhân tạo (Artificial Intelligent SW)  
Phần mềm đặt hàng  
15  
16  
15  
16  
II. Công nghệ phần mềm (Software  
Engineering)  
Câu hỏi: Phân biệt các khái niệm  
sau  
1. Định nghĩa  
• Hệ thống, phần mềm, ứng dụng  
• Lập trình, phát triển phần mềm  
• Lập trình viên và kỹ sư phần mềm  
– Bauer [1969]: CNPM 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]: 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  
• Sommerville [1995]: CNPM 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 [1995]: CNPM là 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  
• IEEE [1993]: CNPM là  
– (1) việc áp dụng phương pháp tiếp cận có hệ  
thống, bài bản và được lượng hóa trong phát  
triển, vận hành và bảo trì phần mềm;  
– (2) nghiên cứu các phương pháp tiếp cận được  
dùng trong (1)  
• Pressman [1995]: CNPM 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  
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  
phương pháp luận, kỹ thuật và công cụ tích hợp  
trong quy trình sản xuất và vận hành phần mềm  
nhằm tạo ra phần mềm với những chất lượng  
mong muốn  
• Như các ngành công nghệ học khác, CNPM cũng  
lấy các phương pháp khoa học làm cơ sở  
• Các kỹ thuật về thiết kế, chế tạo, kiểm thử và bảo  
trì phần mềm đã được hệ thống hóa thành  
phương pháp luận và hình thành nên CNPM  
[Software Engineering is a scientific field to deal  
with methodologies, techniques and tools  
integrated in software production-maintenance  
process to obtain software with desired qualities]  
• Toàn bộ quy trình quản lý phát triển phần mềm  
gắn với khái niệm vòng đời phần mềm, được mô  
hình hóa với những kỹ thuật và phương pháp  
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ính quan trọng của thiết kế và bảo dưỡng)  
– Tăng năng suất và chất lượng phần mềm  
– Quản lý lập lịch hiệu quả  
– Giảm chi phí phát triển phần mềm  
– Đáp ứng yêu cầu và nhu cầu của khách hàng  
– Tăng cường quy trình kỹ nghệ phần mềm  
– Tăng cường thực hành kỹ thuật phần mềm  
• Trong khái niệm phần mềm, không chỉ có chương  
trình mà cả tư liệu về phần mềm  
• Cách tiếp cận công nghệ (khái niệm công nghiệp  
hóa) thể hiện ở chỗ nhằm nâng cao năng suất  
(tính năng suất) và độ tin cậy của phần mềm,  
đồng thời giảm chi phí giá thành  
– Hỗ trợ hiệu quả và có hệ thống các hoạt động của kĩ sư  
phát triển  
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ử  
dụng  
• SE là công nghệ phân lớp  
– Tạo sản phẩm  
– Quy trình (Process)  
– Thiết lập các cột mốc  
– Đảm bảo chất lượng  
– Quản lý thay đổi  
– Các phương pháp (Methods)  
– Các công cụ (Tools)  
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  
• Để chi phối từng lĩnh vực công nghệ  
• Bao gồm các hoạt động mô hình hóa  
– Nền tảng  
– Bất kỳ cách tiếp cận kỹ thuật nào đều phải dựa trên cam  
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  
• Xác định cái gì “WHAT”.  
• Được phân thành ba giai đoạn chung  
• Thông tin nào được xử lý,  
• Chức năng và hiệu quả mong muốn,  
• Hành vi mong đợi của hệ thống,  
• Các giao điện cần thiết lập,  
• Những ràng buộc về thiết kế,  
• Và những tiêu chí cần thẩm định.  
– Pha định nghĩa (Definition phase)  
– Pha phát triển (Development phase)  
– 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”.  
• Cách thức dữ liệu được cấu trúc,  
• Liên kết với các thay đổi “CHANGE”  
• Sửa lỗi,  
• Chức năng được triển khai trong kiến trúc phần mềm,  
• Các chi tiết thủ tục được cài đặt,  
• Thích nghi với yêu cầu của môi trường,  
• 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,  
• Cách chuyển từ thiết kế sang lập trình,  
• Và cách thức kiểm thử.  
• 4 loại thay đổi: Sửa chữa, Thích ứng, Nâng cao, và  
Phòng ngừa (Correction, Adaptation, Enhancement,  
and Prevention).  
31  
32  
31  
32  
6. Những khó khăn trong sản xuất  
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ách hàng)  
6. Những khó khăn trong sản xuất  
phần mềm  
Không kiểm thử tính đúng đắn của phần mềm ở từng giai đoạn mà chỉ  
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)  
Với những phần mềm quy mô lớn, tư liệu đặc tả đã cố định thời gian dài  
à
thường bàn giao sản phẩm không đúng hạn  
Coi trọng việc lập trình hơn khâu thiết kế  
giảm chất lượng phần mềm  
Coi thường việc tái sử dụng phần mềm (software reuse)  
giảm năng suất lao động  
•
•
•
•
•
•
à
Khó đáp ứng nhu cầu thay đổi của người dùng một cách kịp thời  
à
trong thời gian đó  
Phương pháp luận thiết kế không nhất quán  
à
à
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  
thực hiện  
chất lượng phần mềm (do phụ thuộc quá nhiều vào con người)  
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  
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  
à
Đặc tả không rõ ràng sẽ làm giảm chất lượng 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  
pdf 9 trang yennguyen 19840 Free
Bạn đang xem tài liệu "Bài giảng 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 hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_nhap_mon_cong_nghe_phan_mem_chuong_1_tong_quan_ve.pdf