敏捷开发过程管理平台的设计与应用_蔡建平

更新时间:2023-06-02 15:45:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

软件2013年第34卷 第2期国际IT传媒品牌

敏捷开发过程管理平台的设计与应用

蔡建平,王琼

(北京工业大学软件学院,北京 100124)

摘 要:当前备受企业青睐的敏捷开发过程管理工具存在成本高、可替换性差等问题,为帮助中小企业解决以上问题,并且根据企业自身开发特点进行开发过程管理,提出了基于开源软件的敏捷开发过程管理平台的设计与应用。通过开源软件对敏捷开发过程中各阶段管理活动提供支持,并根据主流Scrum敏捷开发方法,建立了一个基于开源软件的可裁剪的敏捷开发过程管理平台。该平台基于Jazz架构实现敏捷开发过程管理的基本功能,采用REST技术,结合OSGi思想,实现开源软件工具与Jazz平台之间的集成。从而实现中小软件企业敏捷开发过程的统一管理,大大降低了企业的开发管理成本,并可根据企业的实际管理情况对此平台进行扩充和裁剪。

关键词:开发过程管理;Jazz平台;REST技术;开源软件;Scrum

中图分类号:TP311.56 文献标识码:A DOI:10.3969/j.issn.1003-6970.2013.02.005

Design and Application about Scrum Management Platform

CAI Jian-ping,WANG Qiong

(College of Software Engineering,Beijing University of Technology,Beijing 100022,China)

【Abstract 】At present,the agile development process management tools is welcomed by many enterprise,but it has some issues such as low replaceable and high cost etc. The design and application about Scrum management platform based on the open source software is focus on small or medium-sized enterprise to manage development process according to their characteristics. By the open source software supporting on each stage management activities,and according to Scrum method,built a agile development process management platform base on open source software. The platform will achieve the basic functions of agile development process management base on Jazz. Using the REST technology and OSGi method realize the integration between Jazz and open source software. So as to realize the uni ed management of agile development process for small and medium-sized software enterprise, greatly reduce the management costs of the enterprise, expand and tailor the platform according to the actual situation of the enterprise management.

【Key words】development process management; Jazz platform; REST technology; open source software; Scrum

0 引言

敏捷宣言发布至今已近10年,随着敏捷开发逐渐成为主流开发,越来越多的企业开始尝试敏捷,拥抱敏捷。相对于传统的开发团队,成功的敏捷团队可以开发出更高质量的软件产品,能够以更快更低的成本满足用户的需求。作为敏捷开发中最受欢迎的一个流派,Scrum近几年越来越多被业界所广泛认同。Scrum能够使生产力显著提升和成本最大降低;能够更好地将产品推向市场并获得很高的客户满意度;能够提供更透明的开发过程,从而获得更高的预测能力。对IT企业来说,完全失控、永远无法完成的项目已经成为历史。

敏捷开发提倡以人为本,平等对待团队中的每一个成员,相信队友。他简单而直接的沟通能够让人有更多的主人翁意识。在这样的环境里工作成绩会更容易被大家看到并获得认可。敏捷开发强调团队,只是个人能力强而不懂得合作的人在团队里是无法取得成功的,在团队里“没有一个人的成功,也没有一

个人的失败”[1]。

敏捷项目生命周期可以分为项目的初始阶段、中间阶段以及最终阶段。初始阶段主要是对交付产品进行高层计划;中间阶段是一系列的以可工作代码的方式体现的发布或者迭代;最终阶段进行系统发布,完成最后项目回顾以及其他结束前的处理。

Scrum只是敏捷管理中的一种实践框架,它是一种灵活的敏捷软件开发管理过程,提供了一种经验方法,帮助实现了递增的软件开发过程。Scrum开发过程管理贯穿于敏捷项目生命周期的每一个阶段,它通过需求管理、项目管理、变更与缺陷管理、测试管理、配置管理等方面将软件开发过程的各个阶段管理起来,以达到最大限度的保证软件产品的质量与提高软件开发过程的生产率。同时Scrum敏捷开发强调边开发边测试,因此如何协调各个阶段的管理工作,使其相互配合以达到整个软件项目的成功交付是关键问题。

本文以解决上述问题作为研究的基础,旨在对Scrum敏捷

作者简介:蔡建平(1960-),男,教授,主要研究方向:嵌入式软件工程、数字媒体技术。

12

蔡建平 等:敏捷开发过程管理平台的设计与应用

