第5章 面向对象分析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
18
发现和定义对象与类
对于我们研究的学生信息管理系统,还需要筛选和精 简候选的类对象。 本系统中筛选的候选类对象包括:学生、教师、账号、 课程、成绩、班级、专业和选修课。为了将学生、教 师类与参与者相互区别,这里描述为学生信息、教师 信息。
19
发现和定义对象与类
学生信息 学号 姓名 年龄 家庭住址 性别 身份证号 身高 课程 课程编号 所属专业 课程名称 学时 学分 任课教师 账号 密码 学期
27
对象属性的审查和筛选
对于找到的对象属性,还应进行严格的审查和筛选,才 能最终确定对象应具有的属性,在审查和筛选中,应考 虑的问题有: ① 该属性是否体现了以系统责任为目标的抽象; ② 该属性是否描述了该对象本身的特性; ③ 该属性是否破坏了对象特征的“原子性”; ④ 该属性是否已通过类的继承得到; ⑤ 该属性是否可以从其他属性推导得到。
26
(1) 定义对象的属性
可以从以下角度确定对象应具有的属性: ① 按照一般常识,对象应该具有哪些属性; ② 在当前问题域中,对象应具有哪些属性; ③ 根据系统责任的要求,对象应具有哪些属性; ④ 建立该对象是为了保存和管理哪些信息; ⑤ 对象为了在服务中实现其功能,需要增设哪些属性; ⑥ 是否需要增设属性来区别对象的不同状态; ⑦ 用什么属性来表示对象的整体-部分联系和实例连接。
7
二、面向对象分析过程
1. 需求获取和问题域分析
2. 发现和定义对象与类
3. 识别对象的内部特征
4. 识别对象的外部联系 5. 建立用例模型
8
1、需求获取和问题域分析
需求获取是需求分析 的第一项工作,涉及软件 设计人员如何与客户建立 有效的沟通。也称为“需 求发现”、“需求获得”。 是采用用例来收集客户需 求的技术。需求获取的途 径和手段主要有以下几种: ① 访谈式 ② 诱导式 ③ 确认式
21
发现和定义对象与类
(1)识别边界类 边界类使是从那些系统和外界进行交互的对象中归纳、 抽象出来的,它是系统内的对象和系统外的参与者的联 系媒介,外界的消息只有通过边界类的对象实例才能发 送给系统。 根据角色的不同类型,边界类可以是用户接口、系统接 口和设备接口。对于用户接口来说,边界类集中描述了 用户与系统的交互信息,而不是描述用户接口的显示形 式,如按钮等;对于系统接口和设备接口来说,边界类 集中描述所定义的通信或交换协议,而不是说明协议如 何实现的。边界类使系统与系统的外部变化隔离开来。 参与者只许通过边界类和系统通信。
学生信息管理系统主要参与者
12
建立用例模型案例-学生信息管理系统
⑷成绩管理模块的用例 ① 录入成绩 ② 修改成绩 ③ 保存成绩 ⑶课程基本信息管理模块的用例 ④ 查询成绩 ① 添加课程基本信息 ⑤ 打印成绩单 ② 查询课程基本信息 ③ 修改课程基本信息 ④ 删除课程基本信息 ⑤ 打印课程基本信息
13
22
发现和定义对象与类
(2) 识别控制类 控制类是实体类和边界类之间的润滑剂,用于协 调边界类和实体类之间的交互。 控制类与用例存在着密切的关系,它在用例开始 执行时创建,在用例结束时取消。一般来说,一 个用例对应一个控制类。
23
整理后的系统类图
24
3、识别对象的内部特征
该阶段分为两个步骤: ① 第一,识别一般-特殊 结构,该结构捕 获了 识别出的类的层次结 构; ② 第二,识别整体-部分 结构,该结构用来 表 示一个对象如何成 为另一个对象的一部 分,以及多个对象如 何组装成更大 的对象。
31
(1)定义一般-特殊结构
一般-特殊结构又称分类结构,是由一组具有一般特殊关系(即继承关系)的类所组成的结构,表示“isa-kind-of”关系。在UML中,用一个带有空心三角形 的连线来表示。空心三角形指向基类。
32
发现一般-特殊结构
为了发现一般-特殊结构,同时还应采用如下策略: ①学习问题域的分类学知识,按照问题域已有的分类学 只是找出与之相对应的一些一般-特殊结构; ②按照尝试考虑事物的分类,从而发现其中的一般-特殊 关系; ③考察类的属性与服务,若一个类的属性与服务只能适 合该类的一部分对象,则应该从这个类中划分出一些 特殊类:若两个或两个以上的类含有一些共同的属性 和服务,则可以考虑将这些共同的属性和服务提取出 来,构成一个在概念上包含原先那些类的一般类; ④考虑领域范围内的复用,在更高水平上运用一般-特殊 结构,并能开发贡献一些可复用性更强的类的构件。
成绩
选修课
教师信息
班级
专业
选课信息
系统初步类图
20
发现和定义对象与类
在面向对象分析中,从软件功能需求来看,分析类 (在进行面向对象分析过程中所使用的类)根据其功能 和作用可以划分为以下3种: ①实体类:表示系统存储和管理的永久信息; ②边界类:表示参与者与系统之间的交互; ③控制类:表示系统在运行过程中的业务控制逻辑。
识别对象的内部特征
对象的内部特性包括对象的属性和服务。识别对象的内 部特征包括定义对象的属性和服务两个部分的工作。问 题域中,事物的特征可以区分为静态特征和动态特征, 静态特征通过一组数据来表示,而动态特征则可以通过 一系列操作来表达。 对象的属性和服务描述了对象的内部细节,只有给出了 对象的属性和服务,才能说对于该对象有了明确的认识 和定义。 对于对象的属性和服务,面向对象方法提供了专门的表 示方法:对象的属性用在类符号中部填写的各属性的名 字表示;而对象的服务则用在类符号的下部填写的各服 务的名称表示。
9
需求获取与陈述
需求陈述是开发任何一个系统的首要任务。主要陈述用户的需求,即该 系统应该“做什么”, 而不是“怎么做”(系统如何实现)。应该陈 述系统任务是什么,而不是解决问题的方法。 需求陈述过程中需要解决的问题: 问题域(Problem Domain) — 被开发系统的应用领域。 系统责任(System Responsibilities) — 所开发的系统应具备 的职能。 充分的交流– 获得准确分析结果的关键 需求的不断变化– 应变能力的强弱是衡量一种方法优劣的重要标 准 考虑复用要求– 提高开发效率,改善软件质量的重要途径。 首先,系统分析员要对需求陈述进行分析;然后,是需求建模;最后, 是需求评审。
16
发现和定义对象与类
在寻找各种可能有用的候选对象时,主要的策略是:从问 题域、系统边界和系统责任这3方面出发,考虑各种能启发我 们发现对象的因素,找到可能有用的候选对象。 ① 在问题域方面,可以启发分析员发现对象的因素包括 人员、组织、物品、设备、事件、表格、结构等等。 ② 在系统边界方面,应该考虑的因素包括人员、设备和 外部系统,它们可以启发分析员发现一些系统与外部 活动所进行的交互,并处理系统对外接口的对象。 ③ 对系统责任的分析是基于对象识别的遗漏的考虑,对 照系统责任所要求的每一项功能查看是否可以由已找 出的对象来完成该功能,在不能满足要求时增加相应 的对象,可以是系统分析员尽可能完全的找出所需要 的各种对象。
11
建立用例模型案例-学生信息管理系统
⑵班级基本信息管理模块的用例 ① 添加班级基本信息 ② 修改班级基本信息 ⑴学生信息管理模块的用例 ③ 查询班级基本信息 ① 录入学生基本信息 ④ 删除班级基本信息 ② 查询学生基本信息 ⑤ 打印班级基本信息 ③ 修改学生基本信息 ④ 删除学生基本信息 ⑤ 打印学生基本信息
面向对象分析的步骤
面向对象分析需要将真实世界进行抽象,通过问题的叙 述,将真实世界系统加以描述。分析的目的是为了构造 一个系统属性和系统行为的模型,该模型是根据对象和 对象之间的关系、动态控制和功能转移来确定的。 OOA应该包含以下几个步骤: ① 分析问题域,建立用例模型。 ② 发现和定义对象和类。 ③ 识别对象的内部特征。 ④ 识别对象的外部联系。 ⑤ 识别对象之间的交互。
描述如何发现类及对象。
发现和定义对象与类
在对象识别中最为关键的是正确运用抽象原则。面向对 象分析用对象来映射问题域中的事物,但并不是问题域 中的所有事物都需要用对象来映射。 首先要舍弃与系统责任无关的事物,保留与系统责任有 关的事物。其次,还要舍弃与系统责任有关的事物中与 系统责任无关的特征。判断事物极其及其特征是否与系 统责任相关的准则是:该事物是否向系统提供了一些服 务或需要系统描述它的某些行为。同时还要考虑将问题 域中的事物映射为什么对象以及如何对对象进行分类
17
发现和定义对象与类
发现学生信息管理系统中的类对象:首先在用户需 求中分检出候选的类对象。通常,需要通读需求报告, 在问题域中发现其中的名词,将其分检出来作为候选的 类对象。在学生信息管理系统中,可能作为候选类对象 的有:系统、用户、新生、系统管理员、学生、基本信 息、姓名、性别、年龄、身份证号、家庭住址、身高、 编号、学生证号、学校领导、学生信息、相关部门、新 专业、学校、社会、课程信息、课程编号、所属专业、 课程名称、开课学期、学时、学分、任课教师、专业、 班级、报表、网络、选修课、时间、数量、人数、考试、 考试成绩、账号、密码、账号信息。
运用面向对象的方法进行需求分析,其主要任务是 分析和理解问题域,找出相应的描述问题域和系统责任 所需的类及对象,分析它们的内部构成好外部关系,正 确地抽象为规范的对象,定义其内部结构和外部消息传 递关系,建立问题域精确模型的过程。为建立分析模型, 要运用如下的5个基本原则:
建立信息域模型; 描述功能; 表达行为; 划分功能、数据、行为模型,揭示更多的细节; 用早期的模型描述问题的实质,用后期的模型给出 实现的细节。这些原则形成面向对象分析的基础。
28
(2)定义对象的服务
在系统需求中分检出相应的动词,作为类中可能使 用的服务,通过这种方法,我们能够发现类对象的 一些服务。
29
4、识别对象的外部联系
对象-关系 模型描述了系统 的静态结构,它 指出了类间的关 系。
对象及其类与外部的关系
① 一般-特殊关系(即继承关系):即对象之间的分 类关系,用一般-特殊结构表示; ② 整体-部分关系:即对象之间的组成关系,用整体 -部分结构表示; ③ 静态连接关系(即关联关系):即通过对象属性 所反映出来的联系,用实例连接表示; ④ 动态连接关系(即依赖关系):即对象行为之间 的依赖关系,用消息连接表示。
5
面向对象分析模型
基本模型是一个类图(Class Diagram),是以直观的方式 表达系统最重要的信息。构成类图的元素所表达的模型信 息,分为三个层次:对象层、特征层、关系层 补充模型:主题图、交互图 详细说明:按照分析方法 所要求的格式,对分析模 型进行说明和解释,主要 以文字为主。
面向对象分析模型
在面向对象分析中,主要包括以下3个独立的模型。 ①对象模型(静态模型):对用例模型进行分析,把系 统分解成互相协作的分析类,通过类图/对象图描述 对象/对象的属性/对象间的关系,是系统的静态模型。 对象模型是最基本、最重要、最核心的。 ②动态模型:描述系统的动态行为,通过顺序图/合作 图描述对象的交互,以揭示对象间如何协作来完成每 个具体的用例,单个对象的状态变化/动态行为可以 通过状态图来表达。 ③功能模型:以用例模型为基础,描述系统应具有的功 能用于实现用户的日常需要。由用例和场景表示。
问题域分析建立用例模型
面向对象分析的基础就是问题域以及用户的需求, 研究问题域和系统需求的主要目的是通过对问题域的 深入研究,建立一个能够满足用户需求的系统模型。 面向对象分析强调系统模型与用户需求的紧密对应, 对问题域的研究贯穿与整个面向对象分析工作中。面 向对象分析的第一步就是分析用户需求,在此基础上 建立用例模型。
建立用例模型案例-学生信息管理系统
⑸网上选课模块的用例 ① 查看课程基本信息 ② 添加选课信息 ③ 删除已选课程
⑹账号管理模块的用例 ① 创建新账号 ② 设置账号权限 ③ 设置账号登录开关 ④ 修改账号 ⑤ 查看账号 ⑥ 删除账号
⑺登录模块的用例 ① 登录 ② 修改密码
14
2、发现和定义对象与类
第五章 面向对象分析
Object-Oriented Analysis
珠海市软件行业协会专家委员会主任 吉林大学珠海学院计算机系教授
Fra Baidu bibliotek李军国
1
主要内容
1. 面向对象分析概述
2. 面向对象分析过程
2 2
一、面向对象分析概述
1. 需求获取
2. 面向对象分析模型
3. 面向对象分析的步骤
3
面向对象分析(Object-Oriented Analysis,OOA)