软件工程 (第二版)第11章 面向对象的OMT方法

合集下载

对象模型技术OMT

对象模型技术OMT

对象模型技术(OMT)
面向对象建模方法有很多种,也都在进一步的发展和完善中。

对象模型技术(OMT)是目前最为成熟和实用的方法之一。

它从三个方面对系统进行建模,每个模型从一个侧面反映系统的特性,三个模型分别是:对象模型、动态模型和功能模型。

对象模型表示静态的,结构化的"数据"性质,它是对模拟客观世界实体的对象及对象间的关系映射,描述了系统的静态及结构.通常用类图表示。

对象模型描述系统中对象的静态结构、对象之间的关系、对象的属性、对象的操作。

对象模型表示静态的、结构上的、系统的“数据”特征。

对象模型为动态模型和功能模型提供了基本的框架。

对象模型用包含对象和类的对象图来表示。

动态模型表示瞬间的,行为化的系统控制性质,他规定了对象模型中的对象合法化变化序列.通常用状态图表示.动态模型描述与时间和操作顺序有关的系统特征--激发事件、事件序列、确定事件先后关系的状态以及事件和状态的组织。

动态模型表示瞬间的、行为上的、系统的“控制”特征。

动态模型用状态图来表示,每张状态图显示了系统中一个类的所有对象所允许的状态和事件的顺序。

功能模型表示变化的系统的功能性质,它指明了系统应该做什么,因此直接地反映了用户对目标系统的需求,通常用数据流图表示.功能模型描述与值变换有关的系统特征--功能、映射、约束和函数依赖。

软件工程第十一章面向对象设计

软件工程第十一章面向对象设计

THANKS
感谢观看
01
抽象类是一种不能被实例化的 类,它只能被其他类继承。
02
抽象类可以包含抽象方法和具 体方法。抽象方法是没有具体 实现的方法,需要在继承抽象 类的子类中实现。
03
通过继承抽象类,子类可以继 承抽象类的属性和方法,并且 可以重写或实现抽象类中的方 法。
接口与抽象类的选择
在设计软件时,选择使用接口还是抽象类取决于具体需求和设计目标。
关系
关系描述了对象之间的交互和联系。 常见的关系包括关联、聚合和继承。
继承与多态的设计
继承
继承是一种实现代码重用的方式,子类可以继承父类的属性和方法,并可以扩展或覆盖它们。通过继承,可以建 立类之间的层次结构,使得代码更加清晰和易于维护。
多态
多态是指一个接口可以有多种实现方式,或者一个对象可以有多种形态。多态可以提高代码的灵活性和可扩展性, 使得程序更加易于维护和修改。
02
类与对象的设计
类的定义与属性
类的定义
类是对象的抽象,它描述了一组具有相同属性和行为的对象。类定义了对象的结构、行为和关系。
属性
属性是类中用于描述对象状态的变量。每个对象都有其自己的属性值,这些属性值决定了对象的状态 。
对象的行为与关系
行为
行为是类中定义的方法,用于描述对 象可以执行的操作。方法定义了对象 的行为和功能。
高层模块不应该依赖于低层模块,它们都应 该依赖于抽象。
面向对象设计的优势
提高代码可重用性
通过类和继承实现代码重用,减少重 复代码。
提高代码可维护性
面向对象设计使得代码结构更加清晰, 易于理解和维护。
提高开发效率
通过快速原型开发,快速构建软件系 统。

软件工程(第二版)第十一章new

软件工程(第二版)第十一章new

类名
属性 服务
类名 属性 服务
11.1 表示符号
11.2 面向对象建模——三模 型法求分析(对象模型)
11.2.2 表示结构的图形符号
1.归纳关系 一般化关系的形成,可以通过检查一组 概念和识别这组概念中的共同元素来实现。 小汽车、卡车和公共汽车可以蕴含在更一般 的汽车概念中。这个较一般化的抽象还可以 帮助定义其他比较特殊的抽象,如赛车、面 包车和牵引车。
11.3 面向对象建模——三模 2、标识消息传递 型需求分析(动态模型)
11.4 面向对象建模——三模 型需求分析(功能模型)
功能模型着重于系统内部数据的传送和处理。功能模 型定义“做什么”,通常,功能模型由一组数据流图 组成。功能模型表明整个的数据流动情况,从外部输 入,通过操作和内部存储,直到外部输出。功能模型 还包括了对象模型内部数据间的限制。
项目
活动

工作成果
﹡由„产生 “) 《
任务

