在国家政策的鼓励下,软件企业获得了前所未有的发展机遇。但在获得机遇的同时,软件企业也面临着变革。软件企业纷纷学习并采用现代软件工程的思想,摆脱作坊式的软件生产,以专业高效和规范化的开发管理手段,提升软件企业的核心竞争力。当前比较流行的软件工程思想有:软件能力成熟度CMM、ISO、统一开发过程RUP、极限编程XP、个体软件过程PSP、敏捷建模AM等。当面对这么多的名词、概念和方法时,回过头来看看我们所面临的种种问题,我们应该如何选择和实施,从而提高软件的生产效率和产品质量,将企业带上一个新的台阶呢?回答这个问题很难,也很简单。说问题难,主要因为国内的软件企业由于受资金匮乏、市场和自身规模等因素的限制,往往被“生存与死亡”的问题困扰着,需要做的事情太多。这种窘境与我们的传统企业有许多相似之处,它们面临着WTO的压力与挑战,在众多的困难面前,纷纷选择实施企业信息化来提升自己的竞争力。但企业的信息化之路充满了风险,就如一些企业家自己的笑谈:不上信息化是必死,而上信息化是“找死”。其实,同在缺乏规范化管理的企业里实施生产过程改进是一件非常艰难的事情一样,软件企业的生产过程改进本质上就是一个信息化的过程,面临着同样的问题与困难。这就要求我们的管理必须从高处着眼,从低处着手,并结合软件开发的实际特点。搞清楚这些,再来回答前面的问题就很简单了。提升企业的核心竞争力是我们的管理目标,为此我们必须采取各种管理措施和手段,而这些措施和手段也必须要有依据和可度量的方法,这正是软件配置管理的核心内容,所以我们说做好软件配置管理是迈向软件开发规范化管理的第一步。
我们进一步从软件工程的角度来考虑这个问题,对于任何一个软件企业来说,开发出满足用户需求的、高质量的软件产品是其追求的目标,而实现这一目标的关键是建立起一个稳定、可控、可重用的软件流程。软件企业要想永葆竞争优势就必须不断地改进它的软件开发流程,而要进行软件开发流程改进就需要有明确的、量化的对现状的分析和对未来的预期,这些数据来源于对软件过程的度量,而进行度量的前提和基础就是软件配置管理。所以,软件配置管理工作是以整个软件流程的改进为目标,是为软件项目管理和软件工程的其他领域打好基础,以便于稳步推进整个软件企业的能力成熟度。
软件配置管理对于软件开发管理是如此重要,它的主要思想和具体内容在于版本控制。版本控制是软件配置管理的核心思想之一,是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变化的管理。通俗一点说,这就如我们写文章要脱稿好几次,而版本控制就是要将每一次文章的改动都记录下来,我们可以在事后随时恢复到其中的任何一次改动前的状态。版本控制最主要的功能就是追踪文件的变更。它将什么时候、什么人更改了文件的什么内容等信息忠实地记录下来。每一次文件的改变,文件的版本号都将增加,比如:1.1.2,1.1.3,1.2.1。除了记录版本变更外,版本控制的另一个重要功能是并行开发。软件开发往往是多人协同作战,版本控制可以有效地解决版本的同步以及不同开发者之间的开发通讯问题,提高协同开发的效率。并行开发中最常见的不同版本软件的Bug修正问题,就可以通过版本控制中分支与合并的方法有效地解决。比如,软件已经发布了1.0版本,开发小组在为该软件添加新的功能,正在进行2.0版本的开发。而此时,如果Release
1.0中发现了Bug必须修正,我们就必须从Release 1.0中建立bugfix分支,进行必要的修正后,发布修正版Release
1.1,而这个版本的发布与2.0版本的开发没有直接关系。当2.0版本测试结束后,要与1.0版本中bugfix分支合并,从而发布2.0的版本。在这个并行开发过程中,创建分支和分支的合并起了非常重要的作用。
许多人将软件的版本控制和软件配置管理等同起来,这是非常错误的观念。版本控制虽然在软件配置管理中占据非常重要的地位,但这并不是它的全部,对开发者工作空间的管理、编译管理等都是软件配置管理不可分割、不可或缺的部分。而且,简单地使用版本控制,并不能解决开发管理中的深层问题。
软件配置管理给开发者带来的好处是显而易见的,但对于项目管理者来说,他所关心的角度与开发者是不一样的,他更关注项目的进展情况,这不是简单的版本控制能够解决的。项目管理者从管理者的角度去运用软件配置管理中的各种记录数据,将有巨大的收获。
从这些记录数据中,我们可以了解到谁在什么时候改了些什么、为什么改;我们可以了解到开发项目进展得如何、完成了多少工作量;我们可以了解到开发工程师的资源是否充分使用、工作是否平衡等。这些统计分析就是CMM2中对软件配置管理的明确要求:软件配置管理(SCM)提供软件产品的状态统计,统计包括寻找软件开发的瓶颈和解决办法,并据此衡量软件产品的成熟度。SCM的度量准则是:平均严重程度,严重程度级的分布,平均关闭时间,严重程度的图示,各配置项或子系统的图示等。如果我们真正做好软件配置管理,取得CMM2认证将是一个简单而轻松的过程。
做好软件配置管理还会给项目经理带来许多方便,有利于对整个开发团队进行管理,但管理的效果还要取决于整个开发团队成员的配合程度。所以在深入软件配置管理过程中,又提出了过程驱动的概念,这是一个更加抽象的管理思想,它更加强调管理,对整个业务流程进行预定义,将变更流程化,从而可以自动处理业务。
软件本身是思维逻辑和数据的固化,而思维逻辑和数据是无形的,软件配置管理就是对这些无形的思维逻辑和数据进行变更记录,使之可以度量、统计分析和管理。
只有做好了软件配置管理,我们才能避免在软件开发中使项目管理、风险管理、质量管理、过程管理成为空中楼阁,我们才能脚踏实地走向软件开发规范化管理的高峰。
作者简介:
蔡明军先生,计算机软件硕士,现任北京赛迪网信息技术有限公司技术总监。蔡明军先生在互联网开发技术上具有很高的造诣,同时带领不同类型的开发团队取得了成功,在软件开发管理方面有着丰富的实践经验,为多家企业实施了J2EE平台设计及开发管理方面的咨询与培训。您可以通过caimj@staff.ccidnet.com与他联系。
|