某信息系统开发公司承担了某企业的ERP系统开发项目,由项目经理老杨带领着一支6人的技术团队负责开发。由于工期短、任务重,老杨向公司申请增加人员,公司招聘了2名应届大学毕业生小陈和小王补充到该团队中。老杨安排编程能力强的小陈与技术骨干老张共同开发某些程序模块,而安排编程技术弱的小王负责版本控制工作。在项目开发初期,小陈由于不熟悉企业的业务需求,需要经常更改他和老张共同编写的源代码文件,但是他不知道哪个是最新版本,也不知道老张最近改动了哪些地方。一次由于小王的计算机中了病毒,造成部分程序和文档丢失,项目组不得不连续一周加班进行重新返工。此后,老杨吸取教训,要求小王每天下班前把所有最新版本程序和文档备份到2台不同的服务器上。一段时间后,项目组在模块联调时发现一个基础功能模块存在重大BUG,需要调取之前的备份进行重新开发。可是小王发现,这样一来,这个备份版本之后的所有备份版本要么失去意义,要么就必须全部进行相应的修改。项目工期过半,团队中的小李突然离职,老杨在他走后发现找不到小李所负责模块的最新版本源代码了,只好安排其他人员对该模块进行重新开发。
整个项目在经历了重重困难,进度延误了2个月后终于勉强上线试运行。可是很快用户就反应系统无法正常工作。老杨带领所有团队成员在现场花费了1天时间终于找出问题所在,原来是2台备份服务器上的版本号出现混乱,将测试版本中的程序打包到了发布版中。
【问题一】(5分)
在(1)~(5)中填写恰当内容(从候选答案中选择一个正确选项,将该选项编号填入答题纸对应栏内)。
为了控制变更,软件配置管理中引入了__(1)__这一概念。根据这个定义,在软件的开发流程中把所有需加以控制的配置项分为两类,其中,__(2)__配置项包括项目的各类计划和报告等。配置项应该按照一定的目录结构保存到__(3)__中。所有配置项的操作权限由__(4)__进行严格管理,其中__(5)__配置项向软件开发人员开放读取的权限。
(1)~(5)供选择的答案:
A.版本 B.基线 C.配置项
D.非基线 E.受控库 F.静态库
G.配置库 H.CMO I.PM J.CCB
【问题二】(4分)
结合案例,请分析为什么要进行配置项的版本控制?
【问题三】(5分)
简述配置项的版本控制流程。
【问题四】(8分)
针对该项目在配置管理方面存在的问题,结合你的项目管理经验,为老杨提出一些改进措施。
从本案例提出的四个问题,我们很容易判断出:该案例分析主要考查的是项目的配置管理。“案例描述及问题”中画“”的文字是该项目已经出现的问题:即进度延误了2个月、用户反应系统无法正常工作、将测试版本中的程序打包到了发布版中。根据这些问题和“案例描述及问题”中画“”的文字并结合我们的项目管理经验,我们可以推断出:选用了没有配置管理经验的大学毕业生小王担任配置管理员(这点从“公司招聘了2名应届大学毕业生小陈和小王补充到该团队中。老杨安排编程能力强的小陈与技术骨干老张共同开发某些程序模块,而安排编程技术弱的小王负责版本控制工作”可以推导出);大学毕业生小陈不懂业务且缺乏必要的培训(这点从“小陈由于不熟悉企业的业务需求,需要经常更改他和老张共同编写的源代码文件”可以推导出);项目缺乏必要的配置管理工具(这点从“他不知道哪个是最新版本,也不知道老张最近改动了哪些地方”可以推导出);配置项的存储和管理不到位导致重要版本丢失(这点从“一次由于小王的计算机中了病毒,造成部分程序和文档丢失,项目组不得不连续一周加班进行重新返工”和“团队中的小李突然离职,老杨在他走后发现找不到小李所负责模块的最新版本源代码”可以推导出);没有做配置管理规划,缺少完整的配置管理方案;没有配置管理委员会(这两点从“老杨吸取教训,要求小王每天下班前把所有最新版本程序和文档备份到2台不同的服务器上”和“团队中的小李突然离职,老杨在他走后发现找不到小李所负责模块的最新版本源代码”可以推导出);缺少配置管理及变更管理流程;没有统一的版本管理机制,各版本不可追溯(这两点从“项目组在模块联调时发现一个基础功能模块存在重大BUG,需要调取之前的备份进行重新开发。可是小王发现,这样一来,这个备份版本之后的所有备份版本要么失去意义,要么就必须全部进行相应的修改”可以推导出;员工管理不到位、工作移交没做好(这点从“团队中的小李突然离职,老杨在他走后发现找不到小李所负责模块的最新版本源代码”可以推导出);没有建立配置基线,版本管理混乱(这点从“2台备份服务器上的版本号出现混乱,将测试版本中的程序打包到了发布版中”可以推导出)等是导致项目出现“进度延误了2个月、用户反应系统无法正常工作、将测试版本中的程序打包到了发布版中”这些问题的主要原因,针对这些原因的解决方案就是【问题四】的答案。本案例【问题一】和【问题三】属于纯理论性质的问题,与本案例关系不大。上面发现的配置管理方面存在的问题,换一种说法,就是【问题二】的答案。(案例难度:★★★★)
一、答题思路解析
根据“答题思路总解析”的阐述,我们知道,该问题属于纯理论性质的问题,读者如果熟悉《教程》第407页至410页中描述的相关内容,该问题就比较容易回答。(问题难度:★★★)
二、参考答案
为了控制变更,软件配置管理中引入了 B.基线这一概念。根据这个定义,在软件的开发流程中把所有需加以控制的配置项分为两类,其中,D.非基线配置项包括项目的各类计划和报告等。配置项应该按照一定的目录结构保存到G.配置库中。所有配置项的操作权限由H.CMO进行严格管理,其中 B.基线配置项向软件开发人员开放读取的权限。
一、答题思路解析
根据“答题思路总解析”中的阐述,该项目由于没有做好版本管理与控制,而出现了如下问题:(1)不能清楚地辨识文件的版本情况,不利于协同工作(这点从“他不知道哪个是最新版本,也不知道老张最近改动了哪些地方”可以推导出);(2)重要版本丢失,造成不必要的返工(这点从“一次由于小王的计算机中了病毒,造成部分程序和文档丢失,项目组不得不连续一周加班进行重新返工”和“团队中的小李突然离职,老杨在他走后发现找不到小李所负责模块的最新版本源代码”可以推导出);(3)各版本不可追溯,不利于变更管理(这点从“项目组在模块联调时发现一个基础功能模块存在重大BUG,需要调取之前的备份进行重新开发。可是小王发现,这样一来,这个备份版本之后的所有备份版本要么失去意义,要么就必须全部进行相应的修改”可以推导出;(4)取错版本(这点从“2台备份服务器上的版本号出现混乱,将测试版本中的程序打包到了发布版中”可以推导出)。如果版本管理和控制搞好了,上面的四个问题就不会出现了,这就是为什么要进行配置项的版本控制的原因。因此,把上面分析出来的四个问题换一种表达方式,就是本问题的答案。(问题难度:★★★★)
二、参考答案
要进行配置项的版本控制的理由:
(1)版本控制有利于清晰地记录和保存配置项的所有版本,避免发生版本混淆或丢失,从而避免无谓的返工;
(2)版本控制有利于开发工作的协同,案例中由于没有做好版本控制导致了小陈和老张之间协作上的困难;
(3)版本控制有利于历史版本的追溯,能够快速准确地查找到配置项的任何历史版本;
(4)版本控制使配置项处于受控状态,能更好地进行配置项的变更管理;
(5)版本控制有利于在版本出现冲突的情况下进行有效的辨析,从而避免取错版本。
一、答题思路解析
根据“答题思路总解析”的阐述,我们知道,该问题属于纯理论性质的问题,读者如果比较熟悉《教程》第414页“图15-2配置项状态变化”,这个问题就比较容易回答。根据“配置项状态变化图”,我们可以理出配置项的版本控制流程:(1)根据项目计划创建配置项;(2)修改和完善处于“草稿”状态的配置项;(3)提交并通过评审和审批;(4)配置管理员按配置管理计划对配置项建立版本号或基线并正式发布;(5)若需要变更配置项,则配置管理员按规则从受控库中取出该配置项,处于“修改”状态的配置项经过修改并通过评审和审批后,配置管理员按配置管理计划对配置项建立新的版本号或基线并再次正式发布。(问题难度:★★★★)
二、参考答案
配置项版本控制流程:
(1)根据项目计划创建配置项;
(2)修改和完善处于“草稿”状态的配置项;
(3)提交并通过评审和审批;
(4)配置管理员按配置管理计划对配置项建立版本号或基线并正式发布;
(5)若需要变更配置项,则配置管理员按配置项变更管理流程从受控库中取出该配置项,处于“修改”状态的配置项经过修改并通过评审和审批后,配置管理员按配置管理计划对配置项建立新的版本号或基线并再次正式发布。
一、答题思路解析
根据“答题思路总解析”中的阐述,我们知道,该项目出现的主要问题有:(1)选用了没有配置管理经验的大学毕业生小王担任配置管理员;(2)大学毕业生小陈不懂业务且缺乏必要的培训;(3)项目缺乏必要的配置管理工具;(4)配置项的存储和管理不到位导致重要版本丢失;(5)没有做配置管理规划,缺少完整的配置管理方案;(6)没有配置管理委员会;(7)缺少配置管理及变更管理流程;没有统一的版本管理机制,各版本不可追溯;(8)员工管理不到位、工作移交没做好;(8)没有建立配置基线,版本管理混乱。把这八个方面的的问题解决了,就是老杨应该采取的改进措施。(问题难度:★★★★)
二、参考答案
老杨可以在如下方面进行改进:
(1)选用有经验的人员担任配置管理员;
(2)从项目整体出发,做好配置管理规划;
(3)建立配置管理委员会;
(4)使用合适的配置管理工具;
(5)建立配置管理及变更管理流程,建立统一的版本管理机制;
(6)识别配置项、为配置项建立唯一标识,建立配置基线,使配置项处于受控状态;
(7)对新员工进行必要的培训;
(8)做好员工离职时的移交工作;
(9)严格按配置管理计划实施配置管理和变更管理,定期提交配置状态报告、改进配置管理方法。