1、项目二 需求建模,张志丽,项目引入,开发“诚信管理论坛系统” 系统开发人员需要实现功能: 注册、登录、显示板块列表、显示帖子列表、查看帖子 回帖、发帖、登出 作为项目开发人员,你需要站在用户的角度分析该系统的需求,确定系统中的参与者和主要用例,并画出用例视图,2.1 用例图,需求分析的重要性对需求的缺乏、对需求不正确理解、不完整、需求变化往往引起系统开发失败的主要原因。 常见的误区是,开发人员都急着进入系统设计阶段或编码实现阶段,而不愿在需求分析阶段多下功夫,但是如果连需求都没有弄清楚,还谈什么编码呢? 有了需求才有目标,才能根据需求对软件进行测试,才能向客户证明我们达到了目标。,2.1 用例
2、图,认识用例图,我们可以使用用例(use case)作为需求建模的起点。 以用例为起点进行需求建模,可以使我们的焦点集中在客户身上 。 用例图是显示一组用例、参与者以及它们之间关系的图。 用例图从用户的角度而不是开发者的角度来描述对软件产品的需求,分析产品所需的功能和动态行为。,用例图包括以下三方面的内容:,参与者 用例 包含、扩展、泛化关系,2.1 用例图,概 念,参与者( Actor ),参与者(actor ,有些书翻译成“角色”)是一种特殊的类,是系统外部的一个实体,这个实体可以是任何的人或物,它以某种方式参与了用例的执行过程。参与者用一个人形的图案表示 。,参与者,2.1 用例图,识别
3、参与者,谁使用系统? 谁安装系统、维护系统? 谁启动系统、关闭系统? 谁从系统中获取信息,谁提供信息给系统? 在系统交互中,谁扮演了什么角色? 系统会与哪些其他系统相关联?,2.1 用例图,识别参与者,客户给销售员发来传真订货, 销售员下班前将当日订货单汇总输入系统。谁是系统的Actor?,销售员,汽车租赁管理系统能实现汽车租赁、检验管理、预约、收款等业务谁是系统的Actor?,业务员、汽车检验员、财务系统、系统管理员,某货物管理系统主要功能是辅助销售员、仓库管理员完成商品仓储与销售方面的工作,并为财务系统提高商品与进货、销售等信息。谁是系统的Actor?,销售员、仓库管理员、财务系统、系统管
4、理员,2.1 用例图,概 念,用例(UseCase),用例(UseCase)是对一组序列动作的描述,系统执行这些动作将对用例的参与者产生可以观察的结果。在图形上,用例用实线的椭圆表示。,2.1 用例图,识别用例,参与者希望系统提供什么功能 系统是否存储和检索信息 当系统改变状态时,是否通知参与者 是否存在影响系统的外部事件,是哪个参与者通知系统这些外部事件,2.1 用例图,识别用例(从角色入手),货物管理系统1、系统管理员用户管理基础信息管理用户权限管理 2、仓库管理员商品信息管理入库出库,3、销售员订单管理客户管理账单管理 4、财务系统支付管理,2.1 用例图,识别用例(从角色入手),汽车租
5、赁管理系统1、系统管理员用户管理基础信息管理用户权限管理 2、业务员租赁归还预约账单管理,3、汽车检验员汽车检验管理 4、财务系统支付管理,2.1 用例图,如何判断一个用例是否是一个优秀的用例,用例图,用例应描述系统该做什么,而不是如何做 用例应采取参与者的视点 用例应对参与者有价值 用例描述的时间流应是一个完整场景 所有的参与者、用例都应有相应的关联用例或关联参与者 计算用例的数量,控制用例的数目,概 念,用例图,用例图主要是描述角色和用例之间的关系,2.1 用例图,概 念,用例与事件流,用事件流描述角色与系统之间对话的细节内容,基本流:用例最正常的场景,执行一系列活动步骤来响应角色提出的服
6、务请求。备选流:用例执行过程中异常的或偶尔发生的一些情况,2.1 用例图,概 念,用例之间的关系,用例之间抽象出包含(include)、扩展(extend)和泛化(generalization)这几种关系。,2.1 用例图,泛化关系(generalization),当多个用例共同拥有一种类似的结构和行为的时候,我们可以将它们的共性抽象成为父用例,其他的用例作为泛化关系中的子用例。在用例的泛化关系中,子用例是父用例的一种特殊形式,子用例继承了父用例所有的结构、行为和关系。 图示如下:,泛化关系,2.1 用例图,泛化举例,2.1 用例图,包含关系(include),包含是指基本用例(base us
7、e case)的操作中会用到包含用例(inclusion) 。被包含用例是可重用的用例多个用例的公共用例。 图示如下:,包含关系,2.1 用例图,包含举例(一),2.1 用例图,包含举例(二),2.1 用例图,扩展关系(extend),关键字,扩展关系是指将扩展用例在一定的条件下按照相应的扩展点插入到基础用例中。 基础用例不必知道扩展用例的任何细节,仅提供扩展点。 扩展用例的行为是否被执行,取决于基础用例中的判定点。图示如下:,2.1 用例图,扩展举例(一),2.1 用例图,扩展举例(二),2.1 用例图,包含用例与扩展用例的区别,举例: 小明去上街是一个用例,上厕所用例与上街用例可以是包含也
8、可以是扩展用例。一定要上厕所是包含关系,可上可不上是扩展关系。,2.1 用例图,包含关系,上街之前必须要上厕所是包含关系。,2.1 用例图,扩展关系,上街之前如果内急才要上厕所是扩展关系。,2.1 用例图,包含用例与扩展用例的区别,相对于基础用例,扩展用例是可选的;包含用例则不是。 如果缺少扩展用例,基础用例还是完整的;缺少包含用例,则基础用例就不完整了。 扩展用例的执行需要满足某种条件;包含用例不需要。 扩展用例的执行会改变基础用例的行为;包含用例不会。,2.1 用例图,用例图举例(一) 货物管理系统 用例图举例(二) 汽车租赁管理系统,2.1 用例图,任务解决,注册功能 登录功能 显示版块
9、列表功能 显示帖子列表功能 查看帖子功能 回帖功能 发帖功能 登出功能 新增版块功能 帖子审核功能 删除帖子功能,2.1 用例图,解决方案,2.1 用例图,1.确定系统参与者,严格意义上的参与者只有两个:系统管理员和员工。 系统管理员负责对整个系统进行管理维护,包括版块管理和帖子管理功能; 员工则是主要使用者,能进行查看版块及帖子相关信息、发帖和回帖等基本论坛操作功能。,2.1 用例图,2.确定系统用例,在这个系统中,可以总结出如下的用例: 系统管理员:新增版块、帖子审核、删除帖子 普通员工:注册、登录、显示版块列表、显示帖子列表、显示帖子、回复帖子、发布新帖子、登出。,3.确定用例间关系,角
10、色之间管理:管理员首先也是公司员工,是特殊员工 查看帖子和回复帖子之间是扩展关系 查看帖子和发布新贴之间也是扩展关系 其他用例之间是普通关联关系,4.使用Enterrise Architect或Rational Rose绘制用例图,2.1 用例图,小 结,用例图是显示一组用例、参与者以及它们之间关系的图。 用例图包括以下三方面的内容:参与者用例泛化、包含和扩展关系如何用Rational Rose绘制用例图。,2.4 活动图,根据诚信管理论坛系统开发进度,在完成对系统需求建模,得到用例模型后,应针对每个用例进行业务分析,说明其具体的业务流程。现在分析部指派你来完成该项任务,要求用活动图来描述系统
11、中已知用例的业务过程:1描述注册用例2描述登录用例,用例图只告诉我们系统应该做什么,而没有告诉我们怎么做。,问题引入,2.4 活动图,认识活动图,用于描述活动流程的图形称为活动图(Activity Diagram)。 一张活动图从本质上说是一个流程图,它显示了系统中从一个活动到另一个活动的流程,使用活动图来描述用例的活动。 其主要目的是描述一个操作的执行过程中所完成的工作。,活动图中的基本要素包括 :,1、状态 2、转移 3、分支,4、分叉和汇合 5、泳道 6、数据流,2.4 活动图,活动图适用于: 1、描述并行过程或行为 2、描述一个算法 3、描述一个跨越多个用例的活动而状态图则是描述一个具
12、体对象的可能状态以及他们之间的转换,2.4 活动图,概 念,状态(State),状态是指在对象的生命周期中满足某些条件、执行某些活动或等待某些事件时的一个条件或状况 。活动图中的状态包括动作状态和活动状态 。,动作状态是活动图中最小单位的构造块,表示原子动作。 在UML中,动作状态使用带圆端的方框表示。,和动作状态表示的是不可分割的原子动作不同,活动状态表示的是可以分割的动作。它可以被分解成其他子活动或动作状态,它能够被中断,占有有限的时间。 在UML中,活动状态的表示和动作状态一样。,2.4 活动图,活动图中的特殊状态 :起始状态(start state) :表示活动的开始,用实心圆点来表示
13、,只有一个 。终止状态(end state) :表示活动的结束,用实心圆点外加一个小圆圈来表示 ,可以有多个终止状态。,起始状态,终止状态,2.4 活动图,概 念,转移(transition),转移是两个状态间的一种关系,表示对象将在当前状态中执行动作,并在某个特定事件发生或某个特定的条件满足时进入后继状态,使用“转移”来表达这种控制的传递关系 。转移显示了从一个动作或活动状态到下一个动作或活动状态的路径。 在UML中用一条简单的直线表示一个转移 。,2.4 活动图,图中的活动都是动作状态,而图中的转移则属于自动转移。,“打电话”的基本过程:,2.4 活动图,概 念,分支(Branch),分支
14、用于描述基于某个条件的可选择路径。一个分支可以有一个进入转移和两个或多个输出转移。在每条输出转移上都有条件表达式对该输出路径进行判定,当且仅当条件表达式为真时,该输出路径才有效。在所有输出转移中,条件不能重叠,且应覆盖所有的可能 。分支在图形上用菱形表示,条件用文本标记在输出转移的路径上。引入分支后,除了可以描述选择结构外,还可以用来描述循环结构。,分支,2.4 活动图,示例2.4.1 HNS图书馆管理系统中需要提供对用户信息的修改功能,请使用活动图描述该用例。,“分支”示例:,2.4 活动图,示例2.4.2 针对货物管理系统的入库用例绘制相应的活动图,2.4 活动图,概 念,分叉(fork)
15、和汇合(join),在UML中使用分叉和汇合表示并行发生的事件流。分叉表示把一个单独的控制流分成两个或多个并发的控制流。一个分叉可以有一个进入转移和两个或多个输出转移,每一个转移表示一个独立的控制流。 汇合表示两个或多个并发控制流的同步发生,一个汇合可以有两个或多个进入转移和一个输出转移。 分叉和汇合应该是平衡的。分叉和汇合在图形上都使用同步条来表示,同步条通常用一条粗的水平线表示 。,同步条,2.4 活动图,“打电话” 活动中的并发事件,活动图虽然从本质上说是一个流程图,但活动图可以描述并发步骤。因此支持对并发过程的描述是活动图与流程图的最大的不同。,2.4 活动图,概 念,泳道(swiml
16、ane),“泳道”技术,是将一个活动图中的活动状态进行分组,每一组表示一个特定的类、人或部门,他们负责完成组内的活动。“泳道”技术用来描述每个活动是由哪个对象负责完成 。UML中,每个组被称为一个泳道,用一条垂直的实线与邻居分开。每个泳道在活动图中都有一个唯一的名称,表示业务过程中的实体。每个活动都明确属于一个泳道,不可以跨越泳道,而转移则可以跨越泳道。,2.4 活动图,“泳道” 示例:,示例2.4.3 用活动图描述客户在商店中购买物品的过程。,2.4 活动图,概 念,对象流(object stream),包括依赖关系和对象的应用被称为对象流。对象流是动作和对象间的关联。在UML中,使用矩形表
17、示对象,对象和动作之间使用带箭头的虚线连接,带箭头的虚线表示对象流。 对象流可用于对下列关系建模: 动作状态对对象的使用。 动作状态对对象的影响。,对象,2.4 活动图,“对象流” 示例:,示例2.4.3 用活动图描述客户在商店中购买物品的过程。(使用对象流技术描述购物这个动态过程中系统内对象的状态变化 ),2.4 活动图,活动图的建模技术,活动图用于对系统的动态行为建模,在对一个系统建模时,通常有两种使用活动图的方式:为对象的操作建模 为工作流建模,2.4 活动图,使用活动图对系统建模 的步骤:,确定活动图所关注的业务流程。确定该业务流程中的业务对象。确定该工作流的起始状态和终止状态。从该工
18、作流的起始状态开始,说明随着时间发生的动作和活动,并在活动图中把它们表示成活动状态或动作状态。将复杂的动作,或多次出现的动作集合归并到一个活动状态,并对每个这样的活动状态提供一个可展开的单独的活动图。找出连接这些活动和动作状态的转移。如果工作流中涉及重要的对象,则也把它们加入到活动图中。,2.4 活动图,任务解决 “注册”用例属于诚信管理论坛系统中员工角色的一个功能,具体流程是: 1、“员工”打开注册界面,输入相关信息; 2、系统中的“业务逻辑”组件将判断输入的信息是否合法; 3、如果不合法则转入步骤4,否则转入步骤5; 4、显示“注册错误信息”,转7; 5、在数据库添加相应用户信息; 6、显
19、示“添加成功信息”; 7、结束。,2.4 活动图,精 练 1,按照项目引入中要求,绘制“登录”用例的活动图,一般步骤如下: 1、员工在登录界面输入账号和密码; 2、业务逻辑组件在数据库中根据用户输入的账号和密码进行查找; 3、如果不存在,则显示出错信息,返回1,反之,则继续; 4、业务逻辑组件将该员工的用户状态设置为在线; 5、客户端根据员工登录前的状态进入对应的界面 6、结束,2.4 活动图,1.“读者“填写申请表,并交给“图书管理员“ 。 2.“图书管理员“将申请表中的信息通过录入界面,输入到图书管理系统。 3.系统中的“业务逻辑“组件将判断输入的信息是否合法。 4.如果不合法则转入步骤(
20、5),否则转入步骤(6)。 5.显示“添加错误信息”,转到(8)。 6.在数据库添加相信的用户信息。 7.显示“添加成功信息“。 8.结束。,“新增读者“用例属于读者信息管理中的一个功能,主要用于在系统中增加新的读者信息,其具体的办理流程是:,精 练 2,2.4 活动图,2.4 活动图,精 练 3,1.管理员在录入界面,输入待删除的读者名; 2.“业务逻辑”组件在数据库中,查找待删除的读者名; 3.如果不存在,则显示出错信息,返回步骤(1),如果存在则继续; 4.“业务逻辑”组件判断“待删除的读者”是否可以删除; 5.如果不可以,则显示出错信息,返回步骤(8),如果可以则继续; 6.在数据库中
21、,删除相关信息; 7.显示删除成功信息; 8.结束。,读者信息管理中删除读者信息一般按照以下步骤进行:,课后习题9,2.4 活动图,小 结,活动图是UML中对系统动态建模的五种图中的一种,从本质上说是一个流程图,显示从活动到活动的控制流。活动图中的基本要素包括状态、转移、分支、分叉和汇合、泳道、对象流。状态是指在对象的生命周期中满足某些条件、执行某些活动或等待某些事件时的一个条件或状况。活动图中的状态包括动作状态和活动状态。 转移表示对象将在当前状态中执行动作,并在某个特定事件发生或某个特定的条件满足时进入后继状态。分支用于描述基于某个条件的可选择路径。分叉表示把一个单汇合表示两个或多个并发控制流的同步发生,一个汇合可以有两个或多个进入转移和一个输出转移。“泳道”技术,是将一个活动图中的活动状态进行分组。,