也谈软件项目配置管理(1)

    这是自己思考项目管理过程写的第一篇文章,我选择了和自己的工作息息相关的“配置管理”的话题,但由于项目本身的限制,我对配置管理的某些方面仍了解得不够深入,文章的内容比较简单,所以内容主要还是用于自己回顾。我希望通过结合自己实际项目工作内容并且搜集相关资料的方式来加强自己对项目管理工作的认识。

1、配置管理的作用

(1)标识变更; ——记录变更的操作人、时间、变更原因、变更方式等等。
(2)控制变更; ——防止不恰当的、违背批准的变更被纳入。
(3)确保变更正确地实现;——对已批准通过的变更进行跟踪、验证。
(4)向其他有关的人员报告变更。——防止与其他干系人对项目的理解产生分歧。

2、没有配置管理的后果
(1)变更无法追溯;
(2)版本产生混乱;
(3)提出的问题不能确保得到解决;
(4)可能造成项目无法通过验收。
3、配置项的内容
①与合同、过程、计划和产品有关的文档和资料;  http://www.cnitpm.com/pm/10692.html
②源代码、目标代码和可执行代码;
③相关产品,包括软件工具、库内的可重用软件、外购软件及顾客提供的软件等。
④数据
4、版本管理与配置管理的关系
    版本管理是配置管理的一种技术手段,也是其核心功能。版本管理实现了:
①统一的代码备份
    如果没有版本管理工具,只能对配置项手工分类和命名进行管理,例如“终稿”、“绝不修改版”、“绝不修改版2”,这样的版本演进是很不清晰直观的。版本管理工具统一用递增的版本号进行标识,所有人都可以随时可以检出/恢复/保存任一配置项或全部配置项的任何版本。
    例如,小王尝试修改一处代码,初始版本号是1002,在提交多次版本以后发现无法实现预期功能,现在版本号是1012。小王想回到最初的版本重新修改,只需要恢复1002版本(为什么知道是1002版本?因为有comment),就可以重新修改了。如果小王的修改没有提交,更简单,只需要撤消(还原)就可以了。
②协同开发
    如果没有集中的版本管理,也许代码只能轮流修改——这大大地浪费了程序员的时间。有了版本管理工具以后,需要对代码进行修改的人只要检出一份副本到自己的电脑,然后就可以放心地修改了。
    如果程序员A和程序员B正好同时在修改一个文件,那不是产生冲突了吗?不用担心,版本管理工具肯定考虑了这个问题。首先,组内的沟通可以一定程度地避免这个问题;其次,锁定方式可以保证代码只能被一个人检出(但一般认为“锁定-修改-解锁”方式的版本管理落后于“复制-修改-合并”)。再者,如果两人修改的代码没有直接冲突(例如一个人修改了第86行,一个人修改了第522行),版本管理工具可以自动合并。最严重的情况,两个人修改的代码直接冲突了,那只能靠沟通解决了——谁叫你们改代码不事先分配好任务或者打好招呼呢。
③与缺陷/变更管理工具直接集成(例如ClearCase与ClearQuest)
    当缺陷/变更管理工具与版本管理工具直接集成的时候,对变更的控制会更方便——没有配置管理员审批通过的CD,开发人员无法对代码进行修改。个人认为流程审批虽然增加了时间消耗,比如已经完成编码的版本在部署后再次发现问题,则需要重新提BUG、审批、分配CD、分配活动,但是对缺陷的控制更加精准了。配置管理员能够清楚地了解目前版本中存在的问题;开发人员为了减少流程上的反复,也会更加认真地做单元测试和集成测试。