关于UML中的扩展用例的定义我发现各家之言各不相同,在《UML用户指南》中有这么一段:用例之间的扩展关系表示基础用例在由延伸用例间接地说明的一个位置上,隐式地合并了另一个用例的行为。基础用例可以单独存在,但是在一定的条件下,它的行为可以被另一个用例的行为扩展,这个基础用例在一个被称做它的扩展点(Extension point)的地方被扩展,可以将扩展关系理解为扩展用例把行为放入基础用例中。(在原文中用例用用况表示,扩展用延伸表示。)
这段话的翻译我觉得不是很清晰,特别是最后一句。我有两个问题,一个是扩展用例能不能独立存在,还有一个是扩展用例的作用是什么?
对于第一个问题我和同事有过几次讨论,有一个同事认为基础用例和扩展用例之间可以毫无关系,可以在两个相对独立的用例之间建立扩展关系,但是我觉得扩展用例只是基础用例的部分流程的扩展,例如顾客付款,基础用例是顾客付款,其基本流程中包含现金支付这一系列的流程,可以把信用卡支付作为现金支付的一个扩展,而单独的信用卡支付没有实际意义,它只是一个比较复杂的扩展流程,因此把它单独拿出来做成一个用例。
对于扩展用例的作用,我觉得它最大的作用应该是简化流程,把一些有相互关系的扩展流程单独拿出去作为单独的用例,但是它还是依赖于基础用例。
关于扩展用例我觉得还不够清晰,不同的作者在他们的著作中描述的都不一致。这也是UML现在面临的一个问题,同样的概念不同人的理解和翻译都不一致,导致学习者和使用者产生困惑。