软件配置管理(Softwareconfigurationmanagement,SCM)
目录
1.什么是软件配置管理2.配置管理的任务3.实施软件配置管理的优点4.配置软件管理实施的流程5.软件配置管理与CMMI6.软件配置管理案例分析6.1.案例一:配置管理在软件企业中的应用
软件配置管理,对从事软件的人来说,并不陌生。要想真正做到实施好配置管理,对于软件配置管理的意义及其重要性有必要进行认识和理解。软件配置管理是软件项目管理的重要内容,也是保证软件质量的重要手段。它能够对软件开发过程进行有效管理和控制,目的是实现软件产品的完整性、一致性、可控性,使产品极大程度地与用户需求相吻合它能够控制、记录、追踪对软件的修改并形成规范文档,方便日后维护和升级,更重要的是能够保护代码资源,积累软件财富,提高软件重用率。
一、软件配置管理存在的问题
很多软件企业在日常的开发工作中遇到的问题都是因缺少规范的管理造成的。
而发生这些问题需要我们花费很大的精力与时间来处理,而且有很多是重复的问题,有的是不必要的麻烦。
1.文档和代码管理不善。
我们知道开发一项软件产品,其代码的可重用性相当高,但如果没有良好的配置管理流程,软件复用的效率将大幅降低,比如对于复用的代码进行了必要的修改或改进,却只能通过手工将变更传递给所有复用该软件的项目,效率之低可想而知。另外开发过程形成的文档和代码等缺乏统一管理,随意的保存往往会因为硬件故障或人员的离职而消失,而各个开发人员编写的代码的风格迥异,编码和设计脱节,也往往会导致重复开发、难以维护。
2.项目的进度状况不明确
软件工程思想指出越早发现缺陷和风险,采取相应措施的代价越小。然而由于缺乏配置管理的支持,部门主管及项目经理无法确切得知各个开发人员的具体工作,项目进展随意性很大,不能适时适度管理。问题往往会集中到项目里程碑时出现,开发人员为在期限内完成任务,只能敷衍了事,容忍部分缺陷存在,给后期施工留下隐患,造成无休止的维护。
3.并行开发的手段缺乏
在开发工作中,经常会出现并行开发的情况,并行开发能够有效提高开发效率。例如:一个项目可能在开发新版本的同时维护前一版本,或者需要针对不同客户进行定制修改。但并行开发在分支及合并时往往会衍生出很多麻烦,如果没有配置管理工具的支持,进行并行开发将十分困难,往往会造成修改过的bug重复出现或者若干人进行相同的工作,产生不必要的浪费,这样也会对开发的管理及代码的质量带来影响。
4.测试工作开展的不规范
国内很多企业已经认识到配置管理和软件测试的重要性,缺乏合理管理的软件测试只是形式主义。传统开发模式的弊端使得测试工作无法起到测试应有的作用,测试结果无法量化更无法考核。开发人员将精力耗费在如何应付测试,而测试人员单凳主观意愿进行测试,走走过场,使得这一环节形同虚设,当然就无法对以后的开发工作起指导作用。
二、软件配置管理在企业中的应用
我国目前的软件行业主要还是由中小型团队组成,相对应国家水平存在着严重的开发过程混乱,缺乏有效的过程管理手段,而软件配置管理是一套规范、高效的软件开发管理方法,同时也是提高软件质量的重要手段。配置管理由于其本身实施的便利性、工具的支持性以及与其他过程域良好的连接性,正符合企业的管理需求。软件配置管理可以帮助开发团队对软件开发过程进行有效的变更控制,高效地开发高质量的软件,从而达到提高软件生产质量这一根本任务,它有机地把其他支持活动结合起来,形成一个整体,相互促进,相互影响,配置管理为了实现控制变更,高效、有序的存放、查找和利用软件开发信息,为达到这一目的,首先我们需要完成以下几个主要功能域:配置标识、版本控制、变更管理、配置审核和状态报告。下面本文就其中3个功能域进行阐述:
1.配置标识
软件配置标识就是对每个软件配置项的标识。对一个软件项目而言,它的配置项有以下内容:需求分析文档、概要设计文档、详细设计文档、源代码、测试文档、客户文档等。
而对这么多需要存储的重要的文档和代码,软件配置管理工作的第一步就是建立一个安全、可靠的知识库,用于保存开发过程中产生的软件资产。在建好知识库后,首先要明确项目生命周期内所产生的各类文档和代码,然后确定其名称和标识规则。根据实际需要,将正式文档、模型文件、源代码等文件按照各自标识规则分门别类放入库中,而对于临时文档、编译时产生的中间文件等,则不需将它们放入库中。原则是保证配置管理工具检索便利,让项目组成员容易记住标识规则,同时要确保组织一级的标识规则的一致性。
2.变更管理
在软件配置管理中,由于软件的可变性,变更管理成为一个难点,并且变更涉及的范围很广,各种因素都会引起变更,如市场的变化、技术的进步、客户对于项目认识的深入等等,都可能导致软件开发过程中变更的提出。如果缺乏对于变更的有效的管理能力,纷至沓来的变更就会成为开发团队的困扰。
实施高效的变更管理至少应该包括两个部分:“定义合理的变更管理流程”、“采用自动化工具作为支持”。在具体的实践中,变更管理的复杂程度与变更的具体类型有关。应该对变更进行分类和分层,既保证项目组成员有一定的自主权,又不会耽误高层经理对关键问题的把握。通常变更管理的流程会涉及到变更提交、变更复审、变更任务分配、变更结果验证等一系列活动。
3.配置审核
配置审核包括配置管理活动审核和基线审核。配置管理活动审核用于确保项目组成员的所有配置管理活动,遵循已批准的软件配置管理方针和规程,实施基线审核,要保证基线化软件工作产品的完整性和一致性,并且满足其功能要求。基线的完整性可从以下几个方面考虑:基线库是否包括所有计划纳入的配置项?基线库中配置项自身的内容是否完整?此外,对于代码,要根据代码清单检查是否所有源文件都已存在于基线库。同时,还要编译所有的源文件,检查是否可产生最终产品一致性主要考察需求与设计以及设计与代码的一致关系,尤其在有变更发生时,要检查所有受影响的部分是否都做了相应的变更。审核发现的不符合项要进行记录,并跟踪直到解决。在实际操作过程中,一般认为审核是一种事后活动,很容易被忽视。但是“事后”也是有相对性的,在项目初期审核发现的问题,对项目后期工作总是有指导和参考价值的。
软件配置管理活动在整个开发活动中是一项支持性、保障性的工作,实施之前还应该对所有开发人员进行软件配置管理方面的培训。通过软件配置管理的实施,除了可以给企业带来效益,还会对使用配置管理的每个人有所收益:学习先进的软件过程管理思想,培养良好的团队合作精神,提高个人专业水平,增强自身的竞争力等。
发表评论