计算机应用   2017, Vol. 37 Issue (7): 2019-2026  DOI: 10.11772/j.issn.1001-9081.2017.07.2019
0

引用本文 

杨涛, 石琳, 宋梦蝶, 李守斌, 王青. 支持多工具协同的流程管理系统的设计与实现[J]. 计算机应用, 2017, 37(7): 2019-2026.DOI: 10.11772/j.issn.1001-9081.2017.07.2019.
YANG Tao, SHI Lin, SONG Mengdie, LI Shoubin, WANG Qing. Design and implementation of process management system supporting multi-tool collaboration[J]. Journal of Computer Applications, 2017, 37(7): 2019-2026. DOI: 10.11772/j.issn.1001-9081.2017.07.2019.

基金项目

国家自然科学基金资助项目(61432001,91318301,91218302)

通信作者

王青, E-mail:wq@itechs.iscas.ac.cn

作者简介

杨涛(1992-), 男, 安徽安庆人, 硕士研究生, 主要研究方向:软件工具服务化与柔性集成、工作流;
石琳(1985-), 女, 吉林长春人, 助理研究员, 博士, 主要研究方向:经验软件工程、需求工程、软件演化;
宋梦蝶(1990-), 女, 辽宁大连人, 硕士研究生, 主要研究方向:数据资源服务化;
李守斌(1987-), 男, 山东潍坊人, 工程师, 硕士, 主要研究方向:机器学习、软件自动化;
王青(1964-), 女, 重庆人, 研究员, 博士, CCF高级会员, 主要研究方向:软件过程方法与技术、经验软件工程

文章历史

收稿日期:2017-01-06
修回日期:2017-03-03
支持多工具协同的流程管理系统的设计与实现
杨涛1,2,3, 石琳1,3, 宋梦蝶1,2,3, 李守斌1,3, 王青1,3    
1. 中国科学院软件研究所 互联网软件技术实验室, 北京 100190;
2. 中国科学院大学, 北京 100190;
3. 中国科学院软件研究所 总体部, 北京 100190
摘要: 软件开发流程中越来越依赖各种计算机辅助软件(CAS)。在使用多种工具的情况下,会遇到开发流程不可定制、流程数据不一致和流程管理效率低等问题。针对这些问题提出了一个支持多工具协同工作的软件开发过程管理系统。通过分析软件开发过程,研究支持快速迭代、偏向流程管理的软件工程开发模式,结合工作流思想设计分层架构的软件开发过程管理系统。该系统经过严格的测试用例检测,在设计的576个测试用例下通过率达到85%,能够完成工具协同的大部分需求,包括流程可定义、保持数据一致和开发流程管理。该系统在7个软件开发组,共约200人的规模下推广试用。根据管理组、开发组和测试组的反馈结果,该系统比传统方式节省了每周例会的时间,方便了开发任务的管理,从而提高了开发效率。
关键词: 软件工程    软件开发流程    流程管理    工作流    计算机辅助软件    
Design and implementation of process management system supporting multi-tool collaboration
YANG Tao1,2,3, SHI Lin1,3, SONG Mengdie1,2,3, LI Shoubin1,3, WANG Qing1,3     
1. Laboratory for Internet Software Technologies, Institute of Software, Chinese Academy of Sciences, Beijing 100190, China;
2. University of Chinese Academy of Science, Beijing 100190, China;
3. General Department, Institute of Software, Chinese Academy of Sciences, Beijing 100190, China
Abstract: The software development process is increasingly depending on various Computer-Aided Software (CAS). Simultaneously using these tools bring some problems, including non-customized development process, inconsistent process data and inefficient process management. To deal with these problems, a software development process management system that supports multi-tool collaboration was proposed. The hierarchical architecture system was developed on workflow design by analyzing software development process and studying the software engineering development model that supports fast iteration and tends to process management. Besides, the system was rigorously tested under 576 test cases. As a result the pass rate is 85%, which is able to meet the majority of tool collaboration needs, including definable development process, consistent interaction data and available process management. The system has been used by seven development teams with about 200 developers. The feedback results from the managers, developers and testers show that this system saves the time of weekly meetings, facilitates the management of development tasks, and significantly improves the development efficiency.
Key words: software engineering    software development process    process management    workflow    Computer-Aided Software (CAS)    
0 引言

在传统的软件工程中,软件开发生命周期是一个十分重要的概念。随着互联网技术的飞速发展,软件开发节奏日益加快,快速迭代式的开发逐渐成为主流。在现代的软件开发环境下,多人多地点参与的项目也日渐增多,复杂情况下的软件开发需要考虑信息的对等、开发流程的定制、开发任务的分配以及管理等问题。在协同开发过程中,面对的开发流程和工作环境各不相同,单纯依靠传统的软件开发模式,信息和数据的流转基本靠人工来进行,效率较低,因此,通过研究软件开发流程,将开发项目进行解耦,降低各个模块之间的耦合度,来解决此类问题。

