3章 业务建模 之 业务用例图

一样的月光,一样的照着新店溪

《一样的月光》;词:吴念真、罗大佑,曲:李寿全,唱:苏芮;1982

 

3.1 软件是组织的零件

有了愿景,我们知道老大对他所代表的组织现状的某些指标不满意。接下来就可以研究组织,弄清楚到底是组织的哪些环节造成了这些指标比较差,这就是业务建模(business modeling)的主要内容。

“业务建模”这个名字其实起得不好,应该更名为“组织建模”。出于对过去叫法的尊重,本书依然称为“业务建模”。

含糊的业务

“业务这个词在软件开发团队中使用很频繁,例如我是一名业务架构师我们要了解业务等等,但是话中的业务具体指什么,往往说话的人未必理解。

有时候“业务”指“核心域知识。开发人员假装谦虚我是做技术的,业务不太懂唉,就是这个意思。甚至有的开发人员在潜意识里是这样划分的:我懂且我感兴趣→技术;我懂且不感兴趣业务;我不懂且感兴趣高科技;我不懂且不感兴趣忽悠。

有时候“业务”指“组织级别的知识。例如“业务建模”、“业务用例、“业务流程说的就是组织级别的知识。

对于软件开发来说,业务建模的目的是为了得到待引进软件系统的需求。软件系统只是组织的一个零件。组织里面还有很多系统,其中最值钱的是千百年来一直在使用,现在依然是最复杂的系统——人脑系统,它由“父母公司”开发,“老师公司”不断升级,组织以每月每人几千上万的租金租用。为了让组织更好地对外提供价值,不一定要开发软件,有时换人更管用。也就是说,不是引进新的软件系统,而是引进新的人脑系统。和一套软件系统的价格相比,也许雇用一名高级员工花费更多。

开发人员有时会有意无意把自己的系统想得太重要,还喜欢起××云平台等很牛的名字,以为没有他们开发的系统,组织就玩不转了。有一次我到北京某公司讲课,开发人员在写某信贷风险系统的愿景时写道:本系统的目标是,银行风险部能够对贷款做风险评估。我问道:难道银行以前不能做风险评估吗?他认真地回答:不能啊,有我们的系统才行!其实想想就知道,银行已经成立多少年,该公司才成立几年?所以,为了抵消开发人员这种“致命的自负”,有时我会故意将“系统”称为“马桶”,意思是这个零件和组织厕所里的马桶没有本质区别。

开发团队经常发现需求 “容易变化”。根源之一是它们的来路不正,一开始的时候是拍脑袋得来的,没有把系统当作一个零件放在组织中来看,导致得到的系统需求是错的。系统上马后发现和组织的其他零件格格不入,自然要改。“需求变化剧烈”是一个假象,真正的需求没有变,只不过一开始得到的需求是假的。如果能正确运用业务建模技能,“需求变化”会消于无形。

可以从内外两个方面来研究组织。从外部看,组织是一些价值的集合,我们可以用业务用例图表示;从内部看,组织是一些系统的集合,我们可以用业务序列图来表示。

3-1 组织的外观和内观

3.2 识别业务执行者

