基本概念
用例是一种把现实世界的需求捕获下来的方法。
官方文档对用例是这样定义的:用例定义了一组用例实例,其中每个实例都是系统所执行的一系列操作,这些操作生成特定主角可以观测的值。
这怎么理解呢?我们先换个说法,一个用例就是与参与者(actor)交互的,并且给参与者提供可观测的有意义的结果的一系列活动的集合。这个说法应当更清楚一些。所谓的用例,就是一件事情,要完成这件事情,需要做一系列的活动;(用例就是活动)而做一件事情可以有很多不同的方法和步骤,也可能会遇到各种各样的意外情况,因此这件事情是由很多不同情况的集合构成的,在UML中称之为用例场景。一个场景就是一个用例的实例。
例如你想做一顿饭吃,你需要煮饭和炒菜两件事,这两件事情就是两个用例。而煮饭这件事情是可以有不同的做法的。你可以用电饭煲煮饭,也可以用蒸笼做,这就是两个不同的场景,也就是两个实例。而同样是用电饭煲做,如果是糙米,你可能要先淘米,再下锅;如果是精米,你就可以省掉淘米步骤直接下锅。这就是用例在不同条件下的不同处理场景。
要启动用例是有条件的,要做饭,首先得要米。这就是启动用例的前提,也称为前置条件。用例执行完了,会有一个结果,米变成了饭,也称为后置条件。
综上所述,一个完整的用例定义由参与者、前置条件、场景、后置条件构成。如图:
一个系统的功能性是由一些对系统有愿望的参与者要做的一些事情构成的,事情完成后就达成了参与者的一个愿望,当全部参与者的所有愿望都能够通过用例来达到,那么这个系统就被确定下来了。捕捉功能性需求,这就是用例的作用。