开发管理平台的搭建以及开源工具与Jazz平台之间的集成进行新的尝试,并解决相应的技术问题。

为了能够解决目前开源软件应用集中在各领域的独立部分,并充分体现Scrum开发过程管理平台对开发团队的有效支撑,同时展现平台的可扩展性、可通用性,这里对相应的开源工具进行了如下的选型工作,后续将进行工具与Jazz平台的集成,以满足软件交付生命周期中各个阶段的管理。

1 目前敏捷开发过程管理基本情况

Scrum的一个关键原则就是承认客户可以在项目过程中改变主意,变更他们的需求,而预测式和计划式的方法并不能轻易地解决这种不可预见的需求变化。因此,对于那些功能需求可能经常发生变化的项目来说,Scrum是最为理想的选择之一。对于一个Scrum敏捷团队而言,工欲善其事,必先利其器,选择合适的Scrum工具是保证成功实施Scrum的关键一环。目前支持Scrum开发过程管理的工具大致分三类,它们分别是:基础工具、开源工具和厂商工具。表1分别对这三类的特征及优缺点进行了对比描述。

表1 支持Scrum开发过程的管理工具

Tab.1 Support tools of Scrum process management层级

特征

优点

缺点存在无法保存

历史记录,无法使数据同步。功能不强大,无法实现对Scrum开发过程的整体管理。

2.1 项目管理工具

Xplanner 是一个开源的基于Web的XP团队计划和跟踪工具,对于Scrum也同样适用。Scrum的开发概念如iteration、user stories等,Xplanner都提供了相对应的支持,Xplanner支持敏捷开发流程,能够解决通过Scrum方法开发项目所碰到的问题[2]。该开源工具主要具有以下特性:

1) 简单的模型规划

对于定制开发类项目,可以用实际项目名称作为Xplanner的项目名称。在项目下建立首次迭代,制定迭代起止时间。由顾客及开发人员定义发布计划;由顾客定义用户故事;由开发人员估计开发故事的代价。

2) 完备的内建立人员

项目负责人:要负责 Xplanner中项目、迭代、用户故事、任务的设置、编辑、删除;要及时督促项目研发人员添加、更新Xplanner上各角色负责的内容;要做到每日下班前打开Xplanner监控项目进行情况,以确保项目按时按质交付。

编辑者:为本项目的研发人员、软件测试人员。接受自己的任务列表,并按时完成任务。

跟踪者:跟踪迭代执行情况;及时和项目组沟通;配合督促项目相关人员添加、更新Xplanner上各角色负责的内容,做到每日下班前打开Xplanner监控项目进行情况。

客户:可以是本公司市场部门相关人员,也可以是客户本身。主要跟踪迭代执行情况。

3) iterations、user stories、tasks与工作记录的追踪项目层级下设有迭代(iteration),基本上一个项目应该要有许多features或requirements。透过迭代,你可以安排要将哪些features放在哪个迭代,而将另一些feature放在另一个迭代。

迭代层级里面放置用户故事(user stories)。用户故事用来代表一个用户可了解的需求,应该是一组独立且不可分割的功能。

用户故事层级里放置任务(tasks)。如果把用户故事看作是需求,那任务就是完成某需求所要进行的工作。任务由开发人员撰写,它同时也可用来精估工时。

任务开始进行后,就可以追踪其工时。Xplanner会在迭代、故事,以及任务层级的页面,以进度条的方式来展示进度。

以白板和Excel

简单、 易用、 实施基础工

表格为主要实

门槛低。具

现工具。出色的质量和固有的

以独立的工具

开放性,在一定范围开源工

支持开发过程

内对开发过程实现了具

中局部的管理。

有效的管理。

各工具界面统一、特

集成各类管理

征一体化;各工具整规模庞大,功

厂商工功能,共同构

体规划,综合集成。能复杂,价格

成一个协同工具

对Scrum开发过程实昂贵。

作的集成平台。

现整体管理。 当敏捷团队扩展为大型团队、开发方式变成大型项目的主流开发方式时,这些自己临时组织起来的技术,如仅靠白板、电子表格和WIKI等将难以满足需求。

厂商工具对Scrum开发过程管理支持是最完善的,同时也是价格最昂贵的,对于刚刚处于起步阶段的企业来说,显然是无法承受的。