消耗﹡
资源
系统
参与者
模型 文档
时间 设备
(2)对象之间的消息传递构成静态结构视点。
11.5 UML概述
在 UML 中可以将建模语言划分为三种构 造块,即三类词汇或基本元素:事物、关 系和图。其中事物是对模型中最具有代表 性的成分的抽象,可分为结构事物、行为 事物、分组事物和注释事物;关系能把事 物联系在一起,可分为依赖、关联、泛化 (归纳)、实现。
功能模型中所有的数据流图往往形成一个层次 结构。在这个层次结构中,一个数据流图中的过 程可以由下一层的数据流图做进一步的说明。— 般来讲,高层的过程相应于作用在组合对象上的 操作,而低层的过程则代表作用于一个简单对象 上的操作。
11.5 UML概述

太原理工大学软件工程第十一章PPT课件

太原理工大学软件工程第十一章PPT课件

2020/7/19
第11面向对象的设计与实现
第18页
11.2.1 问题域子系统设计
(1)为复用设计与编程的类而增加结构
如果OOA识别和定义的类是本次开发中新定义的,那就需要 进行从头开始设计。如果已存在一些可复用的类,而且这 些类既有分析、设计时的定义,又有源程序,那么复用这 些类即可提高开发效率与质量。注意可复用的类可能只是 与OOA模型中的类相似,而不是完全相同,因此需对其进 行修改。设计目标是尽可能使复用成分增多,新开发的成 分减少。
2020/7/19
第11面向对象的设计与实现
第12页
11.1.2 启发式规则
(3)减少消息模式的数目:如果已有标准的消息协议,涉 及人员应该遵守这些协议。如果确需自己建立消息协议,则 应该尽量减少消息模式的数目,只要可能,就使消息具有一 致的模式,以利于读者理解。 (4)避免模糊的定义:一个类的用途应该是有限的,而且 应该从类名可以较容易地推导出它的用途。
重要措施。保障设计结果清晰易懂的主要因素如下。 (1)用词一致:设计中应该使名字与它所代表的事物一致,而且
应该尽量使用人们习惯的名字。不同类中相似服务的名字应该 相同。 (2)使用已有的协议:如果开发同一软件的其他设计人员已经建 立了类的协议,或者在所使用的类库中已有相应的协议,则应 该使用这些已有的协议。
2020/7/19
第11面向对象的设计与实现
第22页
11.2.1 问题域子系统设计
(5)对复杂关联的转化并决定关联的实现方式。 【例11.3】 把多对多关联转化为一对多关联,参见图11.4。
2020/7/19
第11面向对象的设计与实现
第23页
11.2.1 问题域子系统设计
【例11.4】 把多元关联转化为二元关联,参见图11.5。

软件工程软件工程软件工程11

软件工程软件工程软件工程11
11.1 面向对象设计的准则
1. 设计结果应该清晰易懂 良好的设计结果应该是清晰易懂的,它能提高软件的可维护性和可重用性。如果一个设计结构不清楚,并且难以理解,是不会被人们接受的。设计时采用以下几个策略能使结果清晰易懂。 (1) 命名一致。命名应该与专业领域中的名字一致,并且要是符合人们习惯的名字。不同类中相似服务的名字应该相同。
11.3 软件重用
(8) 用户界面。这可能是最广泛被重用的软件成分,GUI(图形用户界面)软件经常被重用。因为它可占到一个应用程序的60%代码量,因此,重用的效果非常显著。 (9) 数据。在大多数经常被重用的软件成分中,被重用的数据包括: 内部表、列表和记录结构,以及文件和完整的数据库。 (10) 测试用例。一旦设计或代码构件将被重用,相关的测试用例应该“附属于”它们也被重用。
11.1 面向对象设计的准则
一般说来,对象之间的耦合可分为两大类,下面分别讨论这两类耦合: (1) 交互耦合:如果对象之间的耦合通过消息连接来实现,则这种耦合就是交互耦合。为使交互耦合尽可能松散,应该遵守下述准则: 尽量降低消息连接的复杂程度。应该尽量减少消息中包 含的参数个数,降低参数的复杂程度。 减少对象发送(或接收)的消息数。 (2) 继承耦合:与交互耦合相反,应该提高继承耦合程度。继承是一般化类与特殊类之间耦合的一种形式。从本质上看,通过继承关系结合起来的基类和派生类,构成了系统中粒度更大的模块。因此,它们彼此之间应该结合得越紧密越好。 为获得紧密的继承耦合,特殊类应该确实是对它的一般化类的一种具体化。因此,如果一个派生类放弃了它基类的许多属性,则它们之间是松耦合的。在设计时应该使特殊类尽量多继承并使用其一般化类的属性和服务,从而更紧密地耦合到其一般化类。
11.2 启发规则
2. 一般 - 特殊结构的深度应适当 从基类派生子类,再从子类派生下一层子类,这样的一般 - 特殊结构的类层次数应该适当,不必过于细化,层次的深度应该是有限的。一般来说,在一个中等规模(大约包含100个类)的系统中,类层次数应保持为7±2。

