技术开发 频道

下一代开发模型:面向软件开发工作流

【IT168 管理】

    工作流与软件开发过程 

    WFMC(Workflow Management Coalition,工作流标准组织)对工作流(Workflow)的定义是:自动运作的业务过程的部分或整体,表现为参与者对文件、信息或任务按照规程采取行动,并令其在参与者之间传递。简单地说,工作流就是一系列相互衔接、自动进行的业务活动或任务。 

    软件开发工作是工作流的一种。 

    软件开发周期中,大概包括需求分析、需求文档设计、软件产品开发、软件产品测试、软件产品部署等步骤和流程,并且其中还有针对整个开发过程中对软件开发环节的项目管理工作。 

    软件项目管理平衡软件开发过程中各种可能产生冲突的目标,管理风险,克服各种约束并成功交付符合用户满意度的软件产品。软件项目管理的目标包括:为项目管理提供框架,为计划、人员配备、执行和监控项目提供实用的准则,为管理风险提供框架等。 

    软件开发周期中,与“工作流”的定义相对应的有如下几点:

  •  软件开发周期中,开发过程需要先进行客户需求定义,并将过程中包含的需求活动文档化,以描述过程的步骤、规则、信息等。
  •  对于开发过程中的人员参与,需要对项目团队中的设计人员和开发人员进行相应的培训,让每一个参与者都能掌握与过程相关的知识和技巧。
  •  整个软件开发过程必须有效执行并时刻进行监控,通过这种方法确保活动按照文档化的过程定义进行执行并确保最终目标的实现。


    软件过程与工作流的结合 

    在软件工程的发展过程中,人们不断的总结软件开发工作中的经验和教训,从中得到了许多新的开发模型,例如从瀑布开发模型到快速原型模型,之后发展出RUP(Rational Unified Process)迭代模型,这些开发模型的出现在一定程度上解决了软件开发过程的复杂性问题。 

    使得软件过程与工作流很好地结合,需要首先考虑软件过程中的复杂性与工作流的易控性的相互平衡,这就要求在开发过程中不能完全采用迭代开发模型,而是要采用迭代模型和瀑布模型相结合的方法,从而生成一种简单的开发模型。 

    这种开发模型下的开发流程就是前文中所提到的:需求分析、概要设计、详细设计、编码、测试、部署。此流程中的每一个活动都由特定的参与者来执行,对应于不同的活动,这些参与者的角色应当是:需求分析师、概要设计师、详细设计师、程序开发人员、测试工程师、项目经理。当这六种角色的前五种参与者执行完相应的活动之后,开发过程中相应的软件产品提交到项目经理处,由项目经理对已完成的任务进行评估和审核。 

    基于软件过程的工作流是一种特殊的工作流管理系统,因为软件开发过程中的活动离不开各环节参与者的劳动和工作,不同的参与者之间不仅需要传递各种文档,而且还需要各种角色的参与者进行面对面的沟通和交流。正式因为这些因素和工作环节的需要,导致了软件开发过程并不是完全的按顺序执行。为了解决这个问题,就需要设定过程中大方向的流程按顺序执行,而每个活动的细节流程根据各自的实际情况,按照迭代方式执行。每个活动在最后通过评审后,就表示该活动就已结束。

    面向工作流的开发方法 

    从软件开发方法的历史发展进程来看,随着软件产品需求和功能越来越复杂、软件程序源代码量越来越多,开发模式从一开始的过程性的开发到面向数据结构的开发,再到面向对象的软件开发,我们总是极力地去改善软件的可理解性和可维护性。仔细想想,面向对象就是最终的软件开发方法学吗?如果不是,那又是什么呢?我们说面向对象开发在一定程度上改善了软件的可理解性,但还是不能在很大程度上改善其复杂性。面向对象软件的可理解性还是基于开发人员的水平,目前的软件开发还是需要专业的程序员才能做。 

    那么,我们的开发工作流目前是一个什么样的状况呢?目前的软件开发工作流系统主要面向两个方面:一个是开发流程性业务时会用工作流,如办公自动化、财务报销流程、合同审核流程等;还有一个就是在把已经存在的各个业务系统中的业务集成中会用到。 

    其实,软件程序开发的主要部分也是一种工作流,在开发语法中有“if else、while”流程控制语言。那么,我们是否也可以把程序的开发过程作为一种流程的定制过程呢?笔者认为应该是可以的。 

    相对少的程序员开发一些公用的功能(甚至那些公用的功能也可以用图形化开发方式),然后我们在流程中设置业务过程。这时会发现我们不关心所用到的功能是哪个类的,我们只要把功能按类别分类,方便查找就可以了。我们的程序是图形化的,甚至我们的高端用户都可以加入到我们的开发流程中,我们的开发完全变成了画流程图。 

    其实这方面的工作国内已经有开发商在做尝试,BEA的开发思想中也包含了这种想法。有理由相信,在不久的将来我们的企业管理软件的开发将变得很简单,我们不需要把软件的开发分成概要设计、详细设计、编码、测试等阶段。我们在与用户沟通的过程中原型就出来了,这种原型就是软件产品。我们的软件开发人员将被解放出来跟用户沟通、分析用户的业务,变成行业或业务方面的专家。或许下一代的软件开发方法就是关于面向工作流的图形化软件开发。

0
相关文章