Nội dung Tầm quan trọng của phần mềm Khó khăn, thách thức phát triển phần mềm Các khái niệm cơ bản Vai trò của các vị trí trong dự án phần mềm... VAI TRÒ PHẦN MỀM Các ứng dụng ph
Trang 1TỔNG QUAN VỀ CÔNG NGHỆ
PHẦN MỀM
Trang 2Nội dung
Tầm quan trọng của phần mềm
Khó khăn, thách thức phát triển phần mềm
Các khái niệm cơ bản
Vai trò của các vị trí trong dự án phần mềm
Trang 3Tài liệu tham khảo
Nguyễn Văn Vỵ - Nguyễn Việt Hà, Giáo trình
kỹ nghệ phần mềm, NXB ĐHQGHN, 2008
Slide bài giảng, Bộ môn CNPM – ĐH Công nghệ
Trang 4KHÁI NIỆM CHUNG
Phần mềm luôn gắn với một hệ thống cụ thể
Hệ thống: là tập hợp các phần tử có tương tác lẫn nhau để đạt được mục đích chung
Trang 5VAI TRÒ PHẦN MỀM
Các ứng dụng phần mềm phát triển nhanh trên mọi lĩnh vực của xã hội.
Ngày càng nhiều hệ thống được phần mềm điều khiển, trợ giúp:
Tính tự động của hệ thống ngày một cao
Chi phí phần mềm >> phần cứng trong HT
( Xu hướng: năng lực phần cứng tăng mạnh – Định luật
Moore )
Trang 6VAI TRÒ PHẦN MỀM (2)
Phần mềm tạo nên sự khác biệt của tổ chức
Thay đổi phong cách làm việc
Quyết định năng suất của tổ chức
Nền kinh tế tất cả các nước đều phụ thuộc vào phần mềm
Phần mềm sai hỏng, kinh tế tổn thất
Chi phí cho phần mềm chiếm tỷ trọng đáng kể trong tổng thu nhập quốc dân ở các nước phát triển
Trang 7PHÂN LOẠI PHẦN MỀM
Có thể phân loại theo một số cách
Theo mức độ hoàn thiện
Theo vai trò chức năng mà phần mềm thực hiện
Theo lĩnh vực được ứng dụng
Trang 8PHÂN LOẠI THEO MỨC HOÀN THIỆN
Trang 9PHÂN LOẠI THEO VAI TRÒ – CHỨC NĂNG
Trang 10PHÂN LOẠI PHẦN MỀM THEO LĨNH VỰC ỨNG DỤNG
Thu thập xử lý các dữ kiện thế giới thực
Đáp ứng yêu cầu chặt chẽ về thời gian
Thu thập dữ liệu
Phân tích dữ liệu
Kiểm soát, điều khiển
Điều phối.
Trang 11 Đặc trưng bởi thuật toán (tính toán vật lý, mô phỏng)
Đòi hỏi năng lực tính toán cao.
Chỉ đọc khi thiết bị khởi động
Thực hiện chức năng hạn chế (điều khiển sản phẩm)
Là sự kết hợp giữa hệ thống và thời gian thực.
PHÂN LOẠI PHẦN MỀM THEO LĨNH VỰC ỨNG DỤNG
Trang 12 Phần mềm máy tính cá nhân
Các bài toán nghiệp vụ nhỏ (ứng dụng văn phòng)
Giao diện đồ họa phát triển
Có nhu cầu rất cao
Phần mềm trí tuệ nhân tạo
Dùng các thuật toán phi số
Hệ chuyên gia, nhận dạng, trò chơi,
Phần mềm công cụ cho kỹ nghệ phần mềm
compiler, các công cụ CASE,
PHÂN LOẠI PHẦN MỀM THEO LĨNH VỰC ỨNG DỤNG
Trang 13PHÂN LOẠI PHẦN MỀM
Sản phẩm đặt hàng
Sản xuất theo đơn đặt hàng (Vd: HTTT quản lý )
Đơn chiếc, yêu cầu đặc thù
Sản phẩm chung
Bán rộng rãi
Thỏa mãn yêu cầu chung của số lớn user
Mỗi loại có cách thức tiếp cận riêng, nhất là ở các bước
phân tích xác định yêu cầu, bảo trì.
Trên quan điểm người phát triển có 2 loại:
Trang 15THỰC TRẠNG PHÁT TRIỂN PM (2)
1978: vệ tinh phóng lên sao Kim bị hỏng
do lỗi phần mềm
Lỗi của câu lệnh FOR (Fortran)
1996: vệ tinh Ariane 5 hỏng do lỗi phần
mềm gây thiệt hại 500M$
Lỗi phép toán số thực (Ada)
Tổn thất do lỗi phần mềm là lớn
Trang 16 45% : được phân phối, không được sử dụng
17% : bị hủy bỏ
6% : được sử dụng sau khi đã sửa đổi
5% : được sử dụng ngay sau khi phân phối
Sản phẩm phần mềm không đạt mục tiêu
THỰC TRẠNG PHÁT TRIỂN PM (3)
Trang 17Sự tiến hóa phần mềm là tất yếu
TIẾN HÓA CỦA PHẦN MỀM
Trang 18TIẾN HÓA CỦA PHẦN MỀM (2)
Phần cứng thay đổi liên tục, chuyên dụng
Xử lý theo lô
Môi trường lập trình có tính cá nhân
Sản xuất đơn chiếc
Giai đoạn thứ nhất: (~1960)
Ngôn ngữ: mã máy, đặc thù cho từng máy
Lập trình: là một nghệ thuật theo bản năng,
chưa có phương pháp
Trang 19 Đa nhiệm, đa người sử dụng
Hệ thống thời gian thực
Xuất hiện lưu trữ trực tuyến
Giai đoạn 2: (~giữa thập kỷ 70)
Ngôn ngữ: có cấu trúc: PL1, Algo60, Fortran, COBOL Lập trình: có phương pháp lập trình
Trang 20 Hệ thống phân tán
Mạng cục bộ, toàn cầu
Bộ vi xử lý phát triển mạnh
Giai đoạn 3: (~đến nay)
Ngôn ngữ: Ngôn ngữ bậc cao, hướng đối tượng
Phát triển HT: có phương pháp, công cụ tự động
Phần mềm ngày càng phức tạp
Máy tính cá nhân, phần mềm nhúng
Số người dùng tăng nhanh
TIẾN HÓA CỦA PHẦN MỀM (4)
Trang 21 UNIX: 4M dòng lệnh
Window2K: ~100M dòng lệnh
Lý do:
Năng lực máy tính ngày càng mạnh
Các hệ thống máy tính được liên kết lại
Ham muốn của người dùng ngày càng lớn
Phần mềm ngày càng phức tạp
TIẾN HÓA CỦA PHẦN MỀM (5)
Trang 22Chi phí cho phần mềm cao
TIẾN HÓA CỦA PHẦN MỀM (6)
Trang 23THÁCH THỨC CỦA PHẦN MỀM
Khả năng xây dựng phần mềm không đáp ứng kịp nhu cầu tăng nhanh (có internet, mọi lĩnh vực xã hội)
Quy mô, độ phức tạp ngày càng tăng khiến chi phí phát triển bảo trì ngày càng tốn kém
Sự tinh vi của phần cứng vượt xa khả năng tạo ra phần mềm để khai thác nó.
Cần có những phương pháp, công cụ hiện đại
để phát triển phần mềm.
Trang 24KHÓ KHĂN PHÁT TRIỂN PHẦN MỀM
Phần mềm là sản phẩm đặc biệt
Đặc trưng của phần mềm
Tiêu chí của phần mềm tốt
Trang 25KHÓ KHĂN PHÁT TRIỂN PHẦN MỀM (2)
“Khó sản xuất được phần mềm có chất lượng
theo đúng lịch trình và kinh phí cho trước”
Phần mềm là phần tử logic: không kiểm soát được theo phương pháp thông thường
trong sản xuất (rủi ro, tính thủ công)
trong bảo trì (lớn, phức tạp, thay đổi nhanh)
trong kiểm soát chất lượng ( làm thủ công,
nhiều người,
Trang 26 Tài liệu đi kèm chương trình
Tài liệu về thông tin cài đặt
Tài liệu hướng dẫn sử dụng
Tài liệu kỹ thuật: tài liệu đặc tả, phân tích, thiết kế, kiểm thử
Trang 27ĐẶC TRƯNG PHẦN MỀM
“ Phát triển phần mềm khác chế tạo phần
cứng”
Sản xuất mang tính thủ công.
Khó kiểm soát chất lượng ở khâu trung gian.
Khó dự đoán trước về hiệu năng.
Áp dụng các phương pháp tiên tiến
Công cụ tự đông
Trang 28ĐẶC TRƯNG PHẦN MỀM (2)
Phần mềm thoái hóa theo thời gian
Môi trường sử dụng, nhu cầu thay đổi
Lỗi sinh ra do nâng cấp
Phần mềm không được lắp ráp theo mẫu
Không có danh mục phụ tùng
Được đặt hàng hoàn chỉnh theo từng yêu cầu riêng
“Bảo trì phần mềm phức tạp hơn hẳn so với
bảo trì phần cứng”
Trang 30ĐẶC TRƯNG PHẦN MỀM (3)
Thời gian Mức lỗi
Đường cong lỗi lý tưởng của phần mềm
Trang 32ĐẶC TRƯNG PHẦN MỀM (5)
Phần mềm được phát triển theo nhóm
Năng lực của nhóm không tuyến tính với số thành viên
Người giỏi > 5 lần người trung bình
Thời gian cho trao đổi thông tin chiếm tỷ lệ cao
Khó kiểm soát
Khó tăng tốc độ bằng cách thêm người
Trang 33ĐẶC TRƯNG PHẦN MỀM (6)
Phần mềm không đơn giản chỉ là chương trình
Chương trình
1 người viết, 1 người dùng
dùng với mục đích thu thập xử lý số liệu (dùng 1 lần)
không cần tài liệu, không kiểm thử triệt để
Trang 35TIÊU CHÍ PHẦN MỀM TỐT (2)
“Phần mềm luôn luôn cần được sửa đổi”
Để sửa đổi được phần mềm
Thiết kế dễ hiểu, dễ sửa đổi (thiết kế tốt)
Cài đặt bằng ngôn ngữ bậc cao
Có đầy đủ tài liệu
Có tuổi thọ cao
Tính bảo trì được
Trang 36Phần mềm phải đáng tin cậy
Đáp ứng được nhu cầu người sử dụng
Tính tin cậy
Trang 38 Giao diện nhất quán, phù hợp với trình độ của người dùng.
Có tài liệu, tiện ích trợ giúp
Quyết định thành công của sản phẩm
Tính dễ dùng
TIÊU CHÍ PHẦN MỀM TỐT (5)
Trang 39 Khó tối ưu đồng thời các thuộc tính
hiệu quả >< dễ bảo trì, dễ sử dụng
Chi phí cho tối ưu là không tuyến tính
Giá cả phải hợp lý hiệu năng
Trang 40 Nghiên cứu yêu cầu của khách hàng, chi tiết yêu cầu về phần mềm và cách đánh giá
Lập kế hoạch kiểm thử (test plan) dựa trên các rủi
ro, mức độ quan trọng, tần suất sử dụng vàxác định các yếu tổ liên quan như: phương pháp, đo lường, nguồn lực, điều kiện kiểm tra…
Tạo test cases/specs/scripts
Tiến hành test dựa trên test case và ghi báo cáo (Thành công hoặc Lỗi)
Log các lỗi tìm được vàlập báo cáo (test report)
Phân tích các yêu cầu thay đổi và cập nhật các tài liệu kiểm thử (Test plan, test cases…)
Trang 41QA (Quality Assurance – Đảm bảo chất
lượng phần mềm)
Các nhân viên QA sẽ kiểm tra chất lượng công việc trong cả quá trình sản xuất, vídụ xem xét tài liệu yêu cầu, tài liệu thiết kế hay xem xét mã nguồn Họ cũng xem xét các ý kiến phản hồi của khách hàng vàcách đội dự án xử lý vấn đề
QA thu thập thông tin của các dự án, các chỉ báo chất lượng của dự án, từ đóvẽ nên bức tranh chung
về tình hình chất lượng sản xuất của cả công ty
Công việc của QA vừa mang tính chất giám sát, vừa mang tính hỗ trợ cho hoạt động của dự án
Trang 42Quản lý dự án (Project Manager)
Thỏa mãn các mục tiêu phạm vi, thời gian, chi phí
97% sự thành công của dự án lànhờ vào PM
Trang 43TỔNG KẾT
Phần mềm có tầm quan trọng đặc biệt: tạo nên sự khác biệt của tổ chức, của hệ thống
Phát triển phần mềm là công việc phức tạp, rủi ro:
Là phần tử logic, không có độ đo trực quan, khó kiểm soát chất lượng khi phát triển
Không được định hình trước, khó dự đoán hiệu năng khi chưa có sản phẩm
mang tính thủ công, phụ thuộc vào con người
bị ảnh hưởng lớn từ môi trường => nhiều rủi ro
Cần áp dụng các phương pháp tiên tiến
Trang 44CÂU HỎI ÔN TẬP
1. Nêu tầm quan trọng của phần mềm ?
(mức độ: quốc gia, tổ chức, hệ thống, ứng dụng)
Trang 45CÂU HỎI ÔN TẬP (2)
5. Các đặc trưng của phần mềm?
6. Các thuộc tính của phần mềm kỹ nghệ tốt?
7. Khó khăn phát triển phần mềm thể hiện ở
những mặt nào (bản chất, sự thay đổi: quy
mô, môi trường)
8. Thách thức đối với phát triển phần mềm?
(nhu cầu, bảo trì, thời gian, giá cả, khả năng phần cứng)