← Về danh sách
Kỹ nghệ & Quản lý phần mềm
#형상관리#SCM#기준선#Baseline#변경관리#134회#125회
Cập nhật lần cuối · 2026-09-26

Quản lý cấu hình (Configuration Management) và đường cơ sở (Baseline)

1. Tổng quan

A. Định nghĩa

Là hoạt động quản lý duy trì tính toàn vẹn (Integrity) và tính nhất quán (Consistency) bằng cách nhận diện·kiểm soát·ghi nhận·kiểm toán sự thay đổi của các sản phẩm bàn giao (hạng mục cấu hình, Configuration Item) phát sinh trong quá trình phát triển·vận hành phần mềm, trong đó thay đổi được kiểm soát dựa trên đường cơ sở (Baseline) đã được thống nhất chính thức.

Quản lý cấu hình thường bị hiểu lầm là "dùng công cụ quản lý phiên bản", nhưng bản chất là một kỷ luật quản lý (management discipline) kiểm soát thay đổi một cách có tổ chức. Công cụ chỉ là phương tiện tự động hóa điều đó; thực chất của quản lý cấu hình nằm ở cấu trúc thủ tục và trách nhiệm: "lấy cái gì làm đối tượng quản lý, thay đổi nó như thế nào với sự phê duyệt của ai, và lưu lịch sử thay đổi đó ra sao". Việc các mô hình quy trình chính như CMMI·ISO/IEC 12207·PMBOK coi quản lý cấu hình là cốt lõi của quy trình hỗ trợ (supporting process) cũng là vì quản lý cấu hình là hoạt động nền tảng xuyên suốt mọi giai đoạn phát triển·chất lượng·bảo trì.

B. Bối cảnh ra đời và sự cần thiết

Phần mềm có vô số sản phẩm bàn giao như mã nguồn·tài liệu thiết kế·đặc tả yêu cầu·hướng dẫn sử dụng·ca kiểm thử liên tục thay đổi qua tay nhiều người. Nếu mỗi người tự sửa mà không có kiểm soát thì sẽ phát sinh hỗn loạn phiên bản, không biết "phiên bản nào là thật", và thay đổi của người này ghi đè (overwrite) công việc của người khác khiến chất lượng sụp đổ. Hiện tượng này càng trầm trọng theo cấp số nhân khi quy mô lớn dần, dẫn tới địa ngục tích hợp (integration hell) khi ngay trước phát hành "đoạn mã vốn build được bỗng dưng hỏng".

Quản lý cấu hình giải quyết vấn đề này bằng cách "không cấm thay đổi, mà chỉ cho phép qua thủ tục có kiểm soát". Bản thân thay đổi là thuộc tính bản chất của phần mềm nên không thể và cũng không nên ngăn cản. Thay vào đó, nó quy định để thay đổi diễn ra theo phán đoán của ai, qua phân tích ảnh hưởng nào, kèm lịch sử gì. Qua đó ① truy vết được lịch sử thay đổi (kiểm toán·truy xuất nguồn gốc), ② ngăn xung đột khi nhiều nhà phát triển làm việc đồng thời, ③ có thể khôi phục bất cứ lúc nào về trạng thái tại một thời điểm cụ thể (ví dụ phiên bản phát hành tháng trước), và ④ tái hiện chính xác (reproducibility) tổ hợp mã nguồn·tài liệu·thư viện nào đang thực sự được triển khai ở môi trường vận hành.

C. Đặc điểm

Đặc điểm cốt lõi của quản lý cấu hình gồm ba điều: kiểm soát lấy đường cơ sở làm trung tâm, bảo đảm khả năng truy vết (traceability) và gán trách nhiệm giải trình (accountability). Đặt một điểm cố định là đường cơ sở và chỉ kiểm soát các thay đổi sau đó nên gánh nặng quản lý không tăng vô hạn; lưu các mắt xích yêu cầu→thiết kế→mã→kiểm thử nên có thể truy ngược "đoạn mã này tồn tại vì yêu cầu nào"; và mỗi thay đổi đều lưu người phê duyệt và lý do nên khi có sự cố thì trách nhiệm được làm rõ.

2. Quy trình quản lý cấu hình (cấu trúc tổng thể)

Quản lý cấu hình diễn ra theo vòng tuần hoàn "xác định quản lý cái gì (nhận diện)→kiểm soát thay đổi (kiểm soát)→ghi nhận trạng thái (ghi nhận trạng thái)→kiểm chứng có khớp với chuẩn không (kiểm toán)". Bốn hoạt động này không phải các bước một lần mà là vòng lặp tuần hoàn lặp lại trong suốt vòng đời dự án, và kết quả kiểm toán lại được phản ánh vào nhận diện để cập nhật đối tượng quản lý và chuẩn.