与此同时,随着计算机软件技术的发展,各种类型的信息系统和计算机辅助软件(Computer-Aided Software, CAS)也被广泛地使用以支持这些工作,但这些软件和系统基本上是独立运行的,相互之间缺乏必要的交互、协作与感知,从而使得它们在协调多个人的活动、协同完成某个共同的任务方面有着比较严重的不足。这也是工作流管理系统(Workflow Management System, WfMS)自进入20世纪90年代以来吸引了来自研究机构与产业界广泛关注的重要原因[1-4]

本文从分析软件开发过程的角度,研究支持快速迭代、偏向流程管理的软件工程开发模式,提出一种基于工作流的支持多工具协同工作的软件开发过程管理模型,致力于让处于软件开发过程中的用户可以自由定制软件开发流程,选择适合的计算机辅助软件,通过工作流来推动软件开发生命周期中的数据进行自动流转。该模型的灵活性和流程管理功能,让软件开发过程中的步骤更加直观,开发流程管理更加方便,在一定程度上提高了软件开发效率。根据设计这个框架的思想和实际需求,本文开发了流程管理系统,并在7个软件开发组织,共约200人的规模下推广试用,证实了该方案的可行性。

1 研究背景

工作流技术发源于20世纪六七十年代,其当初主要目的是办公自动化和无纸化。后来工作流的思想被应用到各个行业中,通过工作流的思想来实现不同行业的操作流程,在提高效率的同时,也让这些行业具体的操作流程逐渐变得规范。在过去的几十年间,不同的学者们研究了不同行业,如李志民等[5]研究的基于工作流的大型仓库物流监控系统;李鹏等[6]研究的基于工作流技术的办公自动化系统在医院中的应用;张宏等[7]研究的基于系统动力学的高速公路维护管理系统等[8]。本文的研究目标是软件工程领域,针对软件开发日益成熟的开发模式和广泛使用的软件开发辅助工具,提供一种能够提高软件开发效率,有利于软件开发流程规范性的软件工程辅助工具集成方案。

1.1 工作流

工作流技术的标准化组织工作流管理联盟(Workflow Management Coalition, WfMC)于1993年成立。WfMC所给的定义为:工作流是一类能够完全或者部分自动执行的经营过程,根据一系列过程规则,文档、信息或任务能够在不同的执行者之间传递、执行[9]

工作流技术为工作流自动化和构建流程应用提供基础平台,实现了流程逻辑与业务逻辑的分离,支持业务流程的分析和规范化定义以及业务单元的自动组装,降低了复杂流程应用的开发难度,提高了应用系统的管理效率。

1.1.1 工作流管理系统

工作流管理的主要目标是通过对相关的人力资源、信息资源的调用,来协调和完成业务过程中的各个环节,让业务按照一定的逻辑顺序依次执行,实现业务流转的自动化。

工作流管理系统主要具备以下3个功能特征:

1) 工作流定义功能。

主要是对业务处理过程的计算机定义,提供了一种或多种分析、建模、系统定义技术,将一个现实世界的业务处理过程转换成计算机可处理的定义。

2) 运行控制功能。

对过程的定义进行解释,创建并控制过程的运行实例,调度过程的各种行为步骤,调用适当的人工和IT应用程序资源。

3) 运行交互接口。

提供与人员或IT应用程序工具进行交互接口来处理各种活动步骤,例如确定过程的状态,调用应用程序工具,传递应用程序数据等[10]

1.1.2 术语介绍

在该系统中,由于采用了工作流,有一些重要实体定义如下。

1) 流程定义(延伸为模板)。

一个图形流程定义,代表工作流的流程逻辑元素以及各元素之间的关系。工作流模板跟流程图很类似,将一系列步骤按照一定的逻辑组织在一起,按照工作流定义语言形成一定的文本结构,能被工作流引擎所识别。工作流模板的定义方式最常见的就是图形拖拽,工作流定义语言也有很多种,可扩展标记语言(eXtensible Markup Language, XML)比较常见。图 1给出的就是工作流模板的样例。

图 1 工作流模板 Figure 1 Workflow template

2) 活动。

活动是组成流程定义中的一个逻辑步骤的任务(自动任务或人工处理)。活动的体现是任务节点,等待被分配任务的人去完成,是工作流流转中工作流最关心的部分,也是跟工作流对接的业务最相关的部分。在模板被实例化以后,任务节点就具有了实际的意义。

3) 活动所有者。

