论文摘要:本文介绍了一个基于工作流技术而研制的软件项目管理系统。文章首先描述了传统软件项目管理系统的不足之处,提出用工作流的方法来设计软件项目管理系统,然后介绍了一些理论基础。文中重点阐述了系统的设计结构和所采用的一些技术,并给出了部分的具体实现方法。
论文关键词:工作流,jms,项目管理,spp,建模,工作流网
1前言
2o世纪7o年代以来,为了解决软机危机,改进软件过程能力,计算机科学家提出了软件工程的概念,将系统化的、规范化的、可度量的方法用于软件开发、运行和维护的过程。近些年来,随着计算机技术的进一步发展,相应的使用软件工程方法的软件项目管理系统也有了显著的发展。但是,由于开发流程中存在的不确定性以及项目变化等因素,这些系统也暴露出一些不足之处。
传统的软件项目管理系统,一般是由图形用户接口(gui),应用程序和数据库组成,用户通过gui向应用程序发出请求,应用程序处理这些用户请求,并且访问数据库,返回用户所要求的结果。这种模型在流程稳定的时候是可以满足需要的,它的缺点在于:
1)建模过程是之前设定好的,无法改变;
2)缺乏柔性,系统开始运行之后,预先定义好的条件就无法改变了;
3)可扩展性较差,如果想要增加或者修改相应的功能,整个系统必须重新开发。
目前,对工作流技术的研究以及相关产品的开发是国内外学者研究的热点问题之一,很多管理系统都采用工作流技术来克服上述问题。工作流起源于生产组织和办公自动化领域,它是针对日常工作中具有固定程序的活动而提出的概念。wwW.133229.COM目的是通过将工作分解成定义良好的任务、角色,按照一定的规则和过程来执行这些任务并对它们进行监控,达到提高办事效率、降低生产成本、提高企业生产经营管理水平和企业竞争力的目标。
wfmc给出的工作流定义是:工作流是一类能够完全或者部分自动执行的经营过程,它根据一系列过程规则,文档、信息或任务能够在不同的执行者之间进行传递与执行,以实现整体的业务目标。而这正适合于软件开发过程管理,基于上述的理由,我们结合江苏省十.五攻关“工作流技术的研究和应用”项目,研究并开发了基于工作流的软件项目管理系统cmmflow,目前已应用于软件能力成熟度模型(cmm)的管理,其效果相当良好。
2理论基础
2.1cmmi3级精简并行过程(spp)模型
利用工作流技术可以设计和建立一个工作流环境,在此系统中,我们使用cmmi3级精简并行过程(spp)模型来支持软件过程实施。
spp把产品生命周期划分为产品概念、产品定义、产品开发、产品测试、用户验收和产品维护等6个阶段,包含项目管理、项目研发和机构支撑等3类过程、19个过程域。其中项目管理过程包含立项管理、结项管理、项目规划、项目监控、风险管理和需求管理等六个过程域;项目研发过程包含需求开发、技术预研、系统设计、实现和测试、系统测试、beta测试、客户验收和项目技术评审等8个过程域;机构支撑过程包含配置管理、质量保证、培训管理、外包与采购管理以及服务与维护等5个过程域。
我们把每一个过程域都看成是一个流程,其中过程域之间的关系是线性为主,并行、迭代为辅。每个过程域包含若干原子活动。通过建立活动与角色以及角色与具体用户的关联,即可建立一个可执行的业务过程模型。
2.2基于petri网的可视化建模工具
在这个系统中,我们的建模工具是使用工作流网和xp—dl共用的策略,采用的是扩展的petri网,对最终用户来说,足可视化的图形建模工具。为符合wfmc规范,工作流机装入的模型用xpdl存储,可使用xpdl和petri网两种表示形式,验证是使用petri网形式。
在petri网的基础上,aalst提出了工作流网(wf-net)的概念,其定义如下:
一个petri网pn=(p,t,f)被称为工作流网,当且仅当它满足下面两个条件:
1)pn有两个特殊的库所:i和0。库所i是一个起始库所,即·i=
;库所o是一个终止库所,即o·=
。
2)如果在pn中加入一个新的变迁t,使t连接库所。与i,即·t·={0),t·={i),这时所得到的pn是强连接的。
下面我们给出一个用工作流网定义工作流的简单例子,例子描述的是软件立项管理的工作流过程。
根据工作流网的基本定义,通过使用不同类型的基本组件和触发机制,对立项管理进行建模,得到如图1所示的工作流网模型。
基本流程如下:立项建议小组进行立项调查,然后进行项目构思和可行性分析,在完成之后进行立项申请,然后立项审查小组对此立项进行审查,决定是否同意立项。如果否决,则必须重新进行立项建议,如果同意立项,进入项目筹备阶段,流程结束。
3系统设计
3.1设计思路
整个系统构架采用b/s模式,参照j2ee框架,主要分为四层:
1)展现层:主要包含客户浏览器端和web服务器端的applet,jsp和servlet,负责和用户交互,接收数据,显示结果等。
2)商业逻辑:用于处理展现层从用户端接受到的数据,包含了控制应用处理的所有规则,同工作流执行服务通讯,并且将展现层和数据服务层连接起来。
3)工作流执行服务:是流程运行和管理的核心组件,包括工作流机和任务表管理器。
4)数据服务:负责提供对数据的存储和读取服务。
此外,在系统设计的过程中还采用了以下的技术:
1)j2ee框架
j2ee体系包括javaserverpages(jsp),javaservlet,enterprisebean,websevrice等技术,提供了一个企业级的计算模型和运行环境用于开发和部署多层体系结构的应用。它通过提供企业计算环境所必需的各种服务,使得部署在j2ee平台上的多层应用可以实现高可用性、安全性、可扩展性和可靠性。j2ee中多数标准定义了接口,例如jndi,jdbc等,这使得遵循这些标准的不同开发者之间的模块可以无缝地互连。
2)jms
java消息服务(jms)定义了java中访问消息中间件的接口。jms只是接口,并没有给予实现,实现jms接口的消息中间件称为jmsprovider。
在jms中,每个客户机连接到一个为发送和接收消息提供框架的消息传递代理程序。客户机需知晓消息格式和消息目的地。根据jmsapi,消息传递分为两种模式,点对点和发布/订阅模式。
点到点消息传递方法使用下列工具,如消息队列、发送方(或消息制作者)和接收方(或消息消费者)。客户机将发向特定接收方的消息发送到唯一的队列。当接收客户机从特定队列抽取消息时,它发出确认消息,表明消息已处理。队列将保留所有消息,直至接收方收到消息或消息到期。发布/预订消息传递方法使用发布者、订户和主题的概念。客户机将消息发送到主题或内容层次结构。为了接收到消息,消息消费者必须预订此主题。因此,对于这种方法,可以将消息制作者作为发布者,而消息消费者则是订户。jms供应商将多个发布者发来的消息分发到主题和此主题的多个订户。
点对点模式适用于使用集中式工作流机的系统,对于大规模的分布式应用,发布/订阅模式则相当有效,但是,在保证各个分布式工作流机的一致性问题上则稍有难度。
3.2系统结构与功能特点
cmm软件项目管理系统的系统结构如图2所示,它主要由过程建模工具,工作流机,任务表管理器,web服务,客户端和数据库接口等组成,该系统的各功能特点是:在这个系统中,我们使用浏览器作为客户端,通过http请求与webserver交互,websevrer再将收到的请求加以处理,判断哪些是应当丢弃的,哪些应该交由工作流执行服务处理,并将处理后的结果发送给工作流执行服务器。工作流机收到webserver传送过来的数据后,会根据消息的具体内容继续执行流程或者将流程挂起或是结束流程的运行,并且更新任务表管理器的内容,在需要的时候调用相应的应用程序来完成任务的需要。在过程建模工具中建立,修改,删除的模型将通过存储过程来修改数据库中已存储的模型。
websevrer和工作流执行服务也都要通过存储过程来访问数据库。各部分的功能特点描述如图2。
1)建模工具:使用基于petri网的建模方法来对企业经营过程进行过程定义,将经营过程转化为工作流引擎可以执行的形式。同时还提供对过程模型进行分析,测试的工具。
2)工作流机:工作流引擎是工作流平台的核心,它是业务流程的任务调度器,从某种程度上看,工作流机也是业务资源管理器。它的主要作用是实例化及执行过程模型、为过程和活动的执行进行导航、与外部过程交互完成各项活动、维护工作流控制数据和工作流相关数据等。
3)任务表管理器:过程模型中的每个活动都被看作是一个由计算机自动执行的任务或由用户手动执行的任务,任务表管理器负责对这些任务的监视和维护。
4)web服务:包含了用于处理用户请求和显示结果的jsp和sevrlet,其主要工作是将客户端与工作流执行服务连接起来。
5)客户端客户端是基于浏览器方式的瘦客户端,方便管理员管理整个工作流管理系统的运行过程,和一般用户管理和执行分配给自己的任务。
6)数据库接口:实现了底层的数据存储,包括过程定义,工作流控制数据,工作流相关数据,企业组织模型等工作流管理系统运行过程中必须的信息。
4系统的一些实现技术
4.1任务的自动分配和触发机制
可以根据模型定义自动地分配任务,当一个过程实例运行的时候,活动可以根据模型定义自动分配到指定接收者,并且,有关完成此活动所需要的数据也会传递给相应的接收者,从而提高业务过程执行效率。模型中使用角色机制,不指定具体人员,这样,人员变更不至于引起模型的变动。系统支持迟后绑定,即可以在活动运行的时刻才确定此活动由谁来完成。
流程从使能到运行的控制,采用触发机制,分为人工触发、自动触发、消息触发和时间触发。人工触发一般是用户从任务表中选取其中一项任务来完成,自动触发是一些通过程序自动执行的过程,一旦使能就被触发,消息触发是指系统外部的消息到达触发,如email,时间触发是由定时器来触发。
4.2活动信息的统计
系统可以通过对活动信息统计,并将活动的运行状况和统计信息存储在数据库内。通过提供有关工作量的信息,可以在建模的时候预测所需要的时间,并且在活动结束时计算任务完成情况,与初始模型进行对比,生成相应的图表以判断工作效率,辅助决策经营。除系统提供的几个基本统计模型之外,用户也可以利用系统提供的工具,自行扩展新的模型来完成工作量信息统计和生成对比图表。
结论根据软件过程管理的需求,以工作流技术为核心,j2ee技术为支撑,结合spp模型,文章给出了一个软件管理系统的体系结构和其中的一些技术实现。但是,为了更好地实施软件过程控制和度量,我们发现,还有一些问题需要进行深入的研究。
首先,软件过程模型的建立就要结合具体的实际情况,需要深人了解整个软件过程,并根据不同的需要修改模型来完成资源的动态配置和管理。另外,关于分布式工作流机之间的通讯和一致性问题也是相当重要的问题,需要拟定合适的策略来实现资源优化调度。