flowchart LR
  A[Nhận diện cấu hình] --> B[Kiểm soát cấu hình]
  B --> C[Ghi nhận trạng thái cấu hình]
  C --> D[Kiểm toán cấu hình]
  D -. Phản hồi .-> A
  subgraph BLG["Đường cơ sở"]
    BL["Xác lập/cập nhật Baseline"]
  end
  B --> BL
  BL --> C

Như hình trên cho thấy, chỉ những thay đổi vượt qua hoạt động kiểm soát cấu hình mới được nâng thành đường cơ sở mới, trạng thái đó được ghi nhận, và qua kiểm toán định kỳ đường cơ sở được kiểm chứng xem có khớp với yêu cầu thực tế không. Khi kiểm toán phát hiện bất nhất, nó được phản hồi lại giai đoạn nhận diện để bổ sung chính danh mục đối tượng quản lý hoặc quy tắc đặt tên. Do tính tuần hoàn này, quản lý cấu hình không phải "công việc thiết lập một lần là xong" mà gần giống một động cơ tiếp tục chạy chừng nào dự án còn sống.

3. Bốn hoạt động chính của quản lý cấu hình

Mỗi hoạt động trả lời một câu hỏi khác nhau của quản lý cấu hình. Nhận diện xử lý "cái gì", kiểm soát xử lý "thay đổi thế nào", ghi nhận trạng thái xử lý "hiện đang ở trạng thái nào", kiểm toán xử lý "đã làm đúng chưa".

Hoạt động Câu hỏi cốt lõi Mô tả
Nhận diện cấu hình Quản lý cái gì Nhận diện·đặt tên·gán phiên bản cho hạng mục cấu hình (mã·tài liệu·thư viện)
Kiểm soát cấu hình Thay đổi thế nào CR → phân tích ảnh hưởng → CCB phê duyệt → áp dụng
Ghi nhận trạng thái cấu hình Hiện ở trạng thái nào Ghi nhận·báo cáo lịch sử thay đổi·trạng thái hiện tại
Kiểm toán cấu hình Đã làm đúng chưa Kiểm toán chức năng (FCA)·vật lý (PCA) xem đường cơ sở có khớp yêu cầu không

A. Nhận diện cấu hình (Configuration Identification)

Nhận diện cấu hình là hoạt động "xác định đối tượng cần quản lý và gắn nhãn tên". Nếu lấy mọi sản phẩm bàn giao làm hạng mục cấu hình thì chi phí quản lý bùng nổ, nên cần chọn lọc những thứ có khả năng thay đổi cao và ảnh hưởng lớn tới sản phẩm khác (đặc tả yêu cầu, thiết kế kiến trúc, mã nguồn cốt lõi, đặc tả giao diện, v.v.) để chỉ định làm hạng mục cấu hình.

Cốt lõi thực tiễn của nhận diện là quy tắc đặt tên và hệ thống phiên bản. Ví dụ, dùng Semantic Versioning (MAJOR.MINOR.PATCH) thì chỉ với con số 2.3.1 đã biết ngay "đó là thay đổi lớn phá vỡ tương thích ngược (MAJOR), bổ sung chức năng (MINOR), hay sửa lỗi (PATCH)". Như vậy nhận diện không chỉ là đánh số mà là xây dựng hệ tọa độ làm chỗ dựa cho toàn bộ quá trình kiểm soát·truy vết về sau.

Nếu nhận diện yếu kém thì toàn bộ các hoạt động sau bị lung lay. Hạng mục bị bỏ sót khỏi đối tượng quản lý sẽ bị thay đổi lén lút mà không ai kiểm soát (shadow change), và nếu đặt tên không nhất quán thì cùng một tệp bị gọi bằng nhiều tên, lịch sử bị rẽ nhánh. Vì vậy việc chốt danh mục hạng mục cấu hình và quy tắc đặt tên ngay đầu dự án là cửa ải đầu tiên quyết định thành bại của quản lý cấu hình.

B. Kiểm soát cấu hình (Configuration Control)

Kiểm soát cấu hình là cốt lõi thực chất của quản lý cấu hình. Khi có yêu cầu thay đổi (CR, Change Request), không áp dụng ngay mà chỉ áp dụng sau khi phân tích ảnh hưởng (Impact Analysis) và được CCB (Ban kiểm soát cấu hình, Configuration Control Board) phê duyệt. Nhờ có cửa ải này mà các thay đổi tùy tiện bị lọc bỏ và trách nhiệm của thay đổi được lưu lại.

