正文
197
因此,设计人员得真正去做建模,最重要的就是怎样把握这个用例的粒度,然后怎么去写用例的事件流,这里有两个最核心的问题。用例最难的就是怎么样把握它的粒度,然后如何去评价一下我们的那个粒度,我们的有些哪些地方做得不够好。我们知道这终端用户他关注的是他的表示(presentation),而系统分析员他们关注的是系统的行为。
我们是
使用用例来建模系统的行为
(Modeling System Behavior With Use Cases)。
那,什么叫行为?
实际上,系统行为可以看作是,
系统如何行动和反应。
系统的外部可见的和可测试的活动。没有系统孤立存在,每个系统为了一些目的要和人或自动系统交互。这些交互导致了一些种类的可预测的结果。这个可以预测的结果就是系统行为。
因此,系统行为被捕捉在用例中。
我们知道,需求决定了架构,而所有的需求的描述分成这样几个部分,整个需求学科里面分成四部分。
第一个是写一个系统的愿景,要有一个愿景文档,在愿景文档里面你要讲清楚问题空间和解决方案,这就是说,目的要突出,比如,为什么要做这个系统,要帮助客户解决什么问题?有哪些用户类型,产品有哪些核心的功能,这是使用用例图来描述这些功能,在愿景文档里面要给大家写清楚。
然后还有一个词汇表,这个词汇表是你在写用例的时候要用得好,除了这些之外,还有软件需求规约,然后软件需求规约分两部分,一部分是用例模型,然后一部分是补充规约,然后用例模型描述了系统所有的功能性的需求,然后补充规约描述了系统的所有的非功能性的需求。而我们知道了我们做架构的时候,我们不但要关心领域相关的那些关键性的业务需求,我们还一定要关心那些非功能性的需求,或者我们把非功能性的叫质量属性,或者架构性的需求,这是很重要的。
198
然后大家都知道了,这个系统行为最终是靠什么刻画?是靠动作来刻画的。下面再简单的谈一下动作。
动作(Action)
The specification of an executable statement that forms an abstraction of a computational procedure. An action typically results in a change in the stateof the system, and can be realized by sending a message to an object ormodifying a link or a value of an attribute.
动作是一条可执行语句的规格说明,此规格说明形成计算机例程的抽象。一个动作典型地导致系统状态的变化,并且能通过给一个对象发送消息或者通过修改一个链接和属性值而实现。
刚才我们说的系统行为是一连串的动作,再大家给大家简单解释一下什么叫做一个动作,你就记得动作是一条可执行的语句,假设画了一个用例图,而这个用例里面有很多的事件流,就是我们知道这个事件流都是用动作来表示,每个动作实际上可以是一个事件。
199
那我们真正再来谈一下,什么是用例。
Use Case(用例)
用例描述一个参与者(Actor)如何使用系统以及如何和系统交互。更正式的说,一个用例描述一个系统提供给一个参与者什么服务和特性。通过描述对特定的参与者产生有价值的可观察结果的完整的动作序列,你定义了用例。
用例是UML中的关键概念。它们增强了开发队伍间的交流,以便你能解决确定的问题,并且为你的用户定义了确定的系统。
用例允许我们围绕某类人将使用系统的方式来组织需求,而不只是一个需求列表。
在图形上,把一个用例画成一个实线椭圆,通常仅包含它的名称。
用例是系统执行的,大家看这个定义,用例是系统执行的一组动作序列的描述,这样大家知道了,这个动作需要你写用例的时候就会这样子的,比如说它还有可能拐个弯,比如说出现异常了,然后释放的也是一种动作序列。
用例比如说我们给他编一个号,假如说在这个地方这一段我们把它变成A1,当然它还有可能在拐弯,我们就把它叫做A2,A1到A2这之间的关系,这么一段的都给它描述好,所以,就会描述很多的这种段,这样不同的段代表的动作序列流,就是我们后面会引进的一个重要概念:场景,我们先把这个放一放,先来简单解释一下用例最核心的价值。
用例改变了我们思维的方式,用例允许我们围绕某类人将如何使用系统的方式来组织需求,这样我们的需求是一系列的动作序列,既有动态的也有静态的特征,这可以严格的反映出我们真正的现实需求情况,而不再是把它写成一个需求的列表(这只是一种简单的罗列,反映不出来真正的动态交互的效果),这对我们很重要,所以,以此基础,用例是我们将来整个进行项目需求怎么进度规划的一个最重要的基石。
200
用例,也可以说是需求分析中的流砥柱,那么,这个用例怎么表述?
大家都知道,就是用例从图形上看,是实体的椭圆,然后我们的参与者是个小人。所有的概念我们再给大家强调,这一切都是相对于参与人来描述的,这是我们真正的牛顿第一定律,我们的坐标系,所有的东西都要相对它去表述,在整个用例里面,因为我们给你写了事件流了,你最重要的是要去读懂它的事件流。
那么,事件流是什么?用例与事件流是什么关系?