由于缺乏必要的配置管理流程和工具,很多软件企业在日常的开发工作中都会或多或少的遇到如下的问题:组织的知识和过程财富流失现代的社会竞争激烈,人员流动频繁,如果由于没有必要的配置管理流程和工具,大量的文档和代码等知识财富必然缺乏统一的管理,可能随意地保存在项目经理和软件工程师各自的机器里,往往会因为硬盘的故障或人员的离职而永远的消失,软件组织的数字财富就这样因为缺乏必要的配置管理而白白的流失。
不能及时了解项目的进展状况现代软件工程思想认为越早发现缺陷和风险,采取相应措施的代价越小。CMM 的一个重要作用就是要提高软件开发过程中的可视性,使得问题能够被及时的发现。然而由于缺乏配置管理的流程和工具的支持,部门主管无法确切得知项目的进展情况,即便是项目经理也不知道各个开发人员的具体工作,项目进展随意性很大。所有的问题往往都会集中到项目里程碑时一起出现,这必然会造成巨大的开销,其结果往往是容忍部分缺陷存在或者延误开发周期。所有问题只能寄希望于最终实施时再解决,项目的实施工作因此变成了无法汇报、无法理清、无休止的维护。
缺乏实现并行开发的手段
在日常的开发工作中,经常会出现并行开发的需求,比如:对于一个项目可能要在开发新版本的同时继续对先前的版本进行必要的维护,或者针对某个特定的版本需要针对不同的客户同时进行客户化的修改等等。在并行模式下,不同开发人员可以同时编辑修改某一文件,并行开发有可能产生冲突,但是却能够提高开发效率。如果没有配置管理工具的支持,进行并行开发将十分困难,单单通过人工操作,往往会造成修改过的bug 重复出现或者几个人进行相同的工作,产生不必要的浪费。
软件复用率低下
软件复用是现代软件工程中的重要思想,是提高软件产品生产效率和质量的重要手段。软件产品是一个公司的宝贵财富,代码的可重用性是相当高的,如何建好知识库,用好知识库将对公司优质高效开发产品产生重大的影响。但如果没有良好的配置管理流程,软件复用的效率将大打折扣,比如对于复用的代码进行了必要的修改或改进,却只能通过手工的方式将发生的变更传递给所有复用该软件的项目,效率如何可想而知。另外由于缺乏进行沟通的必要手段,各个开发人员各自为政,编写的代码不仅风格迥异,而且编码和设计脱节,往往会导致开发大量重复的难以维护的代码。
无法开展规范化的测试工作
在传统的开发方式中,由于缺乏必要的配置管理和变更控制,测试工作只是人们的一种主观愿望,根本无法提出具体的测试要求,加之开发人员的遮丑,测试工作往往是走走过场,测试结果既无法考核又无法量化,当然就无法对以后的开发工作起指导作用。
对软件版本的发布
缺乏有效的管理因为缺乏有效的管理手段,往往会在产品发布时却无法确定该版本所有的组件,或者向用户提供了错误的版本。对于特定客户出现的问题,无法重现其使用的版本,只能到用户的现场才能进行相应的调试工作。由于应用软件的特点,各个不同的客户会有不同的要求,开发人员要手工地保持多份不同的拷贝,即使是相同的问题,但由于在不同 地方提出,由不同人解决,其做法也不尽相同,程序的可维护性越来越差。这些都会延长实施的周期,同时意味着人力物力的浪费。
缺乏历史数据的积累,没有软件开发的历史数据缺乏软件开发的历史数据是大多数软件项目失败的关键所在,这样的结论也许使很多人感到吃惊,但事实就是如此。因为软件开发的历史数据是反映软件开发队伍的能力的标尺,没有了这个标尺,就无法对软件的开发过程有一个清醒的认识。而良好的配置管理正是收集软件开发历史数据的重要来源。
无法有效的管理和跟踪变更软件的一个显著特点就是易于改变,没有配置管理将无法对软件的变更进行有效的记录、跟踪和控制。