软件配置管理的主要任务是什么呢?
现在大家都已经认识到了有效的软件配置管理工作对于提高团队开发效率、保障软件产品质量的重要意义,很多朋友也开始了在配置管理实施方面的一些研究,市场上我们也可以看到一些软件配置管理工具厂商针对具体配置管理工具提供的实施服务;但是,实施软件配置管理到底应该做哪些东西?团队的配置管理现状怎么评估?在哪些方面还可以进行改进?我们相信,这些问题可能正困扰着大多数研发主管和项目经理。
国外软件产业界在软件配置管理这个专题上已经进行了多年的理论和实践上的研究。
在多年经验积累的基础上,产业界总结出来一系列“最佳实践”(Best Practices),我们可以使用这些“最佳实践”来作为评估一个组织软件配置管理能力的标尺,也可以作为我们实施软件配置管理的指南。
这些“最佳实践”包括: 1、 标识需要进行存储的工件(Artifact)并保障安全存储; 2、 控制并且审计(Audit)对于工件的修改; 3、 设立并管理基线(Baseline); 4、 记录并跟踪变更请求; 5、 维护稳定、一致的工作空间; 6、 支持对于工件和控件的并发修改; 7、 尽早集成、持续集成; 8、 保证软件构建的重现能力; 9、 以控件(Component)为单位实施版本控制; 10、 使用“活动”(Activity)来组织和整合版本集。
下文将介绍前5条最佳实践。
1、标识需要进行存储的工件(Artifact)并保障安全存储 在软件开发过程中,我们会得到各种各样的产出,比如各种文档、模型、源代码以及测试脚本等,我们把这些大家劳动的成果统称为工件(Artifact)。
对于一个软件开发组织来说,这些工件就构成了组织的核心资产。
对于如现金、有价证券之类的资产,我们都会准备一个保险箱,好好地保存;对于软件资产,我们也需要相似的措施。
所以,软件配置管理工作的第一步就是建立一个安全、可靠的存储库(Repository),用于保存组织的核心软件资产。
这个库对于开发团队来说,就像是财务室里的保险箱。
因此,容错能力和高可靠性是这个库最重要的属性。
除此之外,随着组织的增长,置于库中的数据会越来越多,为保证运行效率,库的可扩展性也是非常重要的一个属性。
对于存储库来说,良好规划的备份和灾难恢复过程是必不可少的。
令人惊讶的是,很多软件组织在这方面都没有给予必要的重视,因而也给组织的发展留下了严重的隐患,一旦灾难发生,后果不堪设想。
在建立好存储库以后,需要做的工作就是确定将哪些工件置于库中。
根据实际需要,组织可能会决定只将正式文档、模型文件、源代码、发布版本等文件放入库中,而对于临时文档、编译时产生的中间文件等,则不将它们放入库中。
我们把放入库中的文件称之为配置项(Configuration Item)。
2、控制并且审计(Audit)对于工件的修改 在标识相关的工件并将它们置于存储库中以后,我们需要建立对于这些工件的修改控制机制以及审计机制。
库里的工件不是谁想修改就可以修改的。
控制机制必须保证只有拿到授权的人员才能对相关工件进行修改,而审计机制则保证修改的动作被完整地记录,也就是说,谁修改了这个工件,什么时候做的修改,为什么原因做出这个改动,以及修改了哪些地方(Who、When、Why、What)。
软件配置管理的相关职责
对于任何一个管理流程来说,保证该流程正常运转的前提条件就是要有明确的角色、职责和权限的定义。
特别是在引入了软件配置管理的工具之后,比较理想的状态就是:组织内的所有人员按照不同的角色的要求、根据系统赋予的权限来执行相应的动作。
因此,在本文所介绍的这个软件配置管理过程中主要涉及下列的角色和分工:项目经理(Project Manager,PM):项目经理是整个软件研发活动的负责人,他根据软件配置控制委员会的建议批准配置管理的各项活动并控制它们的进程。
其具体职责为以下几项:制定和修改项目的组织结构和配置管理策略;批准、发布配置管理计划;决定项目起始基线和开发里程碑;接受并审阅配置控制委员会的报告。
配置控制委员会(Configuration Control Board,CCB):负责指导和控制配置管理的各项具体活动的进行,为项目经理的决策提供建议。
其具体职责为以下几项:定制开发子系统;定制访问控制;制定常用策略;建立、更改基线的设置,审核变更申请;根据配置管理员的报告决定相应的对策。
配置管理员(Configuration Management Officer,CMO):根据配置管理计划执行各项管理任务,定期向CCB提交报告,并列席CCB的例会。
其具体职责为以下几项:软件配置管理工具的日常管理与维护;提交配置管理计划;各配置项的管理与维护;执行版本控制和变更控制方案;完成配置审计并提交报告;对开发人员进行相关的培训;识别软件开发过程中存在的问题并拟就解决方案。
系统集成员(System Integration Officer,SIO):系统集成员负责生成和管理项目的内部和外部发布版本,其具体职责为以下几项:集成修改;构建系统;完成对版本的日常维护;建立外部发布版本。
开发人员(Developer,DEV):开发人员的职责就是根据组织内确定的软件配置管理计划和相关规定,按照软件配置管理工具的使用模型来完成开发任务。
配置管理的功能有哪些?
软件配置管理工程师工作内容: 软件供应链规范、流程、工具的编写,培训与实施。
软件配置管理工具的使用。
软件项目供应链计划的制定与实施监控配置审计。
软件项目供应链报告的编写与分析。
按照项目配置识别项,创建配置管理库。
建立配置基线, 建立配置清单, 控制权限。
推进软件能力成熟度集成模型的开展。
...