软件工程课程目录

软件工程课程目录

第一章软件工程概述介绍软件工程概念的提出以及发展历程,并分析软件开发的本质。

软件工程概论课程介绍第二章软件过程介绍如何定义一个项目的过程,主要涉及三方面的知识:(1)要了解软件开发通常需要做哪些工作,即软件生存周期过程;(2)要了解定义过程的基准框架,即软件生存周期模型;(3)是要了解一般性的过程规划技术。

软件过程(1)-20100913软件过程(2)-20100916软件过程(3)-20100916第三章软件需求与软件需求规约介绍软件需求的定义、需求的分类、常用的需求发现技术,以及需求规约。

软件需求-20100923第四章结构化分析介绍结构化需求分析、需求验证及实例研究。

结构化分析方法-0927第五章结构化设计结构化设计:总体设计的目标及其表示、总体设计方法、设计评价准则与启发式规则、设计优化、详细设计、软件设计规格说明书、实例研究。

结构构化设计方法-总体设计0930结构化设计-详细设计和软件设计规约1011第六章面向对象方法-UML面向对象方法发展以及UML(Unified Modeling Language)的提出、表达客观事物的术语、表达关系的术语、组织信息的通用机制--包、模型表示工具。

面向对象介绍面向对象方法UML(1)面向对象方法UML(2)面向对象方法UML(3)第七章面向对象分析、设计和编程技术介绍面向对象分析、设计和编程技术。

面向对象分析模型规约面向对象设计(1)面向对象设计(2)面向对象编程第八章面向对象方法-RUPRUP(Unified Software Development Process)的作用和特点、核心工作流。

RUP-1-1207RUP-2-1210RUP-3-1214第九章软件测试软件测试目标与软件测试过程模型、软件测试技术、软件测试步骤、静态分析技术-程序正确性证明。

软件测试(1)软件测试(2)软件测试-扩展报告第十章软件工程管理软件工程管理活动;软件规模、成本和进度估算;能力成熟度模型CMM;ISO9000标准。

面向对象方法

面向对象方法

面向对象方法面向对象方法是当前的主流开发方法,拥有大量不同的方法,主要包括OMT(Object Model Technology,对象建模技术)方法、Coad/Yourdon方法、OOSE(Object-Oriented Software Engineering,面向对象的软件工程)及Booch方法等,而OMT、OOSE及Booch最后统一成为UML(United Model Language,统一建模语言)。

1.Coad/Yourdon方法Coad/Yourdon方法主要由面向对象的分析(Object-Oriented Analysis, OOA)和面向对象的设计(Object-Oriented Design, OOD)构成,特别强调OOA和OOD采用完全一致的概念和表示法,使分析和设计之间不需要表示法的转换。

该方法的特点是表示简练、易学,对于对象、结构、服务的认定较系统、完整,可操作性强。

在Coda/Yourdon方法中,OOA的任务主要是建立问题域的分析模型。

分析过程和构造OOA概念模型的顺序由5个层次组成,分别是类与对象层、属性层、服务层、结构层和主题层,它们表示分析的不同侧面。

OOA需要经过5个步骤来完成整个分析工作,即标识对象类、标识结构与关联(包括继承、聚合、组合及实例化等)、划分主题、定义属性和定义服务。

OOD中将继续贯穿OOA中的5个层次和5个活动,它由4个部分组成,分别是人机交互部件、问题域部件、任务管理部件和数据管理部件,其主要的活动就是这4个部件的设计工作。

2.Booch方法Booch认为软件开发是一个螺旋上升的过程,每个周期包括4个步骤,分别是标识类和对象、确定类和对象的含义、标识关系、说明每个类的接口和实现。

Booch方法的开发模型包括静态模型和动态模型,静态模型分为逻辑模型(类图、对象图)和物理模型(模块图、进程图),描述了系统的构成和结构。

动态模型包括状态图和顺序图。

