天天看点

《软件方法》第5章 系统用例图 系统执行者要点(1)

第5章 需求 之 系统用例图

爱情不是你想卖,想买就能卖。

《爱情买卖》;词:何欣,曲:周洪涛,唱:慕容晓晓;2009

让我们把思考的边界从组织缩小到要研究的系统。有了业务建模的铺垫,系统的用例图已经呼之欲出,但是我们还是要先来讲解一下系统执行者和系统用例的要点,再看看如何从业务序列图映射出系统用例图。

执行者和用例的概念在业务建模的章节已经出现过。现在要研究的执行者和用例,与业务建模时研究的执行者和用例相比,不同之处是研究对象,之前研究组织,现在研究系统。

5.1 系统执行者要点

系统执行者的定义:在所研究系统外,与该系统发生功能性交互的其他系统。

5.1.1 系统是能独立对外提供服务的整体

封装了自身的数据和行为,能独立对外提供服务的东西才能称为系统。不了解这一点,建模人员很容易把“添加一些功能”当作“研发新系统”。如图5-1所示,系统对外提供了某些服务,这些服务被分为A和B两组,但不能说有A和B两个系统。这个错误其实就是“从需求直接映射设计”的错误,如果没有很好理解第1章所阐述的“需求和设计的区别”,建模人员很容易犯这样的错误。

《软件方法》第5章 系统用例图 系统执行者要点(1)

图5-1 错误:把功能分包当成系统

图5-2中A系统和B系统各自封装,通过接口协作,这种情况下可以称为两个系统(或子系统、组件)。

《软件方法》第5章 系统用例图 系统执行者要点(1)

图5-2通过接口协作的两个系统

例如,建模人员说“我们在做一个积分兑换系统”,画出用例图如图5-3。

《软件方法》第5章 系统用例图 系统执行者要点(1)

图5-3 错误:胡乱划分系统

实际上哪里有那么多系统,只是同一系统上的功能分包而已,数据都是共享的。正确的用例图应如图5-4。

《软件方法》第5章 系统用例图 系统执行者要点(1)

图5-4 系统只有一个

5.1.2 系统边界是责任的边界

系统执行者不是所研究系统的一部分,是该系统边界外的另一个系统。这里的系统边界不是物理的边界,而是责任的边界。

现在大多数的软件运行形态是分布式的。一个系统可能有一部分组件部署在移动终端,其他部分组件可能部署在不同物理位置的Web服务器、应用服务器等等,导致建模人员会不自觉地认为自己在做多个系统,然后针对每个部分画用例图。其实只有一个系统,实现上面这些组件都属于本项目的责任,涉众根本不在意系统划分成几个组件以及组件之间如何分布和交互。建模人员如果没有学会从涉众视角看问题,只是从自己角度看问题,就会犯这样的错误。

严格来说,即使是“单机”的系统,运行形态也是“分布式”的,分布在CPU、高速缓存、主存、辅存等多个部位,互联网可以看作更大的“单机”。

《软件方法》第5章 系统用例图 系统执行者要点(1)
《软件方法》第5章 系统用例图 系统执行者要点(1)

图5-5 “分布式”没什么特别

如果根据责任来划分边界,那么一个系统在所研究系统之外的意思是:实现它不属于所研究系统的研发团队的责任——可能是他老爸老妈通过生物编码,也可能是其他公司的程序员写的。这意味着一个系统可以分布在多个物理位置,也意味着同一个物理位置可以存在多个系统。

手机里装了很多软件,物理边界似乎说不清道不明,但从责任上看,哪一段代码是Google的程序员写的,哪一段代码是腾讯的程序员写的,哪一段代码是本公司的程序员写的,清清楚楚明明白白。

图5-6是一个通过物理位置来划分系统的错误例子。做一个通过手机遥控电视的控制软件,因为想到系统将来部署时可能会有一部分部署在手机端,另一部分部署在电视端。建模人员按照物理位置把系统分为手机端、电视端两个系统画在业务序列图上,映射到系统用例图时,得到两张系统用例图。

《软件方法》第5章 系统用例图 系统执行者要点(1)

图5-6 遥控软件错误的用例图

正确的用例图应如图5-7所示。

《软件方法》第5章 系统用例图 系统执行者要点(1)