活动所有者是有权宣布一个活动结束,然后推进工作到流程中的下一个活动的参与者。

4) 流程实例。

一个流程实例,通常称为工作,是一个流程定义的运行实例。对于工作流引擎,只要是符合工作流定义的模板都可以被实例化,形成一个流程实例,就像操作系统分配的一个进程一样。这个流程实例能够携带被实例化时所赋予的信息在工作流引擎的推动下进行流转。

5) 流程上下文变量。

保存每一个流程运行的上下文信息。通常在流程定义中声明这些变量,然后在流程实例生成时被实例化。

6) 参与者。

参与者是以下类型之一:资源集、特定资源、组织单元、角色(一个人在组织内部的作用)、人或系统(自动代理)。

1.2 计算机辅助软件集成的开发环境

在软件即服务(Software as a Service, SaaS)[11]的思想下,可以将软件开发不同阶段的辅助工具抽象成一个个不同的服务。从广义上来说,可采用四级模型来说明软件即服务应用的成熟度,对于第二级成熟度而言,软件及服务需要可配置[12]

为了更简明地阐述,本文简化软件工程开发模型为3个步骤:项目管理、代码管理和缺陷管理。每个步骤下都有各种特色的计算机辅助软件来辅助软件开发过程,这些软件的集成在软件开发中扮演了十分重要的角色[13]

软件开发人员根据需求,设计的流程如图 2所示。

图 2 简化的软件开发流程 Figure 2 Flow chart of simplified software development

软件开发者在设计开发流程的时候可以自由选择不同的节点来完成不同的功能,而这些节点的背后就是一个个计算机辅助软件提供的功能。在这样一个灵活定制的流程之下,高效地实现软件开发过程的自动流转。

现有研究中,软件开发辅助工具的集成已有相关研究,但是大部分的研究都是着力于辅助工具的硬性集成,偏向于研究一个支持某些软件开发辅助工具的开发平台,例如郭慎平[14]研究的基于Eclipse的嵌入式开发工具的研究与实现。在该平台上对软件开发过程中的任务和数据进行管理,包括任务分配和权限管理等。

1.3 研究意义

现有方案的劣势就是软件开发辅助工具的耦合性很高,不便于后期更换软件或者版本,可扩展性和可维护性较低。

结合工作流的思想,针对这种能够提高开发效率的平台,本文与现有研究的区别主要体现在3个方面。

1) 软件开发流程可定制。

传统的系统拥有固定的软件开发流程,工具之间的耦合度很高,不便于后期更换软件或者升级版本;本文设计的系统允许用户定制不同的软件开发流程,并选用不同的工具来实现。

2) 软件开发数据一致性。

传统的系统在工具对接和数据流转方面多采用硬性集成,通过工具间的接口对接的方式进行数据互联;不同工具的数据要求格式不尽相同,传统系统在工具对接时处理这些数据,各个对接之间的数据格式各异。本文采用的方法是在工作流中统一数据格式;这些信息的统一有利于信息的流转和重要信息的提取,在本文3.3节有详细介绍。

3) 引入工作流来管理开发流程。

工作流除了进行任务的管理和推进之外,工具之间信息的传输也通过工作流来实现。这样做的好处有两点:第一,工具与工具之间的耦合问题就变成了工具与工作流之间的耦合问题,将一个O(n2)的问题(工具之间的相互耦合cn2)变成了O(n)的问题(工具与工作流的耦合cn1);第二,工具接入工作流之后,数据的流转会在工作流中进行,在工作流层面可以进行统一的数据管理、分析和持久化。

2 系统功能性分析与总体结构设计

项目开发过程可以分成项目管理模块、开发模块、测试模块、文档管理模块、集成模块、验证模块等。充分利用不同计算机辅助软件所提供的功能来完成和支撑软件开发过程中在这个阶段的需求[15]

本文设计的基于工作流的支持多工具协同的软件开发过程管理模型,是以工作流引擎为核心,来支撑软件开发过程中的各种需求。图 3是该模型总体设计的基础架构。

图 3 系统设计架构 Figure 3 Architecture of system design

本文的重点是工作流引擎的开发和流程管理与监控系统的设计与实现。架构中的各类工具应用了面向服务和设计模式中代理模式的思想,通过服务代理中间件的方式实现与工作流最大限度的解耦。邵虹等[16]的工作中有详细介绍。根据图 3的系统设计分析,需要设计和实现以下两个方面。

1) 工作流引擎。

① 选择合适的工作流引擎;

② 开发基于工作流引擎的RESTful API(REpresentational State Transfer Application Programming Interface)。

2) 流程管理。

① 确定流程可定制化方案,提供流程定制服务;

② 提供可视化的流程和任务管理服务;