开源软件不是由统一的组织进行开发的,所以不同的软件之间难以进行协同工作。目前开源软件应用主要还是集中在各个领域的独立部分。例如项目管理、需求管理、变更\缺陷管理、配置管理以及测试管理等。由于开源软件没有得到商业化企业的支持,难以开发出大规模的集成平台去支持整个软件开发过程的管理。因此,该局限性使得开源软件的应用无法满足实际用户的综合需要。

2.2 缺陷管理工具

缺陷管理贯穿于软件开发生命周期之中, 是整个周期中不可缺少的环节。Mantis是基于Web的开源缺陷跟踪系统, 采用13

2 支持敏捷开发过程管理平台的开源工具

蔡建平 等:敏捷开发过程管理平台的设计与应用

PHP语言编写,安装方便,使用简单[3]。其主要特点如下:

1)个人可定制Email通知功能,每个用户可根据自身的工作特点来订阅相关缺陷状态邮件;

2)支持多项目、多语言;

3)权限设置灵活,不同角色有不同权限,每个项目可设为公开或私有状态,每个缺陷同样也可设为公开或私有状态,每个缺陷可以在不同项目间移动;

4)主页可发布项目相关新闻,方便信息共享;

5)方便的缺陷关联功能,除重复缺陷外,每个缺陷都可以链接到其他相关缺陷;

6)有各种缺陷趋势图和柱状图,为项目状态分析提供依据,如果不能满足要求,可以把数据输出到Excel中进一步分析;

7)缺陷报告可打印,支持可定制的报表输出,可定制用户输入域;

8)可以对历史缺陷进行检索。

1)服务器保存了所有版本的代码,每个开发人员从服务器checkout出代码,修改代码完成某项工作后checkin修改的代码,在服务器中会记录一个新的软件版本;

2)支持多平台下的操作;

3)管理方便,逻辑明确,符合一般人思维习惯;4)易于管理,集中式服务器更能保证安全性;5)代码一致性非常高;

6)适合开发人数不多的项目开发。

3 敏捷开发过程管理平台的设计与实现

由于软件企业在软件产品开发过程中,经常发现开发团队在进度、质量等方面的控制能力无法满足业务需求,经常遇到开发滞后计划,软件未能及时交付使用,突发需求影响整个开发计划等现象。因此,构建一个支持敏捷开发的过程管理平台显得尤为重要。敏捷开发过程管理平台是用来实现软件交付生命周期的管理,并结合敏捷开发思想,进行软件开发过程中的项目管理、测试管理、缺陷及变更管理、配置管理等工作。本文提出的敏捷开发过程管理平台是针对Scrum敏捷开发方法,通过开源软件与Jazz平台的集成搭建轻量级的过程管理平台。

2.3 测试管理工具

Testlink用于进行测试过程中的管理,通过使用Testlink提供的功能,可以将测试过程从测试需求、测试设计、再到测试执行完整的管理起来,同时,它还提供了多种测试结果的统计和分析,使我们能够简单的开始测试工作和分析测试结果。Testlink是sourceforge的开放源代码项目之一[4]。作为基于Web的测试管理系统,Testlink的主要功能包括:

1)根据不同的项目管理不同的测试计划,测试用例,测试构建相互之间独立;

2)可以基于关键字搜索测试用例;3)能够将现有测试用例简单修改后复用;

4)设定执行测试的状态(通过,失败,锁定,尚未执行),失败的测试用例可以和 Mantis中的 bug 关联,每个测试用例执行的时候,可以填写相关说明;

5)测试结果分析。可以实现按照需求、测试计划、测试用例状态、版本,统计测试结果;

6)支持将测试结果导出成Html,Word或是Excel格式;7)测试用例和测试需求能够关联。测试可以根据优先级指派给测试员,定义里程碑;

可直接发送测试报告邮件。

3.1 基于Jazz平台的编程模型

Jazz平台是 IBM Rational 面向软件交付技术的下一代协作创新平台,该平台开源并通过社区驱动开发。Jazz 平台是一个用于整个软件生命周期的团队协作平台,旨在支持软件生命周期各个阶段任务的无缝集成。Jazz平台的客户端和服务器端都具备扩展性,可以从小的团队扩展到大的企业环境。集成端到端的工具可以帮助团队更有效地构建软件,并使得软件开发活动更加令人愉快。

Jazz平台内核是必需的组件集,包括两个组件为:Repository和Team Process。Repository组件提供可扩展的存储库,其功能对所有客户端和服务器配置中的其他组件可用。Team Process组件提供了Jazz的流程支持基础,其功能也对所有客户端和服务器配置中的其他组件可用[6]。通过Web服务方式可以将开源工具集成到Jazz平台,由Jazz平台统一管理,协同工作。

