软件配置管理-团队开发的基石
1. 概述
随着现代软件技术的发展,对于软件项目的需求日益复杂而且变更频繁,项目的开发模式已经由昔日的手工作坊式的开发转变为规模化、团队式的开发,当开发团队发展到一定规模时,会越来越强调开发过程规范化和成熟度。软件项目的成败在很大程度上取决于对其开发过程的控制,这包括对质量、源代码、进度、资金、人员等的控制。要进行有效的过程控制,仅仅依靠人的力量是不够的,还需要有相应的管理工具。"软件配置管理"是一套规范、高效的软件开发管理方法,同时也是提高软件质量的重要手段。软件配置管理可以帮助开发团队对软件开发过程进行有效的变更控制,高效地开发高质量的软件。在质量体系的诸多支持活动中,配置管理处在支持活动的中心位置,它有机地把其它支持活动结合起来,形成一个整体,相互促进,相互影响,有力地保证了质量体系的实施。
软件配置管理并不是一个新的概念,早在二十世纪70 年代,加州大学圣巴巴拉分校(University of California at Santa Barbara)的Leon Presser授就已经提出变更和配置控制的理论,并随着软件产业的逐渐壮大,在国外成熟的软件企业中逐渐得到重视和普及,在一些国外的大中型软件企业中,不仅设置专职的配置管理人员,而且有些公司还设有公司级的变更控制委员会(CCB:Change Control Board)对公司的软件配置管理工作进行统一的管理,配置管理对于软件开发的重要性由此可见一斑。 国内的企业真正认识到配置管理的重要性,却是近几年的事情,随着CMM(Capability Maturity Model)的概念和理论的普及,配置管理作为CMM 2 级的一个关键过程域,其重要性逐渐为人们认同。
"进行管理和控制"意味着在给定时间(过去或现在)使用的工作产品的版本是已知的(即版本控制),而且以受控的方式引进变更(即变更控制)。如果希望有比"进行管理和控制"所蕴含的更高程度的控制,则工作产品可置于配置管理的完备的纪律之下。CMM Level2 KPA3
其实在日常的开发中,我们已经在自觉或不自觉的进行着软件配置管理的工作。最简单的如使用软件开发集成环境提供的Backup功能,它可以使我们回溯到最近的修改;再进一步,就是使用文件夹或者压缩工具,把实现了一定功能的程序版本按日期进行备份,这也已经实践了配置管理的部分必要功能,但这仅仅是配置管理众多功能重的一小部分。真正的配置管理系统应该具有以下功能:
l 并行开发支持:因开发和维护的原因,要求能够实现开发人员同时在同一个软件模块上工作,同时对同一个代码部分作不同的修改,即使是跨地域分布的开发团队也能互不干扰,协同工作,而又不失去控制;
l 修订版管理:跟踪每一个变更的创造者、时间和原因,从而加快问题和缺陷的确定;
l 版本控制:能够简单、明确地重现软件系统的任何一个历史版本;
l 产品发布管理:管理、计划软件的变更,与软件的发布计划、预先定制好的生命周期或相关的质量过程保持一致;项目经理能够随时清晰地了解项目的状态
l 建立管理:基于软件存储库的版本控制功能,实现建立(build)过程自动化;
l 过程控制:贯彻实施开发规范,包括访问权限控制、开发规则的实施等;
l 变更请求管理:跟踪、管理开发过程中出现的缺陷(Defect)、功能增强请求(RFE)或任务(Task),加强沟通和协作,能够随时了解变更的状态;
l 代码共享:提供良好的存储和访问机制,开发人员可以共享各自的开发资源。
2. 缺乏配置管理造成的常见问题
由于历史和现实的原因,配置管理流程和工具在我国软件行业中的应用并不普及,由于缺乏必要的配置管理流程和工具,很多软件企业在日常的开发工作中都会或多或少的遇到如下的问题:
l 组织的知识和过程财富流失
现代的社会竞争激烈,人员流动频繁,如果由于没有必要的配置管理流程和工具,大量的文档和代码等知识财富必然缺乏统一的管理,可能随意地保存在项目经理和软件工程师各自的机器里,往往会因为硬盘的故障或人员的离职而永远的消失,软件组织的数字财富就这样因为缺乏必要的配置管理而白白的流失
l 不能及时了解项目的进展状况
现代软件工程思想认为越早发现缺陷和风险,采取相应措施的代价越小。CMM的一个重要作用就是要提高软件开发过程中的可视性,使得问题能够被及时的发现。然而由于缺乏配置管理的流程和工具的支持,部门主管无法确切得知项目的进展情况,即便是项目经理也不知道各个开发人员的具体工作,项目进展随意性很大。所有的问题往往都会集中到项目里程碑时一起出现,这必然会造成巨大的开销,其结果往往是容忍部分缺陷存在或者延误开发周期。所有问题只能寄希望于最终实施时再解决,项目的实施工作因此变成了无法汇报、无法理清、无休止的维护。
l 缺乏实现并行开发的手段
在日常的开发工作中,经常会出现并行开发的需求,比如:对于一个项目可能要在开发新版本的同时继续对先前的版本进行必要的维护,或者针对某个特定的版本需要针对不同的客户同时进行客户化的修改等等。在并行模式下,不同开发人员可以同时编辑修改某一文件,并行开发有可能产生冲突,但是却能够提高开发效率。如果没有配置管理工具的支持,进行并行开发将十分困难,单单通过人工操作,往往会造成修改过的bug 重复出现或者几个人进行相同的工作,产生不必要的浪费。
软件复用率低下
软件复用是现代软件工程中的重要思想,是提高软件产品生产效率和质量的重要手段。软件产品是一个公司的宝贵财富,代码的可重用性是相当高的,如何建好知识库,用好知识库将对公司优质高效开发产品产生重大的影响。但如果没有良好的配置管理流程,软件复用的效率将大打折扣,比如对于复用的代码进行了必要的修改或改进,却只能通过手工的方式将发生的变更传递给所有复用该软件的项目,效率如何可想而知。另外由于缺乏进行沟通的必要手段,各个开发人员各自为政,编写的代码不仅风格迥异,而且编码和设计脱节,往往会导致开发大量重复的难以维护的代码。
无法开展规范化的测试工作
在传统的开发方式中,由于缺乏必要的配置管理和变更控制,测试工作只是人们的一种主观愿望,根本无法提出具体的测试要求,加之开发人员的遮丑,测试工作往往是走走过场,测试结果既无法考核又无法量化,当然就无法对以后的开发工作起指导作用。
对软件版本的发布缺乏有效的管理
因为缺乏有效的管理手段,往往会在产品发布时却无法确定该版本所有的组件,或者向用户提供了错误的版本。对于特定客户出现的问题,无法重现其使用的版本,只能到用户的现场才能进行相应的调试工作。由于应用软件的特点,各个不同的客户会有不同的要求,开发人员要手工地保持多份不同的拷贝,即使是相同的问题,但由于在不同地方提出,由不同人解决,其做法也不尽相同,程序的可维护性越来越差。这些都会延长实施的周期,同时意味着人力物力的浪费。
缺乏历史数据的积累,没有软件开发的历史数据
缺乏软件开发的历史数据是大多数软件项目失败的关键所在,这样的结论也许使很多人感到吃惊,但事实就是如此。因为软件开发的历史数据是反映软件开发队伍的能力的标尺,没有了这个标尺,就无法对软件的开发过程有一个清醒的认识。而良好的配置管理正是收集软件开发历史数据的重要来源
无法有效的管理和跟踪变更
软件的一个显著特点就是易于改变,没有配置管理将无法对软件的变更进行有效的记录、跟踪和控制。
3. 实施配置管理的收益
国内很多软件企业已经逐渐认识到配置管理的重要性,都希望通过实施配置管理来提高软件开发管理的水平,增强企业自身的竞争力,应对市场的压力。
针对市场的这些需求,Hansky 公司在中国市场推出了业界技术领先的软件配置管理解决方案,产品包括配置管理工具Firefly 和变更管理工具Butterfly。Firefly 是Hansky公司推出的软件配置管理系统,它可以轻松管理、维护整个企业的软件、代码和文档。Firefly是一个高性能、运行速度极快的软件配置管理系统,支持不同的开发、运行平台,因此它能在整个企业中的不同团队、不同项目中都得以广泛的应用。Firefly能够对团队开发提供有力的支持,开发团队一旦拥有了Firefly,就可以非常准确的定义:
l 软件将在什么时间发布
l 当前发布版本中有哪些功能,由哪些组件构成
l 当前版本中加入了针对哪些Bug的修改
l 软件的某个修改是谁认可的
l 如何建立新的发布版本
l 等等…
Butterfly 是Hansky公司提供的新一代的软件变更请求管理软件。它以软件产品为中心,有效的协调软件项目中各职位人员的工作,能够使软件项目在较短时间内高质量完成。
Butterfly的主要功能如下:
l 提供对开发过程中的缺陷、建议和任务的追踪管理;
l 规划开发过程,完善源代码编写,提高软件重用率,最大限度保护企业知识财富;
l 提供丰富的报表功能,以直观图形统计开发人员的工作进度和编码质量,客观评价员工表现;
l 优化业务流程,科学的工作流系统使用户工作起来有条不紊,大大提高工作效率,同时用户可以根据实际情况简单、快捷地定制自己的业务流程;
l 掌握工作进度,在软件开发的各个阶段进行都可以进行强大的过程控制;
l 开发人员可以明确地了解他被分配的开发任务,并根据优先级依次完成;
l 提供友好的人机界面,支持工作分配的电子邮件自动通知,方便各种类型的工作人员使用,增加沟通和交流;
l 对软件的错误进行系统管理,从根本上提高软件产品竞争力,提高产品质量;
l 加速开发进程,规范软件产品开发的各个阶段,避免浪费不必要的时间。
Hansky公司的配置管理解决方案给公司带来的益处将是显而易见的:管理者能够轻松控制产品的进度、质量;开发人员将有更多的时间进行创造性的工作;测试人员将依照一个标准的流程高效完成日常工作; 产品发布人员能够确保交到用户手中的产品的质量。
具体而言,用户可以在资金、管理水平和保护知识财富等方面得到切实收益。节约用户资金
(1) Hansky 配置管理系统的总体实施成本低
对硬件系统性能的要求低,可以跨平台使用,节约了用户的投资;
安装简单,易于维护,无需专职的系统管理员;
功能简洁、实用,易于学习和掌握,可以有效缩短配置管理系统投入实际使用的周期;
良好的扩展性和灵活的License管理方式,以及组件式的解决方案,使得我们的配置管理系统既支持小组模式的用户,也能够支持大规模团队的协同开发工作,并且能够方便地进行扩展,用户可以根据实际需要,灵活的配置,大大降低了降低初期投入的资金;
具有前瞻性,保护用户的投资。Hansky公司的软件配置管理产品采用最新的技术(如纯TCP/IP技术、J2EE技术、MS NET的开发环境等)和全新的应用模式(如三层结构、B/S应用结构等),确保系统在较长的时间内不会落后于同类产品或不需要技术上的更新;
自带存储库增量备份/恢复功能,节约用户在备份方面的支出。
(2) 缩短用户的产品开发周期
利用Hansky的Firefly系统对开发资源进行版本管理和跟踪,可以建立公司级的代码知识库,保存开发过程中的所有历史版本,这样大大提高了代码的复用率,还便于同时维护多个版本和进行新版本的开发,最大限度地共享代码。利用Butterfly组建开发团体之间的问题跟踪及消息通讯机制,通过与电子邮件系统的结合大大增强了开发团体之间的沟通能力,通过丰富的报表功能可对发现的问题进行整理、以报表方式分类报出,作为开发的指导。通过使用Hansky的配置管理套件可以提高开发效率和产品质量,避免了代码覆盖、沟通不够、开发无序的混乱局面,大大缩短了产品的开发周期。
(3) 降低产品的部署费用
使用Hansky的软件配置管理解决方案后,用户可以在Hansky技术专家的帮助下建立规范的配置管理流程,所有的软件产品将得到统一有效的管理。借助Firefly和Butterfly,工程人员可以通过访问服务器直接获取所需的最新版本,查找公司的知识库,提交变更请求,收集用户的反馈意见。开发人员无需到现场即可再现用户环境,集中解决问题,发布补丁。这样可以同时响应多个地点的项目,防止开发人员分配到各个项目点、力量分散、人员不够的弊端,同时节约大量的旅差费用。
提高软件开发管理的水平
(1) 改进用户的开发工作模式
使用Hansky的配置管理解决方案,可以有效地改进用户的软件开发模式和过程,提高企业软件能力成熟度的级别。
借助Firefly和Butterfly,用户可以:
有效的管理工作空间,各个成员的具有独立的工作空间,并能记录其变更集和整个生命周期中的完整变更历史;
简便建立分支,支持分支之间的比较与合并,归并,管理基线;
支持并行开发模式,提高开发效率;
支持异地开发,Firefly 通过自动或手动同步不同开发地点的的存储库,为地理分布的开发团队提供很好的支持;
集成变更请求管理与项目生存周期中的变更记录与追踪,优化测试流程;
完善的发布管理,可以方便的回溯任意版本,为不同的用户定制应用程序的版本,促进系统的快速部署,提供发布版本内容的审计能力;
支持变更集和原子事务,确保变更的一致性;
支持离线的版本管理,帮助用户记录项目证明周期内的完整历史;
内置Defect、RFE、Task(问题、建议、任务)工作流,符合正规软件公司的软件开发流程。科学的工作流系统可以使公司人员工作起来得心应手,有条不紊,从而大大提高工作效率。
(2) 加强项目管理能力
通过浏览器,项目负责人可以方便地查看项目进展情况以及员工工作情况;
利用Web界面即可实现代码复查和项目状态复查;
丰富的图表、报告功能,可以自动生成变更统计报告、配置审计报告,支持过程管理与进度分析,能够帮助管理者进行决策。
(3) 量化工作量考核
传统的开发管理中,工作量一直是难以估量的指标。靠开发人员自己把握,随意性过大;靠管理人员把握,主观性又太强。采用Firefly和Butterfly管理后,系统能够客观的记录员工的工作内容和质量,可以作为工作量的衡量指标
(4) 规范测试流程
Butterfly和Firefly集成后,可以有效地跟踪和处理软件的变更,完整地记录测试人员的工作内容,测试有了实实在在的工作,测试人员根据修改描述细节对每一天的工作做具体的测试。对测试人员也具有相应的可考核性,这样环环相扣,有效地增强了对测试的管理。
(5) 加强协调与沟通,增加团队竞争力
使用Firefly保存公司的所有知识财富、利用Butterfly的FAQ、检索以及Email自动通知功能,有效地加强了项目成员之间的沟通,做到有问题及时发现、及时修改、及时通知,却又不会额外增加很多的工作量,大大提高了开发团队的协同工作效率。
保护企业的知识财富
从整个企业的发展战略来说,如何在技术日新月异、人员流动频繁的情况下,本公司的知识库及经验库,把个人的知识及经验转变为公司的知识和经验,这对于提高工作效率、缩短产品周期以及提高公司的竞争力都具有至关重要的作用。采用科学的配置管理思想,辅之以先进的配置管理工具,可以帮助用户在内部建立完善的知识管理体系
(1) 代码对象库
软件代码是软件开发人员脑力劳动的结晶,也是软件公司的宝贵财富,长期开发过程中形成的各种代码对象就像一个个零件一样,是快速生成系统的组成部分。然而长期以来的一个事实是:一旦某个开发人员离开工作岗位,其原来所编写的代码便基本成为垃圾,无人过问;或者由于文档不全,无从考究。究其原因,就是没有专门对每个开发人员的代码、组件和文档进行科学的管理,将其应用范围扩大到公司一级,进行规范化,加以说明和普及。Firefly为代码管理提供了一个平台和仓库,有利于建立公司级的代码对象库,增进代码复用,提高开发重用率和软件质量。
(2) 业务及经验库
通过Firefly和Butterfly,可自动生成完整的开发日志及问题集合,用文字记录开发的整个过程,不会因某人的流动而消失,有利于公司积累业务经验,无论对软件维护或版本升级,都具有重要的指导作用。此外,利用Butterfly内建的FAQ模块,可以建立检索方便的经验库,传播和共享集体的智慧。
(3) 安全性和可靠性
由于配置管理系统集中存储了企业的重要知识财富,因此对其安全性和可靠性有极高的要求。Firefly可以对所有存储的文件进行冗余校验,使用MD5作为文件的校验和,并提供备份和恢复工具,确保了数据的可靠性。同时Firefly支持用户身份验证和访问控制,支持用户组,便于权限设置。访问控制可以针对分支、目录,甚至单个文件设置,采用类似Windows NTFS的权限管理方式,既灵活又安全。这些措施使得企业的知识财富得到了安全可靠的存储和保护。
另外,由于Hansky的产品采用了三层结构设计,其存储库完全不依赖于网络文件体统,无需共享存储目录,能够有效防止病毒攻击所导致的存储库瘫痪或损坏,同时杜绝网络非法访问。
4. 结语
作为源自美国硅谷的高科技公司,Hansky十分看重中国市场,向用户提供全面的本地化支持。针对中国市场,Hansky专门做了本地化工作,其所有文档,包括在线帮助均有中文版本,而且即将推出全中文界面的Hansky软件配置管理系统。通过Hansky软件配置管理系统的实施,除了可以给企业带来上述的益处,对于使用配置管理系统的每个人,同样会有所收益:学习了先进的软件过程管理思想,培养了良好的团队合作精神,提高了个人专业水平,增强了自身的竞争力。