一直被这两个关系困扰,不太容易分辨某些用例到底是拓展关系还是包含关系,比如网站转账系统
转账和登录系统是什么关系?
我登录网站可以什么都不做,也可以选择转账,从这方面看是拓展关系。
但是我直接选择转账,然后又必须要登录才可以转账,从这个角度看又是包含关系。
最近翻了一些资料,有了一些感悟,记录下来备忘。
可以从这个角度来看,首先扩展用例中的基本用例是可以单独存在的,扩展用例则必须在基础用例存在的情况下才可以使用,在这个例子中,登录系统确实是可以单独存在的,而转账也必须是基础用例存在的情况下才可以使用不能单独存在,所以这个例子应该是拓展关系。拓展的另外一个要求是拓展用例是可选的,比如我登录什么都不做也可以转账也可以查询余额等等。
包含关系的要求是包含用例是抽象的,不可以单独存在的,而缺了这个包含用例,基础用例又是不完整的,所以这个例子不是包含关系,如果这个例子中的登录系统改为验证密码,则他们的关系才可以是包含关系。