软考知识点梳理--面向对象方法

软考知识点梳理--面向对象方法

软考知识点梳理--⾯向对象⽅法⾯向对象(Object-Oriented,OO)⽅法认为,客观世界是由各种对象组成的,任何事物都是对象,每⼀个对象都有⾃⼰的运动规律和内部状态,都属于某个对象类,是该对象类的⼀个元素。

复杂的对象可由相对简单的各种对象以某种⽅式⽽构成,不同对象的组合及相互作⽤就构成了系统。

OO⽅法是当前的主流开发⽅法,拥有很多不同的分⽀体系,主要包括OMT(Object Model Technology,对象建模技术)⽅法、Coad/Yourdon⽅法、OOSE(Object-Oriented Software Engineering,⾯向对象的软件⼯程)⽅法和Booch⽅法等,⽽OMT、OOSE和Booch已经统⼀成为UML(United Model Language,统⼀建模语⾔)。

使⽤OO⽅法构造的系统具有更好的复⽤性,其关键在于建⽴⼀个全⾯、合理、统⼀的模型(⽤例模型与分析模型)。

与结构化⽅法类似,OO⽅法也划分阶段,但其中的系统分析、系统设计和系统实现三个阶段之间已经没有 “缝隙”。

也就是说,这三个阶段的界限变得不明确,某项⼯作既可以在前⼀个阶段完成,也可以在后⼀个阶段完成;前⼀个阶段⼯作做得不够细,在后⼀个阶段可以补充。

OO⽅法使系统的描述及信息模型的表⽰与客观实体相对应,符合⼈们的思维习惯,有利于系统开发过程中⽤户与开发⼈员的交流和沟通,缩短开发周期。

OO⽅法可以普遍适⽤于各类信息系统的开发,但是,OO⽅法也存在明显的不⾜。

例如,必须依靠⼀定的OO技术⽀持,在⼤型项⽬的开发上具有⼀定的局限性,不能涉⾜系统分析以前的开发环节。

当前,⼀些⼤型信息系统的开发,通常是将结构化⽅法和OO⽅法结合起来。

⾸先,使⽤结构化⽅法进⾏⾃顶向下的整体划分;然后,⾃底向上地采⽤OO⽅法进⾏开发。

因此,结构化⽅法和OO ⽅法仍是两种在系统开发领域中相互依存的、不可替代的⽅法。

OOA 的基本任务是运⽤OO⽅法,对问题域进⾏分析和理解,正确认识其中的事物及它们之间的关系,找出描述问题域和系统功能所需的类和对象,定义它们的属性和职责,以及它们之间所形成的各种联系。

软件工程面向对象

软件工程面向对象
软件工程面向对象
②重用方式:
§3. 软件重用
实例重用(instance reuse \ black-box reuse):
创建class的不同instances,通过messages完成
不同的任务。是最基本的重用方式。
用几个简单的objects创建出更复杂的class,
是实例重用的另一种形式
继承重用(inheritance reuse): 是一种安全地裁剪已有的class component的方式。
多态重用(polymorphism reuse): Parent class与child class有相同的对外接口,使 消息连接的复杂度降低。
1、概念: 知识重用(例如软件工程知识的重用)
方法和标准重用(例如OO方法和国家规定 的软件开发规范的重用)
知识 工程
软件成分的重用
重用软件成分有三个级别: ① 代码重用:
• 源码剪贴 —— 无法溯源,无配置管理
• Include —— 修改后所有包含了此段代码的程
序都须重新编译。
想象一下,stdio.h 被改动之后……
• Inheritance —— 无软须件工改程面动向对原象 有代码
② 设计重用 —— 当移植系统时
§3. 软件重用
③ 分析重用 —— 当需求未变,而系统结构改变时
2、重用效果的衡量:
⑴ 额外代价: 创建可重用成分的专门投资 多花2 ~ 4倍时间测试以保证质量 构件库的建立与维护需要投资 以上投资将分摊到重用这些构件的新系统成
§3. 软件重用
② 软件生成技术: 按照形式化的软件功能描述和一定的生成机
理,由生成器系统(generator system)自动生成目标程序。 重用的是generator 的代码规则

精品课件-软件工程与开发技术(第二版)-第11章

精品课件-软件工程与开发技术(第二版)-第11章

