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

Posted IT项目管理界

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了敏捷开发过程管理平台的设计与应用相关的知识,希望对你有一定的参考价值。

摘 要:当前备受企业青睐的敏捷开发过程管理工具存在成本高、可替换性差等问题,为帮助中小企业解决以上问题,并且根据企业自身开发特点进行开发过程管理,提出了基于开源软件的敏捷开发过程管理平台的设计与应用。通过开源软件对敏捷开发过程中各阶段管理活动提供支持,并根据主流 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、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 会在迭代、故事,以及任务层级的页面,以进度条的方式来展示进度。


2.2 缺陷管理工具


缺陷管理贯穿于软件开发生命周期之中 , 是整个周期中不可缺少的环节。Mantis 是基于 Web 的开源缺陷跟踪系统 , 采用php 语言编写,安装方便,使用简单 [3]。其主要特点如下:



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 平台是 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 接入提供了内在的支持。


在典型的 Web 应用中,一个 Jazz 构件包含以下几个部分:


Model:用于数据模型和服务接口的定义,类似于 MVC 的Model 层


Service:用于服务的实现,类似于 MVC 的 Controller 层


Clients:用于用户界面的实现,类似于 MVC 的 View 层


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


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


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


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


1) 核心部分


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


2) 扩展部分


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



 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 方法,对系统资源进行创建、读取、更新和删除操作:


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


● 使用 GET 方法从服务器检索某个资源或者资源集合


● 使用 PUT 方法对服务器的现有资源进行更新


● 使用 DELETE 方法删除服务器的某个资源


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


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


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



1) 项目启动


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


2) 项目规划


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


3) 项目执行


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


4) 项目监控


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


5) 项目收尾


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


5.结论


基于开源软件的敏捷开发过程管理平台的设计与实现,是对软件交付生命周期管理的有力支持。通过对不同功能的开源工具间的整合,实现了同一平台下针对 Scrum 敏捷开发流程的完整生命周期管理的解决方案,以覆盖整个软件的交付过程,包括:项目管理、需求分析、分析设计、开发、测试、配置管理、缺陷及变更管理等诸多环节。此外,基于开源软件的敏捷开发过程管理平台研究的不仅是一个过程管理工具,也提供了一种开源软件间集成的新思路,企业能够根据实际开发方法、已有工具的情况来进行新的裁剪或扩充。同时,也实现了开源软件的价值。本文对开源软件的集成以及综合应用进行了有益尝试,并且取得了一定的进展。


(本文2013年发布于《软件》)

以上是关于敏捷开发过程管理平台的设计与应用的主要内容,如果未能解决你的问题,请参考以下文章

软件过程与项目管理(第五周作业)

一图解说“敏捷开发项目管理流程”

低代码平台中内置敏捷开发方法有哪些优势

5款国产开源低代码开发平台推荐

1.3敏捷宣言与敏捷过程的特点

我行创新 | 基于CMMI3级的Scrum敏捷方法创新与实践