3.2.1 业务执行者(Business Actor

以某组织为研究对象,在该组织之外和该组织交互的组织(人群或机构)就是该组织的执行者。因为研究对象是一个组织,所以叫业务执行者。

以一家商业银行为研究对象,观察在它边界之外和它打交道的人群或机构,可以看到储户来存钱,企业来贷款,人民银行要对它作监管。这些就是该商业银行的执行者。如图3-2所示。

3-2 业务执行者

业务执行者的图标是一个小人,头上有一道斜杠,这个带斜杠的小人实际上是一个执行者的构造型<<Business Actor>>的图形表示,Rational工具和EA里都有。如果您使用的UML工具没有这个图形,可以用执行者的小人图标加上文本构造型<<Business Actor>>取代,或者不加构造型也无所谓,因为边界框已经表明了研究对象是一个组织,它的执行者自然是业务执行者。

3.2.2 业务工人和业务实体

组织内的人称为业务工人(Business Worker),例如某商业银行里面的营业员。业务执行者和业务工人的区别是,一个在组织外面,一个在组织里面,一个是组织不可替换的,一个是组织可以替换的零件。

*经常有人会提到在家上班、在客户处上班、某些岗位人员的工资和保险由外包公司负责等等特殊情况。 其实,组织内外的边界是以责任划分,而不是物理位置。这些情况没有什么特别。关于责任的边界,第五章会再详细讨论。

业务工人是可以被替换的人脑零件,它可能会被其他业务工人替换,但更有可能被业务实体(Business Entity)替换。业务实体是组织中的非人智能系统,例如银行的取款机、点钞机、营业系统。

在没有点钞机的时代,储户拿着一叠钞票到银行存钱,营业员需要凭着手感(界面层)一张张数,触摸信号传到大脑(核心域层),大脑要很快判断钞票的真伪和计数。验钞、计数的逻辑封装在营业员的大脑里,营业员非常累,而且营业员要有经验,小白是干不了的。这样,人力成本高了很多。

有了点钞机,营业员只需要把整叠钞票放进点钞机过一下,点钞机会负责验钞和计数。也就是说,验钞和计数的逻辑从人脑转移到了点钞机的大脑,如图3-3所示。营业员轻松了,或者说,银行也就不需要那么多有经验的营业员了。许多信息化程度很高的领域,绝大多数领域逻辑目前已经运行在业务实体中,业务工人主要负责输入信息。银行所属的金融领域就是如此。

3-3 逻辑从营业员的大脑转到点钞机的大脑

责任转移的思想对识别待开发系统的需求很有帮助。开发人员说,“我在开发一个新系统”,其实说的就是“我在开发一个新的业务实体,取代现有业务工人或业务实体的一些责任”。这样,探索需求的思路就出来了——我们画好现状的业务序列图,然后寻找改进点改进业务序列图。在改进的业务序列图上,从外部指向所研究软件系统(业务实体)的消息,可以直接映射到该系统的用例。如图3-4所示。

3-4 改进业务序列图,映射系统用例

业务工人和业务实体不在业务用例图中出现,因为它们不是组织的价值,而是成本。在识别业务执行者时,不需要画业务工人和业务实体。

在接下来画业务用例的实现——业务序列图的时候,将业务工人和业务实体作为类(Class)的一个构造型,放在名为“业务对象”的包里。和业务执行者一样,如果您使用的工具没有<<Business Worker>><<Business Entity>>构造型,可以自己造,或者干脆不要构造型直接用类表示。背后的思想是一样的:类之间通过协作实现用例。组织的业务工人和业务实体协作完成业务用例,系统的类协作完成系统用例。

3.3.3 识别业务执行者

把观察的焦点对准组织的边界,看看边界外有哪些人群或机构会和它打交道,包括主动打交道和被动打交道,包括面对面、发邮件和发微信……。这些人群和机构就是所研究组织的执行者。

这里要注意的是,在观察组织边界时,看到的实际上不是组织之间的交互,而是组织派出的系统之间的交互,但是要把它理解成组织之间的交互,因为谈论业务执行者时,研究对象是一个组织,和所研究组织对应的外部对应物——业务执行者也应该是一个组织。

例如,以某国税局为研究对象,可以观察到企业财务人员到国税局报税,但是业务执行者不是企业财务人员,而是企业。也许某个时期,企业财务人员和国税局窗口人员交互;后来,企业财务人员和国税系统交互;再后来,企业系统和国税系统交互。不管观察到哪两个系统交互,从组织的抽象级别,都应该理解为企业和国税局这两个机构之间的交互,如图3-5

3-5 系统交互背后的机构交互

同一个机构内部也是如此。如果以一个部门为研究对象,即使观察到的是两个员工之间的交互,也应该找到现象背后的部门之间的交互,如图3-6所示。

3-6 部门对部门,一致的抽象级别

如果您之前阅读过一些用例相关的书籍或文章,可能知道系统定时发生的事件会被提炼成“时间这个外系统作为主执行者的系统用例。不过,如果研究对象是一个组织,“时间”作为组织的执行者是不合适的,应该把时间看作某个外部组织派来的一个接口系统,参见图3-7的水文站定期上报监测数据的例子。

3-7 时间也是系统,不能和组织并列

1. 卖饮料有不同吆喝方法,对应了软件开发的工作流,请找出合适的对应。

a)男程序员快来买啊!我可以喝,而且味道不错,保质期又长,便于携带…

b)男程序员快来买啊!喝了我,老板月月给你加薪,美女疯狂倒追你!

c)男程序员快来买啊!我这里面有糖、磷酸、咖啡因……

 A) 业务建模是a,需求是b,分析设计是c

 B) 业务建模是a,需求是c,分析设计是b

 C) 业务建模是b,需求是a,分析设计是c

 D) 业务建模是b,需求是c,分析设计是a

 E) 业务建模是c,需求是a,分析设计是b

 F) 业务建模是c,需求是b,分析设计是a

2. 从什么年代开始,银行、政府、商店等机构内部有大量的智能系统?

 A) 1980年代

 B) 1970年代

 C) 1960年代

 D) 早于1900

3. 以下不能作为业务建模研究对象的是

 A) 屌丝

 B) 微信

 C) 八天连锁酒店有限公司

 D) JZ县城管大队

4. 一个组织,从外面看是______的集合,从里面看是_______的集合。

 A) 价值;系统

 B) 业务执行者,业务用例

 C) 业务执行者;业务工人

 D) 功能;性能

5. 以下说法正确的是

 A) 业务执行者在系统外面,业务工人在系统里面

 B) 业务执行者在系统里面,业务工人在系统外面

 C) 业务工人不能取代业务实体的责任

 D) 业务工人可以取代业务工人的责任

6. 以医院为研究对象,针对以下概念正确的说法是(多选):

护士、患者、CT扫描仪、医生、保安、医院信息系统、卫生局

 A) 卫生局是业务执行者

 B) 保安可能是外聘的,不一定是业务工人

 C) CT扫描仪是业务实体

 D) 医生是业务执行者

7. 以一家超市为研究对象做业务建模。建模人员观察到:顾客到超市买东西,找收银员结账;收银员会使用超市管理系统来结账,结账时超市管理系统会请求银行系统完成交易。上面提到的名词中,属于超市的执行者的是(可多选)?

 A) 收银员

 B) 顾客

 C) 超市管理系统

 D) 银行系统

 E) 银行