第11章 系统结构与包模型
元素和包之间也可以有依赖关系,如果某个元素(用例、 类、组件等)和某个包内的元素存在着关系(泛化、关联、依赖 等),则该元素和该包存在着依赖关系。如图11.3所示,业务 服务包中的类使用到了数据库访问对象DAO,DAO的实现又使 用到了Business Object。
第11章 系统结构与包模型 图11.2 包依赖关系举例
第11章 系统结构与包模型 图11.3 包依赖性举例
第11章 系统结构与包模型
在包和接口之间也可以存在实现关系,如图11.4所示。 如果包中的类实现了该接口,在这种情况下也可以画依赖关系, 但语义更弱,实现关系则特指类实现接口。
包机制也是一种封装或者隐藏机制,使用包名字来描述其 中包含的所有元素的特性,这可以起到信息隐藏的作用,但也 可以选择包内的元素(非子包元素),使其暴露出来,如图 11.5所示。
第11章 系统结构与包模型 图11.1 包的UML表示
第11章 系统结构与包模型 11.2 包之间的依赖关系
包与包之间可以存在依赖关系。如果某个包中的元素和另 外一个包中的元素存在着依赖关系,则这两个包之间存在着依 赖关系。图11.2所示是一个系统的三层结构,GUI包中包含了 所有的界面元素,使用到Business Service包中提供的业务 服务类,如订单管理类;同时也使用了Business Object包中 的业务对象,如订单;业务服务类中,订单管理类也使用到业 务对象订单类,此时这三个包就存在着依赖关系。
包中的所有类对于同一类性质的变化应该是共同封闭的。 即系统的某些变化若对一个包有影响,则将对包中的所有类产
第11章 系统结构与包模型
11.5.3 共同重用原则(CRP) 共同重用原则指的是不要把不会一起使用的类放在同一个

软件工程 面向对象的技术

软件工程 面向对象的技术

1. Coda方法的OOA
类与对象层 属性层 服务层
类的边界 实例的边界 实例连接
属性 消息连接
服务
结构层
主题层
泛化与特化结构 主题
整体与部分结构
图4.10 分析过程的五个层次
在Coda方法中, 构 造 和 评 审 OOA 概 念模型的顺序由五 个层次组成:类与 对象、属性、服务、 结构和主题
这五个层次表 示分析的不同侧面。
继承是使用现存的定义作为基础,建立新定义的 技术。是父类和子类之间共享数据结构和方法的机制, 这是类之间的一种关系。
继承性分:
单重继承:一个子类只有一个父类。即子类只继承 一个父类的数据结构和方法。
多重继承:一个子类可有多个父类。继承多个父类 的数据结构和方法。
基类
现存类定义 父类(基类)
继承
图 4.3 继承性
良好的接口,子系统内的类相互协作。标识问题本身 的并发性,为子系统分配处理器。
系统内部
保险单 填写界面
保险单
客户
数据库界面 (abstract)
Oracle 界面 Sybasec界面
子系统的分解是关键,可以有分层和分块:
分层:将软件系统组织为层次结构,每层是一个子系 统。分层结构又分为封闭式和开放式。
类具有属性,用数据结构来描述类的属性, 类具有操作,它是对象的行为的抽象,操作实现 的过程称为方法(method) ,方法有方法名,方法体 和参数。
由于对象是类的实例,在进行分析和设计时, 通常把注意力集中在类上,而不是具体的对象上。
对象和类的描述
类和对象一般采用“名字”、“属性”和“运算”来描 述。
基本概念: 问题域(problem domain) — 被开发系统的应用领域。 系统责任(system responsibilities) — 所开发的系统应 具备的职能。

面向对象方法

面向对象方法

面向对象方法面向对象方法(Object-oriented Method,OOM)是一种程序设计的方法论,它将系统看作一组对象的集合,每个对象都能接收消息、处理数据,并发送消息给其他对象。

面向对象方法的设计思想是将系统分解成多个相互协作的对象,通过对象之间的交互来实现系统的功能。

本文将从面向对象方法的特点、优势和应用等方面进行探讨。

首先,面向对象方法的特点是抽象、封装、继承和多态。

抽象是指将对象的共同特征提取出来形成类的过程,封装是指隐藏对象的内部细节,只对外部提供公共的访问方式,继承是指子类可以继承父类的属性和方法,多态是指同一个方法可以根据对象的不同而具有不同的行为。

这些特点使得面向对象方法能够更好地应对复杂系统的设计和开发,提高了系统的可维护性和可扩展性。

其次,面向对象方法具有很多优势。

首先,它能够更好地反映现实世界的问题,因为对象的概念是现实世界中最基本的概念之一。

