1、面向对象建模技术,软件工程系 林 琳,2,第2章 用例图,人们在进行软件开发时,无论是采用面向对象方法还是传统方法,首先要做的就是了解需求。在进行需求分析时,使用用例图可以更好描述系统应具备什么功能。用例图由开发人员与用户经过多次商讨而共同完成,软件建模的其他部分都是从用例图开始的。,3,本章学习要点:,用例图的组成 理解泛化 理解用例之间的关系 对用例进行描述 绘制用例图,4,2.1 用例图的构成,用例图用于定义系统的功能需求,它描述了系统的参与者与系统提供的用例之间的连接关系。这里的参与者可以人,也可以另一个系统。用例图仅从参与者使用系统的角度描述系统中的信息。下图描述了一个学生成绩管理系
2、统的用例图。,用例图包含四个基本元素: 用例(Use Case) 参与者(Actor) 系统(System) 关系(Relation) 关联关系(Association) 包含关系(Include) 扩展关系(Extend) 泛化关系(Generalization),2.1 用例图的构成,6,2.1.1 系统,系统是为用户执行某类功能的一个或多个软件构件。系统的边界用来说明用例图应用的范围。 准确定义系统的边界并不总是很容易的,因为有些情况下,严格地划分哪些任务是由系统完成,而哪些是由人工或其他系统完成是很困难的。 一般的作法是,先识别出系统的基本功能,然后以此为基础定义一个稳定的、精确定义的
3、系统架构,以后再不断地扩充系统功能,逐步完善系统。这样做可以避免由于系统太大,需求分析不易明确,从而导致浪费大量的开发时间。 系统用一个方框表示,可以省略。,2.1.2 参与者,系统外部的一个实体。 参与用例的执行过程。 参与者通过向系统输入或者系统要求参与者提供某种信息来进行交互。 由参与用例时所担当的角色来表示,命名时以所扮演的角色命名。 每个参与者可以参与一个或多个用例。,2.1.2 参与者,参与者的种类: 系统用户 与所建造的系统交互的其他系统 一些可以运行的进程,识别参与者,如何寻找系统的参与者 注意直接或者间接地与系统交互或从系统中获取信息的任何人和任何事。 识别参与者过程中需要注
4、意的问题 以使用系统的业务量为依据,区分主要参与者和次要参与者 以承担职责为依据,区分系统的启动者、系统的服务者和系统服务的接收者,参与者间的关系,在用例图中,使用泛化关系来描述多个参与者之间的公共行为。,参与者间的泛化关系示例:,2.1.3 用例,外部可见的系统功能单元,用户期望系统具备的功能 定义系统的一个行为,并不显示系统的内部结构 以用户的观点描述用户和系统间交互的完整顺序,以及由系统执行的响应。,2.1.3 用例,用例的命名:动词+名词 简单名 路径名(包名:用例名),RecordGrade,Teacher:RecordGrade,识别用例,识别用例最好的方法就是从分析系统的参与者开
5、始,考虑每个参与者是如何使用系统的。 如何识别用例。,用例的泛化,子用例是父用例的特化,子用例除具有父用例的特征外,还可以有自己的另外特征。,用例的泛化,分层泛化,2.1.4 用例与参与者的关系,用例与参与者之间的关系(通信)是双向的,2.1.4 用例与参与者的关系,用例与参与者之间可以是多对多的关系,2.1.4 用例与参与者的关系,注意1:当多个参与者与用例之间有同一关系时,应该考虑使参与者名称广泛化。,2.1.4 用例与参与者的关系,注意2:如果参与者使用某一个用例,则不应该再使用其父用例。,泛化用例图,2.3 描述用例,对用例的细节描述 名称 标识符 参与者 状态 频率 前置条件 后置条
6、件 假设 基本操作流程 可选操作流程 修改历史记录,2. 4 用例间的关系,将用例中重要的可选性流程从用例中分离出来,以形成新的用例,这样可以减少重复、增加重用。用例之间的关系有: 包含关系 扩展关系,2.4.1 包含关系,包含用例可以简单地包含被包含用例具有的行为,并把它所包含的用例行为作为自身行为的一部分。,2.4.1 包含关系,提供者用例的来源 已经存在的 从现有用例中提取,2.4.1 包含关系,2.4.2 扩展关系,用一个用例增强另一个用例的功能,被扩展到用例称为基用例 扩展用例被定义为基用例的增量扩展,扩展关系的虚线箭头指向基用例。,2.4.2 扩展关系,2.4.2 扩展关系,归还图
7、书超时调用NotifyOverTime用例,当学生借阅图书有超期时,才会启动扩展用例,如果每次都要启动NotifyOverTime,则应使用包含关系。,扩展用例的启用机制:扩展点 扩展点:基用例中的一个或多个位置,在该位置会衡量某个条件以决定是否启用扩展用例 图2-21,2.4.2 扩展关系,泛化、包含与扩展关系的区别,泛化与包含用例属于无条件发生的用例,而扩展属于有条件发生的用例。 泛化侧重表示子用例间的互斥性、用例间的继承性;当两个或者多用例在行为,结构和目的方面存在共性时,就可以使用泛化关系 包含侧重表示被包含用例提供服务的复用性; 扩展侧重表示扩展用例的触发不定性(可选性);,泛化、包
8、含与扩展关系的区别,2.5 用例建模,建模步骤确定系统涉及的总体信息确定系统的参与者确定系统的用例构造用例模型下面以单机版的图书管理系统为例,说明建模过程,2.5.1 确定系统涉及的总体信息,书籍借出处理 书籍归还处理 查看借阅者的借阅信息 借阅者信息的维护 图书管理员信息的维护 图书信息的维护,2.5.2 确定系统的参与者,首先分析系统所涉及的问题领域和系统运行的主要任务: 分析使用该系统主要功能部分的是哪些人。 谁将需要该系统的支持以完成其工作。 系统的管理者与维护者。,详细需求列表 系统可以完成学生借书和还书请求 系统允许学生浏览借阅信息 如果学生超期未还,系统生成一个超期罚款信息 图书
9、信息需要维护 学生信息需要维护 图书管理员信息需要维护 系统需要维护,2.5.2 确定系统的参与者,2.5.2 确定系统的参与者,图书馆管理系统的参与者: 图书管理员 系统维护者,2.5.3 确定用例与构造用例模型,1. 图书管理员的用例 2. 系统管理员的用例,1. 图书馆管理员的用例,登录 书籍借阅 书籍归还 查看借阅信息,2. 系统管理员的用例,登录 维护借阅者信息 维护借阅信息 维护图书信息 维护图书管理员信息,对用例进行细化 提取公用部分 添加缺少用例 绘制用例图绘制用例图是一个迭代过程,不必一次就列出完整的用例模型图。,2.5.3 确定用例与构造用例模型,图书管理员构造用例模型,用
10、例细化 提取公用部分 超期处理 显示借阅信息 添加缺少用例 修改密码,图书管理员用例,构造用例模型-系统管理员,用例细化 使用泛化方式细化用例 提取公用部分 无 添加缺少用例 维护图书标题用例,系统管理员用例,习题,P40 分析题1注意: 对于公共部分和可选部分,可以提取出来构成独立用例 对于并列的功能,可以使用泛化用例 对于顺序的功能,不必再分化成独立的用例,练习:网络教学系统的需求分析,系统功能需求 数据信息管理模块 基本业务模块 信息浏览、查询模块,练习:网络教学系统功能需求,系统的功能需求主要包括以下几个方面: 学生可以登录网站浏览课程信息、查找和下载课件。 教师可以登录网站发布和更新课程信息、上传课件文件。 系统管理员负责维护教师和学生的账号。 系统管理员负责建立或者删除课程,并将课程指定给一位教师管理,一位教师可以管理多个课程。 对该需求进行用例建模,本章完,