用例图USE CASE中的Actor之眼让你不再雾里看花

用例图USE CASE中的Actor之眼让你不再雾里看花
叙说一个IT从业30多年的程序猿是如何从技术中领悟到世间之理,并4次成功创业的感悟!

 

叙说程序猿眼中的人文世界,分享的主题如下:

程序那点事:用例图中的Actor之眼

程序猿人生:建设银行分布式面向对象核心系统实践

开脑洞:Actor之眼就是换位思考的精髓

开脑洞:场景创新可以借鉴的优于脑图的表达工具

有趣的HOOKs:《场景革命》

有趣的HOOKs:公用对象请求代理程序结构CORBA

 

程序那点事:用例图中的Actor之眼

 

面向对象分析设计过程中我们往往会采用一些支持UML建模语言的工具来帮助我们完成,比如Rational ROSE,不错的名字,“玫瑰”,但是此玫瑰非彼玫瑰,而是Rational Object Software Engineering的缩写,当然现在并入IBM后,IBM极大地扩展了软件工程的产品线,现在的ROSE应该是在IBM软件架构设计系列产品族中了。

用例图(Use Case Diagram)是我们进行UML建模的时候需要完成的一个工作。这个用例图与其它软件系统分析和设计的最大的不同是在于通常用例图是由软件开发者和最终用户共同创作的,而不是由软件开发者自己来完成。

 

 

 用例图USE CASE中的Actor之眼让你不再雾里看花

 用例图是做什么的呢?用例图是一种通过用户的使用场景来获取需求的技术。每个用例提供了一个或多个场景,该场景说明了系统是如何和最终用户或其它系统互动,也就是谁可以用系统做什么,从而获得一个明确的业务目标。所以,用例图应该是最早提出“场景设计”理念并落地的,而现在“场景创新”正在成为我们这个时代一个重要的创新思维和容易获得成功的途径,我们应该可以认真的学习用例图,并可以将之用于表示我们“场景创新”的脑图!

用例图USE CASE中的Actor之眼让你不再雾里看花

用例图中的用例(Use Case )在UML的规范中是使用椭圆图标来表示的,而参与者(或者活动者)(Actor)则是用一个小人的图标来表示。下面的例子就是从一个商家(Actor)作为参与者在一个类似淘宝商家管理工具中看到的工具需要提供的功能(也即是椭圆表示的用例):

用例图USE CASE中的Actor之眼让你不再雾里看花

用例图中的参与者Actor的定义以及由Actor如何发现用例Use Case,是十分有趣的一件事情。由Actor如何发现用例Use Case我在过去很多年给很多技术同行交流和培训的时候,我总是喜欢这么说:请你想象一下自己就是那个Actor,你透过Actor的眼睛看到了什么?这就是“Actor之眼”的来历

在一个应用系统中发现Actor们的过程,其实就是一个挖掘和定义待开发的应用系统”服务谁“的问题,而由“Actor之眼”发现用例的过程其实就是一个将我们自己(开发者)带入到业务人员(参与者Actor)的视角(也即是换位思考)来看应用系统能够为业务人员提供什么,也就是”做什么“。

 

程序猿人生:建设银行分布式面向对象核心系统实践

中国银行业的技术创新应该是一直走在中国各个行业的最前沿的,准确的说应该是采用技术创新方面始终是走在前沿的,所以IT创新的商业应用场景的最佳实践往往也都是在银行业,当然中国银行业也催生了无数的中国IT企业的发展及壮大。

站在商业的角度来看,银行业确实是一个十分优质及优秀的市场,即使存在竞争十分激烈的挑战,还是值得大家应该优先考虑的客户市场。简单地说,银行业客户第一每年的IT预算是十分充足的,IT投入是持续维持高位的;第二客户对于新事物新技术的接受程度还是比较开发的,客户的素质还是相对较高的;第三业务成熟度和管理需求等都已经比较领先,尤其是四大行和股份制银行,可以帮助企业打磨技术、打磨产品及打磨团队;第四银行业业务的同质性较高,意味着方案及产品的可复用性较高,虽然也是需要很多定制开发工作的,但那些毕竟还是会有额外费用的。

用例图USE CASE中的Actor之眼让你不再雾里看花

