ScholarGate
助手

软件配置管理

软件配置管理(SCM)是一门识别、控制和跟踪软件工件版本及变更的学科,旨在确保系统在其整个生命周期中的状态是已知且可重现的。

用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
下载幻灯片
Learn & explore
视频即将推出

Definition

软件配置管理是为了识别配置项、控制其变更、记录和报告变更状态以及验证完整性和正确性而进行的一系列活动,从而以受控、可重现的方式管理不断演进的软件。

Scope

本主题涵盖配置识别和基线;版本控制系统以及分支和合并模型;变更控制和变更控制委员会的作用;构建和发布管理;配置状态核算和审计;以及定义SCM流程的标准,例如ISO/IEC/IEEE 828。

Core questions

  • 如何识别配置项并建立基线?
  • 版本控制和分支模型如何管理并发变更?
  • 变更如何被提议、审查和批准?
  • 如何记录和审计配置的状态和完整性?

Key theories

基线和配置控制
基线是经过正式审查的配置,作为稳定的参考;对基线项的变更需经过受控的审查和批准,从而使系统保持已知且可重现的状态。
分布式版本控制和分支
Git等现代系统为每个开发人员提供完整的仓库,并支持廉价的分支和合并,从而实现并行工作和集成工作流,这些是持续集成和交付的基础。

Clinical relevance

SCM使构建可重现、变更可追溯、发布可控;没有它,团队无法可靠地重现已发布的版本、协调并发工作或审计变更内容,这对于可靠交付和DevOps自动化至关重要。

Evidence & guidelines

ISO/IEC/IEEE 828规定了配置管理流程,而SWEBOK软件配置管理知识领域为SCM活动提供了共识性参考。

History

版本控制从20世纪70年代和80年代的SCCS和RCS等早期工具,通过CVS和Subversion等集中式系统,发展到21世纪的Git等分布式系统;正式的配置管理实践从硬件和国防标准迁移到主流软件工程中。

Debates

分支策略
团队讨论诸如主干开发与长期特性分支和Git-flow等工作流;频繁集成的主干开发支持持续交付,而更重度的分支可能会隔离工作,但代价是痛苦的合并。

Key figures

  • Walter Tichy
  • Linus Torvalds
  • Marc Rochkind

Related topics

Seminal works

  • ieee828
  • chacon2014
  • swebok2014

Frequently asked questions

配置管理仅仅是版本控制吗?
不是。版本控制是一个核心工具,但SCM更广泛:它还涵盖配置识别、基线、变更控制、构建和发布管理,以及所有配置项(不仅仅是源代码)的状态核算和审计。
为什么基线很重要?
基线记录了一个已知良好的配置,可以重现和在此基础上进行构建;它为受控变更提供了稳定的参考,允许团队回滚,并且对于可重现的发布和审计至关重要。

Methods for this concept

Related concepts