③ 扩展设计数据库来支撑数据的存储和流转。

2.1 工作流引擎 2.1.1 WorkFlow Engine & WorkFlow API

在架构图 3中,工作流引擎(WorkFlow Engine)是一个核心部分。不同于张海军等[17]提出的基于面向服务架构(Service-Oriented Architecture, SOA)的企业应用集成框架,工作流的加入对推动任务自动化流转有着非常高效的作用。使用工作流的好处是,高可维护性以及扩展性。如果一个系统中只用到了一个流程,且变动的可能性不大,基本不需要考虑工作流。在本文架构设计中,灵活的流程配置和服务选择是它的特点,工作流引擎在该框架下起到了核心的作用[18]

工作流可以将整个流程中不同的操作以一定的逻辑衔接起来,并且让信息在其中自动流转。系统会处理自动流转的任务,剩下的任务用某种方式通知需要处理的人,让人介入,而不需要人主动去关注现在应该做哪个步骤。

工作流引擎与灵活定制的流程相结合,并且流程可以灵活选择相应的服务,就必须将工作流当成一种服务来提供给软件开发辅助软件使用。对于制定的任何流程,以及选定的何种辅助软件,只要这些软件需要在流程中自动流转传递信息的时候,就需要跟工作流进行接口对接[19]。根据工作流引擎的特点,开放出应用程序接口(Application Programming Interface, API)来供服务进行调用和对接十分必要。

图 4所展示的就是工作流引擎以及工作流引擎API之间的关系,对应架构中的WorkFlow Engine和WorkFlow API两层。将提供功能API与工作流内核分离的另外一个好处就是提高了工作流自身的灵活性和可扩展性。由于流程的可定制性和服务的可选择性,未来的流程可能更加复杂,服务种类可能更多,对工作流的功能要求可能更复杂,单独将提供功能API作为架构的一部分,会有利于后期的扩展、开发和维护。

图 4 工作流引擎参考模型 Figure 4 Reference model of workflow engine
2.1.2 流程定义语言扩展

为了使工作流管理系统具有良好的互操作性,首先必须对工作流模型中公共的实体、属性以及实体间的关系作一个规范。工作流管理联盟于1999年提出了工作流过程定义语言(Workflow Process Definition Language, WPDL),包括流程的节点、流转方向、判断条件、负责人等。合理的流程定义语言不仅能够帮助工作流引擎更好地工作,更能够让使用者轻松明确地制定自己需要的流程[20]。根据本文设计的架构,需要对流程定义语言进行改进和设计,来支持服务和工具等更多的功能。

2.1.3 工作流模板库

1) 模板制作。

设计模板定制平台,向用户提供可操作的用户界面(User Interface, UI)来定制属于自己的软件开发流程。设计合适的拖拽界面,根据需求定义适当的工作流模板节点和流程语言是该部分的重点。

2) 模板管理。

由于工作流模板的高复用性和可编辑性,建立一个模板库对于提高用户定制模板效率有着重要作用。每个用户建立的模板都可以被保存至模板库,用户在自定义模板的时候也可以从模板库直接导入相似模板进行修改,达到事半功倍的效果。

3) 模板权限控制。

在软件开发过程中,用户权限角色化对于软件开发过程管理是有帮助的,因此根据用户的权限来相应地建立模板库的权限对于保护软件开发过程中信息的安全性和私密性有着重要作用。

2.2 流程任务管理与监控

所谓流程任务管理与监控,就是对前面提到的工作流实例、任务等元素进行管理。完善的管理能够让工作流支撑的业务流程事半功倍。

2.2.1 流程部署

当用户部署工作流模板时,工作流会根据工作流模板所携带的信息部署生成一个工作流实例。在本文的设计中,针对软件开发过程的流程的部署会包含其他的信息。当给定一个工作流实例的时候,本文架构首先会分析这个工作流实例所需要完成的步骤,完成每个步骤所参与的辅助软件。除此之外,针对流程部署,采集一些其他的软件开发过程相关输入(如项目相关初始数据、流程节点负责人、软件开发流程时间限制以及一些阈值等)。

2.2.2 流程管理

流程部署之后,流程实例中就包含一个个任务等待执行,这些任务会按照设定的执行逻辑,根据一定的条件进行执行。这些任务实质的内容就是通过任务节点关联的软件开发工具去完成相应的软件开发需求。软件开发过程有序进行的前提就是对这些任务进行高效的管理,同时给用户提供便捷的服务。

1) 待处理任务。

在设定好的软件开发流程(模板)中,每个节点即为一个任务,每个任务或是自动流转或是有任务负责人,根据软件开发流程化的特性,给所有负责人发送相关的任务信息,并提供查询任务的接口。这样会大大提高流程中节点负责人的工作效率。