我们回到“Actor之眼”的故事上来。应该说在1998年那个时间点,采用BEA公司的分布式面向对象技术M3(CORBA:Common ObjectRequest Broker Architecture公共对象请求代理体系结构)来实现银行业的核心系统(CORE BANKING),而开发过程完全采用面向对象的分析设计及面向对象编程来做,应该说是一个创举和十分大胆的尝试,准确的来说,对于启动此事的技术部门尤其是领导意味着风险。为什么这么说呢?第一,国内还没有技术团队真正实践过利用面向对象分析设计来实施过大型项目的开发,简单说,就是没有组织过那么多人并行开发面向对象项目的经验可借鉴;第二,BEA的CORBA产品M3当时并没有在银行业的成功案例,尤其是核心系统,后来事实上这个M3产品线BEA公司并没有继续推,而是融入到了大家后来熟悉的Weblogic产品线;第三,当时负责的中国惠普的技术团队和用户的业务人员都基本上是面向对象”零“基础的。当然,这个尝试的同时建设银行还是并行启动了传统软件开发技术主导的核心系统的开发,作为主线。这也就是上面介绍的为什么说银行是一个优质客户的原因,这样子的尝试和实践是很难立项的在其它行业中。

 

用例图USE CASE中的Actor之眼让你不再雾里看花

不管怎么说,这个面向对象开发核心系统的实践还是成功了,其中有几点还是值得回顾记录下来的。当时的我是作为中国惠普公司请去的面向对象砖家,给每天1000美金咨询费,哈哈,这个费用不是给我的,是给我的东家太平洋软件PTS的。

按理说呢,我只是去负责Rational ROSE及面向对象技术的培训及技术咨询的,工作任务还好,毕竟自己已经很熟悉,所以并不需要很多的精力。1998年的时候在上海外高桥的皇冠酒店一住几个月,常常听到的故事最多的就是当年美国海军停靠外高桥之后上岸酒吧泡妞的老旧的事情,因为那个时候连陆家嘴这么旺的地方和浦东都还是没有人愿意来的地方,按照当时阿拉上海人的话就是”宁要浦西一张床,也不要浦东一栋房!”也不全是因为呆着无聊的缘故,而是因为部队养成的习惯和自己的思维,我觉得既然来了,自己还年轻呢,就没有必要计较和想那么多,所以就主动积极地加入到惠普技术团队中,和大家一样没日没夜的加班工作,后来慢慢地竟然成为了技术团队的骨干,只是有点对不住老东家哈,没有告诉老东家提高一下咨询费用。这段日子其实还是很挑战的,但是自己却觉得很开心很充实,我过去积累的大型程序开发和面向对象技术的经验在这个项目中发挥了很重要的价值和作用,节省了项目的尝试时间。关键是认识了一帮惠普的老人,很NICE,对的惠普人很NICE!也是因为这个项目的缘故,我项目结束后进入了中国惠普公司,开始了从部队转业后的外企精彩生涯,也许验证了一句话“只管努力,莫问前程!”

用例图USE CASE中的Actor之眼让你不再雾里看花

这个项目是怎么解决“Actor之眼”的呢?当时建设银行从全国各地调来了近20名精通业务的业务人员,参与到项目中,正是因为用例图是可以由开发者和业务人员共同创造的,而Actor之眼其实就是业务人员之眼,所以培训好业务人员会画用例图后,由他们参与者本身来开发用例(Use Case)就变得相对的容易了,而且其它技术人员则在这些业务人员的业务培训和指导下,就更容易站在业务人员(参与者)的角度以正确的Actor之眼来发现用例了。

建行这个试验项目的另外一个目的应该说达成的效果很好,就是培养人和发现未来人才,参与这个项目的建行内部的技术和业务人员,很多后来走上了领导岗位或者成为了骨干,比较突出的包括后来的网上银行部门的总经理以及湖北行的科技负责人等。

 

开脑洞: Actor之眼就是换位思考的精髓

由“Actor之眼”发现用例的过程其实就是一个将我们自己(开发者)带入到业务人员(参与者Actor)的视角(也即是换位思考)来看应用系统能够为业务人员提供什么,也就是”做什么“。

用例图的实现本质上就是人(参与者)与事情(用例)的一个完整表达的实现,实现用例图的过程与我们如何完成换位思考的过程是十分类似的。

