(二) 需求分析
1. 用例模型
用例模型包含了两部分:业务用例模型和系统用例模型。
1.1 目的
业务用例模型的目的在于:
(1) 描述企业的内部组织结构
(2) 描述企业各部门的业务
(3) 关注于角色和系统的交互界面
系统用例模型的目的在于:
(1) 关注于演示对系统的需求
(2) 抛弃部门的功能,更加细化
(3) 系统用例模型应该划分子系统以对应不同的功能
这二者最大不同点在于:业务用例模型仅关注于企业部门的业务,而系统用例模型则关注于系统本身实现后的互动。
1.2 图素
业务用例模型和系统用例模型有共同的图素,但是在意义上是完全不同的
1.2.1 角色
业务用例模型:
系统用例模型:
对于角色来说,业务用例模型有两种角色的变体,分别是业务角色和业务员工。系统用例模型则没有业务员工,只有业务角色。而它们的含义又是不同的。
在业务用例模型中,业务角色代表企业外的角色,业务员工代表企业内的角色。例如对于商店来说顾客就是它的业务角色,而售货员就是它的业务员工。
在系统用例模型中,业务角色代表系统外的角色。例如对于销售管理系统来说,任何一个操作员都是业务角色,因为它不属于系统内。
1.2.2 用例
业务用例模型:
系统用例模型:
对于用例来说,业务用例模型因为需要描述部门的业务,因此它将使用一般用例的变体:业务用例。而系统用例模型则只需要使用用例的本体就可以了。二者的区别在于,业务用例的粒度很粗,它只描述部门的总体业务;用例的粒度很细,需要描述到系统中业务场景的工作。
1.3 模型创建
1.3.1 业务用例模型工作流程
Step-1 :创建业务用例对象模型的包
使用包的变体“ Business Use Case Model ”:
Step-2 :创建用例对象的角色
创建业务员工和业务角色。
Step-3 :创建组织结构图
制作业务用例模型时,需要通过扩展的关系来将各个业务员工和业务角色组织起来,形成组织结构图。(说明:需要通过抽象将业务员工的组织关系描述得清晰一些,而业务角色可能没有阶层的关系)
组织结构图的包应该使用包的变体“ organization Unit ”:
Step4 :创建业务用例
使用业务用例和业务员工、业务角色来粗略的描述部门的业务工作。
1.3.2 系统用例模型工作流程
Step-1 :创建系统用例对象模型的包
直接创建包就可以了:
Step-2 :创建用例对象的角色
创建业务角色
Step-3 :创建系统用例
使用业务角色和系统用例来详细描述系统的工作,业务角色对用例的关系应该设置为“ use ”,系统用例之间的关系将使用“extend ”、“ include ”来描述。
系统用例的名字很重要,因为它将直接影响关系的描述。(在任何一个项目开展时都要对名字本身进行约束,动宾结构,还是主动结构)
比如:有一个系统用例,名为“维护商品信息”,显然如果有一个业务角色为“商品管理员”,那这个业务角色对“维护商品信息”的信息就应该是:
而“维护商品信息”这个用例的粒度太粗,因此还需要细化它,假使,“查询商品信息”和“更新商品信息”都和“维护商品信息”是有关系的,那么它们之间的关系就应该使用“ extend ”、“ include ”来描述。请先看下图:
“查询商品信息”和“维护商品信息”是扩展( extend )的关系,“更新商品信息”和“维护商品信息”是包含( include )的关系。
扩展关系是指对于被扩展方(在这里指“维护商品信息”),扩展方(在这里指“查询商品信息”)是非必要实现的,也即没有“查询商品信息”,一样可以叫做“维护商品信息”。但是相对包含关系就不一样,“更新商品信息”对于“维护商品信息”来说是必须实现的一个用例,如果没有“更新商品信息”就没有“维护商品信息”了。此外,对于扩展关系,还有一个条件,就是扩展方应该在被扩展方用例实现的基础上进行的扩展。因此对于上图,若要表达的更清晰,则可以这样画:
这样的结果,告诉了看这个用例的人一个这样的信息:更新商品信息后可以查询其他商品信息。
1.4 实例解析
这个用例图告诉了我们这样的信息:
(1)商品管理员首先要提取商品信息
(2)在提取商品信息的同时,需要获取商品单价,这是必须完成的
(3)提取商品信息后可以更新商品信息和打印商品信息
(4)对于打印商品信息而言合计商品总量是必须完成的一个工作
从刚才的图中我们只看到了用例的关系和系统角色在各个阶段所做的一个大体工作,但是对于系统用例来说,每个用例都应该进行必要的描述(这点对于用例来说就是场景的描述)。
2. 用例描述
用例是描述了某件详细的事情。如果作为一个场景的话必然要考虑这么几个问题:谁在这个场景中做事?什么时候进入这个场景?这个场景在做什么?这个场景有没有特殊规则?这个场景结束后会有什么情况?这个场景和别的场景会有什么联系?考虑这几个问题的话,那我们就可以开始描述我们的用例了,这步工作我们就称为用例描述。
好了,我们针对这几个问题一个个来给出它们的标准定名:
(1)谁在这个场景中做事? 我们称之为参与者
(2)怎么会进入这个场景? 我们称之为前置条件
(3)这个场景在做什么? 我们称之为基本操作流程、可选操作流程
(4)这个场景有没有特殊规则? 我们称之为业务规则
(5)这个场景结束后会有什么情况? 我们称之为后置条件
(6)这个场景和别的场景会有什么联系? 我们称之为相关用
我们来描述1.4 的用例图
2.1 参与者
商品管理员
参与者的意思是,谁在对这个用例进行使
2.2 前置条件
1. 商品管理员登陆 XXX 系统后拥有能够操作该用例的权限
2. 商品信息的名称、生产日期可以被商品管理员获取作为条件
前置条件的意思是,在怎样的前提下,该用例才有可能被使用。
2.3 基本操作流程:
商品管理员输入商品名称和信息-> 系统提取对应的商品并显示所有商品信息
2.4 可选操作流程:
商品管理员输入商品名称和信息-> 系统无法根据条件得到对应商品信息,系统提示商品管理员重新输入条件
基本操作流程和可选操作流程的意思是,描述用例中基本的操作步骤和系统的反应结果,以及针对同一操作步骤可能会出现的另一种可能性。
2.5 业务规则:
在提取商品信息的时候必须满足不能提取“安全锁”类型的商品
业务规则的意思是,在整个用例的场景中,无法在前置条件或后置条件以及基本操作流程和可选操作流程中描述的一些特殊业务规则。该业务规则是隐含的却是必须的。
2.6 后置条件:
被提取的商品其状态全部变成“已查看”状态的商品
后置条件的意思是,在用例结束后会产生怎样的一个结果,而该结果可能会对今后的其他用例产生一定的影响。
2.7 相关用例:
扩展的用例:打印商品信息、更新商品信息
被包含的用例:获取商品单价
相关用例的意思是,能够在用例的描述中查看到当前用例与其他用例的关系,一般只有直接与当前用例相关的用例才会被作为相关用例,而且需要使用“扩展的用例”和“被包含的用例”来清晰的定义。