[Webster’s Dict.] Điểm ngoặt trong tiến trình của bất kỳ cái gì; 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
Trang 1Những khó khăn của Kỹ Nghệ Phần mềm
Công Nghệ Phần Mềm Nâng Cao
Trang 3Tài liệu tham khảo
Bài giảng trên lớp
Trang 4Một số dự án thất bại
AAS (FAA Advanced Automation System) (1989)
IBM phát triển (2.3 triệu dòng lệnh bằng Ada)
1994: xây dựng lại từ đầu (vì đặc tả yêu cầu k đúng)
FBI CIC
IRS Modernization Program
C-17: 20M, cuối 80s ->85 (lần thử đầu tiên 7/1990)
Gặp nhiều vđề khó về kỹ thuật, quá thời gian và kinh phí
Ariane 5 (June 04, 1996) nổ sau khi phóng (40s)
Do lỗi PM điều khiển (chuyển 1 số thực 64bit -> số nguyên 16bit)
Head of AF Systems Command: ‘‘PM là nhược điểm của việc phát triển vũ khí “
Trang 5Những con số biết nói
Việc phát triển các ứng dụng > 5000 function points
(~500,000 LOC) là một trong những nhiệm vụ rủi ro
nhấttrong thế giới hiện đại (Capers Jones)
Những rủi ro dẫn đến hủi hoặc đình trệ tăng nhanh cùng với việc tăng của kích thước các ứng dụng (Capers
Jones):
65% các HT lớn (>1,000,000 LOC) bị hủi trước khi hoàn thành
50% các HT ước lượng sai kích thước > 1/2 million LOC
25 % các dự án > 100,000 LOC
Tỷ lệ thất bại (Failure or cancellation) của các dự án lớn
là >20% (Capers Jones)
Trang 6Ví dụ về kích thước dự án
Trang 7Những con số biết nói (cont.)
Group cho biết khoảng 30% bị hủi trước
khi hoàn thành
năm tiến hành và tiêu tốn 200% kinh phí
dự kiến (Capers Jones).
kinh phí PM của Mỹ ($14 billion in 1993
dollars) (Capers Jones).
Trang 8Thống kê của Standish Group (2006)
Có tới 50% trong số các dự án phần mềm thất bại
Chỉ có 16.2% dự án là hoàn thành đúng hạn và nằm
trong giới hạn ngân sách, đáp ứng tất cả tính năng và đặc tính như cam kết ban đầu
Có 52.7% dự án được hoàn thành và đi vào hoạt
động nhưng không hoàn thành đúng hạn và bội chi,
thêm nữa không đáp ứng đầy đủ tính năng và đặc
tính như thiết kế ban đầu
Và có 31.1% dự án thất bại trước khi được hoàn
thành
-> hơn 83.8% dự án thất bại hoặc không đáp ứng
những yêu cầu ban đầu
Trang 9Những con số biết nói (cont.)
2/3 dự án được hoàn thành vượt quá thời gian
và kinh phí dự kiến (Capers Jones) [bad
estimates?]
2/3 dự án được hoàn thành là có độ tin cậy vàchất lượng thấp trong một năm đầu triển khai
(Jones)
Tỷ lệ xảy ra lỗi của PM từ 0.5 đến 3.0 /1000
LOC (Bell Labs survey)
Civilian software: tối thiểu 100 từ tiếng Anh
được sinh ra cho mọi câu lệnh
Military: ~ 400 từ (Capers Jones)
Trang 11 Khủng hoảng là gì ? [Webster’s Dict.]
Điểm ngoặt trong tiến trình của bất kỳ cái gì; 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
Trong phần mềm: Day dứt kinh niên (chronic
affliation, by Prof Tiechrow, Geneva, Arp 1989)
Trang 12Tại sao tồn tại khủng hoảng PM?
Là sự day dứt kinh niên (kéo dài theo thời gianhoặ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ư:
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 ?
Phải xử lý ra sao khi bảo dưỡng phần mềm đã có ?
Phải giải quyết thế nào khi thiếu kỹ thuật viên phần mềm?
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 ?
Trang 13Một số yếu tố ảnh hưởng đến khủng hoảng
Phần mềm càng lớn sẽ kéo theo phức tạp hóa
và tăng chi phí phát triển
Đổi vai trò giá thành SW vs HW
Công sức cho bảo trì càng tăng thì chi phí choBacklog càng lớn
Nhân lực chưa đáp ứng được nhu cầu phần
mềm
Những phiền hà của phần mềm gây ra những
vấn đề xã hội
… (?)
Trang 14Những dự án lớn của NASA
(National Aeronautics and Space Administration)
Trang 15+ 2000
+ 1985
Phần cứng
Phát triển
Bảo trì
Phần mềm
Trang 16Chi phí cho các pha
Trang 17Chi phí cho các pha (cont.)
Trang 18Chi phí cho các pha (cont.)
Trang 19Backlog tại Nhật Bản năm 1985
Trang 20Chi phí cho các pha
Trang 21Software Evolution (Maintenance)
PM tiếp tục thay đổi với tốc độ nhanh
PM sẽ trở nên không có cấu trúc như việc nó
Trang 22Liệu đã có những cải thiện?
Trang 24Những khó khăn trong phát triển PM
(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ữngtrụ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 đó
Trang 25Những khó khăn trong phát triển PM
(cont.)
(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
Trang 26Những khó khăn trong phát triển PM
(cont.)
(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
Trang 27Những khó khăn trong phát triển PM
(cont.)
(8) Phần lớn trong quy trình phát triển phần mềm có
nhiều thao tác do con người thực hiện, do vậy
năng suất lao động thường bị giảm
(9) Không chứng minh được tính đúng đắn của phần
mềm, do vậy độ tin cậy của phần mềm sẽ giảm (10) Chuẩn về một phần mềm tốt không thể đo được
một cách định lượng, do vậy không thể đánh giá được một hệ thống đúng đắn hay không
Trang 28Những khó khăn trong phát triển PM
(cont.)
(11) Khi đầu tư nhân lực lớn vào bảo trì sẽ
làm giảm hiệu suất lao động của nhân viên
(12) Công việc bảo trì kéo dài làm giảm
chất lượng của tư liệu và ảnh hưởng xấu đến những việc khác
Trang 29Những khó khăn trong phát triển PM
(cont.)
(13) Quản lý dự án lỏng lẻo kéo theo quản lý
lịch trình cũng không rõ ràng(14) Không có tiêu chuẩn để ước lượng nhân lực
và dự toán sẽ làm kéo dài thời hạn và vượt
kinh phí của dự án
Đây là những vấn đề phản ánh các khía cạnh
khủng hoảng phần mềm, hãy tìm cách nỗ lực vượtqua để tạo ra phần mềm tốt!
Trang 30Là động lực cho việc cải tiến qui trình phát
triển PM
Trang 32Cách viết tài liệu mô tả bài toán (Proposal)
Thông tin nhóm: Danh sách thành viên, nhóm trưởng
Tên sản phẩm
Mô tả các chức năng mong muốn của sản phẩm
Khái quát
Chi tiết từng chức năng
Yêu cầu về giao diện
Yêu cầu phi chức năng
Môi trường phát triển
Môi trường triển khai
Chất lượng