首先,解决站在什么人的角度来看,也就是解决换位思考对象是谁的问题。如何发现真正的Actor都是谁呢?就是将所有与这件事情(应用系统)相关的牵连到的“利益”人定位出来,这些参与者(Actor)实际中完全还可能不一定是用户,还可能是其它的系统(现实中可能是代表某个部门,或者某一些利益的团体)。

用例图USE CASE中的Actor之眼让你不再雾里看花

其次,Actor之眼要求我们忘记自己是开发者,而将自己想象成是其中的某个参与者Actor,然后站在参与者来观察其要求系统做什么(用例)。这个告诉我们换位思考的要点在于:第一要忘记自己,完全站在对方的角度,方法是可以尝试将自己想象成对方;第二去思考体会对方在事情中关切的利益和诉求是什么。

当然用例图中会存在Actor与Actor之间发生关系,一个用例和多个Actor之间发生关系,一个Actor与特殊Actor(其它系统)发生关系等等的情况,都是可以将这些情况和里面的规则类比到换位思考的。

用例图USE CASE中的Actor之眼让你不再雾里看花

 

开脑洞:场景创新可以借鉴的优于脑图的表达工具

用例图应该是最早提出“场景设计”理念并落地的,用例(Use Case)这个概念是Ivar Jacobson(UML统一建模语言创始人之一,OOSE方法创始人)在爱立信公司开发AKE、AXE系列系统时发明的,并在其博士论文《Concepts for Modeling Large Realtime System》(1985年)和《Object-Oriented Software Engineering: A Use Case Driven Approach》(1992年)中做了详细的论述。

用例图USE CASE中的Actor之眼让你不再雾里看花

 

用例图中的参与者Actor和用例USE CASE以及十分丰富的参与者与用例、用例与用例、参与者与参与者的关系表达方式和手段,对于场景创新业务的表达应该是更加合适的,更加具有表现力的,也是更加能够体现创新思维和场景内涵的,此点相对于现在的思维脑图应该是具有优势的。另一方面,学习用例图的设计和实现还是极其简单的。

 

有趣的HOOKs:《场景创新》

《场景创新:重构人与商业的连接》,是逻辑思维联合创始人吴声的著作,讲述了引爆商业机会的互联网场景方法论。

用例图USE CASE中的Actor之眼让你不再雾里看花

 

有趣的HOOKs:公用对象请求代理程序结构CORBA

CORBA是OMG组织在1991年提出的公用对象请求代理程序结构的技术规范。CORBA有很广泛的应用,它易于集成各厂商的不同计算机,从大型机一直到微型内嵌式系统的终端桌面,是针对大中型企业应用的优秀的中间件。最重要的是,它使服务器真正能够实现高速度、高稳定性处理大量用户的访问。现在很多大型网站后端的服务器都运行CORBA,其中有些网站您可能每天都在访问。

CORBA的底层结构是基于面向对象模型的,由OMG接口描述语言(OMG Interface Definition Language,OMG IDL)、对象请求代理(Objec tRequest Broker,ORB)和IIOP标准协议(Internet Inter­ ORB Protocol,也称网络ORB交换协议)3个关键模块组成。

 

用例图USE CASE中的Actor之眼让你不再雾里看花

 

使用接口描述语言编写的对象接口,使得与语言无关的独立性成为可能。IDL使得所有CORBA对象以一种方式被描述,仅仅需要一个由本地语言(C/C++、CORBA或Java)到IDL的“桥梁”。CORBA对象的互通信要以对象请求代理为中介,这种互通信可以在多种流行通信协议(如TCP/IP或IPX/SPX)之上实现。在TCP/IP上,来自于不同开发商的ORB用IIOP标准协议进行通讯。

 

用例图USE CASE中的Actor之眼让你不再雾里看花

 

我们知道,为了保持CORBA的商业中立性和语言中立性,必须有一个中介,存在于像C++CORBA服务器代码和JavaCORBA客户机这样的实体中间,这就是IDL。一个底层对象的若干相关方法和属性被IDL集入一个单一接口。一旦IDL接口定义完成,它可以以Stub码或框架代码的形式编译成所选用的语言。在所有的ORB中都有IDL编译器。

值得注意的一点是,IDL不同于其他的面向对象程序设计语言,我们不能用它指定所定义的类或方法的具体实现。因此,仅仅将它作为一种定义底层对象接口的语言要好得多。

 

公众号文章著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。