1.1. MỘT SỐ KHÁI NIỆM CƠ BẢN
[b]Phần mềm (software)[/b]: là một tập hợp các câu lệnh được viết bằng một hoặc nhiều ngôn ngữ lập trình, nhằm tự động thực hiện một số các chức năng giải quyết một bài toán nào đó.
[b]Công nghệ (engineering):[/b] là cách sử dụng các công cụ, các kỹ thuật trong cách giải quyết một vấn đề nào đó.
Công nghệ phần mềm (software engineering): là việc áp dụng các công nghệ một cách hệ thống trong việc phát triển các ứng dụng dựa trên máy tính.
Kỹ sư phần mềm (software engineer): là một người biết cách áp dụng rộng rãi những kiến thức về cách phát triển ứng dụng vào việc tổ chức phát triển một cách có hệ thống các ứng dụng.
1.2. Vai trò của 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.
- 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.
1.4. Các đặc trưng của 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
* 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”
* 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.
* 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 để
- Sản phầm phần mềm
+ Nhiều người viết, nhiều người sử dụng
+ Độ phức tạp cao, đảm bảo đồng bộ.
1.5. Phân loại phần mềm
Có thể phân loại các phần mềm theo một số cách:
- Theo mức độ hoàn thiện của phần mềm được xây dựng:
- Theo vai trò - chức năng phần mềm thực hiện được:
- Theo lĩnh vực hoạt động:
1.6. Ba yếu tố chủ chốt trong Kỹ nghệ phần mềm.
KNPM là một quá trình gồm một loạt các bước chứa đựng 3 yếu tố chủ chốt:
- Phương pháp (Method)
- Công cụ (Tools)
- Thủ tục (Procedure)
Các yếu tố này giúp người quản lý kiểm soát được tiến trình phát triển phần mềm và cung cấp cho người kỹ sư phần mềm một nền tảng để xây dựng phần mềm chất lượng cao theo một cách thức hiệu quả
1.7. Tiến trình phần mềm
1.7.1. Khái niệm tiến trình phần mềm
- Là tập hợp các hoạt động, phương pháp được sử dụng trong quá trình xây dựng và đánh giá một phần mềm.
- Các tổ chức khác nhau có những tiến trình khác nhau.
- Các hoạt động chung nhất của tiến trình phần mềm bao gồm:
+ Tìm hiểu và xác định yêu cầu: Xác định các yêu cầu về phần mềm, yêu cầu về hệ thống.
+ Đặc tả: Đặc tả những gì hệ thống phải làm và các ràng buộc trong quá trình xây dựng hệ thống.
+ Phát triển: Thiết kế, xây dựng hệ thống phần mềm.
+ Kiểm thử: Kiểm tra xem phần mềm đã thoả mãn yêu cầu của khách hàng hay chưa.
+ Nâng cấp và bảo trì: Điều chỉnh và thay đổi phần mềm tương ứng với thay đổi yêu cầu.