2) 人工处理。

软件开发过程中,不同的任务有不同的执行方式:与工具对接的自动流转和与用户操作相关的人工处理。与用户操作相关的人工处理需要用户的参与,从用户那里获得相关数据,流程再根据相应的逻辑进行流转。

3) 添加子流程。

当一个节点任务过于复杂,可以将这个任务单独处理为一个流程。面对这种情况,在当前任务下面创建子流程是本文设计的一个亮点之一。子流程的创建机制与父流程相同,需要着重考虑和设计的是子流程与父流程执行状态的同步、数据的交互和节点负责人之间的任务传递。

2.2.3 流程控制

一个流程实例(Process Instance, PI)就是一个软件开发流程的简要概括。完善的流程控制会让软件开发过程进行的更加顺利。

1) 已发起流程。

通过已发起流程,用户可以查看当前已经发起的流程,以及流程的一些信息。对应过来就是当前已经启动的软件开发项目以及各个项目的进展。

2) 流程监控。

软件开发流程状态包括流程进展、耗时、产出、负责人以及接下来的动作活动等这些信息。通过图表的形式将流程的状态和流程的数据,与流程执行过程中数据的传递直观地展现出来,这对控制软件开发过程会有很大的帮助。

3) 终止流程。

对于废弃的项目或者需要重新作出调整的项目,提供一个终止流程并保存之前相关数据的功能十分必要。

2.2.4 数据统计

在本文设计的系统中,会收集软件开发过程中几乎所有的数据,对这些数据的分析将会对以后的软件开发过程有很大帮助。

1) 工具使用统计。

在用户设定模板进行软件开发的时候,模板中会带有使用何种软件工程辅助工具来帮助开发的信息。对这些信息的统计能够得出在不同开发阶段使用不同软件开发辅助工具的偏好,有利于优化和推广这些软件开发辅助工具。

2) 数据流量统计。

每个任务流转时所携带的信息可以在执行任务流转的功能中进行统计和记录。这些跟软件开发相关的数据,可以用来分析软件开发过程中的行为偏好、开发过程的侧重点等,对于优化开发流程有一定的潜在价值。

3) 模板使用统计。

记录每一次模板的使用情况,针对经常使用的模板可以进行优化以及抽象成样例模板,方便用户进行模板定制。

2.3 数据库设计

本文设计了存储流程定义的表task_defined,它用来存储流程定义XML文件的名称、流程定义图片的名称、更新的时间以及创建该流程定义的用户的编号和所在组号。

本文设计了流程实例的表task_instance,用来存储流程实例的相关信息。每条记录存储的信息包括流程实例编号、状态、标题、创建时间、创建该流程实例的用户编号、用户名以及该流程实例中所有任务名称和对应任务的负责人,还包括该流程实例对应的外部链接工具的编号。

本文设计了存储对接外界工具的iscas_tool表,它用来存储工具编号、工具描述、工具图标、工具唯一识别信息、工具名称、工具对接统一资源定位符(Uniform Resource Locator, URL)等工具相关的信息。

除了上面设计的数据表之外,流程管理系统主要还应用了Java业务流程管理(Java Business Process Management,jBPM)的18张数据表,在此就不列入数据表设计的范畴。

3 系统实现与测试 3.1 流程可定制化方案——流程定制平台

在工作流的选择上,本文选择了目前主流且功能能完全符合本文需求的jBPM[21]。jBPM是最适合扩展的代表,是在所有开源引擎中最适宜被商业化应用的一款。jBPM使用了开源框架Hibernate3,支持当前大多数流行的数据库,jBPM将数据的管理职能分离出去,自己专注于商务逻辑的处理。使用jBPM流程定义语言(jBPM Process Definition Language, jPDL),直观易懂,可以手工修改。它文档丰富,用户群最大,开源组织十分活跃,被JBoss收购后发展趋势良好[22]

jBPM本身有Eclipse中的流程定义插件,结合框架的需求和用户友好性的考虑,在实现过程中开发设计了自己的流程设计器,能够方便生成和导出XML文件。

流程定制方案上,用户可以自主选择不同的节点,包括开始节点、结束节点、任务节点、分支聚合节点、判断节点等[23]。值得一提的是,在案例中本文设计的流程定义平台上,任务节点是任务处理的核心所在,这个节点能够携带很重要的信息,如标识任务节点、节点使用工具、节点负责人等,本文也在基于XML的流程定义语言上扩充了自己的元素。

