作者:张克强 作者微博:张克强-敏捷307
RUP系的考虑
在RUP中,没有对用例的颗粒度给出清晰的指导。2004年Rational 中国区技术销售经理 傅纯一发表一文《用例建模指南》,是这样说明用例的粒度的。
我的系统需要有多少个用例?这是很多人在用例建模时会产生的疑惑。描述同一个系统,不同的人会产生不同的用例模型。例如对于各种系统中常见的"维护用户"用例,它里面包含了添加用户、修改用户信息、删除用户等操作,这些操作在该用例的事件流可以表述成为基本流的子事件流(subflow)。
管理用户-基本事件流
该基本流由三个子事件流构成:
1) 添加用户子事件流
…
2) 修改用户 子事件流
…
3) 删除用户子事件流
…
但是你也可以根据该用例中的具体操作把它抽象成为三个用例,它所表示的系统需求和单个用例的模型是完全一样的。
应该如何确定用例的粒度呢?在一次技术研讨会上,有人问起Ivar Jacoboson博士,一个系统需要有多少个用例?大师的回答是20个,当然他的意思是最好将用例模型的规模控制在几十个用例左右,这样比较容易来管理用例模型的复杂度。在用例个数大致确定的条件下,我们就很容易来确定用例粒度的大小。对于较复杂的系统,我们需要控制用例模型一级的复杂度,所以可以将复杂度适当地移往每一个用例的内部,也就是让一个用例包含较多的需求信息量。对于比较简单的系统,我们则可以将复杂度适度地曝露在模型一级,也就是我们可以将较复杂的用例分解成为多个用例。
用例的粒度不但决定了用例模型级的复杂度,而且也决定了每一个用例内部的复杂度。我们应该根据每个系统的具体情况,因时因宜地来把握各个层次的复杂度,在尽可能保证整个用例模型的易理解性前提下决定用例的大小和数目
傅的这篇文件代表了当时雅各布森-RUP系对用例颗粒度的看法。
科伯恩的关于颗粒度的考虑
在科伯恩的编写有效用例中,探讨了CRUD类型用例,CRUD是指创建、检索、更新和删除,上述的添加用户、修改用户和删除用户就是典型的CRUD类型用例。书中提到“S.R.A公司的