其次,面向对象方法能够提高代码的重用性,通过继承和多态可以减少代码的重复编写。

再次,面向对象方法可以提高系统的灵活性,使得系统更容易扩展和修改。

最后,面向对象方法能够提高开发效率,因为它能够更好地组织和管理代码,降低了开发的复杂度。

面向对象方法在实际开发中有着广泛的应用。

它被广泛应用于软件开发领域,如面向对象的分析和设计方法(OOAD)、面向对象的编程语言(如Java、C++、Python等)等。

此外,面向对象方法也被应用于系统集成、软件工程、人工智能等领域。

它已经成为了现代软件开发的主流方法之一。

总之,面向对象方法是一种重要的程序设计方法,它具有很多优势和特点,能够更好地应对复杂系统的设计和开发。

它在实际开发中有着广泛的应用,已经成为了现代软件开发的主流方法之一。

希望通过本文的介绍,读者能够更深入地了解面向对象方法,从而更好地应用它来解决实际的问题。

软件工程面向对象

软件工程面向对象

面向对象软件工程面向对象方法学的提出•结构化软件工程方法学•面向过程、以算法为核心、把数据和过程作为相对独立的部分•对早期只重视编程、不重视用户需求和开发过程,只重视代码、不重视文档来说,是一个巨大的进步•给软件产业带来了巨大的进步,部分缓解了软件危机•在许多中小型软件项目中获得了很大的成功•但是,它存在着明显的缺点•当把这种方法学应用于大型软件产品的开发时,似乎很少取得成功面向对象方法学概述•面向对象方法学的出发点和原则•尽可能模仿人类习惯的思维方式,使软件开发的方法与过程尽可能接近人类认识世界、解决问题的方法与过程•面向对象方法的特点•与人类习惯的思维方法一致:按照人们习惯的思维方式建立模型,模拟客观世界•稳定性好:实体是相对稳定的,以对象为中心构建的软件系统必然是相对稳定的•可重用性好:对象类提供了比较理想的模块化机制和可重用机制•易于开发大型软件:把大型产品看作一系列本质上相互独立的小产品来处理•可维护性好:容易理解、容易修改、易于测试四个要点:对象+类+继承+通信•面向对象软件是由对象组成•软件中的任何元素都是对象•对象是把静态属性的数据和动态属性的操作封装在一起而形成的统一体•复杂对象由简单对象组成•把所有对象都划分成若干类•每个类都定义了一组数据和方法(即施加于对象的操作);•按照子类与父类的关系,把若干个对象类组成一个层次结构的系统(即继承);•对象彼此之间仅能通过传递消息相互联系(对象的私有信息都被封装在对象类中)。

Coad和Yourdon给出了一个定义:面向对象=对象+类+继承+通信基本概念(1)•类(Class)•是对具有相同属性和行为的一(多)个对象的描述•是一个支持继承的抽象数据类型•实例(Instance)•就是由某个特定的类所描述的一个具体的对象•消息(Message)•是要求某个对象执行类中所定义的某个操作的规格说明•其组成为:接收消息的对象、消息名和变元•方法(Method)•就是对象所能执行的操作(类中定义的服务)•属性(Attribute)•就是类中所定义的数据,是对客观世界实体所具有的性质的抽象基本概念(2)•封装•是把数据和实现操作的代码集中起来放在对象内部,不能从外部进行访问和修改。

软件工程教案-OO方法学

软件工程教案-OO方法学
是“一般——特殊”的关系,它反映了基类与若干个 互不相容的子类之间的分类关系。
相关概念——继承:
(广义)直接获得已有的特征和性质,而不必重新定义 (狭义)子类自动的共享基类中定义的数据与方法一种机制
举例: 汽车——轿车 电脑——笔记本电脑

2019/12/3
16
3 基本概念
3-4 练习
的映射 主要用于描述系统的静态结构
2019/12/3
20
4 对象模型和功能模型
4-2 功能模型
表示瞬时的、行为化的系统的“功能”性质 规定了对象的合法变化序列 直接的反映了系统的动态特性 也反映了用户对目标系统的要求
2019/12/3
21
5 高程试题分析
(1) 面向对象的编程语言的出现以60年代的(A)为标志;80年代
2019/12/3
13
3 基本概念
3-1 类和对象
对象(Object):一个包含数据结构和施加其 上的操作的封装体。
类(Class):对具有相同属性和行为的一个 或多个对象的描述。
类中定义的数据(实体的性质),称为属性(Attribute) 类中的操作(服务),称为方法(Method)
Xerox研究中心推出了(B)语言。面向对象分析与设计的实质 是一种(C)的技术,其实质并不是从(D)或算法方面考虑, 而是从(E)上来进行分解。
备选答案
A、B ① C++ ② Smalltalk ③ SIMULA ④ OMT
C
①系统建模 ②系统分解
D、E ①结构 ②功能 ③方法 ④系统的组成
答案 32124
FP的成本约为1230元。根据FP估算及历史生 产率数据,总的项目成本估算是457000元,工 作量估算是58个人月

