武汉PMP汉阳PMP光谷PMP武汉PMP培训认证武汉PMP考试中心武汉项目管理培训PMP考试中心武汉ACP培训认证武汉ACP考试中心武汉PMP认证考试
摘要:当前备受企业青睐的敏捷开发过程管理工具存在成本高、可替换性差等问题,为帮助中小企业解决以上问题,并且根据企业自身开发特点进行开发过程管理,提出了基于开源软件的敏捷开发过程管理平台的设计与应用。通过开源软件对敏捷开发过程中各阶段管理活动提供支持,并根据主流Scrum敏捷开发方法,建立了一个基于开源软件的可裁剪的敏捷开发过程管理平台。该平台基于Jazz架构实现敏捷开发过程管理的基本功能,采用REST技术,结合OSGi思想,实现开源软件工具与Jazz平台之间的集成。从而实现中小软件企业敏捷开发过程的统一管理,大大降低了企业的开发管理成本,并可根据企业的实际管理情况对此平台进行扩充和裁剪。
关键词:开发过程管理;Jazz平台;REST技术;开源软件;Scrum
0.引言
敏捷宣言发布至今已近10年,随着敏捷开发逐渐成为主流开发,越来越多的企业开始尝试敏捷,拥抱敏捷。相对于传统的开发团队,成功的敏捷团队可以开发出更高质量的软件产品,能够以更快更低的成本满足用户的需求。作为敏捷开发中最受欢迎的一个流派,Scrum近几年越来越多被业界所广泛认同。Scrum能够使生产力显著提升和成本最大降低;能够更好地将产品推向市场并获得很高的客户满意度;能够提供更透明的开发过程,从而获得更高的预测能力。对IT企业来说,完全失控、永远无法完成的项目已经成为历史。
敏捷开发提倡以人为本,平等对待团队中的每一个成员,相信队友。他简单而直接的沟通能够让人有更多的主人翁意识。在这样的环境里工作成绩会更容易被大家看到并获得认可。敏捷开发强调团队,只是个人能力强而不懂得合作的人在团队里是无法取得成功的,在团队里“没有一个人的成功,也没有一个人的失败”[1]。
敏捷项目生命周期可以分为项目的初始阶段、中间阶段以及最终阶段。初始阶段主要是对交付产品进行高层计划;中间阶段是一系列的以可工作代码的方式体现的发布或者迭代;最终阶段进行系统发布,完成最后项目回顾以及其他结束前的处理。
Scrum只是敏捷管理中的一种实践框架,它是一种灵活的敏捷软件开发管理过程,提供了一种经验方法,帮助实现了递增的软件开发过程。Scrum开发过程管理贯穿于敏捷项目生命周期的每一个阶段,它通过需求管理、项目管理、变更与缺陷管理、测试管理、配置管理等方面将软件开发过程的各个阶段管理起来,以达到最大限度的保证软件产品的质量与提高软件开发过程的生产率。同时Scrum敏捷开发强调边开发边测试,因此如何协调各个阶段的管理工作,使其相互配合以达到整个软件项目的成功交付是关键问题。
本文以解决上述问题作为研究的基础,旨在对Scrum敏捷开发管理平台的搭建以及开源工具与Jazz平台之间的集成进行新的尝试,并解决相应的技术问题。
1.目前敏捷开发过程管理基本情况
Scrum的一个关键原则就是承认客户可以在项目过程中改变主意,变更他们的需求,而预测式和计划式的方法并不能轻易地解决这种不可预见的需求变化。因此,对于那些功能需求可能经常发生变化的项目来说,Scrum是最为理想的选择之一。对于一个Scrum敏捷团队而言,工欲善其事,必先利其器,选择合适的Scrum工具是保证成功实施Scrum的关键一环。目前支持Scrum开发过程管理的工具大致分三类,它们分别是:基础工具、开源工具和厂商工具。表1分别对这三类的特征及优缺点进行了对比描述。
当敏捷团队扩展为大型团队、开发方式变成大型项目的主流开发方式时,这些自己临时组织起来的技术,如仅靠白板、电子表格和WIKI等将难以满足需求。
厂商工具对Scrum开发过程管理支持是最完善的,同时也是价格最昂贵的,对于刚刚处于起步阶段的企业来说,显然是无法承受的。
开源软件不是由统一的组织进行开发的,所以不同的软件之间难以进行协同工作。目前开源软件应用主要还是集中在各个领域的独立部分。例如项目管理、需求管理、变更\缺陷管理、配置管理以及测试管理等。由于开源软件没有得到商业化企业的支持,难以开发出大规模的集成平台去支持整个软件开发过程的管理。因此,该局限性使得开源软件的应用无法满足实际用户的综合需要。
2.支持敏捷开发过程管理平台的开源工具
为了能够解决目前开源软件应用集中在各领域的独立部分,并充分体现Scrum开发过程管理平台对开发团队的有效支撑,同时展现平台的可扩展性、可通用性,这里对相应的开源工具进行了如下的选型工作,后续将进行工具与Jazz平台的集成,以满足软件交付生命周期中各个阶段的管理。
2.1项目管理工具
Xplanner是一个开源的基于Web的XP团队计划和跟踪工具,对于Scrum也同样适用。Scrum的开发概念如iteration、userstories等,Xplanner都提供了相对应的支持,Xplanner支持敏捷开发流程,能够解决通过Scrum方法开发项目所碰到的问题[2]。该开源工具主要具有以下特性:
1)简单的模型规划
对于定制开发类项目,可以用实际项目名称作为Xplanner的项目名称。在项目下建立首次迭代,制定迭代起止时间。由顾客及开发人员定义发布计划;由顾客定义用户故事;由开发人员估计开发故事的代价。
2)完备的内建立人员
项目负责人:要负责Xplanner中项目、迭代、用户故事、任务的设置、编辑、删除;要及时督促项目研发人员添加、更新Xplanner上各角色负责的内容;要做到每日下班前打开Xplanner监控项目进行情况,以确保项目按时按质交付。
编辑者:为本项目的研发人员、软件测试人员。接受自己的任务列表,并按时完成任务。
跟踪者:跟踪迭代执行情况;及时和项目组沟通;配合督促项目相关人员添加、更新Xplanner上各角色负责的内容,做到每日下班前打开Xplanner监控项目进行情况。
客户:可以是本公司市场部门相关人员,也可以是客户本身。主要跟踪迭代执行情况。
3)iterations、userstories、tasks与工作记录的追踪
项目层级下设有迭代(iteration),基本上一个项目应该要有许多features或requirements。透过迭代,你可以安排要将哪些features放在哪个迭代,而将另一些feature放在另一个迭代。
迭代层级里面放置用户故事(userstories)。用户故事用来代表一个用户可了解的需求,应该是一组独立且不可分割的功能。
用户故事层级里放置任务(tasks)。如果把用户故事看作是需求,那任务就是完成某需求所要进行的工作。任务由开发人员撰写,它同时也可用来精估工时。
任务开始进行后,就可以追踪其工时。Xplanner会在迭代、故事,以及任务层级的页面,以进度条的方式来展示进度。
2.2缺陷管理工具
缺陷管理贯穿于软件开发生命周期之中,是整个周期中不可缺少的环节。Mantis是基于Web的开源缺陷跟踪系统,采用PHP语言编写,安装方便,使用简单[3]。其主要特点如下:
1)个人可定制Email通知功能,每个用户可根据自身的工作特点来订阅相关缺陷状态邮件;
2)支持多项目、多语言;
3)权限设置灵活,不同角色有不同权限,每个项目可设为公开或私有状态,每个缺陷同样也可设为公开或私有状态,每个缺陷可以在不同项目间移动;
4)主页可发布项目相关新闻,方便信息共享;
5)方便的缺陷关联功能,除重复缺陷外,每个缺陷都可以链接到其他相关缺陷;
6)有各种缺陷趋势图和柱状图,为项目状态分析提供依据,如果不能满足要求,可以把数据输出到Excel中进一步分析;
7)缺陷报告可打印,支持可定制的报表输出,可定制用户输入域;
8)可以对历史缺陷进行检索。
2.3测试管理工具
Testlink用于进行测试过程中的管理,通过使用Testlink提供的功能,可以将测试过程从测试需求、测试设计、再到测试执行完整的管理起来,同时,它还提供了多种测试结果的统计和分析,使我们能够简单的开始测试工作和分析测试结果。Testlink是sourceforge的开放源代码项目之一[4]。作为基于Web的测试管理系统,Testlink的主要功能包括:
1)根据不同的项目管理不同的测试计划,测试用例,测试构建相互之间独立;
2)可以基于关键字搜索测试用例;
3)能够将现有测试用例简单修改后复用;
4)设定执行测试的状态(通过,失败,锁定,尚未执行),失败的测试用例可以和Mantis中的bug关联,每个测试用例执行的时候,可以填写相关说明;
5)测试结果分析。可以实现按照需求、测试计划、测试用例状态、版本,统计测试结果;
6)支持将测试结果导出成Html,Word或是Excel格式;
7)测试用例和测试需求能够关联。测试可以根据优先级指派给测试员,定义里程碑;
可直接发送测试报告邮件。
2.4配置管理工具
SVN是近年来崛起的版本管理工具,是CVS的接班人。目前,绝大多数开源软件都使用SVN作为代码版本管理软件。该工具是基于Web的开源源代码管理软件,采用PHP语言编写,能够有效解决软件开发过程中版本混乱、变更多、追溯难等问题[5]。其主要特点如下:
1)服务器保存了所有版本的代码,每个开发人员从服务器checkout出代码,修改代码完成某项工作后checkin修改的代码,在服务器中会记录一个新的软件版本;
2)支持多平台下的操作;
3)管理方便,逻辑明确,符合一般人思维习惯;
4)易于管理,集中式服务器更能保证安全性;
5)代码一致性非常高;
6)适合开发人数不多的项目开发。
3.敏捷开发过程管理平台的设计与实现
由于软件企业在软件产品开发过程中,经常发现开发团队在进度、质量等方面的控制能力无法满足业务需求,经常遇到开发滞后计划,软件未能及时交付使用,突发需求影响整个开发计划等现象。因此,构建一个支持敏捷开发的过程管理平台显得尤为重要。敏捷开发过程管理平台是用来实现软件交付生命周期的管理,并结合敏捷开发思想,进行软件开发过程中的项目管理、测试管理、缺陷及变更管理、配置管理等工作。本文提出的敏捷开发过程管理平台是针对Scrum敏捷开发方法,通过开源软件与Jazz平台的集成搭建轻量级的过程管理平台。
3.1基于Jazz平台的编程模型
Jazz平台是IBMRational面向软件交付技术的下一代协作创新平台,该平台开源并通过社区驱动开发。Jazz平台是一个用于整个软件生命周期的团队协作平台,旨在支持软件生命周期各个阶段任务的无缝集成。Jazz平台的客户端和服务器端都具备扩展性,可以从小的团队扩展到大的企业环境。集成端到端的工具可以帮助团队更有效地构建软件,并使得软件开发活动更加令人愉快。
Jazz平台内核是必需的组件集,包括两个组件为:Repository和TeamProcess。Repository组件提供可扩展的存储库,其功能对所有客户端和服务器配置中的其他组件可用。TeamProcess组件提供了Jazz的流程支持基础,其功能也对所有客户端和服务器配置中的其他组件可用[6]。通过Web服务方式可以将开源工具集成到Jazz平台,由Jazz平台统一管理,协同工作。
基于Jazz平台的开发与基于众多主流的J2EE框架开发类似,都采用MVC的分层模型,该模型如图1所示。Jazz提供了各种不同形式的服务,例如Restful服务、RPC服务等。因此它为不同种类的客户端接入提供了相对统一的基于service接口,无论是基于Ajax的WebUI还是基于RCP的EclipseUI都可以统一使用同一套后端提供的服务,无需做任何修改,它为不同类型的UI接入提供了内在的支持。
在典型的Web应用中,一个Jazz构件包含以下几个部分:
Model:用于数据模型和服务接口的定义,类似于MVC的Model层
Service:用于服务的实现,类似于MVC的Controller层
Clients:用于用户界面的实现,类似于MVC的View层
因此Jazz把一个典型的Web开发转化成了Eclipse插件的开发,应用程序通过对不同扩展点进行扩展实现相应的功能并具有很强的重用性和扩展性。一个Jazz构件可以依赖其它Jazz构件,并调用被依赖构件提供的服务。而应用程序只需要