基于Jazz平台的开发与基于众多主流的J2EE框架开发类似,都采用MVC的分层模型,该模型如图1所示。Jazz提供了各种不同形式的服务,例如Restful服务、RPC服务等。因此它为不同种类的客户端接入提供了相对统一的基于service接口,无论是基于Ajax的Web UI还是基于RCP的Eclipse UI都可以统一使用同一套后端提供的服务,无需做任何修改,它为不同类型的UI接入提供了内在的支持。14

2.4 配置管理工具

SVN是近年来崛起的版本管理工具,是CVS的接班人。目前,绝大多数开源软件都使用SVN作为代码版本管理软件。该工具是基于Web的开源源代码管理软件,采用PHP语言编写,能够有效解决软件开发过程中版本混乱、变更多、追溯难等问题[5]。其主要特点如下:

蔡建平 等:敏捷开发过程管理平台的设计与应用

图1 基于Jazz平台的编程模型

Fig.1 the programming model based on Jazz platform 在典型的Web应用中,一个Jazz构件包含以下几个部分:Model:用于数据模型和服务接口的定义,类似于MVC的Model层

Service:用于服务的实现,类似于MVC的Controller层Clients:用于用户界面的实现,类似于MVC的View层因此Jazz把一个典型的Web开发转化成了Eclipse插件的开发,应用程序通过对不同扩展点进行扩展实现相应的功能并具有很强的重用性和扩展性。一个Jazz构件可以依赖其它Jazz构件,并调用被依赖构件提供的服务。而应用程序只需要关注对不同服务的调用,服务的实例化和维护由Jazz平台进行提供,简化应用程序开发。

图2 Scrum敏捷开发过程管理平台的架构

Fig.2 the platform architecture of Scrum process management

3.3 开源软件与Jazz平台的集成

传统的Web服务通过SOAP(简单对象访问协议)来进行消息的交换,它是一种用于单向通信的消息格式,将消息组合成XML文档,描述消息的传输,其主要是通过HTTP协议。HTTP协议有最基本的GET、PUT、POST、DELETE四个动作,它们被称作是HTTP的统一接口,但SOAP仅使用其中的POST方法,享受不到REST的优点,而且对HTTP的响应代码很少使用。SOAP对于所有的操作都是通过对单个的URI做POST操作完成的。所有的操作,不管是读取或者修改信息,均没有用到GET和PUT,而是将操作放在POST信息里面[7]。

为彻底解决传统Web服务存在的问题,本文采用REST技术实现Web服务。解决办法是,首先将每个开源软件根据其功能划分为多个不同的服务,再将扩展服务划分为资源,让URI体现更多的信息,用不同的URIs标识服务里的每个对象。没有必要通过POST方法进行所有的操作。对于不同类型的对象,用统一的接口实现。

在 REST中可以显式地使用 HTTP 方法,对系统资源进行创建、读取、更新和删除操作:

● ● ● ●

3.2 敏捷开发过程管理平台的架构

本平台架构设计分为两大部分,分别为Jazz Server基础服务和Jazz Server Extension扩展服务,平台架构模型如图2所示。在底层,Jazz基础服务和工具服务器扩展都会以一个或多个OSGi组件方式实现。

1)核心部分

平台架构的核心部分是Jazz Server,它支持该平台的基础服务和一定数量的工具服务器扩展。Jazz Server基础服务包括用户管理、协作、查询、存储、工具互通互联等公共能力。它提供了软件交付生命周期服务组件共同需要的一些基本服务。

2)扩展部分

平台架构的扩展部分是Jazz Server Extension,它提供了平台的服务器扩展,通过使用基础服务实现某个领域的特定服务,例如项目管理、缺陷管理、测试管理、配置管理等。从而使不同的工具组合成为一个逻辑的整体进行工作,实现软件交付生命周期的管理。企业也可根据已使用工具的情况以及开发流程的特点替换选用不同的工具,本文仅以上文中选好的开源工具作为扩展服务。

15

使用 POST 方法在服务器上创建资源

使用 GET 方法从服务器检索某个资源或者资源集合使用 PUT 方法对服务器的现有资源进行更新使用 DELETE 方法删除服务器的某个资源

REST从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表形[8]。通过REST服务接口,Jazz的客户端可以通过标准的HTTP协议访问服务器端组件的服务,从而实现了组件间的协作。

