Quản lý cấu hình phần mềm
Quản lý cấu hình phần mềm (SCM) là một lĩnh vực nhằm xác định, kiểm soát và theo dõi các phiên bản cũng như thay đổi của các thành phần phần mềm, đảm bảo trạng thái của một hệ thống được biết rõ và có thể tái tạo trong suốt vòng đời của nó.
Definition
Quản lý cấu hình phần mềm là tập hợp các hoạt động nhằm xác định các mục cấu hình, kiểm soát các thay đổi đối với chúng, ghi lại và báo cáo trạng thái thay đổi, cũng như xác minh tính đầy đủ và chính xác, để phần mềm đang phát triển được quản lý một cách có kiểm soát và có thể tái tạo.
Scope
Chủ đề này bao gồm việc nhận dạng cấu hình và các đường cơ sở; các hệ thống kiểm soát phiên bản cùng với các mô hình phân nhánh và hợp nhất; kiểm soát thay đổi và vai trò của hội đồng kiểm soát thay đổi; quản lý xây dựng và phát hành; kế toán trạng thái cấu hình và kiểm toán; và các tiêu chuẩn như ISO/IEC/IEEE 828 định nghĩa các quy trình SCM.
Core questions
- Các mục cấu hình được xác định và đặt đường cơ sở như thế nào?
- Kiểm soát phiên bản và các mô hình phân nhánh quản lý thay đổi đồng thời như thế nào?
- Các thay đổi được đề xuất, xem xét và phê duyệt như thế nào?
- Trạng thái và tính toàn vẹn của các cấu hình được ghi lại và kiểm toán như thế nào?
Key theories
- Đường cơ sở và kiểm soát cấu hình
- Đường cơ sở là một cấu hình được xem xét chính thức, đóng vai trò là một tham chiếu ổn định; các thay đổi đối với các mục đã được đặt đường cơ sở phải trải qua quá trình xem xét và phê duyệt có kiểm soát, giữ cho hệ thống ở trạng thái đã biết và có thể tái tạo.
- Kiểm soát phiên bản phân tán và phân nhánh
- Các hệ thống hiện đại như Git cung cấp cho mỗi nhà phát triển một kho lưu trữ đầy đủ và hỗ trợ việc phân nhánh và hợp nhất dễ dàng, cho phép làm việc song song và các quy trình tích hợp làm nền tảng cho tích hợp và phân phối liên tục.
Clinical relevance
SCM giúp các bản dựng có thể tái tạo, các thay đổi có thể truy vết và các bản phát hành có thể kiểm soát; nếu không có SCM, các nhóm không thể tái tạo một phiên bản đã phát hành một cách đáng tin cậy, phối hợp công việc đồng thời hoặc kiểm toán những gì đã thay đổi, điều này là nền tảng cho việc phân phối đáng tin cậy và tự động hóa DevOps.
Evidence & guidelines
ISO/IEC/IEEE 828 quy định các quy trình quản lý cấu hình, và lĩnh vực kiến thức Quản lý cấu hình phần mềm của SWEBOK cung cấp một tài liệu tham khảo đồng thuận cho các hoạt động SCM.
History
Kiểm soát phiên bản đã phát triển từ các công cụ ban đầu như SCCS và RCS vào những năm 1970 và 1980, thông qua các hệ thống tập trung như CVS và Subversion, đến các hệ thống phân tán như Git vào những năm 2000; thực tiễn quản lý cấu hình chính thức đã chuyển từ các tiêu chuẩn phần cứng và quốc phòng sang kỹ thuật phần mềm chính thống.
Debates
- Các chiến lược phân nhánh
- Các nhóm tranh luận về các quy trình làm việc như phát triển dựa trên nhánh chính (trunk-based development) so với các nhánh tính năng tồn tại lâu dài và Git-flow; phát triển dựa trên nhánh chính với tích hợp thường xuyên hỗ trợ phân phối liên tục, trong khi việc phân nhánh nhiều hơn có thể cô lập công việc nhưng phải trả giá bằng việc hợp nhất khó khăn.
Key figures
- Walter Tichy
- Linus Torvalds
- Marc Rochkind
Related topics
Seminal works
- ieee828
- chacon2014
- swebok2014
Frequently asked questions
- Quản lý cấu hình có phải chỉ là kiểm soát phiên bản không?
- Không. Kiểm soát phiên bản là một công cụ trung tâm, nhưng SCM rộng hơn: nó cũng bao gồm nhận dạng cấu hình, đường cơ sở, kiểm soát thay đổi, quản lý xây dựng và phát hành, và kế toán trạng thái cũng như kiểm toán tất cả các mục cấu hình, không chỉ mã nguồn.
- Tại sao các đường cơ sở lại quan trọng?
- Đường cơ sở ghi lại một cấu hình tốt đã biết có thể được tái tạo và xây dựng dựa trên đó; nó cung cấp một tham chiếu ổn định cho các thay đổi được kiểm soát, cho phép các nhóm quay lại phiên bản trước, và rất cần thiết cho các bản phát hành và kiểm toán có thể tái tạo.