Use Case @ Software Development介绍

  简化的酒店系统有顾客屏幕,职员屏幕,订房,入住,离店,订单和房间7个组件,箭头标示了组件间的依赖关系.这是软件开发中用组件化来划分复杂系统,隔离复杂度到各个组件里的标准姿势.

1. 简化的酒店系统

  姑且把系统外对系统的关注点(Concern)称为痛点,下图2显示订房间,登记入住和结单离店3个痛点分别缠绕若干个组件,同时有些组件内部也同时分散着多个痛点的部分.

2. 痛点和组件间的聚散离合

  倘若渴望的目标是清楚地分离各个痛点,从用例,需求,分析,到设计,实现,再到测试都是严格的分开,软件开发要来得容易多了.

3. 痛点与组件(类)矩阵示意

  在痛点与组件实现类之间架一座桥,叫做用例.这里所说的用例是用来对系统行为建模,一个用例的定义是某个系统进行的一系列活动,产出可观测到的结果,并且这个结果对一个或者多个系统相关的人或物是有价值的.

4. 用例作为痛点和组件类之间的桥梁

  用例与类清单如下所示,订房,入住和离店3个用例,顾客屏幕,职员屏幕,订房,入住,离店,订单和房间7个类.

5. 简化酒店系统的用例和类清单

  以类为横坐标,用例作纵坐标,模块化设计系统的可选方式有两种,OO(Object-Oriented)为代表的纵向切割系统,每个组件一个类,另一种是横向切割,AO(Aspect-Oriented)是代表,每一组横向切片打包合称为用例片断(Use Case Slice).

6. 用例-类坐标图

  任何一个用例,如订房,在软件开发过程中用例,分析,设计,实现,测试阶段都分别有对应的用例片断.把一个用例对应的所有用例片断合在一起,称为用例模块(Use Case Module).比如分析建模或设计建模的用例片断会囊括该用例的所有类,一些类里相关的部分成员(变量或方法)称为Aspect,还包括交互图,通讯图和类图这些描述用例实现的协作.

  用例的表示有3个场景:最简洁的是一个椭圆+名字,矩形同时显示用例名和它所含的活动序列(基本序列,备选序列,和子序列),还有一种就是在系统中和其它用例的关系结构.订房用例的图示,在系统关系图中,为订房用例归纳抽象出设施预定的用例,订房用例继承它,同时抽取3个用例共同部分检查房间情况的子用例,然后分别包含,在没有合适的房间时,为订房扩展新的排队列表用例.用例间的关系就这3种:归纳抽象,包含和扩展.

7. 订房用例椭圆简图
8. 订房用例矩形图
9. 订房用例及其所在系统示意

  关于用例间的归纳,包含关系和OO里类间继承,包含类似,扩展的概念不是很好对应,这个主题也内容也比较多,可参阅"Aspect-Oriented Software Development with Use Cases"一书.此文有意回避这部分,可简单粗暴地理解为订房用例把排队完全外包给另一个用例了.

  用例就像硬币,从系统外部看有一个相关方actor连着一个命名的实线椭圆就够了,从系统内部看去,用一个命名的虚线椭圆再连上与它关联的所有类或类的部分,这两个视角分别称为用例和用例的实现.

10. 外部看用例和actor
11. 用例和它的实现示意
12. 订房用例的实现

  描述订房用例实现的交互图,用例片断图,以及用例片断间的抽象归纳,包含和扩展关系.

13. 用例交互图
14. 订房用例片断图
15. 从订房用例归纳抽象出设施预订用例
16. 订房用例包含检查房间情况用例
17. 订房用例与酒店管理用例的扩展关系

  开发过程中用例的迭代建模过程如下:细化用例阶段更新用例模型,分析阶段更新分析模型,设计阶段更新设计模型,实现阶段更新实现模型.而测试设计片段覆盖前3个,测试实现片断覆盖测试设计和用例的实现

18. 软件开发阶段及对应的迭代更新
19. 用例模块和它所含用例片断
20. 用例间关系及其在用例模块图里的表示


21. 用例模块的打包编译配置

你可能感兴趣的:(Use Case @ Software Development介绍)