< process xmlns='http://jbpm.org/4.4/jpdl' >

  <start g='15, 16, 48, 48' name='开始' form='开始'>

    <transition name='startTask' to='ProjectMgr'/>

  </start>

  <task assignee='yangtao@nfs.iscas.ac.cn' g='134, 132, 90, 50' name='ProjectMgr' tool_id='4' function_id='2002'>

    <transition name='toCode' to='CodeMgr'/>

  </task>

  <task assignee='yangtao@nfs.iscas.ac.cn' g='349, 82, 90, 50' name='CodeMgr' tool_id='4' function_id='2002'>

    <transition name='finish' to='结束'/>

  </task>

  <end g='675, 24, 48, 48' name='结束'/>

</process>

图 5是本文实现的流程定制平台。

图 5 流程定制平台 Figure 5 Process customization platform

在用户设计完成流程之后,需要对流程的合理性进行验证,参考一些文献以及jBPM的一些机制,因不是本文重点,在此就不作赘述[24]

3.2 任务管理与监控方案——任务管理系统

jBPM本身就提供了很多的用户查询交互接口,通过应用程序接口调用的形式给出。本文设计的任务管理系统,用来展示在这个框架下与用户定义流程相关的内容。从功能模块划分,将该系统分为3个部分:流程部署、流程任务管理和数据统计。

1) 流程部署模块。

系统可以根据开发模板的特性和开发流程的不同需求,传递相关数据来支撑开发过程中所需的功能。如图 6所示。

图 6 流程部署 Figure 6 Process deployment

2) 流程任务管理模块。

图 7所示,流程任务管理包括任务列表、模板库和流程监控。流程监控向使用者展示包括流程进度、流程数据流等,流程当前状态以及提供终止流程等操作。

图 7 流程管理 Figure 7 Process management

3) 数据统计模块。

数据统计模块对所有服务的使用、工具的调用、流转的数据提供统计和分析功能,便于改进流程;可以针对流程中任何一次的数据流转进行数据追踪。

这些数据同时可以持久化到本地或者其他数据平台,进行数据挖掘和机器学习等相关分析。

流程管理系统的设计旨在让使用者有更好的用户交互界面可以对流程进行设计和定制;对任务进行可视化、操作和监控;对工具和服务进行注册和验证;对通过流程的数据流进行统计、分析、追踪和统计。

3.3 数据的交互和流转实例

假设简化开发流程如图 8所示。

图 8 开发流程 Figure 8 Flow chart of development

软件开发流程中,虽然使用了很多支持工具,但是有很多信息具备一致性的性质,例如项目名称、参与人员、开发组信息等。在该开发流程之下,设计数据流转过程如图 9所示。

图 9 数据流转示意图 Figure 9 Schematic diagram of data transfer in work flow

数据的传输分为两个部分:Content和Taskdata。Content为全局数据,从发起流程开始,数据量会不断扩大;Taskdata为增量数据,每个任务节点产生的数据。

每个任务节点调用工作流接口结束任务的时候,会传递自己产生的数据到工作流。工作流将它合并到Content中,并传递到下一个任务节点。

在每个Taskdata传递回来的数据中,为确保数据能够合并到Content中并解决重复更新问题,必须对Taskdata传递的内容格式作出约束。系统中会设计通用词表,Taskdata根据通用词表来标志自己传递回的数据。

3.4 系统测试

系统在超过7个开发组中推广使用,并且委托测试组根据要求对系统主要功能进行了严格的测试,测试用例通过率超过80%以上为合格。

3.4.1 测试结果

表 1为系统的测试结果。该测试结果为系统第一个版本的测试结果。功能测试中,针对系统主要功能,设计576个测试用例,执行576个测试用例,无致命缺陷,无严重缺陷,有65个一般缺陷。测试用例通过率超过85%,达到合格标准。经过调查问卷和周期性会议讨论的形式,使用者反映在项目开发效率上已经有很大的提升,对软件开发效率的提高有着很大的帮助。

表 1 测试用例执行结果 Table 1 Test case execution results
3.4.2 用户反馈

相比较传统软件开发模式,该系统从不同用户角度给软件开发带来了便利,提高了效率。

1) 管理组组员。

该系统所提供的实时动态流程监控,能够让管理组的用户时刻了解流程的动态,包括当前开发的任务、任务的进度、任务耗时以及任务产出等软件开发过程中产生的所有信息,同时该系统也给管理组提供方便的操作接口,可以直接对任务内容和任务执行队伍进行校正和停止。管理者反馈,通过系统所能获得和掌控的信息比每周例行召集开发组长开会获取的信息还要丰富,既简便也实用,提高了工作效率。

2) 各小组组长。

