第7章 面向对象分析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2020/5/14
软件工程 Software Engineering
17
问题域分析建立用例模型
图7.2用例的包含关系示例
2020/5/14
软件工程 Software Engineering
18
问题域分析建立用例模型
(b)扩展关系:用来说明可选的、只在特定条件下运行的 行为,具有扩展关系的用例基于参与者的选择,可以运 行几个不同的流。扩展关系用带关键字《extend》的依 赖关系表示,箭头指向原有的基本用例。一个用例可能 有多个扩展点,每个扩展点也可能出现多次。
27
发现和定义对象与类
❖ 在面向对象分析中,从软件功能需求来看,分析 类(在进行面向对象分析过程中所使用的类)根 据其功能和作用可以划分为以下3种:
①实体类:表示系统存储和管理的永久信息; ②边界类:表示参与者与系统之间的交互; ③控制类:表示系统在运行过程中的业务控制逻辑。
2020/5/14
软件工程 Software Engineering
❖ OOA应该包含以下几个步骤: ① 分析问题域,建立用例模型。 ② 发现和定义对象和类。 ③ 识别对象的内部特征。 ④ 识别对象的外部联系。 ⑤ 识别对象之间的交互。
2020/5/14
软件工程 Software Engineering
6
第二节 面向对象分析过程
❖问题域分析建立用例模型 ❖发现和定义对象与类 ❖识别对象的内部特征 ❖识别对象的外部联系 ❖识别对象之间的交互
2020/5/14
软件工程 Software Engineering
4
面向对象分析模型
❖ 在面向对象分析中,主要包括以下3个独立的模型。 ①对象模型(静态模型):对用例模型进行分析,把系统
分解成互相协作的分析类,通过类图/对象图描述对象/ 对象的属性/对象间的关系,是系统的静态模型。对象模 型是最基本、最重要、最核心的。 ②动态模型:描述系统的动态行为,通过顺序图/合作图描 述对象的交互,以揭示对象间如何协作来完成每个具体 的用例,单个对象的状态变化/动态行为可以通过状态图 来表达。
软件工程 Software Engineering
3
需求获取
❖ 需求获取是需求分析的第一项工作,其本质主要 是人的活动,涉及软件设计人员如何与客户建立 有效的沟通。也称为“需求发现”、“需求获 得”。 需求获取是在问题及其最终解决方案之 间架设桥梁的第一步。源自文库
❖ 需求获取的途径和手段主要有以下几种: (1)“访谈式”(Visitation) (2)“诱导式”(Inducement) (3)“确认式”(Afirm)
2020/5/14
软件工程 Software Engineering
10
问题域分析建立用例模型
(b)班级基本信息管理模块的用例 ❖添加班级基本信息 ❖修改班级基本信息 ❖查询班级基本信息 ❖删除班级基本信息 ❖ 打印班级基本信息
2020/5/14
软件工程 Software Engineering
11
2020/5/14
软件工程 Software Engineering
8
问题域分析建立用例模型
❖以学生信息管理系统为例。
图7.1 学生信息管理系统主要参与者
2020/5/14
软件工程 Software Engineering
9
问题域分析建立用例模型
(a)学生信息管理模块的用例 ❖录入学生基本信息 ❖查询学生基本信息 ❖修改学生基本信息 ❖删除学生基本信息 ❖打印学生基本信息
②在系统边界方面,应该考虑的因素包括人员、设备和外 部系统,它们可以启发分析员发现一些系统与外部活动 所进行的交互,并处理系统对外接口的对象。
③对系统责任的分析是基于对象识别的遗漏的考虑,对照 系统责任所要求的每一项功能查看是否可以由已找出的 对象来完成该功能,在不能满足要求时增加相应的对象, 可以是系统分析员尽可能完全的找出所需要的各种对象。
2020/5/14
软件工程 Software Engineering
13
问题域分析建立用例模型
(e)网上选课模块的用例 ❖查看课程基本信息 ❖添加选课信息 ❖删除已选课程
2020/5/14
软件工程 Software Engineering
14
问题域分析建立用例模型
(f)账号管理模块的用例 ❖创建新账号 ❖设置账号权限 ❖设置账号登录开关 ❖修改账号 ❖查看账号 ❖删除账号
③功能模型:以用例模型为基础,描述系统应具有的功能 用于实现用户的日常需要。由用例和场景表示。
2020/5/14
软件工程 Software Engineering
5
面向对象分析的步骤
❖ 面向对象分析需要将真实世界进行抽象,通过问题的叙 述,将真实世界系统加以描述。分析的目的是为了构造 一个系统属性和系统行为的模型,该模型是根据对象和 对象之间的关系、动态控制和功能转移来确定的。
图7.3 用例的扩展关系示例
2020/5/14
软件工程 Software Engineering
19
问题域分析建立用例模型
(c)泛化关系:用例的泛化关系是指一个父用例可以被特 化形成多个子用例。在泛化关系中,子用例继承了父用 例的所有结构、行为和关系,子用例是父用例的一种特 殊形式,父用例有子用例的若干种实现方式。
2020/5/14
软件工程 Software Engineering
7
问题域分析建立用例模型
❖面向对象分析的基础就是问题域以及用户 的需求,研究问题域和系统需求的主要目 的是通过对问题域的深入研究,建立一个 能够满足用户需求的系统模型。面向对象 分析强调系统模型与用户需求的紧密对应, 对问题域的研究贯穿与整个面向对象分析 工作中。面向对象分析的第一步就是分析 用户需求,在此基础上建立用例模型。
第七章 面向对象分析
2020/5/14
软件工程 Software Engineering
1
本章内容
❖面向对象分析概述 ❖面向对象分析过程
2020/5/14
软件工程 Software Engineering
2
第一节 面向对象分析概述
❖需求获取 ❖面向对象分析模型 ❖面向对象分析的步骤
2020/5/14
28
发现和定义对象与类
(1)识别边界类
❖ 边界类使是从那些系统和外界进行交互的对象中归纳、 抽象出来的,它是系统内的对象和系统外的参与者的联 系媒介,外界的消息只有通过边界类的对象实例才能发 送给系统。
❖ 根据角色的不同类型,边界类可以是用户接口、系统接 口和设备接口。对于用户接口来说,边界类集中描述了 用户与系统的交互信息,而不是描述用户接口的显示形 式,如按钮等;对于系统接口和设备接口来说,边界类 集中描述所定义的通信或交换协议,而不是说明协议如 何实现的。边界类使系统与系统的外部变化隔离开来。 参与者只许通过边界类和系统通信。
2020/5/14
软件工程 Software Engineering
29
发现和定义对象与类
(2) 识别控制类 ❖控制类是实体类和边界类之间的润滑剂,
用于协调边界类和实体类之间的交互。
❖控制类与用例存在着密切的关系,它在用 例开始执行时创建,在用例结束时取消。 一般来说,一个用例对应一个控制类。
2020/5/14
2020/5/14
软件工程 Software Engineering
24
发现和定义对象与类
❖ 发现学生信息管理系统中的类对象:首先在用户 需求中分检出候选的类对象。通常,需要通读需 求报告,在问题域中发现其中的名词,将其分检 出来作为候选的类对象。在学生信息管理系统中, 可能作为候选类对象的有:系统、用户、新生、 系统管理员、学生、基本信息、姓名、性别、年 龄、身份证号、家庭住址、身高、编号、学生证 号、学校领导、学生信息、相关部门、新专业、 学校、社会、课程信息、课程编号、所属专业、 课程名称、开课学期、学时、学分、任课教师、 专业、班级、报表、网络、选修课、时间、数量、 人数、考试、考试成绩、账号、密码、账号信息。
2020/5/14
软件工程 Software Engineering
23
发现和定义对象与类
❖ 在寻找各种可能有用的候选对象时,主要的策略是:从 问题域、系统边界和系统责任这3方面出发,考虑各种能 启发我们发现对象的因素,找到可能有用的候选对象。
①在问题域方面,可以启发分析员发现对象的因素包括人 员、组织、物品、设备、事件、表格、结构等等。
2020/5/14
软件工程 Software Engineering
15
问题域分析建立用例模型
(g)登录模块的用例 ❖登录 ❖修改密码
2020/5/14
软件工程 Software Engineering
16
问题域分析建立用例模型
❖ 发现用例之间的关系。用例之间也存在着一定的 关系。在发现用例以后还需要分析用例之间的关 系,用例之间的关系主要有:包含关系、扩展关 系和泛化关系。
软件工程 Software Engineering
22
发现和定义对象与类
❖ 在对象识别中最为关键的是正确运用抽象原则。 面向对象分析用对象来映射问题域中的事物,但 并不是问题域中的所有事物都需要用对象来映射。
❖ 首先要舍弃与系统责任无关的事物,保留与系统 责任有关的事物。其次,还要舍弃与系统责任有 关的事物中与系统责任无关的特征。判断事物极 其特征是否与系统责任相关的准则是:该事物是 否向系统提供了一些服务或需要系统描述它的某 些行为。同时还要考虑将问题域中的事物映射为 什么对象以及如何对对象进行分类
图7.4 用例的泛化关系示例
2020/5/14
软件工程 Software Engineering
20
问题域分析建立用例模型
图7.5 学生基本信息管理模块用例图
2020/5/14
软件工程 Software Engineering
21
问题域分析建立用例模型
图7.6 课程信息管理模块用例图
2020/5/14
2020/5/14
软件工程 Software Engineering
25
发现和定义对象与类
❖对于我们研究的学生信息管理系统,还需 要筛选和精简候选的类对象。
❖本系统中筛选的候选类对象包括:学生、 教师、账号、课程、成绩、班级、专业和 选修课。为了将学生、教师类与参与者相 互区别,这里描述为学生信息、教师信息。
❖ 对于对象的属性和服务,面向对象方法提供了专 门的表示方法:对象的属性用在类符号中部填写 的各属性的名字表示;而对象的服务则用在类符 号的下部填写的各服务的名称表示。
2020/5/14
软件工程 Software Engineering
31
识别对象的内部特征
(1) 定义对象的属性 ❖ 可以从以下角度确定对象应具有的属性: ① 按照一般常识,对象应该具有哪些属性; ② 在当前问题域中,对象应具有哪些属性; ③ 根据系统责任的要求,对象应具有哪些属性; ④ 建立该对象是为了保存和管理哪些信息; ⑤ 对象为了在服务中实现其功能,需要增设哪些属性; ⑥ 是否需要增设属性来区别对象的不同状态; ⑦ 用什么属性来表示对象的整体-部分联系和实例连接。
软件工程 Software Engineering
30
识别对象的内部特征
❖ 对象的内部特性包括对象的属性和服务。识别对 象的内部特征包括定义对象的属性和服务两个部 分的工作。问题域中,事物的特征可以区分为静 态特征和动态特征,静态特征通过一组数据来表 示,而动态特征则可以通过一系列操作来表达。
❖ 对象的属性和服务描述了对象的内部细节,只有 给出了对象的属性和服务,才能说对于该对象有 了明确的认识和定义。
❖ (a)包含关系:又称使用关系。如果若干用例 的某些行为都是相同的,则可以将这些相同的行 为提取出来单独组成一个用例。当其他用例使用 该用例时,便包含了该用例的所有行为。包含关 系用带关键字<<include>>的依赖关系来表示, 箭头指向被包含的用例。一个用例可以包含多个 用例,一个用例也可以被多个用例包含。
2020/5/14
软件工程 Software Engineering
26
发现和定义对象与类
学生信息 学号 姓名 年龄 家庭住址 性别 身份证号 身高
教师信息
课程 课程编号 所属专业 课程名称 学时 学分 任课教师
班级
账号 密码
成绩
专业
学期 选修课 选课信息
图7.7 系统初步类图
2020/5/14
软件工程 Software Engineering
问题域分析建立用例模型
(c)课程基本信息管理模块的用例 ❖添加课程基本信息 ❖查询课程基本信息 ❖修改课程基本信息 ❖删除课程基本信息 ❖打印课程基本信息
2020/5/14
软件工程 Software Engineering
12
问题域分析建立用例模型
(d)成绩管理模块的用例 ❖录入成绩 ❖修改成绩 ❖保存成绩 ❖查询成绩 ❖打印成绩单