Phân tích ảnh hưởng đặc biệt quan trọng. Một thay đổi bề ngoài có vẻ nhỏ nhưng lan tỏa dây chuyền tới các module·tài liệu·kiểm thử khác tham chiếu hạng mục đó. Ví dụ chỉ đổi chữ ký một hàm của thư viện dùng chung, hàng chục module gọi nó sẽ bị ảnh hưởng. Phân tích ảnh hưởng nắm trước "khi áp dụng thay đổi này thì phải sửa cùng những gì" để phòng ngừa sụp đổ tính nhất quán do thay đổi cục bộ.

CCB là cơ quan ra quyết định phán đoán tổng hợp chi phí·rủi ro·lợi ích của thay đổi. Có thể có đường phê duyệt rút gọn (emergency CR) cho trường hợp cần tốc độ như bản vá bảo mật khẩn cấp, nhưng nguyên tắc là "không thay đổi đường cơ sở khi chưa có phê duyệt của chủ thể có trách nhiệm". Chỉ khi nguyên tắc này được tuân thủ thì mới luôn trả lời được câu hỏi "vì sao đoạn mã này bị thay đổi như vậy".

C. Ghi nhận trạng thái cấu hình (Configuration Status Accounting)

Ghi nhận trạng thái là hoạt động ghi và báo cáo "hiện mỗi hạng mục cấu hình là phiên bản nào, thay đổi nào đang tiến hành, cái gì đã được phê duyệt·bác bỏ". Nó theo dõi trạng thái trong toàn bộ quá trình tiếp nhận-xem xét-phê duyệt-áp dụng-kiểm chứng của yêu cầu thay đổi, để người quản lý và nhà phát triển có thể xem ảnh chụp hiện tại của cấu hình bất cứ lúc nào.

Sản phẩm của hoạt động này là báo cáo trạng thái cấu hình, sổ lịch sử thay đổi, ghi chú phát hành theo phiên bản, v.v. Trong thực tế, hệ thống theo dõi vấn đề (Jira, v.v.) được liên kết với quản lý phiên bản (Git) để tự động ghi nhận commit gắn với yêu cầu thay đổi nào. Ghi nhận trạng thái có chính xác thì mới kiểm toán được, và khi có sự cố mới truy ngược được "vấn đề xuất hiện khi nào, sau thay đổi nào".

D. Kiểm toán cấu hình (Configuration Audit)

Kiểm toán là hoạt động kiểm chứng "cái đã làm ra có khớp với cái đã hứa không", gồm hai loại. Kiểm toán chức năng (FCA, Functional Configuration Audit) xác nhận sản phẩm có hoạt động đúng yêu cầu·đặc tả không, còn kiểm toán vật lý (PCA, Physical Configuration Audit) xác nhận thành phần của sản phẩm (tài liệu·mã·phương tiện) có đầy đủ đúng danh mục không.

Kiểm toán được thực hiện ngay trước khi xác lập đường cơ sở hoặc tại thời điểm bàn giao cuối cùng, kiểm tra lần cuối xem các thay đổi được kiểm soát đến lúc đó có thực sự duy trì tính toàn vẹn không. Khi kiểm toán phát hiện bất nhất thì có hành động khắc phục và kết quả được phản hồi vào các hoạt động nhận diện·kiểm soát. Tức là kiểm toán đóng vai trò cổng chất lượng của vòng tuần hoàn quản lý cấu hình.

Ví dụ khi có yêu cầu sửa lỗi trong vận hành, nhà phát triển không tùy tiện vá mà đăng ký CR, phân tích ảnh hưởng của thay đổi tới các module khác, được CCB phê duyệt rồi mới áp dụng, ghi lại lịch sử, và xác nhận cuối cùng tính nhất quán bằng kiểm toán trước khi phát hành.

4. Các loại đường cơ sở (Baseline)

Đường cơ sở: cấu hình đã được xem xét·thống nhất chính thức và xác lập tại một thời điểm cụ thể, là phiên bản chuẩn mà mọi thay đổi sau đó bắt buộc phải qua thủ tục kiểm soát (CCB).

Lý do thiết lập đường cơ sở tại mỗi thời điểm chính của vòng đời phát triển là để "đóng băng (freeze)" các sản phẩm tính đến lúc đó làm chuẩn ổn định, giúp công việc về sau không bị lung lay. Nếu không có đường cơ sở, mọi sản phẩm luôn biến động, không biết phải kiểm chứng·kiểm soát dựa trên cái gì tại thời điểm nào. Đường cơ sở vạch ranh giới "đến đây đã xác lập, thay đổi sau đó là đối tượng kiểm soát", làm cho phạm vi quản lý trở nên hữu hạn.