4 基于开源软件的敏捷开发过程管理平台的应

蔡建平 等:敏捷开发过程管理平台的设计与应用

Scrum是一种灵活的敏捷软件开发管理过程,对于那些功能需求可能经常发生变化的项目来说,Scrum是最为理想的选择之一。因此,以Scrum软件交付过程为例,展示该交付项目管理过程是如何在此平台上进行的。Scrum软件交付项目管理过程如图3所示。

5) 项目收尾

软件交付团队可以把团队经验和教训反映到项目管理的过程定义中,同时,通过将其导出成为新的模板,供其他项目团队使用,实现经验教训的固化和重用。项目经理可直接从实际工作中总结出来项目健康信息,自动捕获项目数据,自动生成所需项目报告。

5 结论

基于开源软件的敏捷开发过程管理平台的设计与实现,是对软件交付生命周期管理的有力支持。通过对不同功能的开源工具间的整合,实现了同一平台下针对Scrum敏捷开发流程的完整生命周期管理的解决方案,以覆盖整个软件的交付过程,包括:项目管理、需求分析、分析设计、开发、测试、配置管理、缺陷及变更管理等诸多环节。此外,基于开源软件的敏捷开发过程管理平台研究的不仅是一个过程管理工具,也提供了一种

图3 Scrum软件交付项目管理过程Fig.3 the Scrum delivery process management1) 项目启动

在一个采用Scrum的项目中,首先要将所有需要完成的工作列在一个Product Backlog中,项目开发过程中需求的改变也要写进去。通过Xplanner工作项管理功能,项目经理能够方便地完成项目需求定义和收集,为团队提供统一的需求列表或产品订单。

2) 项目规划

利用Xplanner项目规划能力,项目经理能够快速完成项目级的整体项目计划或发布规划,以及迭代级的详细迭代计划。

3) 项目执行

迭代计划中的每个任务都是一个工作项,项目经理可以基于预定义的工作流,将其分配给指定的团队成员,实现工作任务的自动流转。开发人员基于Xplanner各种工作项进行开发活动,生成的代码和文档可以直接通过内置的配置管理功能存入SVN,实现完整的配置变更管理;测试人员基于Testlink工具进行测试活动,生成的Bug可以直接导入到Mantis,实现完整的缺陷管理;版本构建人员基于SVN进行版本配置管理;质量保证人员基于Mantis进行缺陷及变更管理。通过开源软件在Jazz平台上的集成,敏捷开发过程能够在该平台上动态执行,Jazz平台类似中央协调员,进行人员的统一管理,指挥整个项目团队的密切协作,高效工作。

4) 项目监控

通过Web访问,项目经理和团队中的每位成员都能够非常方便地了解整个开发团队的组织结构,了解团队中每个人的角色和职责分工,实时了解团队的工作进度和工作状况。

16

开源软件间集成的新思路,企业能够根据实际开发方法、已有工具的情况来进行新的裁剪或扩充。同时,也实现了开源软件的价值。本文对开源软件的集成以及综合应用进行了有益尝试,并且取得了一定的进展。

参考文献

[1] 贾子河,段永刚,蒋博等.轻松Scrum之旅——敏捷开发故事[M].

北京:电子工业出版社,2009.37-43.

JIA Z H, DUAN G, JIANG B,et al . Easy trip - agile

Scrum development story [M]. Beijing: electronic industry press,2009.37-43. (in Chinese)

[2] Xplanner./projects/Xplanner/[3] Mantis./

[4] Testlink./docs/Testlink.

php

[5] SVN./

[6] 宁德军,朱育雄,孙昕.凑响软件交付的爵士乐——Jazz平台

实践者之路[M].北京:清华大学出版社,2009.22-26. NING D J, ZHU Y X, SUN X . Make loud Jazz

music——the Jazz platform practitioners of software delivery way [M]. Beijing: tsinghua university press, 2009.22-26. (in Chinese)

[7] 许卓明,栗明,董逸生.基于RPC和基于REST的Web服务

交互模型比较分析[J].计算机工程,2008.16-17.

XU Z M, LI M, DONG Y S . Comparative analysis based on

the RPC and rest-based Web services interaction model [J]. Computer engineering, 2008.16-17. (in Chinese)

[8] Leonard Richardson,Sam Ruby.RESTful Web

Services[M].O’Reilly,2007.45-49

本文来源:https://www.bwwdw.com/article/el01.html

Top