近些年来,随着计算机技术的进一步发展,相应的使用软件工程方法的软件项目管理系统也有了显着的发展。但是,由于开发流程中存在的不确定性以及项目变化等因素,这些系统也暴露出一些不足之处。传统的软件项目管理系统,一般是由图形用户接口(GUI),应用程序和数据库组成,用户通过GUI向应用程序发出请求,应用程序处理这些用户请求,并且访问数据库,返回用户所要求的结果。这种模型在流程稳定的时候是可以满足需要的。
目前,对工作流技术的研究以及相关产品的开发是国内外学者研究的热点问题之一,很多项目管理系统都采用工作流技术来克服上述问题。工作流起源于生产组织和办公自动化领域,它是针对日常工作中具有固定程序的活动而提出的概念。目的是通过将工作分解成定义良好的任务、角色,按照一定的规则和过程来执行这些任务并对它们进行监控,达到提升办事效率、降低生产成本、提升企业生产经营管理水平和企业竞争力的目标。
WFMC给出的工作流定义是:工作流是一类能够完全或者部分自动执行的经营过程,它根据一系列过程规则,文档、信息或任务能够在不同的执行者之间进行传递与执行,以实现整体的业务目标。而这正适合于软件开发过程管理,基于上述的理由,我们结合江苏省十.五攻关“工作流技术的研究和应用”项目,研究并开发了基于工作流的软件项目管理系统CMMFlow,目前已应用于软件能力成熟度模型(CMM)的管理,其效果相当良好。
一、项目管理系统的理论基础
1.基于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是强连接的。
下面我们给出一个用工作流网定义工作流的简单例子,例子描述的是软件立项管理的工作流过程。
基本流程如下:立项建议小组进行立项调查,然后进行项目构思和可行性分析,在完成之后进行立项申请,然后立项审查小组对此立项进行审查,决定是否同意立项。如果否决,则必须重新进行立项建议,如果同意立项,进入项目筹备阶段,流程结束。
2.CMMI3级精简并行过程(SPP)模型
利用工作流技术可以设计和建立一个工作流环境,在此项目管理系统中,我们使用CMMI3级精简并行过程(SPP)模型来支持软件过程实施。
SPP把产品生命周期划分为产品概念、产品定义、产品开发、产品测试、用户验收和产品维护等6个阶段,包含项目管理、项目研发和机构支撑等3类过程、19个过程域。其中项目管理过程包含立项管理、结项管理、项目规划、项目监控、风险管理和需求管理等六个过程域;项目研发过程包含需求开发、技术预研、系统设计、实现和测试、系统测试、Beta测试、客户验收和项目技术评审等8个过程域;机构支撑过程包含配置管理、质量保证、培训管理、外包与采购管理以及服务与维护等5个过程域。
我们把每一个过程域都看成是一个流程,其中过程域之间的关系是线性为主,并行、迭代为辅。每个过程域包含若干原子活动。通过建立活动与角色以及角色与具体用户的关联,即可建立一个可执行的业务过程模型。
二、项目管理系统设计
1.项目管理系统结构与功能特点
CMM软件项目管理系统的系统结构,主要由过程建模工具,工作流机,任务表管理器,web服务,客户端和数据库接口等组成,该项目管理系统的各功能特点是:在这个系统中,我们使用浏览器作为客户端,通过Http请求与Webserver交互,Websevrer再将收到的请求加以处理,判断哪些是应当丢弃的,哪些应该交由工作流执行服务处理,并将处理后的结果发送给工作流执行服务器。工作流机收到Webserver传送过来的数据后,会根据消息的具体内容继续执行流程或者将流程挂起或是结束流程的运行,并且更新任务表管理器的内容,在需要的时候调用相应的应用程序来完成任务的需要。在过程建模工具中建立,修改,删除的模型将通过存储过程来修改数据库中已存储的模型。
1)数据库接口:实现了底层的数据存储,包括过程定义,工作流控制数据,工作流相关数据,企业组织模型等工作流项目管理系统运行过程中必须的信息。
2)工作流机:工作流引擎是工作流平台的核心,它是业务流程的任务调度器,从某种程度上看,工作流机也是业务资源管理器。它的主要作用是实例化及执行过程模型、为过程和活动的执行进行导航、与外部过程交互完成各项活动、维护工作流控制数据和工作流相关数据等。
3)客户端客户端是基于浏览器方式的瘦客户端,方便管理员管理整个工作流项目管理系统的运行过程,和一般用户管理和执行分配给自己的任务。
2.设计思路
整个项目管理系统构架采用B/S模式,参照J2EE框架,主要分为四层:
1)展现层:主要包含客户浏览器端和Web服务器端的applet,jsp和servlet,负责和用户交互,接收数据,显示结果等。
2)商业逻辑:用于处理展现层从用户端接受到的数据,包含了控制应用处理的所有规则,同工作流执行服务通讯,并且将展现层和数据服务层连接起来。
3)工作流执行服务:是流程运行和管理的核心组件,包括工作流机和任务表管理器。
4)数据服务:负责提供对数据的存储和读取服务。
此外,在项目管理系统设计的过程中还采用了以下的技术:
J2EE体系包括javaserverpages(JSP),javaSERVLET,enterprisebean,WEBsevrice等技术,提供了一个企业级的计算模型和运行环境用于开发和部署多层体系结构的应用。它通过提供企业计算环境所必需的各种服务,使得部署在J2EE平台上的多层应用可以实现高可用性、安全性、可扩展性和可靠性。J2EE中多数标准定义了接口,例如JNDI,JDBC等,这使得遵循这些标准的不同开发者之间的模块可以无缝地互连。
点对点模式适用于使用集中式工作流机的项目管理系统,对于大规模的分布式应用,发布/订阅模式则相当有效,但是,在保证各个分布式工作流机的一致性问题上则稍有难度。
三、项目管理系统的一些实现技术
首先,软件过程模型的建立就要结合具体的实际情况,需要深人了解整个软件过程,并根据不同的需要修改模型来完成资源的动态配置和管理。另外,关于分布式工作流机之间的通讯和一致性问题也是相当重要的问题,需要拟定合适的策略来实现资源优化调度。
项目管理系统可以通过对活动信息统计,并将活动的运行状况和统计信息存储在数据库内。通过提供有关工作量的信息,可以在建模的时候预测所需要的时间,并且在活动结束时计算任务完成情况,与初始模型进行对比,生成相应的图表以判断工作效率,辅助决策经营。除系统提供的几个基本统计模型之外,用户也可以利用系统提供的工具,自行扩展新的模型来完成工作量信息统计和生成对比图表。
结论根据软件过程管理的需求,以工作流技术为核心,J2EE技术为支撑,结合SPP模型,文章给出了一个软件项目管理系统的体系结构和其中的一些技术实现。但是,为了更好地实施软件过程控制和度量,我们发现,还有一些问题需要进行深入的研究。