开发组、测试组、集成组组长也表示该系统的灵活性也提高了他们的工作效率。开发组组长需要基于Gitlab开源工具来管理和评审代码,在该系统平台下,只需将Gitlab注册到系统中,在部署流程任务的时候就可以让组员使用Gitlab进行代码托管,任务的产出会放在Gitlab上,方便了代码的整合、管理和评审。同时,子父流程功能也能够让组长在分配任务的时候适当确定任务的粒度,可以将不同任务进行细分,该系统使用起来十分符合实际需求。

3) 各小组组员。

打开系统就能知道自己的任务内容,任务进展和任务产出,同时能够知道上游任务相关人员相关的任务产出和可以使用的相关资源,节省去了一部分频繁接洽和邮件商讨的时间,提高了工作效率。

4 结语

基于工作流的支持多工具协同工作的软件开发过程管理模型致力于现代软件开发流程的自动化,提供自由可定制开发流程的方案,对软件开发流程进行全方位的管理与监控,对流程中的数据进行统一的统计、分析和追踪。它可以有效地解决现有的软件开发过程中的3个问题。

1) 软件开发流程可配置。

分析软件开发过程的步骤并分解,降低各个模块之间的耦合性,提升软件开发过程的灵活性和便捷性,使得软件辅助软件的参与不显得十分僵硬。

2) 流程数据不一致。

通过将工具与工作流对接的方式,将软件开发流程中的数据统一到工作流中进行流转,达成了流程数据的一致性。

3) 支持多工具协同的流程管理。

解决了软件开发过程中同时使用多种工具所带来工具数据和开发流程信息管理的问题。建立支持多种工具协同工作的软件开发过程管理平台,规范了多种工具下的开发流程管理,经理论分析和实践验证,在一定程度上提高了软件开发效率。

在目前架构设计中,工作流引擎对工具开放的API的规范性和通用性还有待提高,如何完善这样的工具与工作流对接标准是接下来的研究重点。这将会大大促进工具接入的效率,也有利于该模型的推广。

