关于面向对象方法的流程和结构化方法的流程表述的对比。
结构化的流程表述方法在我印象中的代表视图是信息流图和数据流图。二者的共同点是
将内容(数据或信息)和处理(处理或函数)分离,内容和处理各自形成层次结构(这
是两者同属结构化方法的特征)。二者的不同点是:信息流图比数据流图更加贴近"业
务层",数据流图比信息流图更加贴近"计算层"。
面向对象方法对流程的表述主要有三种方法:协作图,顺序图,带泳道的活动图。
余山谈到的"用例流程"的提法容易引起误解,让人误以为用例图就可以完整地描述流程
的细节。实际上,用例视图只是流程体系表述的"门"视图.也就是,它找到的是一个系统
内部所有流程的对外所开的"门",以及这些"门"之间的价值关系。比方我们要去某个
衙门办事,必须先找对要走的那几道门,否则,门都没有,怎么办事,这才是用例视图
的作用。真正表达这些流程的细节,要"进门"后用上面所述的三种视图来表述.
面向对象的流程表述视图的一个共同特点就是,它们不同于传统的结构化方法将数据和
处理各自形成层次结构,而是将二者混合起来形成层次结构。二者的混合的层次结构既
可以比二者分离的层次结构更加符合自然界事物的结构和行为特征,又能充分利用结构
化方法的信息化和可计算化的功用。面向对象方法实际上是在结构化方法基础上添加了
一层"人性化"的语义包装。
面向对象编程中存在有两种"对象"一般不被人仔细辨析:一种就是用来封装计算机系
统自身资源的对象,如:table,form等,另一种则是包装了人性化语义的对象,如
Customer,User等,是用计算机系统资源来仿真实现的对象,一部分人把它们区分为软
件对象和业务对象,实际上,这种区分中的"业务对象"只是真正的业务对象的一个数
字化模型。业务建模中的业务对象概念和这个概念的区别是相当大的。以前有人和我争
论所谓业务模型的去对象化的人,也许就没有理解到这层的不同。
从面向对象的流程表述方法中,我们会发现,流程表述不是孤立存在的,而是和对象的
静态模型关系密切的,建立对象属性方法以及相互关系,就是为了实现对象的协作流程
,流程是对象的协作场,是对象各显神通的舞台。
关于"上帝",面向对象方法并不排斥建立"流程的上帝对象"这样的概念。实际上,
比方我们所知的"工作流引擎"就是一个这样的对象,如果说,工作流系统更接近结构
化的系统的话,那么,Java虚拟机则更贴近于"上帝"这样的概念,所以,面向对象的
世界也不禁止谈论"上帝"。
面向对象方法的博大精深包含并远甚于结构化方法,至于彤鹰谈到的历史上的尚未有成
,并不意味着面向对象方法的永无所成或是比结构化方法逊色。或许现在正是面向对象
方法有所成的时候了。因为无论,从理念上和手段上,面向对象方法已经有更多新的内
涵了。
>From: "yush
...@gmail.com" <yush
...@gmail.com>
>To: Enterprise Engineering <Enterprise-Engineering@googlegroups.com>
>Subject: [EEG] Re: 大家好,和余山同感
>Date: Fri, 17 Aug 2007 00:29:21 -0700
> 为有助于讨论,也是理清自己的思路,这里试图分析一下几种技术方案的语
言特点,求教于各位高手:
>数据流程图流程:
> 以数据视图为中心,它是以提交件的结果为流程节点的划分,是以被加工对象为
统一线索。与屏幕界面为单元有着天然联系,所以最贴近技术实现。报表
>实现系统就是典型例子。它优点是数据信息明确,因为重结果,所以相对简练。也正
因为如此,它并不长于表达真正的业务流程,它很像工作分解编码WBS,因
>为它只是表达了输出的提交件。它暗含了一种输入/输出的模型,动词就是处理逻辑,
完成从输入到输出的转换,是一个动词。
>用例流程:
> 以主动者要实现的有价值事件活动为中心,它是统一纽带。它的语言特点是:引出
了一组对象(参与者),一组动词和一组数据表单。并且把动词和数据图分
>配到各个对象中。它并不像传统的结构化设计那样,有一个统一的程序主体。这个统
一的主体(如同上帝)是由动词构成的业务逻辑。有的只是对象之间的互交消
>息。它的长处是可以表达一个互交过程中复杂的信息关系。比如在一个自动取款业务
过程中,取款机对象得到的输入指令(由提款人给出),而提款人得到的结算
>单,它们各得其所。它更善于表达互交过程所谓的消息,触发信息,而这是业务逻辑
重要的内容,却是数据流程图所弱于表达的。
>结构化程序流程:
> 结构化程序设计流程,好象正是工作流引擎来继承,它类似BASIC语言中规定了程
序中语句的顺序号,有一个统一的流程。面向对象的用例模型,它的实
>现虽然也有时序图,但是这个时序主要描述的是对象之间的触发关系。面向对象模型
似乎没有独立的统一的程序流程概念,而只剩下响应触发消息的所谓脚本了。
>等于把一个统一流程分布处理了。排除了存在一个执行统一流程的上帝,而只是分布
为各个对象的触发了。结构化流程是由一系列动词联系而成的,它对所有的对
>象进行状态更改,从而完成了它的程序语义。所以,从描述业务逻辑的流程看,还是
结构化的流程表达的最完整自然?因为它是独立的统一的。它的结构主结构是
>顺序、分支与循环。
>临时想的,不知说出了我的意思否?
>On 8月17日, 下午12时01分, TY <tongying...@gmail.com> wrote:
> > babituo 这个文章我看了,花了不少心血,写得不错啊;-) 文章里提出 "即使不开发
计算机信息系统,对企业进行业务建模的必要性依然存在!目
> > 前比较流行的一些"业务建模方法",能旗帜鲜明地这样区分建模目标对象范围的很
少" ,这个是当前发展的问题,但也是大家的机会。
> > 既然把整个话题放在"企业工程"上谈,谈谈"企业建模",以及它和你在这篇文章中
谈的业务建模之间的关系。
> > 最后提出的小结观点:
> > "作者的思路是:建立和发展真正的业务建模方法,应明确确立以企业为建模对象
,该更多地从企业管理理论中去吸收营养,在反思业务建模的本质需求和信息系
> > 统建模方法的异同处之后,对信息系统建模方法进行整合性吸收,继承先进的面向
对象建模理念,进一步发展和改进面向对象的建模技法,使其更加适应对企业对
> > 象的既信息化又人性化的综合表达。"
> > 我觉得非常好。但既然以企业为建模对象,还是应该叫"企业建模",结合之前讨论
的话题,它首先是一种"业务性质的模型"
> > (这仅仅是为了相对于"计算模型"而言,但内容不仅是"业务模型")
> > 至于后者,"面向对象建模理念",这是值得探讨的。国外企业建模研究后期应该有
过不少"面向对象的企业建模"的探讨,但似乎没有什么真正的建树,反而是
> > 可以与"结构化需求分析"相比的"过程分析技术"(从工作流到当前的业务过程建模
)实实在在地发展起来了。
> > 还有,"以企业为研究对象的建模概念",并不是在90年代"企业再造工程"和"业务
再造工程"这些东西兴起之后。现在的业务(过程)建模的发展和传统的
> > 企业建模背景、历史不同。值得关注的是,它们应该要融合,现在也有了这样的视
野的交融和尝试,但也许还缺乏些实质性的东西吧。
> > On 8月16日, 下午2时46分, "ba bituo" <babi...@hotmail.com> wrote:
> > > 虽然没有像余山那样打过那么多的打仗,但我的感觉和余山很相似。
> > > 很高兴看到余山对用例语言的积极评价。只不过我还是认为余山可能还是把用例
语言的
> > > 作用和用法理解的不够全面。
> > > 我们需要的不是只关一种视图的语言体系,用例语言则是其中最重要的一种之
一。
> > > 如果把它理解为全部,自然可以"发现"它的不足。如果把它理解为纯技术性语言
,自
> > > 然可以埋怨它的粗粒度。
> > > 与管理语言的不一致性似乎是任何建模语言的缺憾。
> > > 因为,似乎建模就天然地意味着数字化,精确化。而管理语言则存在太多的人性
化。
> > > 关于业务建模和企业工程,在我的blog中有文"小议业务建模"。欢迎品评。
http://blog.vsharing.com/Article.aspx?aid=569196 > > > _________________________________________________________________
> > > 享用世界上最大的电子邮件系统- MSN Hotmail。http://www.hotmail.com- 隐
藏被引用文字 -
_________________________________________________________________
与联机的朋友进行交流,请使用 Live Messenger;
http://get.live.com/messenger/overview