软件配置管理(SCM)是指通过执行版本控制、变更控制的规程,以及使用合适的配置管理软件,来保证所有配置项的完整性和可跟踪性。

软件配置管理可以应用于软件开发过程的多个方面:

一、版本管理

在软件企业里,多数情况下一个代码库(code base)就是一个产品。用户管理、权限管理、业务逻辑等一个产品所涉及的方方面面所有东西都在一个库里,不需要到其它地方去找文档、找脚本、找配置、找代码,所有的东西都在这里,只要你有这个库的访问权限,那么你就可以编译这个产品,进行调试、开发等。软件卖出去后,还需要有软件实施、培训、后续二次开发等服务可以赚钱。另外软件发布出去后,还会有很多问题需要修复。所以就需要对软件不断的升级。时间一长就会发现,只要是发布过的版本都会有客户在用。显然每个版本一个分支有利于补丁的修复。更有甚者,要为大客户建立一个独立的分支,用来支持二次开发的需求。需要同时维护多个版本。软件配置管理(SCM)是维持版本有序管理的重要手段。

二、变更管理

因为需要支持多版本的并行开发和维护,所以变更管理对软件企业就十分的重要。哪个 bug 在哪个产品的哪个版本里出现了,在哪个版本里修复了,其他版本是否进行了代码合并要有清晰的跟踪记录。所以我们经常看到项目经理和研发人员对着问题跟踪系统,过里边的问题列表,需求列表。每次开项目例会,还会展示各种图表、看各种趋势图等。

三、构建管理

只支持一个平台的软件产品,构建管理相对简单;如果需要支持不同的平台,比如软件需要支持 Windows, Linux,这个时候就要有两种构建环境。这个时候构建管理就相对复杂,要针对不同的操作系统做不同的构建脚本等。

四、发布管理

发布方式有软件分发模式和服务器直接部署模式。这两种方式的发布周期和流程有很大差别。

五、部署管理

单体软件部署相对简单,但SAAS/PAAS的部署需要复杂的层次和架构。

六、环境管理

不同类别软件产品构建环境可能涉及多平台的情况,较复杂。服务器可能托管在各种云服务上,也可能需要接入各类第三方接口服务。