cnpmChương 1 cnpm vũ thị thúy hà (1) Chương 1 cnpm vũ thị thúy hà (1) Chương 1 cnpm vũ thị thúy hà (1) Chương 1 cnpm vũ thị thúy hà (1) Chương 1 cnpm vũ thị thúy hà (1) Chương 1 cnpm vũ thị thúy hà (1) Chương 1 cnpm vũ thị thúy hà (1) Chương 1 cnpm vũ thị thúy hà (1) Chương 1 cnpm vũ thị thúy hà (1) Chương 1 cnpm vũ thị thúy hà (1) Chương 1 cnpm vũ thị thúy hà (1) Chương 1 cnpm vũ thị thúy hà (1) Chương 1 cnpm vũ thị thúy hà (1) Chương 1 cnpm vũ thị thúy hà (1) Chương 1 cnpm vũ thị thúy hà (1) Chương 1 cnpm vũ thị thúy hà (1)
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
BÀI GIẢNG MÔN
Công nghệ phần mềm
Mã môn học: TEL1393 (02TC)
Giảng viên: TS Vũ Thị Thúy Hà
Bộ môn: Kỹ thuật dữ liệu - Khoa ĐTVT
Email: havt@ptit.edu.vn
Trang 2Công nghệ phần mềm
Trang 3Mục tiêu môn học CNPM
3
Kiến thức: Cung cấp cho sinh viên các khái niệm cơ bản và
phương pháp kỹ thuật trong quá trình phát triển phần mềm theo các giai đoạn dựa trên vòng đời phát triển phần mềm Ngoài ra học phần còn cung cấp cho sinh viên nắm được các vấn đề liên quan trong quá trình phát triển phần mềm như công nghệ mới, sử dụng tài nguyên, nguồn nhân lực,
Kỹ năng: Trang bị cho sinh viên kỹ năng áp dụng các phương
pháp kỹ thuật để phát triển phần mềm thực tế Giúp sinh viên có thể sử dụng các công cụ để biểu diễn, vẽ sơ đồ các pha phát triển phần mềm, hiểu được các kỹ thuật phát triển phần mềm, phối hợp giữa các pha và công việc trong tiến trình phát triển phần mềm thống nhất.
Trang 4CHƯƠNG 1 GIỚI THIỆU CÔNG NGHỆ PHẦN MỀM
Trang 5Tài liệu môn học
Học liệu bắt buộc:
Công nghệ phần mềm Bài giảng của bộ môn Kỹ thuật Dữ liệu Học viện Công nghệ Bưu chính Viễn thông.
Slide bài giảng
Học liệu tham khảo:
- Nhập môn công nghệ phần mềm Bài giảng Học viện CNBCVT.
- Phân tích và thiết kế hệ thống thông tin Bài giảng Học viện CNBCVT.
- R S Pressman, B R Maxim, Software Engineerings Mc-Graw Hill
Education, 8th Edition, 2015.
- Ian Sommerville, Software Engineering Pearson, 10th Edition, 2016.
Trang 6Hình thức kiểm tra Tỷ lệ đánh
giá
Đặc điểm đánh
giá
- Tham gia học tập trên lớp (đi học đầy đủ, tích cực thảo luận) 10% Cá nhân
Đánh giá kết quả học tập
Trang 7 Điểm bài tập lớn theo nhóm 20%
Thời gian môn học 2TC/30 tiết/08 tiết bài
tập
Trang 8CHƯƠNG 1 GIỚI THIỆU CÔNG NGHỆ PHẦN MỀM
Khái niệm phần mềm
Định nghĩa phần mềm Ứng dụng phần mềm Công nghệ phần mềm
Nguyên lí phần mềm Các tiến trình phần mềm Thực hành công nghệ phần mềm Phát triển phần mềm
Khái niệm phần mềm hướng đối tượng
Khái niệm lớp và đối tượng Thuộc tính, hành động, phương pháp và dịch vụ Khái niệm phân tích và thiết kế hướng đối tượng
Trang 9Định nghĩa chung về phần mềm
• 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 hơn HW
2
Trang 10Các đặc tính của SW và HW
Trang 12Định nghĩa 2
• 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
5
Trang 13SW theo nghĩa rộ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): 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
6
Trang 14Phần mềm là gì ?
7
Nhóm các
Kỹ thuật, Phương pháp
• Các trình tự thiết kế và phát triển được chuẩn hóa
• Các phương pháp đặc tả yêu cầu, thiết kế hệ
thống, thiết kế chương trình, kiểm thử, toàn bộ quy trình quản lý phát triển phần mềm
Trang 15Phần mềm là gì ?
Nhóm các
Kỹ thuật, Phương pháp
• Phần mềm cơ bản: với chức năng cung cấp môi trường thao tác dễ dàng cho người sử dụng nhằm tăng hiệu năng xử lý của phần cứng (ví dụ như OS
là chương trình hệ thống)
• Phần mềm ứng dụng:
dùng để xử lý nghiệp vụ thích hợp nào đó (quản lý,
kế toán, ), phần mềm đóng gói, phần mềm của người dùng,
8
Trang 16Phần mềm là gì ?
9
Nhóm các
Kỹ thuật, Phương pháp
• Để viết ra phần mềm với độ tin cậy cao cần tạo ra các tư liệu chất lượng cao: đặc tả yêu cầu, mô tả thiết kế từng loại, điều kiện kiểm thử, thủ tục vận hành, hướng dẫn thao tác
Trang 17Phần mềm là gì ?
10
Nhóm các
Kỹ thuật, Phương pháp
và kỹ năng (know-how) của người/nhóm tác giả
• Khả năng hệ thống hóa trừu tượng
Trang 18dụng, …
Trang 19Vai trò của PM
19
• Hầu hết các hoạt động trong tất cả các lĩnh vực của cácQuốc gia (nhất là các nước phát triển) đều phụ thuộcvào PM
• PM tạo ra sự khác biệt trong các tổ chức
– Phong cách làm việc, năng xuất lao động, thương hiệu,
Trang 20Một số ví dụ về vai trò củaPM
20
• Amazon.com
– Thương mại điện tử
– Chỉ sử dụng 10% nhân lực so với các doanh nghiệp bán lẻ khác
– Cơchế quản lý khách hàng và tiếp thị hiệuquả
• Walmart
– Hệ thống bán lẻ hàng đầu của Mỹ
– Hệ thống quản lý kho siêu hiệu quả
• …
Trang 21Các đặc trưng của PM
• Không mòn cũ nhưng thoái hóa theo thời gian
– Không bị hỏng như phần cứng/các thiết bịvật lý
– Môi trường sử dụng, nhu cầu thay đổi, lỗi phát sinh
do nâng cấp, …
21
Trang 22Các đặc trưng của PM
Trang 23• 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 yêu cầu riêng
• Phức tạp, khó hiểu, vô hình
• Luôn luôn thay đổi (thay đổi là bản chất củaPM)
– Nghiệp vụ thay đổi, nhu cầu con người thay đổi
– Lỗi phát sinh (do đảm bảo chất lượng chưa tốt, …)
– Môi trường vận hành thay đổi (phần cứng, hệ điều hành)
• Được phát triển theo nhóm
– Yêu cầu kỹ năng khác nhau
– Nhu cầu bàn giao nhanh
Trang 24Phân loại PM (theo chức năng)
• Phần mềm công cụ (CASE tools)
– Hỗ trợ tự động hóa một/một số pha/ bướctrong quá
trình phát triển PM
Trang 25Phân loại PM (theo chức năng)
Trang 26Phân loại khác (theo lĩnh vực ứng dụng)
• PM trí tuệ nhân tạo
• PM dựa trên nền Web, trên thiết bị di động,…
Trang 27PM ỨNG DỤNG VÀ PM HỆ THỐNG
Trang 28PM ỨNG DỤNG VÀ PM HỆ THỐNG
Trang 29PM ỨNG DỤNG VÀ PM HỆ THỐNG
Trang 30Phân loại PM
Trang 31• Phần mềm máy cá nhân (Personal computer SW)
• Phần mềm trên Web (Web-based SW)
• Phần mềm trí tuệ nhân tạo (AI SW)
33
Trang 32Đặc trưng gần đây
Trang 33Các chỉ tiêu cơ bản
• Phản ánh đúng yêu cầu người dùng (tính hiệu quả
- effectiveness)
• Chứa ít lỗi tiềm tàng
• Giá thành không vượt quá giá ước lượng ban đầu
• Dễ vận hành, sử dụng
• Tính an toàn và độ tin cậy cao
30
Trang 34Dễ hiểu
• 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ì
• Có tài liệu (mô tả yêu cầu, điều kiện kiểm thử,
vận hành, bảo trì, FAQ, ) với chất lượng cao
Tính dễ hiểu: chỉ tiêu ngày càng quan trọng
32
Trang 35Các tiêu chí về tính hiệu quả
35
• Đáp ứng thời gian
– Khả năng đưa ra kết quả, một thời gian xử lý và một
tốc độ thông lượng hợp lý khi nó thực hiệncông việc của mình, dưới một điều kiện làm việc xácđịnh
• Sửdụngtài nguyên
– Khả năng của phần mềm có thể sử dụng một lượng, một loại tài nguyên hợp lý để thực hiện công việc trong những điều kiện cụthể
Trang 36• Hiệu suất thời gian tốt (efficiency):
– Độ 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)
• Sử dụng tài nguyên hữu quả: CPU, RAM, HDD, Internet
resources,
31
Các tiêu chí về tính hiệu quả
Trang 38Mô hình chất lượng cho chất lượng
38
Trang 39Tiến hóa PM và thách thức
39
• Thay đổi là bản chất củaPM
• PM bị thay đổi khi nào và thay đổi như thếnào?
– Một yêu cầu cũ bị sửa hoặc loạibỏ
– Một yêu cầu mới phát sinh
– Lỗi phát sinh
– Môi trường của PM thay đổi
• Môi trường PM: Hệ điều hành, các hệ thống tương tác, …
• Môi trường phầncứng
• Thay đổi: trong quá trình phát triển và trong quá trình sử dụng ( bảo trì )
Trang 40Nguyên nhân của thay đổi
• Nhu cầu con người ngày càng cao và phức tạp
• Nghiệp vụ của các tổ chức cũng thườngxuyên thay
đổi/tái cấu trúc
• Môi trường PM thường xuyên thay đổi
Trang 41Thách thức đặt ra từ tiếnhóa
41
• Tăngchi phí cho quá trình phát triển (rework)
• Tăng chi phí cho doanh nghiệp trong quá trình bảo trì(chi phí bảo trì gấp nhiều lần chi phí phát triển)
• Phát sinh nhiều vấn đề lớn (kỹ thuật, ứng dụng,…)
• Làm thế nào để phát triển các SP PM có khả năngbảo trì với chi phí thấp và thời gian ngắn đang làmột thách thức rất lớn và chưa có giải pháp thỏađáng
Trang 42Nhữ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)
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
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 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
Đặc tả không rõ ràng sẽ làm giảm chất lượng phần mềm
Trang 43Khô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
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
• 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
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
Những khó khăn trong sản xuất phần mềm
Trang 44Chuẩ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
Những khó khăn trong sản xuất phần mềm
Trang 45GIỚI THIỆU CHUNG VỀ CÔNG NGHỆ PHẦN MỀM
Trang 46Sự tiến triển của các phương pháp thiết kế phần mềm
Trang 47Sự tiến triển của các phương pháp thiết kế phần mềm
Trang 49Hình thái sản xuất Phần mềm
Trang 50Một số định nghĩa vềSE
50
Software Engineering (SE)
• SE là thiết lập và sử dụng các nguyên lý công nghệ
đúng đắn để được phần mềm một cách kinhtế, vừa
tin cậy vừa làm việc hiệu quả trên các máy thực
[Bauer 1969]
• SE là nguyên lý kỹ nghệ liên quan đến tất cả các mặt lý thuyết, phương pháp, và công cụ của phần
Trang 51Một số định nghĩa vềSE
51
Software Engineering (SE)
• IEEE [1993]: CNHPM 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]: CNHPM 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
Trang 52Một số định nghĩa vềSE
52
Software Engineering (SE)
• Sommerville [1995]: CNHPM 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]: CNHPM 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
Trang 53Công nghệ học PM
53
Công nghệ học 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
[ 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]
Trang 54Công nghệ học PM
54
• Như các ngành công nghệ học khác, CNHPM 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 CNHPM
• 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 CNHPM
Trang 55Công nghệ học PM
55
• 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)
• 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ệ học (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
Trang 56Công nghệ học PM
56
• Là ngành công nghiệp liên quan đến mọi khíacạnh của việc phát triển phần mềm (thu thập, phântích và đặc tả; thiết thế, lập trình, kiểm thử, chuyểngiao, vận hành và bảo trì, …)
• Kỹ nghệ: xây dựng PM bằng cách ứng dụng các lýthuyết, phương pháp, công cụ một cách chọn lọc và
cố gắng tạo ra các giải pháp giải quyết vấn đề ngay
cả khi không có lý thuyết và công cụ để áp dụng
Trang 57Software life-cycle
57
• Vòng đời phần mềm là thời kỳ tính từ khi phần mềm được sinh (tạo) ra cho đến khi chết đi (từ lúc hình thành đáp ứng yêu cầu, vận hành, bảo dưỡng cho đến khi loại bỏ không đâu dùng)
• Quy trình phần mềm (vòng đời phần mềm) được phân chia
thành các pha chính: phân tích, thiết kế, chế tạo, kiểm thử, bảo trì Biểu diễn các pha có khác nhau theo mô hình.
Mọi sản phẩm phần mềm đều có vòng đời.
• Vòng đời thường khá dài — một số sản phẩm phần mềm đã “tồn tại”
được 30 năm.
• Vòng đời có thể được rút ngắn do tiến bộ công nghệ
Trang 58Các pha- Software life-cycle
• Kiểm thử — vận hành hệ thống để tìm và loại bỏ các khiếm khuyết
• Bảo trì — sửa chữa và nâng cấp sản phẩm sau khi khách hàng triển khai
Trang 59Mô hình vòng đời phần mềm
59
• Quá trình là một tập hợp các hoạt động , với các đầu vào và đầu
ra được xác định rõ ràng, để hoàn thành một số nhiệm vụ.
• Mô hình vòng đời là một mô tả về một quá trình thực hiện một sản phẩm phần mềm trong toàn bộ hoặc một phần vòng đời của nó.
Các mô hình vòng đời có xu hướng tập trung vào các pha chính của chu kỳ và mối quan hệ của chúng với các pha khác.
Các nghiên cứu gần đây về quy trình phần mềm đã xem xét chi tiết nhiều khía cạnh của việc phát triển và bảo trì.
Mô hình vòng đời là một mô tả quy trình phần mềm
Trang 60Mô hình vòng đời phần mềm Waterfall model
60
Trang 61Phương pháp luận cho mỗi pha
Software life-cycle
61
Trang 62Quy trình phát triển phần mềm
Trang 63Capability Maturity Model (CMM by SEI)
Tháng 11 năm 1986 viện Công nghệ phần mềm SEI
(Software Engineering Institute) đưa ra khung sườn và các khái niệm liên quan để giúp cải thiện Quy trình sản xuất
Trang 64Capability Maturity Model (CMM by SEI)
Trang 65Capability Maturity Model (CMM by SEI)
Trang 66Mô hình 5 mức của CMM
Trang 67Mô hình 5 mức của CMM
Trang 68Mô hình 5 mức của CMM
Trang 69Mô hình 5 mức của CMM
Trang 70Mô hình 5 mức của CMM
Trang 71Các yếu tố cơ bản của SE
Trang 7272
• Quy trình quản lý và phát triển
– Trình tự thực hiện các công việc – Tài liệu, sản phẩm cần bàn giao và cách thức thực hiện
– Mốc thời gian (milestones) và sản phẩm đưara (theo chuẩn)
Trang 73THỦTỤC
Trang 7474
• Cách làm cụ thể để xây dựng phầnmềm
• Mỗi giai đoạn có phương pháp riêng
– Phân tích (nắm bắt yêu cầu, đặc tả yêu cầu)
– Thiết kế (kiến trúc, giao diện, dữ liệu)
– Lập trình (cấu trúc, hướng đối tượng)
– Kiểm thử (hộp đen, hộp trắng, hồi quy)
– Quản lý dự án (PERT, COCOMO) ((Program
Evaluation and Review Technique), (Constructive Cost Model))
Trang 76YÊU CẦU ĐỐI VỚI KỸ SƯ PHẦN MỀM
• Quy trình xây dựng phần mềm được thực hiện trong
một môi trường chuyên nghiệp và đòi hỏi tuân thủ các nguyên tắc một cách chính xác.
• Những kỹ sư phần mềm phải coi công việc của họ là
trách nhiệm to lớn, chứ không đơn thuần chỉ là việc ứng dụng kỹ thuật.
• Kỹ sư phần mềm phải ứng xử trung thực và cách làm
của họ phải rất chuyên nghiệp và đúng quy tắc.