Phát triển càng tiến triển thì càng cụ thể hóa theo thứ tự yêu cầu→thiết kế→sản phẩm, nên đường cơ sở cũng được thiết lập thành ba loại tương ứng các giai đoạn đó.

Đường cơ sở Thời điểm thiết lập Nội dung xác lập
Đường cơ sở chức năng (Functional) Hoàn tất phân tích yêu cầu Đặc tả yêu cầu hệ thống (SRS)
Đường cơ sở phân bổ (Allocated) Hoàn tất thiết kế Đặc tả thiết kế phân bổ yêu cầu cho các thành phần
Đường cơ sở sản phẩm (Product) Hoàn tất phát triển·kiểm thử Cấu hình sản phẩm bàn giao cuối cùng (mã·hướng dẫn)

Đường cơ sở chức năng cố định "làm cái gì", đường cơ sở phân bổ cố định "chia ra thiết kế thế nào", đường cơ sở sản phẩm cố định "kết quả thực sự làm ra". Đường cơ sở sau được kiểm chứng (truy vết) dựa trên đường cơ sở trước, nên tính nhất quán được duy trì từ yêu cầu tới sản phẩm. Ví dụ, nếu mã trong đường cơ sở sản phẩm lệch khỏi thiết kế của đường cơ sở phân bổ thì bị lọc ra khi kiểm toán, và nếu đường cơ sở phân bổ bỏ sót yêu cầu của đường cơ sở chức năng thì lộ ra trong ma trận truy vết yêu cầu. Như vậy các đường cơ sở nối với nhau như một chuỗi xích, ngăn "mã không có yêu cầu, yêu cầu không có mã".

5. Tổ chức·công cụ quản lý cấu hình và luồng kiểm soát thay đổi

Quản lý cấu hình là một khái niệm nhưng vận hành thực tế được hiện thực bằng tổ chức (CCB) và công cụ. Dưới đây là luồng chi tiết một yêu cầu thay đổi qua kiểm soát của CCB, được phản ánh vào đường cơ sở và tiếp tục tới triển khai.

sequenceDiagram
  participant Dev as Nhà phát triển
  participant CM as Người quản lý cấu hình
  participant CCB as CCB
  participant Repo as Kho lưu trữ/đường cơ sở
  Dev->>CM: Nộp yêu cầu thay đổi (CR)
  CM->>CM: Thực hiện phân tích ảnh hưởng
  CM->>CCB: Yêu cầu thẩm định
  CCB-->>CM: Phê duyệt hoặc bác bỏ
  CM->>Repo: Nếu duyệt thì áp dụng thay đổi·cập nhật đường cơ sở
  Repo->>Repo: Build·triển khai CI/CD
  Repo-->>CM: Ghi nhận trạng thái·ghi chú phát hành

Công cụ tự động hóa luồng này. Liên kết quản lý phiên bản·theo dõi vấn đề·CI/CD thì thay đổi mã được gắn với issue (yêu cầu thay đổi) và được truy vết tới tận build·triển khai tự động, tối đa hóa khả năng quan sát cấu hình. Ví dụ, khi nhà phát triển đưa số issue vào commit message thì tự động liên kết với CR tương ứng trên Jira, khi merge thì Jenkins/GitHub Actions chạy build·kiểm thử và chỉ triển khai khi vượt qua, và kết quả được tự động tổng hợp thành ghi chú phát hành.

Phân loại Ví dụ
Quản lý phiên bản Git, SVN
Quản lý vấn đề·thay đổi Jira, Redmine
CI/CD·phát hành Jenkins, GitHub Actions
Cấu hình hạ tầng Terraform, Ansible (IaC)

6. Nâng cao: Mở rộng của quản lý cấu hình — DevOps·IaC·SBOM·toàn vẹn chuỗi cung ứng

Nếu quản lý cấu hình truyền thống lấy "mã nguồn và tài liệu" làm đối tượng, thì quản lý cấu hình thời đại đám mây·container đang mở rộng sang đối tượng rộng hơn nhiều. Điều này thể hiện qua xu hướng các đề thi Kỹ sư chuyên nghiệp gần đây không hỏi riêng SCM mà hỏi gắn với DevOps·SBOM·bảo mật chuỗi cung ứng.

