本节书摘来自异步社区《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》一书中的第2章,第02-12节,作者 邱毅凌,更多章节内容可以访问云栖社区“异步社区”公众号查看。
02-12项目配置(Configuration)管理
项目配置(Project Configuration)这个名词听起来有点玄,简单的说,就是项目资产的管理。以嵌入式系统开发项目来说,当一件项目结束后,有哪些资料可以变成有用的组织资产呢?所谓组织资产就是有利于以后项目的资料,最直觉联想到的就是‘程序代码与技术文件’,除此之外,更重要的应该是‘开发轨迹’。例如:
- 项目的全貌,包含产品规格与设计规格。
- 项目原始的计划(第一版计划书),以及项目运行期间所有曾经做过的变更。
- 设计阶段的任何重大转折点、与项目运行期间技术上的重大突破。
- 软件开发期间曾经遇到哪些问题(如bug),解决的方式是什么?对应的程序代码是哪些?
- 重要软件版本或项目里程碑(项目进度表时间检查点)所代表的意义,以及该时间点项目状况的快照(Snapshot:以软件系统来说,所谓的Snapshot就是当时的版本)。
- 硬件设计与生产阶段的问题履历及解决方式。
在嵌入式系统项目中,所谓的‘开发轨迹’其实就已经包含了计划书、规格、设计文件、程序代码和问题清单(可能是bug管理server的database备份),为了将这些宝贵的资料保留下来,必须在项目运行期间做好配置管理。其实配置管理并没有想象中复杂,各位在项目中都有使用版本控制server、bug管理server,以及定时的统一备份文件等,这就是在做配置管理,只是在我管理的项目中,会更明确地指派相关工作,通常我会请系统团队的小组长帮忙,而且我个人也会随时监督。
关于配置管理最容易被忽略的就是配置管理可以在项目运行期间发挥极大的功效,可让项目成员了解自己在做什么,也能随时追溯到任意一个时间的状态,但配置管理更大的目的却是让项目技术与管理资产可以不断累积,特别是在项目结项阶段人员鸟兽散时,就有待项目主管们能够定下心来将这些信息整理与归档。
各位是否经常在从事开发工作时碰到以下问题?‘这个模块以前好像做过,但程序代码不知道在哪里’、‘这是一个REOPEN的bug,之前在某个版本是OK的,但现在怎么也调不出那个版本’、‘实在搞不懂当初为什么要这样设计,看code也看不懂,但目前仅存的设计文件居然是旧的’。如果这是你们项目运行的常事,应该不难想象这样的‘常事’到底浪费了多少企业宝贵的研发资源。