Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 3 Website môn học http://10.10.0.10/courses/ zThông báo zDiễn đàn zTài liệu tham khảo zBài giảng zYêu cầu bài t
Trang 1Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 1
Nhập môn
Kỹ nghệ Phần mềm
Bài giảng cho lớp K50CA và K50CB
Giảng viên: PGS.TS Nguyễn Ngọc Bình
Email: nnbinh@vnu.edu.vn
Http://www.jaist.ac.jp/~jaist
Giảng viên hỗ trợ: TS Trương Anh Hoàng
Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 2
Cấu trúc môn học
z 45 tiết + Bài tập lớn + Kiểm tra
z Cần những kiến thức căn bản về CNTT
z Cung cấp những nguyên lý chung về Kỹ nghệ Phần mềm (KNPM)
z Cung cấp kiến thức để học các môn chuyên ngành hẹp như Phân tích và thiết kế phần mềm, Xây dựng và đánh giá phần mềm, Quản trị dự án phần mềm,
Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 3
Website môn học
http://10.10.0.10/courses/
zThông báo
zDiễn đàn
zTài liệu tham khảo
zBài giảng
zYêu cầu bài tập / đề bài kiểm tra
Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 4
Mục tiêu môn học
zTruyền đạt các nguyên lý / kỹ thuật chung để phát triển được phần mềm chất lượng cao, giá cả hợp lý
(Làm phần mềm một cách chuyên nghiệp,
công nghiệp)
zTầm quan trọng của kỹ thuật này
zĐịnh hướng cho việc tiếp cận các kiến thức liên quan
Nội dung môn học
zTổng quan phần mềm và kỹ nghệ phần
mềm
•Vai trò và tầm quan trọng của phần mềm
•Khó khăn và thách thức đối với phát triển
phần mềm
•Tổng quan về kỹ nghệ phần mềm
zTiến trình và mô hình tiến trình phần
mềm
•Khái niệm
•Các mô hình tiến trình tổng quát, cụ thể
Nội dung môn học (tiếp)
zQuản lý dự án phát triển phần mềm
•Khái niệm, vai trò, mục tiêu của quản lý dự án
•Các yếu tố quản lý
•Các hoạt động quản lý (phương pháp, công
cụ hỗ trợ)
zPhân tích và đặc tả yêu cầu
•Vai trò của phân tích và đặc tả yêu cầu
•Các hoạt động phân tích, đặc tả yêu cầu
•Phương pháp, công cụ để phân tích, đặc tả yêu cầu
Trang 2Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 7
Nội dung môn học (tiếp)
zThiết kế phần mềm
•Khái niệm, nguyên lý, chất lượng thiết kế
phần mềm
•Thiết kế kiến trúc, thiết kế giao diện
•Một số phương pháp, công cụ thiết kế
zLập trình
•Phong cách lập trình
•Lập trình tránh lỗi
•Lập trình hướng hiệu quả
Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 8
Nội dung môn học (tiếp)
zKiểm thử
•Khái niệm, các loại kiểm thử
•Quy trình, công cụ trợ giúp kiểm thử
•Viết tài liệu kiểm thử
zTích hợp, chuyển giao và bảo trì
•Khái niệm
•Các nguyên lý, hoạt động tích hợp
•Các hoạt động chuyển giao, bảo trì
•Cácvấnđềcủahoạtđộngbảotrì
Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 9
Tài liệu tham khảo
z http://10.10.0.10/courses/ - website môn học
học)
z Nguyễn Văn Vỵ, Nguyễn Việt Hà, Giáo trình Kỹ nghệ phần mềm,
Khoa CNTT, ĐH Công nghệ (có tại bộ môn Công nghệ phần mềm –
Khoa Công nghệ thông tin – Trường ĐHCN)
z R Pressman, Software Engineering: A Practioner’s Approach 6th
Ed., McGraw-Hill, 2004
z R Pressman, Kỹ nghệ phần mềm Tập 1, 2, 3 NXB Giáo dục, Hà
Nội, 1997 (Người dịch: Ngô Trung Việt)
z I Sommerville, Software Engineering 7th Ed., Addison-Wesley,
2004
z K Kawamura, Nhập môn Công nghệ học Phần mềm NXB
Kinki-Kagaku, Tokyo, 2001 (Tiếng Nhật)
Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 10
Yêu cầu
cơ bản của kỹ nghệ phần mềm
nhóm
• Hiểu về quá trình làm phần mềm
• Minh họa nguyên lý / kỹ thuật
Yêu cầu
zThường xuyên theo dõi thông tin trên
Website
zLấy yêu cầu bài tập và nộp bài trên Website
zXem điểm bài tập trên Website
zTham gia diễn đàn môn học trên Website
zĐ ưa các thắc mắc, kiến nghị về môn học
trên Website
Đ iểm số, đánh giá
Trang 3Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 13
NHẬP MÔN
KỸ NGHỆ PHẦN MỀM
CHƯƠNG 1:
Bản chất phần mềm
Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 14
1.1 Định nghĩa chung về phần mềm 1.2 Kiến trúc phần mềm
1.3 Các khái niệm 1.4 Đặc tính chung của phần mềm 1.5 Thế nào là phần mềm tốt ? 1.6 Các ứng dụng phần mềm
Nội dung
Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 15
1.1 Định nghĩa chung về phần mềm
zPhầ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
zTừ xưa, SW như thứ được cho không
hoặc bán kèm theo máy (HW)
zDần dần, giá thành SW ngày càng cao
và nay cao hơn HW
Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 16
Các đặc tính của SW và HW HW
z Vật “cứng”
z Kim loại
z Vật chất
z Hữu hình
z Sản xuất công nghiệp bởi máy móc
là chính
z Định lượng là chính
z Hỏng hóc, hao mòn
SW
z Vật “mềm”
z Kỹ thuật sử dụng
z Trừu tượng
z Vô hình
z Sản xuất bởi con người là chính
z Định tính là chính
z Không hao mòn
khi được thực hiện thì cung cấp
những chức năng và kết quả mong
muốn
chương trình thao tác thông tin
thích hợp
sử dụng chương trình
SW đối nghĩa với HW
zVai trò SW ngày càng thể hiện trội
zMáy tính là chiếc hộp không có SW
zNgà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
zHệ thống máy tính gồm HW và SW
Trang 4Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 19
Đ ịnh nghĩa 2
zTrong 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)
zNghĩ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)
zNghĩ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
Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 20
SW theo nghĩa rộng
zKhông chỉ SW cơ bản và SW ứng dụng
zPhả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
zLà 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
Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 21
Phần mềm là gì ?
Nhóm các
Kỹ thuật, Phương pháp luận
Nhóm các chương trình Nhóm các tư liệu
Kinh nghiệm kỹ sư, know-how
Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 22
Nhóm các kỹ thuật, phương pháp luận
z Các khái niệm và trình tự cụ thể hóa một hệ thống
z Các phương pháp tiếp cận giải quyết vấn đề
z Các trình tự thiết kế và phát triển được chuẩn hóa
z 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
Nhóm các chương trình
z Là phần giao diện với phần cứng, tạo thành
từ các nhóm lệnh chỉ thị cho máy tính biết
trình tự thao tác xử lý dữ liệu
z 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)
z 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,
Nhóm các tư liệu
zNhững tư liệu hữu ích, có giá trị cao và rất cần thiết để phát triển, vận hành và bảo trì phần mềm
zĐể chế 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 5Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 25
Những yếu tố khác
zSản xuất phần mềm phụ thuộc rất nhiều
vào con người (kỹ sư phần mềm) Khả
năng hệ thống hóa trừu tượng, khả năng
lập trình, kỹ năng công nghệ, kinh
nghiệm làm việc, tầm bao quát, :
khác nhau ở từng người
zPhần mềm phụ thuộc nhiều vào ý tưởng
(idea) và kỹ năng (know-how) của
người/nhóm tác giả
Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 26
1.2 Kiến trúc phần mềm (Software Architecture)
z Có hàng chục định nghĩa khác nhau về KTPM
(http://www.sei.cmu.edu/architecture/community_definitions.html)
z Kiến trúc phần mềm là cấu trúc tổng thể của phần mềm và những cách thức mà cấu trúc đó cung cấp gắn kết khái niệm
với nhau thành một hệ thống (the overall structure of the
software and the ways in which that structure provides conceptual integrity for a system)
z Kiến trúc phần mềm là cấu trúc phân cấp của các thành phần chương trình (mô-đun) và cách thức để những thành phần này tương tác với nhau, cũng như những cấu trúc dữ liệu được
dùng trong các thành phần (the hierachical structure of
program components (modules), the manner in which these components interact, the the structure of the data that are used
by the components).
Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 27
Kiến trúc phần mềm
(Software Architecture)
z Software Architecture is defined as it is an
organized collection of inter-related structural
elements types for solving a software design
problem
z Structural Elements Types:
•a) Components
•b) Connectors
•c) Configuration
•d) Constraints and
•e) Rationale
z Characteristics, Classification, and
Definations must be given for all the above
Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 28
1.2 Kiến trúc phần mềm 1.2.1 Phần mềm nhìn từ cấu trúc phân cấp
zCấu trúc phần mềm là cấu trúc phân cấp (hierarchical structure): mức trên
là hệ thống (system), dưới là các hệ thống con (subsystems)
zDưới hệ thống con là các chương trình
zDưới chương trình là các Modules hoặc Subroutines với các đối số (arguments)
Kiến trúc phần mềm
System
Subsystem Subsystem
Program Program
Module Module Subroutine
Master files
Temporary
files
Arguments Arguments
Job unit
Jobstep unit
Member unit
Common Module
≈
≈
1.2.2 Phần mềm nhìn từ cấu trúc và thủ tục
z Hai yếu tố cấu thành của phần mềm
•Phương diện cấu trúc
•Phương diện thủ tục
z Cấu trúc phần mềm: biểu thị kiến trúc các chức năng mà phần mềm đó có và điều kiện phân cấp các chức năng (thiết kế cấu trúc)
z Thiết kế chức năng: theo chiều đứng (càng sâu càng phức tạp) và chiều ngang (càng rộng càng nhiều chức năng, qui mô càng lớn)
Trang 6Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 31
Cấu trúc phần mềm
Fuction A
Function B Function C
Function D Function E Function F
Cấu trúc chiều ngang
(Horizontal structure)
đ ứ
Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 32
Thủ tục (procedure) phần mềm
z Là những quan hệ giữa các trình tự mà phần mềm đó có
z Thuật toán với những phép lặp, rẽ nhánh, điều khiển luồng xử lý (quay lui hay bỏ qua)
z Là cấu trúc lôgic biểu thị từng chức năng có trong phần mềm và trình tự thực hiện chúng
z Thiết kế cấu trúc trước rồi sang chức năng
Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 33
1.3 Các khái niệm
thuật
•Phương pháp luận (Methodology): những
chuẩn mực cơ bản để chế tạo phần mềm
với các chỉ tiêu định tính
•Các phương pháp kỹ thuật (Techniques):
những trình tự cụ thể để chế tạo phần
mềm và là cách tiếp cận khoa học mang
tính định lượng
kỹ thuật
Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 34
Các khái niệm phần mềm (Software concepts)
z Khái niệm tính môđun (modularity concept)
z Khái niệm chi tiết hóa dần từng bước (stepwise refinement concept)
z Khái niệm trừu tượng hóa (abstraction concept): về thủ tục, điều khiển, dữ liệu
z Khái niệm che giấu thông tin (information hiding concept)
z Khái niệm hướng đối tượng (object oriented)
Từ phương pháp luận phần mềm sang kỹ
thuật phần mềm
Tính Môđun
Chi tiết hóa dần
Trừu tượng hóa
(Che giấu t.tin)
Phân tích cấu trúc Thiết kế cấu trúc Lập trình cấu trúc
Dữ liệu trừu tượng Hướng đối tượng
Khái niệm phần mềm
1.3.1 Tính môđun (Modularity)
z Là khả năng phân chia phần mềm thành các môđun ứng với các chức năng, đồng thời cho phép quản lý tổng thể: khái niệm phân chia và hợp (partion and merge)
z Hai phương pháp phân chia môđun theo chiều
•sâu (depth, thẳng đứng): điều khiển phức tạp dần
•rộng (width, nằm ngang): môđun phụ thuộc dần
z Quan hệ giữa các môđun: qua các đối số (arguments)
Trang 7Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 37
Chuẩn phân chia môđun
Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 38
1.3.2 Chi tiết hóa từng bước
Cách tiếp cận từ trên xuống (top-down approach)
Ngôn ngữ chương trình
Chi tiÕt hãa
tõng b−íc
Thế giới bên ngoài
Trừu tượng hóa mức cao:
Thế giới bên ngoài, trạng thái chưa rõ ràng Trừu tượng hóa mức trung gian:
Xác định yêu cầu và đặc tả Những định nghĩa yêu cầu Trừu tượng hóa mức thấp:
Từng lệnh của chương trình được viết bởi ngôn ngữ thủ tục nào đó
Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 39
Ví dụ: Trình tự giải quyết vấn đề từ mức
thiết kế chương trình đến mức lập trình
zBài toán: từ một nhóm N số khác nhau
tăng dần, hãy tìm số có giá trị bằng K
(nhập từ ngoài vào) và in ra vị trí của nó
zGiải từng bước, từ khái niệm đến chi tiết
hóa từng câu lệnh bởi ngôn ngữ lập
trình nào đó
zChọn giải thuật tìm kiếm nhị phân (pp
nhị phân)
Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 40
Cụ thể hóa thủ tục qua các chức năng
Bài toán đã cho Nhập giá trị K
Nhận giá trị nhóm N số
Tìm kiếm giá trị (PP nhị phân)
In ra vị trí (nếu có)
Cụ thể hóa bước tiếp theo
Tìm kiếm giá trị
(pp nhị phân) Xác lập phạm vi mảng số
Lặp lại xử lý tìm kiếm giá trị K trong phạm vi tìm kiếm
Tìm vị trí giữa phân đôi mảng
So sánh K với giá trị giữa Đặt lại phạm vi tìm kiếm
Lặp lại tìm kiếm K trong
phạm vi tìm kiếm
Mức mô tả chương trình (bằng PDL)
Bắt đầu Đọc K Nhận giá trị cho mảng 1 chiều A(I), (I =1, 2, ,.N) MIN = 1
MAX = N
DO WHILE (Có giá trị bằng K không? Cho đến khi MIN > MAX) Lấy MID = (MIN + MAX) / 2
IF A(MID) > K THEN MAX = MID - 1 ELSE
IF A(MID) < K THEN MIN = MID + 1 ELSE
In giá trị MID ENDIF
ENDIF ENDDO Kết thúc
Trang 8Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 43
1.3.3 Khái niệm Che giấu thông tin
zĐể phân rã phần mềm thành các môđun
một cách tốt nhất, cần tuân theo nguyên
lý che giấu thông tin: “các môđun nên
được đặc trưng bởi những quyết định
thiết kế sao cho mỗi môđun ẩn kín đối
với các môđun khác” [Parnas1972]
zRất hữu ích cho kiểm thử và bảo trì
phần mềm
Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 44
Khái niệm Trừu tượng hóa
z Abstraction cho phép tập trung vấn đề ở mức tổng quát, gạt đi những chi tiết mức thấp ít liên quan
z 3 mức trừu tượng
•Trừu tượng thủ tục: dãy các chỉ thị với chức năng
đặc thù và giới hạn nào đó
•Trừu tượng dữ liệu: tập hợp dữ liệu mô tả đối tượng dữ liệu nào đó
•Trừu tượng điều khiển: Cơ chế điều khiển chương trình không cần đặc tả những chi tiết bên trong
z Ví dụ: Mở cửa Thủ tục: Mở gồm ; Dữ
liệu: Cửa là
Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 45
1.4 Đặc tính chung của phần mềm
z Là hàng hóa vô hình, không nhìn thấy được
z 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 (error/bug)
được phát hiện và sửa
z Phần mềm vốn chứa lỗi tiềm tàng, theo quy
mô càng lớn thì khả năng chứa lỗi càng cao
z Lỗi phần mềm dễ được phát hiện bởi người
ngoài
Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 46
z 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)
z Hiệu ứng làn sóng trong thay đổi phần mềm
z Phần mềm vốn chứa ý tưởng và sáng tạo của tác giả / nhóm tác giả làm ra nó
z Cần khả năng “tư duy nhị phân” (binary thinking) trong xây dựng, phát triển phần mềm
z Có thể sao chép rất đơn giản
1.5 Thế nào là phần mềm tốt ?
Hiệu suất xử lý
Các chỉ tiêu cơ bản
Tính dễ hiểu
Thời gian (Phần cứng phát triển)
Yếu
tố
khái
niệm
phần
mềm
tốt
Đặc trưng gần
đây
1.5.1 Các chỉ tiêu cơ bản
zPhản ánh đúng yêu cầu người dùng (tính hiệu quả - effectiveness)
zChứa ít lỗi tiềm tàng
zGiá thành không vượt quá giá ước lượng ban đầu
zDễ vận hành, sử dụng
zTính an toàn và độ tin cậy cao
Trang 9Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 49
1.5.2 Hiệu suất xử lý cao
•Độ 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)
RAM, HDD, Internet resources,
Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 50
1.5.3 Tính dễ hiểu
zKiến trúc và cấu trúc thiết kế dễ hiểu
zDễ kiểm tra, kiểm thử, kiểm chứng
zDễ bảo trì
zCó 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
Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 51
1.6 Các ứng dụng phần mềm
z Phần mềm hệ thống (System SW)
z Phần mềm thời gian thực (Real-time SW)
z Phần mềm nghiệp vụ (Business SW)
z Phần mềm tính toán KH&KT (Eng.&Scie SW)
z Phần mềm nhúng (Embedded SW)
z Phần mềm máy cá nhân (Personal computer
SW)
z Phần mềm trên Web (Web-based SW)
z Phần mềm trí tuệ nhân tạo (AI SW)
Bộ môn Công nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 52
CHƯƠNG 2:
Khủng hoảng phần mềm (Software Crisis)
và Khái niệm Kỹ nghệ phần mềm (Software Engineering)
2.1 Khủng hoảng phần mềm là gì ? 2.2 Những vấn đề (khó khăn) trong sản xuất phần mềm
2.3 Định nghĩa Kỹ nghệ phần mềm
2.1 Khủng hoảng phần mềm là gì?
z 10/1968 tại Hội nghị của NATO các chuyên gia
phần mềm đã đưa ra thuật ngữ “Khủng hoảng
phần mềm” (Software crisis) Qua hàng chục năm,
thuật ngữ này vẫn được dùng và ngày càng mang
tính cấp bách
z Khủng hoảng là gì ? [Webster’s Dict.]
•Điểm ngoặt trong tiến trình của sự vật, sự kiện nào đó;
thời điểm, giai đoạn hoặc biến cố quyết định hay chủ chốt
•Điểm ngoặt trong quá trình diễn biến bệnh khi trở nên rõ
ràng bệnh nhân sẽ sống hay chết
z Trong phần mềm: Day dứt kinh niên (chronic
affliation, by Prof Tiechrow, Geneva, Arp 1989)
Khủng hoảng phần mềm là gì? (tiếp)
Là sự day dứt kinh niên (kéo dài theo thời gian hoặc thường tái diễn, liên tục không kết thúc) gặp phải trong phát triển phần mềm máy tính, như
z Phải làm thế nào với việc giảm chất lượng và những lỗi tiềm tàng có trong phần mềm ?
z Phải xử lý ra sao khi bảo dưỡng phần mềm đã có ?
z Phải giải quyết thế nào khi thiếu kỹ thuật viên phần mềm?
z Phải chế tác phần mềm ra sao khi có yêu cầu phát triển theo qui cách mới xuất hiện ?
z Phải xử lý ra sao khi sự cố phần mềm gây ra những vấn
đề xã hội ?
Trang 10Bộ mụn Cụng nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 55
Một số yếu tố
tạp húa và tăng chi phớ phỏt triển
phớ cho Backlog càng lớn
phần mềm
những vấn đề xó hội
Bộ mụn Cụng nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 56
So sỏnh chi phớ cho Phần cứng và Phần mềm
% 100 80 60 40 20 0
-+ 1955
+ 1970
+ 2000 +
1985
Phần cứng
Phỏt triển
Bảo trỡ
Phần Mềm
Bộ mụn Cụng nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 57
So sỏnh chi phớ cho cỏc pha
3
3
5
7
67
Xác định yêu cầu 3%
Đặc tả 3%
Thiết kế 5%
Lập trình 7%
Kiểm thử môđun 8%
Kiểm thử tích hợp 7%
Bảo trì 67%
Bộ mụn Cụng nghệ phần mềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phần mềm Slide 58
2.2 Những vấn đề (khú khăn) trong
sản xuất phần mềm
(1) 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) (2) Với những phần mềm quy mụ lớn, tư liệu
đ ặc tả đó cố định thời gian dài, do vậy 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 đú
Những vấn đề trong
sản xuất phần mềm (tiếp)
(3) Nếu khụng cú Phương phỏp luận thiết
kế nhất quỏn mà 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)
(4) Nếu khụng cú chuẩn về làm tư liệu
quy trỡnh sản xuất phần mềm, thỡ
những đặc tả khụng rừ ràng sẽ làm
giảm chất lượng phần mềm
Những vấn đề trong sản xuất phần mềm (tiếp)
(5) Nếu 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, thỡ thường bàn giao sản phẩm khụng đỳng hạn
(6) Nếu coi trọng việc lập trỡnh hơn khõu thiết
kế thỡ thường dẫn đến làm giảm chất lượng phần mềm
(7) Nếu coi thường việc tỏi sử dụng phần mềm (software reuse), thỡ năng suất lao động sẽ giảm