Thứ nhất, với IaC (Infrastructure as Code), bản thân hạ tầng trở thành đối tượng quản lý cấu hình. Khi khai báo máy chủ·mạng vốn trước đây cấu hình thủ công bằng mã Terraform·Ansible, thay đổi hạ tầng cũng có thể quản lý phiên bản·review·rollback như thay đổi mã. Việc có thể tái hiện bằng mã "máy chủ hiện đang ở trạng thái nào" là một bước tiến lớn.

Thứ hai, GitOps là cách áp dụng nguyên tắc quản lý cấu hình vào vận hành triển khai. Lấy kho Git làm "nguồn chân lý duy nhất (Single Source of Truth)", khai báo trạng thái mong muốn (desired state) của môi trường vận hành trong Git, và công cụ như Argo CD tự động đồng bộ trạng thái thực tế với khai báo trong Git. Mọi lần triển khai đều được lưu thành commit Git, nên khả năng truy vết·rollback của quản lý cấu hình được mở rộng tới cả việc triển khai.

Thứ ba, SBOM (Software Bill of Materials) và toàn vẹn chuỗi cung ứng đã nổi lên. Phần mềm hiện đại được xây trên các phụ thuộc mã nguồn mở khổng lồ, nên nếu không quản lý "trong sản phẩm của ta có thành phần nào ở phiên bản nào" thì khi xảy ra lỗ hổng như Log4Shell (2021) ngay cả phạm vi ảnh hưởng cũng khó nắm bắt. SBOM là việc quản lý danh mục thành phần này theo định dạng chuẩn như SPDX·CycloneDX, và nhân sắc lệnh hành pháp của Mỹ (EO 14028) đã trở thành yêu cầu gần như bắt buộc. Tức là quản lý cấu hình đang mở rộng theo hướng chịu trách nhiệm không chỉ về "cái ta làm ra" mà cả tính toàn vẹn của "cái ta lấy về dùng".

7. Các lưu ý và hàm ý

  • Liên kết tự động hóa (tích hợp DevOps): hướng hiện đại là tích hợp công cụ quản lý cấu hình với quản lý phiên bản·theo dõi vấn đề·CI/CD để toàn bộ quá trình thay đổi-build-triển khai có thể truy vết. Tuy nhiên tự động hóa không thay thế phán đoán của CCB, mà phải thiết kế thành kiểm soát dựa trên rủi ro — tự động phê duyệt thay đổi rủi ro thấp và chỉ gửi thay đổi rủi ro cao cho con người thẩm định — thì tốc độ và kiểm soát mới hài hòa.
  • Bảo đảm khả năng quan sát·trách nhiệm giải trình: bản chất của kiểm soát thay đổi qua CCB là lưu lại "ai·vì sao·đã thay đổi gì" để bảo đảm khả năng quan sát và trách nhiệm của thay đổi. Chỉ đưa công cụ vào mà không có kỷ luật thủ tục này thì quản lý cấu hình trở nên hình thức.
  • Mở rộng sang chuỗi cung ứng (SBOM): vì phải quản lý cả phụ thuộc mã nguồn mở, quản lý cấu hình đang mở rộng tới toàn vẹn chuỗi cung ứng thông qua SBOM (SPDX·CycloneDX) — danh mục thành phần — và quản lý phát hành. Đây là nền tảng cho ứng phó lỗ hổng·tuân thủ giấy phép.
  • Cấu hình hóa cả hạ tầng·môi trường (IaC/GitOps): khai báo·kiểm soát bằng mã không chỉ mã nguồn mà cả hạ tầng·trạng thái triển khai, làm cho "toàn bộ hệ thống tại một thời điểm cụ thể có thể tái hiện" là cốt lõi của độ tin cậy·khả năng phục hồi.
  • Liên kết với mức độ trưởng thành quy trình: quản lý cấu hình được đánh giá là quy trình hỗ trợ bắt buộc trong các mô hình trưởng thành như CMMI, nên phải được xác lập cùng quy trình chuẩn·định nghĩa vai trò ở cấp tổ chức thì mới bền vững.

Tài liệu tham khảo


Tóm tắt một câu: Quản lý cấu hình chỉ cho phép thay đổi sản phẩm bàn giao qua thủ tục có kiểm soát thông qua các hoạt động nhận diện→kiểm soát (CCB)→ghi nhận trạng thái→kiểm toán, cố định đường cơ sở chức năng·phân bổ·sản phẩm theo từng thời điểm để bảo đảm toàn vẹn·khả năng truy vết, và gần đây đối tượng của nó đang mở rộng mạnh sang IaC·GitOps·SBOM·toàn vẹn chuỗi cung ứng.