# Bảo trì phần mềm

**Bảo trì phần mềm** (tiếng Anh *software maintenance*) bao gồm điều chỉnh các lỗi mà chưa được phát hiện trong các giai đoạn trước của vòng đời của một phần mềm, nâng cấp tính năng sử dụng và an toàn vận hành của phần mềm. Bảo trì phần mềm có thể chiếm đến 65%-75% công sức trong vòng đời của một phần mềm.

Quá trình phát triển phần mềm bao gồm rất nhiều giai đoạn: thu thập yêu cầu, phân tích, thiết kế, xây dựng, kiểm tra, triển khai và bảo trì phần mềm. Nhiệm vụ của giai đoạn bảo trì phần mềm là giữ cho phần mềm được cập nhật khi môi trường thay đổi và yêu cầu người sử dụng thay đổi.

Theo IEEE (1993), thì bảo trì phần mềm được định nghĩa là việc sửa đổi một phần mềm sau khi đã bàn giao để chỉnh lại các lỗi phát sinh, cải thiện hiệu năng của phần mềm hoặc các thuộc tính khác, hoặc làm cho phần mềm thích ứng trong một môi trường đã bị thay đổi. Bảo trì phần mềm được chia thành bốn loại:

* Sửa lại cho đúng (corrective): là việc sửa các lỗi hoặc hỏng hóc phát sinh. Các lỗi này có thể do lỗi thiết kế, lỗi logic hoặc lỗi coding sản phẩm. Ngoài ra, các lỗi cũng có thể do quá trình xử lý dữ liệu, hoặc hoạt động của hệ thống.
* Thích ứng (adaptative): là việc chỉnh sửa phần mềm cho phù hợp với môi trường đã thay đổi của sản phẩm. Môi trường ở đây có nghĩa là tất các yếu tố bên ngoài sản phẩm như quy tắc kinh doanh, luật pháp, phương thức làm việc,...
* Hoàn thiện: chỉnh sửa để đáp ứng các yêu cầu mới hoặc thay đổi của người sử dụng. Loại này tập trung vào nâng cao chức năng của hệ thống, hoặc các hoạt động tăng cường hiệu năng của hệ thống, hoặc đơn giản là cải thiện giao diện. Nguyên nhân là với một phần mềm thành công, người sử dụng sẽ bắt đầu khám phá những yêu cầu mới, ngoài yêu cầu mà họ đã đề ra ban đầu, do đó, cần cải tiến các chức năng.
* Bảo vệ (preventive): mục đích là làm hệ thống dễ dàng bảo trì hơn trong những lần tiếp theo.

## Đọc thêm

* doi:10.1109/IEEESTD.2006.235774
* Pigoski, Thomas M. (1996). *Practical Software Maintenance*. New York: John Wiley & Sons. ISBN 978-0-471-17001-3.
* Pigoski, Thomas M. *Description for Software Evolution and Maintenance (version 0.5)*. SWEBOK Knowledge Area.
* April, Alain; Abran, Alain (2008). *Software Maintenance Management*. New York: Wiley-IEEE. ISBN 978-0-470-14707-8.`{{Chú thích sách}}`: Quản lý CS1: nhiều tên: danh sách tác giả (liên kết)
* Gopalaswamy Ramesh; Ramesh Bhattiprolu (2006). *Software maintenance: effective practices for geographically distributed environments*. New Delhi: Tata McGraw-Hill. ISBN 978-0-07-048345-3.`{{Chú thích sách}}`: Quản lý CS1: nhiều tên: danh sách tác giả (liên kết)
* Grubb, Penny; Takang, Armstrong (2003). *Software Maintenance*. New Jersey: World Scientific Publishing. ISBN 978-981-238-425-6.`{{Chú thích sách}}`: Quản lý CS1: nhiều tên: danh sách tác giả (liên kết)
* Lehman, M.M.; Belady, L.A. (1985). *Program evolution: processes of software change*. London: Academic Press Inc. ISBN 0-12-442441-4.`{{Chú thích sách}}`: Quản lý CS1: nhiều tên: danh sách tác giả (liên kết)
* Page-Jones, Meilir (1980). *The Practical Guide to Structured Systems Design*. New York: Yourdon Press. ISBN 0-917072-17-0.

## Tham khảo

## Liên kết ngoài

* Paper on Software Maintenance Maturity Model (from University of Kentucky)