软件工程模型与方法第9章面向对象分析
第9章 面向对象的分析设计方法
第9章 面向对象的分析设计方法
9.1 面向对象的分析与设计方法概 述
面向对象技术是当前的热门话题,也是软件开发方法 的潮流和方向。面向对象方法的形成最初是从面向对象程 序设计语言开始的,随后才逐渐形成了面向对象的分析和 设计。面向对象是近几十年来国内外IT行业最为关注的技 术之一,面向对象技术是一种按照人们对现实世界习惯的 认识论和思维方式来研究和模拟客观世界的方法学。它将 现实世界中的任何事物都视为“对象”,将客观世界看成 是由许多不同种类的对象构成的,每一个对象都有自己的 内部状态和运动规律,不同对象之间的相互联系和相互作 用就构成了完整的客观世界。面向对象方法(Object Oriented,简称OO方法)克服了传统的功能分解方法只能 单纯反映管理功能的结构状态、数据流程模型只侧重反映 事物的信息特征和流程、信息模拟只能被动地迎合实际问 题需要等缺点,构成以系统对象为研究中心,为信息管理 系统的分析与设计提供了一种全新的方法。
第9章 面向对象的分析设计方法
面向对象方法就是以对象为中心、以对象为出发点的方 法。在应用领域中有意义的、与所要解决的问题有关系的任 何人或事物(即我们说的实体)都可以作为对象,它既可以 是具体的物理实体的抽象,也可以是人为的概念,或者是任 何有明确边界和意义的事物或东西。在面向对象方法中,对 象是一组数据(属性)和施加于这些数据上的一组操作代码 (操作)构成的独立类体。换言之,对象是一个有着各种特 殊属性(数据)和行为方式(方法)的逻辑实体。对象是一 个封闭体,它向外界提供一组接口界面,外界通过这些接口 与对象进行交互,这样对象就具有较强的独立性、自治性和 模块性,从而为软件的重用奠定了坚实的基础。
第9章 面向对象的分析设计方法
第9章 面向对象的分析设计方法 章
软件工程与开发技术(西电第二版)第9章 需求分析与用例模型
对参与者的进一步描述应该包括对其职责的描述,这种 职责最终会对应系统的功能。
第9章 需求分析与用例模型
在用例定义中有两点需要注意: (1) 用例必须获取有价值的目标或者达到一定的目的。 (2) 通过一个或者多个交互活动序列来完成该目标。 这两点是抽取用例、确定用例粒度和描述用例的基础, 例如在ATM机上取款是一个用例,其目的很明确,也需要 通过一系列的交互活动来达到此目的。输入密码则不是一个 用例,因为其没有包含一系列的系统交互活动。
接口需求是指系统和外部交互的需求,包括格式、时间 及其他约束。
物理需求说明系统的物理特性,如物质、形状、尺寸、 重量等,也可以描述硬件需求,如物理网络配置等。第9章 需求分析 Nhomakorabea用例模型
9.1.3 需求与用例模型 用例(Use Case)是从使用者的角度或者说从系统外部观
察系统的功能。它是系统功能抽象的使用案例,描述了系统 功能的使用过程或者与用户的交互过程。用例可以看成是一 种观察系统、描述系统的角度,从用例角度来看,系统被看 成是黑盒,不涉及或者不关心系统内部如何实现,只关注系 统做什么。这正符合需求分析阶段的主要任务,即定义系统 做什么,而不是如何去做。
第9章 需求分析与用例模型
泛化关系就是一种分类或者抽象关系。这时候可以把参 与者看成是一般对象,只不过是系统之外的对象。具体的参 与者和更加抽象的参与者之间的关系可以使用泛化关系来表 示。比如说,课程注册系统的用户分为几种类型:用户、系 统管理员、教师用户、学生用户等。用户是抽象的,分为三 种具体类型,分别是系统管理员、教师、学生等。参与者之 间的关系如图9.2所示。
《实用软件工程》第9章 面向对象设计
• 信息隐藏:对于类而言,其内部信息如属性的表示方法和操作的实现算法,对 外界是隐藏的。外界通过有限的接口来访问类的内部信息。
17
9.3.2 面向对象设计的原则
• 低耦合:在面向对象设计中,耦合主要指对象之间相互关联的紧密程度,低耦 合有利于降低一个模块改变对其他模块的影响。
• 高内聚:内聚与耦合密切相关,低耦合往往意味着高内聚,高内聚有助于提高 系统独立性。
但随着需求理解的加深,以及对系统认识程度的逐步 提高,设计人员还要对模型进行修正和完善。 • 设计任务管理子系统包括确定任务,分配任务,还包 括权衡一致性、成本、性能等因素以及未来可扩充性。 • 设计数据管理子系统,需要设计数据格式以及相应的 服务,设计数据格式的方法与所用的数据存储管理模 式密切相关,不同数据存储管理模式时,属性和服务 的设计方法是不同的。
9.2 面向对象设计与面向对象分析的关系
• 设计阶段的任务是及时把分析阶段得到的需求转变成符合各项要求的 系统实现方案。与传统的软件工程方法不同的是,面向对象的方法不强调 需求分析和软件设计的严格区分。实际上,面向对象的需求分析和面向对 象的设计活动是一个反复迭代的过程,从分析到设计的过渡,是一个逐渐 扩充、细化和完善分析阶段所得到的各种模型的过程。严格的意义上来讲, 从面向对象分析到面向对象设计不存在转换问题,而是同一种表示方法在 不同范围的运用。面向对象设计也不仅仅是对面向对象分析模型进行细化。
• (2)人机交互子系统包括有效的人机交互所需的显示和输入,这些类在很大程度上 依赖于所用的图形用户界面环境,例如Windows、Delphi、C++,而且可能包括“窗 口”、“菜单”、“滚动条”、“按钮”等针对项目的特殊类。
25
9.5.1 系统分解
面向对象分析方法名词解释
面向对象分析方法名词解释
面向对象分析(Object-Oriented Analysis, 简称OOA),是一种基于软件工程中面向对象思
想的软件分析方法,旨在搭建软件需求分析基础模型,以识别、分析和实现客户软件需求,制定出对软件研发工作与设计有效的管理模型。
OOA 是拔高软件开发进程中最重要的步骤,它旨在满足客户对于软件的要求,使客户能够在满意的时间,满意的经费以及满意的套大成果得到期望的软件。
OOA 的拥有者一般是由软件项目经理控制的全职专职软件分析师,他们会使用OOA 快速获取软件要求信息,这
些信息是从客户的说明开始的形式,因此将比研发者在识别需求时所需要的时间更少。
OOA 的主要任务就是使软件发展过程更加高效。
Face-to-face(面对面)会谈,讲解,文
档研究以及运用建模工具等方法将客户提出的需求进行阐明,并把客户的大部分需求变成
客观的功能和属性的可操作的模型,因此OOA 的设计方法也称为可重用组件的设计(Reusable Components Design)。
OOA 的模型通常有以下几种:系统架构,逻辑和物理;在实现系统架构中,把客户提出的需求变成给定的抽象模型即为系统拓扑。
在逻辑模型中,将系统拓扑拆分为不同的构件,
以表达客户关心的系统服务和非功能性要求,而在物理模型中,关于客观和完整的描述系统结构,有细粒度的描述和定义每个构件的不同的属性。
面向对象分析也可以用于检验软件开发过程中的系统是否符合预期的情况,也可以用于发现并实施软件系统的改进与更新。
只要对OOA 方法有正确的运用,软件开发项目就容易
得到客户的满意和顺利实施。
9_面向对象的需求分析方法
9.1 面向对象技术概述9 面向对象的需求分析方法二者的本质区别• 面向过程的结构化系统 = 功能 + 数据 • 面向对象的系统 = 对象 + 消息9 面向对象的需求分析方法二者的本质区别银行账户对象 存款 取款 利息结算 账户 余额 存 款 账户 余额 利息结算 外部消息 取 款9 面向对象的需求分析方法面向对象方法的发展历史• 初始阶段• 1960’s:Simula编程语言 • 1970’s:Smalltalk编程语言• 发展阶段• 1980’s:理论基础,许多OO 编程语言(如C++, Objective-C等)• 成熟阶段• 1990’s:面向对象分析和设计方法(Booch, OMT等), Java • 1997:OMG 组织的统一建模语言(UML) • 逐渐替代了传统的结构化方法9 面向对象的需求分析方法面向对象的软件工程• 面向对象分析(Object Oriented Analysis, OOA)• 分析和理解问题域,找出描述问题域和系统责任所需的类及 对象,分析它们的内部构成和外部关系,建立OOA 模型。
• 面向对象设计(Object Oriented Design, OOD)• 将OOA 模型直接变成OOD 模型,并且补充与一些实现有关 的部分,如人机界面、数据存储、任务管理等。
• 面向对象编程(Object Oriented Programming, OOP)• 用一种面向对象的编程语言将OOD 模型中的各个成分编写成 程序,由于从OOA→OOD→OOP实现了无缝连接和平滑过 渡,因此提高了开发工作的效率和质量。
9 面向对象的需求分析方法面向对象的软件工程现实世界OOA结构化分析OOD结构化设计OOP结构化编程可执行软件系统9 面向对象的需求分析方法OO中的喷泉过程模型• 喷泉模型:• 在OO开发过程中,各阶段之间形 成频繁的迭代; • OO各阶段均采用统一的“对象”概 念,各阶段之间的区分变得不明 显,形成“无缝”连接,从而容易实 现多次反复迭代。
第9章面向对象方法学
(三) 面向对象的概念
1. 对象
在应用领域中有意义的、与所要解决的 问题有关系的任何事物都可以作为对象。 它既可以是具体的物理实体的抽象,也 可以是人为的概念,或者是任何有明确边界和 意义的东西。
客观世界的问题看成对象取决于应用的 视角和问题的性质。 当你在路上找人,你看到的对象就是流 动的人群; 当你需要出租车,你看到的对象就是过 往的车辆。
当对象 MyCircle 接受到这个消息后, 执行Circle类中所定义的 Show 操作。 注意: 1)消息由接受消息的对象来解释。 (MyCircle 就是接受消息的对象) 2)一个对象需要另一个对象服务时,就向 它发出请求服务的消息。这时,接受消息 的对象响应消息,触发所要求服务的操作 的方法来完成服务。
OO技术以对象(object)为核心,把静态 属性的数据,和对这些数据施加的操作封装在 一起所构成的统一体。
2. 稳定性好 面向对象的软件系统的结构是根据问题 领域的模型建立起来的。 (而传统方法是基于系统的功能的分解。) 当对系统的功能需求变化时并不会引起 软件结构的整体变化。因此,以对象为中心构 造的软件系统也是比较稳定的。
7. 封装(encapsulation) 从字面上理解,所谓封装就是把某个事物 包起来,使外界不知道该事物的具体内容。 对象具有封装性的条件如下: (1) 有一个清晰的边界。 (2) 有确定的接口。这些接口就是对象可 以接受的消息,只能通过向对象发送消息来使 用它。 (3) 受保护的内部实现。实现对象功能的 细节(私有数据和代码)不能在定义该对象的 类的范围外访问。
一. 传统方法学的问题
(一) 软件不能真正满足用户需求
1. 软件开发效率低 2. 软件不能满足“需求变化”、“需求模糊” 和“需求灵活性” 3. 软件重用度低 4. 软件仍然很难维护
软件工程-电子教案第9章
9.3.2 设计用户界面 9.3.3 画UML顺序图或活动图
【例9.4】画出招聘考试管理系统的顺序图 某市人事局举行统一招聘考试。首先,各招聘 单位向人事局登记本单位各专业的招聘人数, 由人事局向社会公布招聘情况;考生报名、填 志愿;人事局组织安排考试;录入考试成绩; 向考生和招聘单位公布成绩;招聘单位进行录 用;发录用通知书。这里,共有三个对象类: 人事局、考生和招聘单位。
《软件工程》 陆惠恩主编
3
9.2.2 确定类的相互关系 1. 类的一般-特珠关系
《软件工程》 陆惠恩主编
4
2. 聚集关系
“整体-部分”关系
90 80 70 60 50 40 30 20 10 0 第一季度 第三季度 东部 西部 北部
《软件工程》 陆惠恩主编
5
3. 关联关系
阶 链属性
限定
《软件工程》 陆惠恩主编
《软件工程》 陆惠恩主编 18
9.7 UML的应用
9.7.1 UML模型 1. 用例模型 2. 静态模型 3.动态模型 4.实现模型
《软件工程》 陆惠恩主编
19
9.7.2 UML视图
视图域 视图 静态视图 结构分类 用例视图 实现视图 部署视图 状态视图 动态行为 活动视图 交互视图 图 类图 用例图 构件图 部署图 状态图 活动图 顺序图 协作图 模型管理 可扩展性 模型管理视图 类图 所有 所有 主要概念 类、关联、泛化、依赖关系、实现、接口 用例、执行者、关联、扩展、包含、用例 继承 构件、接口、依赖关系、实现 结点、构件、依赖关系、位置。 状态、事件、转换、动作 状态、活动、转换、分叉、连接 交互、对象、消息、激活 协作、交互、角色、消息 包、子系统、模型。 约束、版型、标签值
第九章软件工程面向对象实现
② 减小方法的规模 若某个方法规模过大(代码长度超过一页纸),即应将其分
解为几个更小的方法。 ③ 保持方法的一致性
一般而言,功能相似的方法应有一致的名字、参数特征(包括参数 个数、类型、次序)、返回值类型、使用条件及出错条件等。
同样,属性和关联也可分为公有和私有两大类,公有属性或关 联又可进一步设置为具有只读权限或只写权限两类。
3、提高健壮性
编写实现方法的代码时,既应考虑效率,也应考虑健壮性,通 常需要在健壮性与效率之间做适当的折衷。
作为软件不可忽视的质量指标。提高健壮性应遵守如下准则: ① 预防用户的操作错误
软件系统必须具有处理用户操作错误的能力。当用户在输入数据时发 生错误,不应该引起程序运行中断,更不应该造成“死机”。
若在执行过程中发现错误,仅返回执行状态。由于实现方法是自含式算法,相 对独立于具体应用,因此在其他应用系统中也可能重用它们。
为提高可重用性,在编程时不应将策略和实现放在同一个方法中,而应将算法 的核心部分放在一个单独的具体实现方法中。为此需要从策略方法中提取具体参 数,作为调用实现方法的变元。
⑤ 全面覆盖 若输入条件的各种组合都可能出现时,应针对所有组合写出方
2、提高可扩充性
上述提高可重用性的准则,也能提高程序的可扩充性。 此外,以下面向对象程序设计准则也有助于提高可扩充性。 ① 封装实现策略
将类的实现策略(包括描述属性的数据结构、修改属性的算法 等)封装起来,对外只提供公有的接口,否则将降低今后修改数 据结构或算法的自由度。 ② 避免用一个方法遍历多条关联链
面向对象分析与设计
面向对象分析与设计面向对象分析与设计(Object-oriented analysis and design)是软件工程领域中的一种方法论,用于解决软件系统开发过程中的问题和需求。
本文将对面向对象分析与设计的基本概念、流程和常用方法进行介绍,并附带答案和解析。
第一部分:面向对象分析(Object-oriented analysis)面向对象分析是软件开发过程中的第一步,旨在理解问题域并建立领域模型。
面向对象分析有以下几个重要概念:1. 对象(Object):对象是系统中的一个实体,包含数据和方法。
对象可以是具体的实物、虚拟的概念或一组相关的数据和行为。
2. 类(Class):类是一种抽象的定义,描述了一组具有相同特征和行为的对象。
3. 属性(Attribute):属性是对象的特征,用于描述对象的状态。
4. 方法(Method):方法是对象的行为,用于描述对象可以执行的操作。
面向对象分析的主要流程包括以下步骤:1. 需求收集:收集系统的需求,与利益相关者沟通,了解系统的功能和性能要求。
2. 领域建模:对现实世界的问题域进行抽象和建模,识别出系统中的对象和它们之间的关系。
3. 需求分析与规约:通过使用用例、活动图和状态图等工具对需求进行分析和规约,明确功能和交互细节。
4. 领域模型验证:与利益相关者验证领域模型的准确性和实用性,确保模型能够满足系统需求。
第二部分:面向对象设计(Object-oriented design)面向对象设计是在面向对象分析的基础上,进一步细化领域模型,为系统的实现提供指导。
面向对象设计有以下几个常用方法:1. 类图(Class diagram):类图用于展示类、属性和方法之间的关系。
类图包括类的名称、属性和方法,并通过关联、继承和聚合等关系展示类之间的联系。
2. 对象图(Object diagram):对象图用于展示类的实例和对象之间的关系。
对象图是类图的实例化表示,展示了系统在某一时刻的对象及其特定的属性值。
第九讲面向对象方法介绍
类之间主要存在三种关系。它们是:关联、 聚合和泛化。
15
16
消息——
消息是一个对象要求另一个对象实施某项 操作的请求。在一条消息中,需要包含消 息的接收者和要求接收者执行哪项操作的 请求,而并没有说明应该怎样做,具体的 操作过程由接收者自行决定。
43
44
标准建模语言UML (顺序图)
44
45
标准建模语言UML (协作图)
45
46
标准建模语言UML (活动图)
46
47
标准建模语言UML (构件图)
Whnd.cpp: 窗口处理器
Whnd.obj: 窗口处理器
Graphic.dll: 图形库
Comhnd.cpp: 命令处理器
Comhnd.obj: 命令处理器
16
17
消息传递是对象之间相互联系的惟一途径。 发送者发送消息,接收者通过调用相应的 方法响应消息,这个过程被不断地重复, 使得应用程序在人的有效控制下运转起来, 最终得到相应的结果。可以说,消息是驱 动面向对象程序运转的源泉。
17
继承——
继承是类之间的一种常 见关系。这种关系为共 享数据和操作提供了一 种良好的机制。通过继 承,一个类的定义可以 基于另外一个已经存在 的类。继承是面向对象 程序设计方法的一个重 要标志,利用继承机制 可以大大提高程序的可 重用性和可扩充性。
• UML是一种建模语言而不是一种方法,UML本身是 独立于过程的。
31
32
标准建模语言UML
UML为人们提供了从不同的角度去观 察和展示系统的各种特征的一种标准表 达方式。在UML中,从任何一个角度对系 统所作的抽象都可能需要用几种模型图 来描述,而这些来自不同角度的模型图 最终组成了系统的完整模型。
计算机科学与技术专业课课件_软件工程SE_Chapter9
●实现了数据封装。
●本质上具有并行性。 ●模块独立性好(信息内聚)。
2013-8-31 上海大学计算机学院 10
一些概念
◆类
具有相同数据和相同操作的一组相似对象的集合
◆实例
由某个特定的类所描述的一个具体的对象
◆消息(Message)
要求某个对象执行在定义它的那个类中所定义的某个 操作的规格说明。
◆方法(Method)
传统方法
解空间与问题空间不一致 以算法为核心,数据和过程分离。 软件系统由模块组成,模块间通过调 用来集成系统。 自顶向下按部就班。 总存在用错误的数据调用正确的模块, 或用正确的数据调用错误的模块的危险。
稳定性
较好 较差 功能需求变化仅需要作一些局部性的修改 基于功能分解,需求变化大多针对功能 可派生子类以实现功能扩充或修改 功能变化引起软件结构的整体修改 较好 较差 通过对象实例或派生类 标准函数库不是自含的和独立的 方便修改和扩充,且不影响原有类的使用 模块重用,则相应的数据也必须重用。 较易 可分解成相互独立的小产品 较好
第9章
面向对象方法学引论
◆面向对象方法学概述 ◆面向对象的概念 ◆面向对象建模 ◆对象模型 ◆动态模型 ◆功能模型 ◆3种模型之间的关系
2013-8-31上海大学计算机学院 Nhomakorabea1
面向对象方法学概述
◆ 传统的软件工程方法学
● 中、小规模软件项目都获得了成功 ● 部分地缓解了软件危机
◆面向对象方法学
●发展
2013-8-31 上海大学计算机学院 9
对象
对象是封装了数据结构及可以施加在这些数据结 构上的操作(服务或方法)的封装体。 对象∷=〈ID,MS,DS,MI〉其中,
9面向对象方法学与UML
13
面向对象程序设计语言 (OOPL)阶段
60年代末挪威奥斯陆大学和挪威计算中心共同 研制了SIMULA语言,面向对象方法的基本要 点首次在SIMULA语言中得到了表达和实现 。 80年代,位于美国加州的Xerox研究中心推出 Smalktalk语言和环境,使面向对象程序设计 方法得到比较完善的实现,掀起了面向对象研 究的高潮。到80年代中期,面向对象程序设计 语言达数十种之多,如Smalktalk、C++、 Objective C、Eiffel等。
8
二、出现问题的原因
僵化的瀑布模型 结构化技术的特点
9
原因1、僵化的瀑布模型
瀑布模型特别强调预先定义需求的重要 性,并在着手具体开发之前冻结需求。 实践表明:很难。
某些类型的系统需求是模糊的 项目参与者之间存在通信鸿沟 预先定义的需求可能是过时的
10
原因2、 结构化技术的特点
结构化的本质:功能分解、功能与数据 结构分离。 有如下缺点:
17
面向对象的广泛应用
面向对象方法已经深入到计算机科学技 术的许多领域,除上面所说的程序设计 语言和系统分析外,还应用在数据库、 计算机辅助设计工程、人-机界面设计、 计算机辅助教学(CAI)、多媒体技术、 计算机网络等诸多领域。
18
二、面向对象方法与传统方法 解决问题的不同 静态属性
客观世界实体 客观世界的问题构成 动态行为
14
面向对象分析(OOA)、设计 (OOD)发展
正如结构化程序设计思想很快被运用到 系统分析和系统设计方法中去一样,面 向对象方法很快引起系统分析方法论研 究者的注意。 80年代中期,C++语言十分热门的时候, 面向对象分析(Object Oriented Analysis)的研究开始发展,进而延伸 到面向对象设计(Object Oriented Design)。
(软件工程理论、方法与实践)第9章面向复用的设计
案例一:Spring框架的复用设计
总结词
模块化设计、依赖注入、可扩展性
详细描述
Spring框架采用模块化设计,使得各个组件 可以独立开发和部署。它通过依赖注入的方 式,降低了组件之间的耦合度,提高了系统 的可扩展性。Spring还提供了丰富的扩展点, 使得开发者可以方便地定制和扩展框架的功 能。
案例二:Android系统的复用设计
优点
提高知识利用效率和知识创新能力,降低开发成本和 风险。
缺点
需要建立和维护知识库,需要具备知识获取、表示和 重用的能力。
03
面向复用的设计方法
设计模式
设计模式的概念
设计模式是针对特定问题的解决 方案,它描述了如何解决常见的 设计问题,使得代码更加灵活、 可复用和可维护。
设计模式的分类
设计模式可以分为创建型、结构 型和行为型三种类型,每种类型 都有其特定的应用场景和解决的 问题。
保证代码的可读性和可维护性。
面向复用的设计实践 需求分析阶段
总结词
自动化、全面
VS
详细描述
在测试阶段,需要采用自动化测试工具和 技术,对软件系统进行全面的测试,包括 功能测试、性能测试、安全测试等。同时 ,还需要对测试结果进行分析和总结,以 便及时发现和修复软件系统中的缺陷和问 题。
05
面向复用的设计案例分析
感谢您的观看
THANKS
缺点
需要建立和维护组件库,增加开发成本和复杂性。
系统复用
01
系统复用
将一个系统作为一个整体进行复 用,通过复制和修改系统实现新 系统的开发。
02
03
优点
缺点
提高开发效率,减少开发时间和 成本。
需要具备相似性和可变性分析的 能力,需要具备系统设计和开发 的能力。
软件工程模型与方法 第9章 面向对象分析
➢ 系统职责(system responsibilities),所开发的系统应 该具备的职能
© 2008 BUPT TSEG
北京邮电大学 通信软件工程中心
3
OOA与OOD的职责划分
OOA针对现实世界中的问题域与系统职责,用面 向对象的方法建立起针对问题域和系统职责的模 型,作为分析的结果。OOA模型不考虑与系统的 具体实现相关的因素(譬如,采用什么程序设计 语言和数据库),从而使OOA模型独立于具体的 实现环境。
软件工程模型与方法 Models & Methods of Software
Engineering
第九章 面向对象分析 修佳鹏 xiujiapeng@
© 2008 BUPT TSEG
9.1 面向对象分析综述 9.2 用例建模 9.3 创建领域模型 9.4 绘制系统顺序图 9.5 创建系统操作契约
北京邮电大学 通信软件工程中心
10
子系统描述
1. 题库管理子系统 对考题进行管理。题目类型有选择题、填空题、解答题和
程序设计题,功能要求:
➢ 能增、删、改、查询题目。 ➢ 能支持使用Excel批量导入试题到数据库的功能。
2. 考试子系统 根据一定的试题生成规则现场生成一套试题供学生进行解
答,并记录答案。考试采用逐题方式进行,做完一题再出 现下一题。学生可以用上翻、下翻键来选择返回上一题还 是进行到下一题。考试采用人工计时方式。若到考试结束 时间,则系统强行要求学生结束答题;若学生提前做完, 则可以按结束考试键终止答题。当学生选择结束考试时, 给出选择题的成绩,并将学生所做的试题及答案记录到数 据库中。
张海藩《软件工程导论》(第6版)(章节题库 第9章 面向对象方法学引论)【圣才出品】
圣才电子书 十万种考研考证电子书、题库视频学习平台
7.通过执行对象的操作改变该对象的属性,但它必须通过( )的传递。 A.接口 B.消息 C.信息 D.操作 【答案】B 【解析】对象之间进行通信的构造叫做消息。在对象的操作中,当一个消息发送到某个 对象时,消息包含接收对象去执行某种操作的信息。接收信息的对象经过解释,然后给予响 应。这种通信机制称为信息传递。所以必须通过消息的传递,才能通过执行对象的操作改变 对象的属性。
14.主要的对象类型有_____、_____、_____和_____。 【答案】有形实体;作用;事件;性能说明
15.在类描述模板中,应该给出每个属性的详细说明,主要包括下述信息:_____、_____、 _____、_____。
【答案】属性的说明;属性的数据类型;属性所体现的关系;实现要求及其他 二、填空题 1.对象模型的描述工具是( )。 A.状态图 B.数据流图 C.对象图 D.结构图 【答案】C 【解析】对象模型描述系统中对象的静态结构、对象之间的关系、对象的属性、对象的 操作。对象模型表示结构上的、系统的“数据”特征。对象模型用包含对象和类的对象图来 表示。
6.在软件工程学中,我们把一组具有相同数据结构和相同操作对象的集合定义为 ( ),此定义包括一组数据属性和在数据上的一组合法操作。
A.类 B.属性 C.对象 D.消息 【答案】A 【解析】具有相同数据结构和操作的对象被定义为类;对象的特性、状态称为属性;对 象是类的一个实例;消息是对象之间信息传递的方式。
圣才电子书 十万种考研考证电子书、题库视频学习平台
第 9 章 面向对象方法学引论
一、选择题 1.对象的抽象是_____,类的实例化是_____。 【答案】类;对象
《软件详细设计教程》课件第9章
第9章 面向对象分析
上述五个层次对应着在面向对象分析过程中建立对象模 型的五项主要活动:找出类与对象;识别结构;识别主题; 定义属性;定义服务。必须强调指出的是,我们说的是“五 项活动”,而没有说五个步骤。事实上,这五项工作完全没 有必要顺序完成,也无须彻底完成一项工作以后再开始另外 一项工作。虽然这五项活动的抽象层次不同,但是在进行面 向对象分析时并不需要严格遵守自顶向下的原则。人们往往 喜欢先在一个较高的抽象层次上工作,如果在思考过程中突 然想到一个具体事物,就会把注意力转移到深入分析发掘这 个具体领域上,然后又返回到原先所在的较高的抽象层次。 例如,分析员找出一个类与对象,想到在这个类中应该包含 的一个服务,于是把这个服务的名字写在服务层,然后又返 回到类与对象层,继续寻找问题域中的另一个类与对象。
第9章 面向对象分析
终端与相应的分行计算机通信,分行计算机具体处理针对某 个账户的事务并且维护账户。
拥有银行账户的储户有权申请领取现金兑换卡,使用现 金兑换卡可以通过ATM访问自己的账户。目前仅限于用现 金兑换卡在ATM上提取现金(即取款),或查询有关自己账户 的信息(例如某个指定账户上的余额)。将来可能还要求使用 ATM办理转账、存款等事务。
第9章 面向对象分析
9.2 需 求 陈 述
9.2.1 书写要点 通常,需求陈述的内容包括:问题范围、功能需求、性
能需求、应用环境及假设条件等。总之,需求陈述应该阐明 “做什么”而不是“怎样做”。它应该描述用户的需求而不 是提出解决问题的方法;应该指出哪些是系统必要的性质, 哪些是任选的性质;应该避免对设计策略施加过多的约束, 也不要描述系统的内部结构,因为这样做将限制实现的灵活 性。对系统性能及系统与外界环境交互协议的描述,是合适 的需求。此外,对采用的软件工程标准、模块构造准则、将 来可能做的扩充以及可维护性要求等方面的描述,也都是适 当的需求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5a.
对基本路径中某个步骤的扩展描述,前边加基本路径编号
特殊需求:
与用例相关的非功能性需求
技术与数据的变化列表: 输入输出方式上的变化以及数据格式的变化。
发生频率:
用例执行的频率。
待解决的问题:
不清楚的、尚待解决的问题可集中在此进行罗列
用例之间的关系
包含关系
➢ 用例A在其内部说明的某一位置上显式地使用用例B行 为的结果,成为用例A包含用例B。
外部系统:所有与系统交互的外部系统。
设备:所有与系统交互的设备。其与系统 相连,向系统提供外界信息,或者从系统 获取信息,在系统的控制下运行。例如传 感器、受控马达、条形码扫描设备等。
如何找到参与者
通过回答以下问题找到参与者: (1)谁使用系统的主要功能? (2)谁需要系统的支持以完成其日常工作任务? (3)谁负责维护、管理并保证系统的正常运行? (4)系统需要和哪些外部系统交互? (5)系统需要处理哪些设备? (6)对系统产生的结果感兴趣的人或事物是哪些
进行方便地维护。
在线考试系统的参与者
任课教师的部分目标和助教的目标相同, 于是可以创建一个新的抽象参与者――阅 卷者,它的目标是使用系统方便有效地开 展阅卷工作;
教师和助教再继承阅卷者
•学生
•阅卷者
•系统维护人 员
• 教师 • 助教
9.2.3 识别用例
用例的定义: 一个用例(use case)描述系统的一项功能,功能
识别用例
从参与者角度出发,识别每类参与者在系 统中要实现的目标,从中抽取用例。
用例可以分为三种不同的级别:
➢ 企业级别的目标:如盈利、扩大目标市场等; ➢ 用户级别的目标:如取款、在线考试等; ➢ 子功能级别的目标:如验证用户身份、记录系
统日志等。
识别用例重点要识别的是用户级别用例。
基本业务过程
面向对象分析步骤
(3)从用例出发,将系统看作一个黑盒子 ,识别出参与者和系统交互的系统事件, 在系统顺序图中进行描述,并进一步识别 出系统操作。
(4)从系统顺序图和领域模型出发,建立 系统操作契约,描述响应系统事件的系统 操作执行后对系统状态的影响,从而回答 系统“做什么”的问题。此处的系统状态变化 指的是领域模型中概念的创建和删除,概 念属性的修改以及概念之间关联的建立和 删除。
前置条件:
规定了在用例中的一个场景开始之前必须为“真”的条件。
后置条件:
规定了用例成功结束后必须为“真”的条件。
主要成功场景:(基本路径)描述了能够满足项目相关人员兴趣的一个典型的成功路径。不包括条件和分支
1.
……
n.
扩展(或替代流程): (备选路径)说明了基本路径以外的所有其他场景或分支
*a.
描述任何一个步骤都有可能发生的条件,前边加*
(4)由于系统新功能的识别(如那些典型的还没有实现 自动化的人工系统),参与者的日常工作被简化或效率提 高了吗?若是,则该用例对于该参与者有意义、值得实现 。
参与者之间的继承关系
参与者是一个类,因此在参与者之间可以 引入类之间的继承关系,通过定义某个抽 象参与者来简化参与者的定义。
如果一组参与者具有共同的性质,可以把 这些性质抽取出来放在另一个参与者中, 这组参与者再从中继承,这种关系称为参 与者之间的继承关系。
在线学生和系统 维护人员。
各个参与者的系统目标:
➢ 任课教师:能维护题库;能设计一次考试的出题规则 ,设定考生范围和考试时间及时长;能顺利开展考试 ;能方便有效地开展阅卷工作;能得到有价值的统计 信息。
➢ 助教:能方便有效地开展阅卷工作; ➢ 学生:能顺利进行考试,能查询自己的考试成绩; ➢ 系统维护人员:能对系统的用户、权限、系统参数等
用例的包含关系举例
假设在一个旅游电子商务网站系统中,有 如下用例:
➢ 购买机票 ➢ 预定酒店
系统用户
子系统描述
1. 题库管理子系统 对考题进行管理。题目类型有选择题、填空题、解答题和
程序设计题,功能要求:
➢ 能增、删、改、查询题目。 ➢ 能支持使用Excel批量导入试题到数据库的功能。
2. 考试子系统 根据一定的试题生成规则现场生成一套试题供学生进行解
答,并记录答案。考试采用逐题方式进行,做完一题再出 现下一题。学生可以用上翻、下翻键来选择返回上一题还 是进行到下一题。考试采用人工计时方式。若到考试结束 时间,则系统强行要求学生结束答题;若学生提前做完, 则可以按结束考试键终止答题。当学生选择结束考试时, 给出选择题的成绩,并将学生所做的试题及答案记录到数 据库中。
➢ 包含关系图示表示如下左图。
➢ 避免用例中相同功能的重复描述;避免过长的用例。
扩展关系
➢ 在不能改变已有用例的情况下,扩展用例的功能。 ➢ 扩展用例中必须包含触发和扩展点说明。 ➢ 扩展管理的图示表示如下右图。
• 基用例 •《include》
•被包含的用 例
•基用例
•《extend》
•扩展用 例
识别参与者的任务就是找到参与者并明确其在系 统中要实现的目标。
参与者是一个类 。 参与者可以发出请求,要求系统提供服务,系统
以某种方式进行响应,或者把响应的结果给其他 的参与者;系统也可以向参与者发出请求,参与 者对此做出响应。
参与者的分类
主要参与者:指的是在使用系统服务的过程中满 足自己目标的那些参与者,如使用在线考试系统 的任课教师和学生。识别出这类参与者,可以帮 助找到用户目标,从而确定系统的功能需求。
基本业务过程(EBP,Elementary Business Process )是指由一个人在某个时间某个地点执行的一项 任务,这项任务是对某一业务事件的反应,而且 能够增加可以度量的业务价值,并且能够保持数 据状态的一致。
进行用例分析时,应该专注于EBP级别的用例, 但是当一个子功能在多个用户目标级别用例中重 复出现,或这个子功能是多个用户目标级别用例 的前置条件,如“验证用户身份”、“记录日志”等 ,则可以定义一个用例来表示该子功能。
系统边界以外是与系统进行交互的人员、 设备、外部系统或组织。
系统是由一条边界包围起来的未知空间, 系统只通过边界上的有限个接口与外部交 互。
9.2.2 识别参与者
参与者(actor)是具有行为能力的事物,可以是 一个人(由所扮演的角色来识别)、计算机系统 或硬件设备。
它们位于系统边界之外,通过和系统进行有意义 的交互来实现它们的目标。
对用例的理解
(2)用例通常是由某个参与者来驱动执行,只有 当外部的参与者与系统交互时,该功能才会发生 作用。
(3)用例中,只描述参与者可以看到的系统行为 特征。
(4)用例描述的是一个参与者所使用的一项系统 级功能,该项功能应该相对完整。
(5)可观察的结果值是指系统对参与者的动作要 做出响应,在经过若干次交互之后,系统把最终 有意义的结果值反馈给参与者。
画出系统用例图
➢ 识别系统边界 ➢ 识别参与者 ➢ 识别用例 ➢ 确定用例之间关系
给出用例的文本描述
➢ 用例描述模板
用例建模目标
9.2.1 确定系统边界 9.2.2 识别参与者 9.2.3 识别用例 9.2.4 其他需求分析工作
9.2 用例建模
9.2.1 确定系统边界
系统边界是一个系统所包含的所有系统成 分与系统以外各事物的分界线。
➢ 问题域(problem domain):被开发系统的应用领域 ,即在现实世界中由这个系统进行处理的业务范围
➢ 系统职责(system responsibilities),所开发的系统应 该具备的职能
OOA与OOD的职责划分
OOA针对现实世界中的问题域与系统职责,用面 向对象的方法建立起针对问题域和系统职责的模 型,作为分析的结果。OOA模型不考虑与系统的 具体实现相关的因素(譬如,采用什么程序设计 语言和数据库),从而使OOA模型独立于具体的 实现环境。
OOD则是针对系统的具体实现,运用OO方法进行 系统设计。其中包括两方面的工作:一是根据实 现条件对OOA模型做某些必要的调整和修改,使 其成为OOD模型的一部分;二是针对具体实现条 件,建立人机界面、数据存储和控制驱动等模型 。这些部分与OOA采用相同的概念和表示法。
软件分析所面临的问题
1.对问题域和系统职责的理解 2.交流问题 3.需求的不断变化 4.软件复用的要求
次要参与者:指的是为系统提供服务的那些参与 者,如一个对信用卡支付进行授权的外部系统。 识别出这类参与者,可以帮助确定外部接口和协 议。
后台参与者:指的是对用例的行为感兴趣的那些 参与者,如政府的税务机关。识别出这类参与者 ,可以保证找到所有方面的兴趣并让用例满足之 。
谁能充当参与者
人员:可以从直接使用系统的人员中发现 参与者。其从系统获取信息,或者向系统 提供信息。
用例描述
用例描述的目标是将用例的功能和应用场景描述 清楚,包括
➢ 用例在何时开始,何时结束 ➢ 参与者何时与系统交互 ➢ 交互什么内容 ➢ 所有可能的交互场景
对用例的描述,可以用自然语言,也可以采用用 户自定义的语言。为了更清楚地说明问题,也可 以采用面向对象的类图、交互图、状态图或活动 图来做进一步的描述。
用例描述模板
用例编号: 用例名称: 范围:
每一个用例一个唯一的编号,方便在文档中索引。 (状语+)动词+(定语+)宾语,体现参与者的目标。 应用的软件系统范围
级别:
企业目标级别/用户目标级别/子系统目标级别
主要参与者:
调用系统服务来完成目标的主要参与者
项目相关人员及其兴趣:
用户应包含满足所有相关人员兴趣的内容
在线考试系统功能描述
本系统主要是为程序设计类课程考试而设 计,但是也应该能适应到其他的课程。目 的在于:
➢ 1.增加考试灵活性,减轻任课教师的出题、判 卷和统计工作;