参考文献(References)
[1] 史美林, 杨光信, 向勇, 等. WFMS:工作流管理系统[J]. 计算机学报, 1999, 22(3): 325-334. (SHI M L, YANG G X, XIANG Y, et al. WFMS:workflow management system[J]. Chinese Journal of Computers, 1999, 22(3): 325-334.)
[2] BAINA K, BENALI K, GODART C. DISCOBOLE:a service architecture for interconnecting workflow processes[J]. Computers in Industry, 2006, 57(8/9): 768-777.
[3] 范玉顺. 面向服务的企业建模和工作流管理研究[J]. 中国计算机学会通讯, 2006, 2(3): 77-79. (FAN Y S. Research on service-oriented enterprise modeling and workflow management[J]. Communications of CCF, 2006, 2(3): 77-79.)
[4] LIU B, FAN Y S. Research on architecture and key technology for service-oriented workflow performance analysis[C]//Proceedings of the 2007 International Workshop on Process Aware Information Systems. Berlin:Springer, 2007:540-545.
[5] 李志民, 赵一丁. 基于工作流的大型仓库物流监控系统设计[J]. 现代电子技术, 2016, 39(6): 66-69. (LI Z M, ZHAO Y D. Design of large warehouse logistics monitoring system based on workflow[J]. Modern Electronics Technique, 2016, 39(6): 66-69.)
[6] 李鹏, 辛海燕, 苗元青, 等. 基于工作流技术的办公自动化系统在医院中的应用[J]. 齐鲁医学杂志, 2016, 31(1): 96-98. (LI P, XIN H Y, MIAO Y Q, et al. Application of office automation system in hospital based on workflow technology[J]. Medical Journal of Qilu, 2016, 31(1): 96-98.)
[7] 张宏, 任芳敏, 郑荣贝. 基于系统动力学的高速公路维护管理系统仿真研究[J]. 系统仿真学报, 2016, 28(3): 676-682. (ZHANG H, REN F M, ZHENG R B. Simulation research for highway maintenance management system based on system dynamics[J]. Journal of System Simulation, 2016, 28(3): 676-682.)
[8] 高爱华, 王寿喜, 赵昆鹏, 等. 天然气管道工程计算集成应用平台开发[J]. 天然气工业, 2015, 35(7): 85-90. (GAO A H, WANG S X, ZHAO K P, et al. Development of an integrated application platform for natural gas pipeline engineering calculation[J]. Natural Gas Industry, 2015, 35(7): 85-90.)
[9] Workflow Management Coalition. Workflow Client Application Program Interface (WAPI) Specification.WflVIC-TC-1009, Version1.2[EB/OL].[2017-01-03]. http://www.wfmc.org/what-is-bpm.
[10] 赵瑞东, 陆晶, 时燕. 工作流与工作流管理技术综述[J]. 科技信息(科学·科研), 2007, 24(8): 105-107. (ZHAO R D, LU J, SHI Y. Workflow and workflow management technology[J]. Science & Technology Information, 2007, 24(8): 105-107.)
[11] 耿冰, 于修理. SaaS与传统软件的比较研究[J]. 沈阳师范大学学报(自然科学版), 2009, 27(1): 84-86. (GENG B, YU X L. Comparison between SaaS and conventional software[J]. Journal of Shenyang Normal University (Natural Science), 2009, 27(1): 84-86.)
[12] 许四平. SaaS软件即服务模型研究[J]. 硅谷, 2009, 8(4): 9-9. (XU S P. Research on SaaS software as a service model[J]. Silicon Valley, 2009, 8(4): 9-9.)
[13] 刘伟, 朱晓非, 聂亚平. 浅谈软件工程和CASE工具的运用[J]. 中国科技信息, 2012, 24(14): 90. (LIU W, ZHU X F, NIE Y P. Application of software engineering and CASE tools[J]. China Science and Technology Information, 2012, 24(14): 90.)
[14] 郭慎平. 基于Eclipse的嵌入式开发工具的研究与实现[D]. 武汉: 武汉理工大学, 2009.
GUO S P. Design and implementation of Web application development platform auxiliary tool based on Eclipse plug-in technology[D]. Wuhan:Wuhan University of Technology, 2009.
[15] 葛中泽. 基于事件驱动的高效柔性工作流引擎设计[J]. 鄂州大学学报, 2014, 21(12): 99-101. (GE Z Z. Design of efficient and flexible workflow engine based on event driven[J]. Journal of Ezhou University, 2014, 21(12): 99-101. DOI:10.3969/j.issn.1008-9004.2014.12.039)
[16] 邵虹, 张雷, 崔文成, 等. 面向服务的工作流管理系统研究[J]. 计算机集成制造系统, 2008, 14(11): 2212-2216. (SHAO H, ZHANG L, CUI W C, et al. Service-oriented workflow management system[J]. Computer Integrated Manufacturing Systems, 2008, 14(11): 2212-2216.)
[17] 张海军, 史维峰, 刘伟. 基于SOA企业应用集成框架研究与实现[J]. 计算机工程与设计, 2008, 29(8): 2085-2088. (ZHANG H J, SHI W F, LIU W. Research and implementation enterprise application integration framework based on SOA[J]. Computer Engineering and Design, 2008, 29(8): 2085-2088.)
[18] 刘明忠, 薛恒新, 黄慧君, 等. 支持跨企业协作的柔性工作流系统建模研究[J]. 计算机集成制造系统, 2004, 10(11): 1356-1363. (LIU M Z, XUE H X, HUANG H J, et al. Research on flexible workflow system modeling supporting cross-enterprise collaboration[J]. Computer Integrated Manufacturing Systems, 2004, 10(11): 1356-1363. DOI:10.3969/j.issn.1006-5911.2004.11.007)
[19] 蔡孝武, 韩永国, 蓝科. 一种轻量级工作流引擎的研究与设计[J]. 计算机工程, 2010, 36(20): 78-82. (CAI X W, HAN Y G, LAN K. Research and design of lightweight workflow engine[J]. Computer Engineering, 2010, 36(20): 78-82. DOI:10.3969/j.issn.1000-3428.2010.20.027)
[20] 张中林, 殷新春, 陈崚. 基于XML的工作流定义语言的研究[J]. 扬州大学学报(自然科学版), 2002, 5(3): 48-52. (ZHANG Z L, YIN X C, CHEN L. Research of workflow definition language based on XML[J]. Journal of Yangzhou University (Natural Science Edition), 2002, 5(3): 48-52.)
[21] JBoss jBPM.[2017-01-03]. http://www.jboss.org/jbpm.2011.
[22] 何鑫. jBPM4工作流引擎在办公自动化系统中的应用[J]. 网络与信息, 2010, 24(12): 43. (HE X. Application of jBPM4 workflow engine in office automation system[J]. Network and Information, 2010, 24(12): 43.)
[23] 刘怡, 张子刚, 张戡. 工作流模型研究述评[J]. 计算机工程与设计, 2007, 28(2): 448-451. (LIU Y, ZHANG Z G, ZHANG K. Overview of workflow models[J]. Computer Engineering and Design, 2007, 28(2): 448-451.)
[24] 王霞, 王刚, 周立东. 改进的工作流合理性验证方法[J]. 计算机工程与应用, 2011, 47(33): 43-45. (WANG X, WANG G, ZHOU L D. Improved verification method for rationality of workflow[J]. Computer Engineering and Applications, 2011, 47(33): 43-45. DOI:10.3778/j.issn.1002-8331.2011.33.012)