精品课件-软件工程-软件工程-第11章第1节

精品课件-软件工程-软件工程-第11章第1节

11.1.1 OMT方法学
系统设计阶段确定整个系统的体系结构。以对象 模型为指导,系统可由多个子系统组成,把对象组织成聚 集并发任务而反映并发性,对动态模型中处理的相互通信、 数据存储及实现要制定全面的策略,在权衡设计方案时要 建立优先顺序。
对象设计阶段要精心考虑和细化分析模型,然后 优化地生成一个实际设计。对象设计的重点从应用域概念 转到计算机概念上来,应选择基本算法来实现系统中各主
11.1.2 系统分析
4. 构造功能模型 构造功能模型的步骤如下: (1) 确定输入、输出值。 (2) 需要时使用数据流图来表示功能依赖关系。 (3) 描述各功能“干什么”。 (4) 确定约束。 (5) 详细说明优化标准。
11.1.2 系统分析
5. 验证、重复并完善细化三种模型 通过验证、重复并完善细化三种模型,最后得到: 分析文档 = 问题陈述 + 对象模型 + 动态模型
11.1.2 系统分析
分析的目的是确定一个系统“干什么”的 模型,该模型通过使用对象、关联、动态控制流和 功能变换等来描述。分析过程是一个不断获取需求 及不断与用户磋商的过程。
11.1.2 系统分析
1. 问题陈述 问题陈述为记下或获取对问题的初步描述。 2. 构造对象模型 构造对象模型的步骤如下: (1) 确定对象类。 (2) 编制类、属性及关联描述的数据词典。 (3) 在类之间加入关联。
11.1.4 对象设计
(3) 优化数据的访问路径:指增加冗余联系以减 少访问开销,提高方便性,重新排列运算以获得 更高效率。为防止重复计算复杂表达,保留有关 派生值。 (4) 实现系统设计中的软件控制。 (5) 为提高继承而调整类体系:指为提高继承而 调整和重新安排类和操作,从多组类中把共同行 为抽取出来。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图11.1 对象的符号表示
2) 类
对象类描述具有相似或相同性质(属性)的一组 对象,这组对象具有一般行为(操作)、一般关系 (对象之间的)及一般语义。类是对象类的略写,类 中对象有相同的属性、行为模式。
通过将对象聚集成类,可以使问题抽象化,抽象 增强了模型的归纳能力。类的图形表示如图11.2所示, 图11.2中的属性和操作可写可不写,取决于所需的详细 程度。
OMT方法学是组织开发的一种过程。这种过程是建立在 一些协调技术之上的,OMT方法的基础是开发系统的3个模 型,再细化这3种模型,并优化以构成设计。对象模型由系 统中的对象及其关系组成,动态模型描述系统中对象对事 件的响应及对象间的相互作用,功能模型则确定对象值上 的各种变换及变换上的约束。
11.1.2 系统分析
(7) 确定对象属性的明确表示:是将类、关联封 装成模块。
最后得到:对象设计文档 = 细化的对象模型 + 细 化的动态模型 + 细化的功能模型。
11.2 建模概念
11.2.1 对象模型
对象模型表示了静态的、结构化的系统数据性质, 描述了系统的静态结构,它是从客观世界实体的对象 关系角度来描述的,表现了对象的相互关系。该模型 主要关心系统中对象的结构、属性和操作,使用了对 象图的工具来刻画,它是分析阶段三个模型的核心, 是其他两个模型的框架。
图11.2 类的符号表示
4. 构造功能模型 构造功能模型的步骤如下: (1) 确定输入、输出值。 (2) 需要时使用数据流图来表示功能依赖关系。 (3) 描述各功能“干什么”。 (4) 确定约束。 (5) 详细说明优化标准。 最后得到:功能模型 = 数据流图 + 约束。
5. 验证、重复并完善细化 3 种模型 最后得到:分析文档 = 问题陈述 + 对象模型 + 动态模型 + 功能模型。 11.1.3 系统设计 在系统设计阶段建立系统的高层结构,有各种标 准结构可以用作设计的起点。面向对象的开发方法对 系统设计没有什么特殊的限制,但覆盖了完整的软件 开发阶段。系统设计的开发步骤如下: (1) 将系统分解为各子系统。 (2) 确定问题中固有的并发性。
系统设计阶段确定整个系统的体系结构。以对象 模型为指导,系统可由多个子系统组成,把对象组织 成聚集并发任务而反映并发性,对动态模型中处理的 相互通信、数据存储及实现要制定全面的策略,在权 衡设计方案时要建立优先顺序。
对象设计阶段要精心考虑和细化分析模型,然后 优化地生成一个实际设计。对象设计的重点从应用域 概念转到计算机概念上来,应选择基本算法来实现系 统中各主要功能。
1. 对象和类
1) 对象
对象就是应用领域中有意义的事物。对象建模的 目的就是描述对象,把对象定义成问题域的概念、抽 象或者具有明确边界和意义的事物。对象有两种用途: 一是促进客观世界的理解,二是为计算机实现提供实 际基础。问题分解为对象依赖于对问题判断和问题的 性质。对象的符号表示如图11.1所示。
分析的目的是确定一个系统“干什么”的模型,该模 型通过使用对象、关联、动态控制流和功能变换等来描述。 分析过程是一个不断获取需求及不断与用户磋商的过程。
1. 问题陈述
问题陈述为记下或获取对问题的初步描述。
2. 构造对象模型 构造对象模型的步骤如下: (1) 确定对象类。 (2) 编制类、属性及关联描述的数据词典。 (3) 在类之间加入关联。 (4) 给对象和链加属性。 (5) 使用继承构造和简化对象类。 (6) 将类组合成模块,这种组合在紧耦合和相关 功能上进行。 最后得到:对象模型=对象模型图+数据词典。
系统分析阶段涉及对应用领域的理解及问题域建 模。分析阶段的输入是问题陈述,说明要解决的问题 并提供了对假想系统概念的总览,同用户不断对话以 及对客观世界背景知识的了解作为分析的附加输入, 分析的结果是一个形式化模型。该模型概括了系统的3 个本质因素:对象及对象之间的关系、动态的控制流 以及带有约束的功能数据变换。
定实现的基础,从分析模型的面向客观边界的观点转到面 向实现的计算机观点上来。对象设计步骤如下:
(1) 从其他模型中获取对象模型上的操作:在功能模 型中寻找各个操作,为动态模型中的各个事件定义一个操 作,这个操作与控制的实现有关。
(2) 设计实现操作的算法:指选择开销最小的算法, 选择适合于算法的数据结构,定义新的内部类和操作。给 那些与单个类联系不太清楚的操作分配内容。
3. 构造动态模型 构造动态模型的步骤如下: (1) 准备典型交互序列的脚本。 (2) 确定对象间的事件并为各脚本安排事件跟踪。 (3) 准备系统的事件流图。 (4) 开发具有重要动态行为的各个类的状态图。 (5) 检查状态图中共享事件的一致性和完整性。 最后得到:动态模型 = 状态图 + 全局事件流图。
第11T方法概述 11.2 建模概念 11.3 系统分析 11.4 系统设计 11.5 对象设计 11.6 小结 习题
11.1 OMT方法概述
11.1.1 OMT方法学
OMT是一种软件工程方法学,支持整个软件生存周 期。它覆盖了问题构成、分析、设计和实现等阶段。
(3) 将各子系统分配给处理器及任务。 (4) 根据数据结构、文件及数据库来选择实现存 储的基本策略。 (5) 确定全局资源和制定控制资源访问的机制。 (6) 选择实现软件控制的方法。 (7) 考虑边界条件。 最后得到:系统设计文档 = 系统的基本结构 + 高层次决策策略。
11.1.4 对象设计 对象设计时,对分析模型进行详细分析和阐述并且奠
(3) 优化数据的访问路径:指增加冗余联系以减 少访问开销,提高方便性,重新排列运算以获得更高 效率。为防止重复计算复杂表达,保留有关派生值。
(4) 实现系统设计中的软件控制。
(5) 为提高继承而调整类体系:是指为提高继承 而调整和重新安排类和操作,从多组类中把共同行为 抽取出来。
(6) 设计关联的实现:分析关联的遍历,使用对 象来实现关联或者对关联中的1、2个类增加值对象的 属性。
相关文档
最新文档