面向对象的软件工程.ppt

上传人:小飞机 文档编号:5887851 上传时间:2023-08-29 格式:PPT 页数:52 大小:268KB
返回 下载 相关 举报
面向对象的软件工程.ppt_第1页
第1页 / 共52页
面向对象的软件工程.ppt_第2页
第2页 / 共52页
面向对象的软件工程.ppt_第3页
第3页 / 共52页
面向对象的软件工程.ppt_第4页
第4页 / 共52页
面向对象的软件工程.ppt_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《面向对象的软件工程.ppt》由会员分享,可在线阅读,更多相关《面向对象的软件工程.ppt(52页珍藏版)》请在三一办公上搜索。

1、2023/8/29,第2章 面向对象的软件工程清华大学,(时间:2次课,4学时),2023/8/29,第2章 面向对象的软件工程,教学提示:上一章介绍的是软件工程概论,主要介绍传统的软件工程。本章介绍现代的软件工程面向对象的软件工程的内容。重点介绍面向对象的基本概念、要素以及面向对象方法的基本原理和步骤,为本教材后面将要学习的全程一体化建模工具PlayCASE奠定理论基础。教学目标:掌握关于面向对象的几个重要概念,包括对象、消息、方法、属性、继承性、封装性、多态性等;掌握面向对象软件工程的内容;了解面向对象方法的出发点、原则;了解面向对象的软件工程与传统的软件工程的差别,以及面向对象的软件工程

2、中的三个模型和它们之间的关系。,2023/8/29,第2章 面向对象的软件工程,2.1 引言2.2 面向对象方法的基本思想2.3 面向对象的基本概念与要素2.4 三种形式的模型2.5 面向对象的分析2.6 面向对象的设计2.7 面向对象的编程2.8 面向对象的测试2.9 面向对象的软件维护2.10 习题,2023/8/29,2.1 引言,大量实践和研究表明,软件系统产生的错误有60%80%都是需求定义不准确或错误导致的。造成需求定义不准确的主要原因是:在开发初期,用户缺乏计算机与信息系统方面的知识,常常难以清楚地给出所有需求,而开发人员缺乏用户方的业务知识,不易给出软件系统切合实际的描述。为了

3、解决上述问题,除了从软件过程模型中寻找适当的模型而外,也可以从考虑问题的方法上着手,也就是说尽可能地使分析、设计和实现一个系统的方法接近认识一个系统的方法,接近认识客观世界的渐进过程,这就是面向对象方法研究的课题。,2023/8/29,2.2 面向对象方法的基本思想,面向对象方法是基于如下思想来认识世界的:世界由对象构成;对象有各自的内部状态和运动规律;对象间联系和相互作用构成系统;对象组织成系统从而构成世界;追求解决问题的方法空间与客观世界问题结构空间一致。面向对象方法学的出发点和基本原则是:尽可能模拟人类所习惯的思维方式,使开发软件的方法和过程尽可能接近于人类认识世界解决问题的方法和过程,

4、也就是使描述问题的问题域与实现解法的求解域在结构上尽可能地一致。,2023/8/29,2.3 面向对象的基本概念与要素,2.3.1 面向对象的基本概念2.3.2 面向对象的要素,2023/8/29,2.3.1 面向对象的基本概念,1.对象和类(1)对象:=ID,MS,DS,MI,其中,ID是对象的标识或名字 MS是对象中的操作集合 DS是对象的数据结构 MI是对象受理的消息名集合(即对外接口)(2)类:是对具有相同数据和相同操作的一组相似对象的定义。,2023/8/29,2.3.1 面向对象的基本概念,2.状态/特征和属性 对象集合里的每一个对象都有相同/相似的状态,或着称为特征,把它抽象出来

5、就是属性。因此,属性是一组状态值的集合,具有相同的结构和相同的值类型,而每一个状态就是属性的实例。从另一个角度来说,属性就是类中所定义的数据,它是对客观世界所具有的性质的抽象。类的每个实例都有自己特有的属性值。,2023/8/29,2.3.1 面向对象的基本概念,3.行为、操作和方法/服务 方法或服务也是对行为或操作的抽象,是对象所能执行的操作,也可以说是一组行为或操作的集合,而每一个行为或操作都是方法或服务的实例。4.消息 消息就是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。通常,一个消息由下述三个部分组成:接收消息的对象;消息选择符(也称为消息名);零个或多个变元(即消息

6、传递的参数)。,2023/8/29,2.3.2 面向对象的要素,1.继承性 按照子类与父类的关系,把若干个对象类组成一个有层次结构的系统。在这种层次结构中,通常下层的派生类具有和上层的基类相同的特性(包括数据和方法),这种现象称为继承。继承是子类自动地共享父类中定义的数据和方法的机制。2.抽象 为了记忆或区分,人类常常把客观世界的一些事物的基本特征、内在的属性概念化,用逻辑模型表达出来,这样的过程就是抽象。3.封装性 一切从属于该对象的私有信息,都被封装在该对象类的定义中,就好像装在一个不透明的黑盒子中一样,在外界是看不见的,更不能直接使用,这就是“封装性”。,2023/8/29,2.3.2

7、面向对象的要素,4.共享性 有三种共享类型。同一类中不同实例之间,它们有共同的数据结构、行为和属性结构,可能共享某一个值域空间的值,例如状态(数据成员值)或属性值。同一应用类层次结构的继承关系,共享父类/超类的结构或方法。同一应用的类是指类之间有关联的那些类。5.强调对象的结构 它的含义是对象的结构在需求变化时变动较小,或者说对象的特征变化相对于功能变化即行为/操作的变化来说较小。行为/操作的变化影响的是单个方法的细节或接口等。对象的结构主要是指对象属性结构、数据结构和方法设计。,2023/8/29,2.3.2 面向对象的要素,6.多态性 不同对象可以调用相同名称的方法(函数、过程)并可导致完

8、成不同的行为。程序只需要进行一般形式的调用,方法的实现细节留给接受方法调用的对象。综上所述,面向对象的方法学可以用下列方程来概括:面向对象=对象+类+继承+消息 也就是说,面向对象就是既使用对象又使用类和继承等机制,而且对象之间仅能通过传递消息实现彼此通信。,2023/8/29,2.4 三种形式的模型,2.4.1 对象模型2.4.2 动态模型2.4.3 功能模型2.4.4 三种模型的关系,2023/8/29,2.4.1 对象模型,对象模型定义了做事情的实体,描述系统的数据结构,包括对象之间的关系、对象的属性和操作,用对象图表示。,2023/8/29,2.4.2 动态模型,动态模型明确规定了什么

9、时候做(即在何种状态下接受了什么事件的触发),描述系统的控制结构,即:描述类的对象的状态和事件的正确次序。,2023/8/29,2.4.3 功能模型,功能模型说明发生什么,它只关心系统做什么,而不考虑怎么做,描述系统的功能结构,用数据流程图DFD描述。,2023/8/29,2.4.4 三种模型的关系,在面向对象方法学中,对象模型是最基本的、最重要的,它为其他两种模型奠定了基础,我们依靠对象模型完成三种模型的集成。1.针对每个类建立的动态模型,描述了类实例的生命周期或运行周期。2.状态转换驱使行为发生,这些行为在数据流图中被映射成处理,它们同时与对象模型中的服务相对应。3.功能模型中的处理,对应

10、于对象模型中类-&-对象所提供的服务。,2023/8/29,2.4.4 三种模型的关系,4.功能模型中的数据存储,以及数据的源点/终点,通常是对象模型中的对象。5.功能模型中的数据流,往往是对象模型中的属性值,也可能是整个对象。6.功能模型中的处理可能产生动态模型中的事件。7.对象模型描述了功能模型中的动作对象、数据存储以及数据流的结构。,2023/8/29,2.5 面向对象的分析,2.5.1 面向对象分析的基本过程2.5.2 标识对象2.5.3 标识结构2.5.4 标识主题2.5.5 定义属性2.5.6 定义服务,2023/8/29,大型系统的复杂问题对象模型由以下五个层次组成:主题层:主题

11、是控制读者在同一时间所能考虑的模型规模的机制。对象层:对象是属性及其服务的抽象,反映系统保存有关信息和现实世界交互的能力。结构层:结构表示问题空间的复杂度。属性层:一个属性就是一个数据单元,用于描述一个对象或分类结构的实例。服务层:服务是对象收到消息之后所执行的处理。,2.5.1 面向对象分析的基本过程,2023/8/29,2.5.2 标识对象,参照常见事物找出在当前问题域中的候选对象。(1)可感知的物理实体(2)人或组织的角色(3)应该记忆的事件(4)两个或多个对象的相互作用(5)需要说明的概念 非正式分析法用自然语言书写的需求陈述为依据确定的候选者。,2023/8/29,2.5.2 标识对

12、象,筛选的主要依据冗余 无关 笼统 属性 操作实现单个实例派生结果,2023/8/29,2.5.3 标识结构,1.分类结构获得类成员组织,用于刻画对象之间的层次关系,它通过搜集公共特性并把这种特性扩充至特例之中来显示现实世界事件的通用性及专用性。2.组装结构刻画整体部分组织,表达了自然的整体和部分的结构关系,从而把一些部分的聚合构造成整体。,2023/8/29,2.5.3 标识结构,3.结构筛选己删去的类之间的结构。与问题无关的或应在实现阶段考虑的结构关系。瞬时事件。三元结构关系。派生结构。,2023/8/29,2.5.4 标识主题,主题提供了一个控制读者(分析员、管理者或客户)在一个时间内所

13、能考虑和理解模型的多少部分的机制。主题同时也给出了OOA模型中各图的概观。将一幅单独的图上所显示的项(或者“图符”、“对象”)的数目限制在59之间。主题不超过7个。采用对图中符号进行分组的方法。,2023/8/29,2.5.5 定义属性,几种常见情况:(1)误把对象当做属性。(2)把链属性误作为属性。(3)把限定误当成属性。(如:最大年龄)(4)误把内部状态当成了属性。(5)过于细化。(6)存在不一致的属性。,2023/8/29,2.5.5 定义属性,定义属性步骤(1)标识属性;(2)属性定位;(3)标识和定义实例连接;(4)修订对象;(5)说明属性和实例连接约束。,2023/8/29,2.5

14、.6 定义服务,服务收到一条消息之后所执行的处理。定义服务的中心问题为每一个对象和分类结构定义所需要的行为。建立并维护对象实例的服务响应某事件的服务提供某种功能的服务定义服务的第二个问题确定对象实例之间的必要的通信,即消息。消息交互相当于语言中的祈使语句。,2023/8/29,2.6 面向对象的设计,2.6.1 设计准则2.6.2 从分析到设计2.6.3 设计内容,2023/8/29,2.6.1 设计准则,1设计准则模块化、低耦合、高内聚,还有多态性等准则。2启发式规则:简单清晰、深度适当,2023/8/29,2.6.2 从分析到设计,(1)适应变化的需求问题域模型/框架修改;(2)对OOA的

15、补充修改;(3)产品可用性分离界面与面向对象分析,即可移植性;(4)多任务需要任务管理。分解任务简化并发行为的设计与编码,把并发的任务分离在多个处理机执行。,2023/8/29,2.6.3 设计内容一、问题域部分:OOA向OOD的演进,2023/8/29,2.6.3 设计内容,二、人机交互部分人机接口部件的最基本对象是窗口,主要的窗口类型包括:安全/登录窗口。启动窗口。启动窗口主要完成:对象的创建和初始化;系统管理功能;外设的激活与关闭。业务功能窗口。大多数面向对象的用户界面的设计都是事件驱动的。,2023/8/29,GUI准则:1.一致性2.减少步骤3.及时提供反馈信息4.提供撤消命令5.无

16、须记忆6.易学7.富有吸引力,2.6.3 设计内容,2023/8/29,2.6.3 设计内容,三、任务管理部分确定必须同时动作的对象找出相互排斥的对象设计任务管理子系统:确定各类任务并把任务分配给适当的硬件或软件去执行 1.确定事件驱动型任务 2.确定时钟驱动型任务 3.确定优先任务 4.确定关键任务 5.确定协调任务,2023/8/29,2.6.3 设计内容,四、数据管理部分数据管理部件提供了在数据管理系统中存储和检索对象的基本结构。数据管理方法有:1.关系数据库管理系统(RDBMS)2.面向对象数据库管理系统(OODBMS),2023/8/29,2.6.3 设计内容,1.关系数据库管理系统

17、(RDBMS)定义第三范式表:列出每个类的属性表,把属性表规范成第三范式,从而得出第三范式表的定义;为每个第三范式表定义一个数据库表;测量性能和需要的存储容量;修改先前设计的第三范式,以满足性能和存储需求。,2023/8/29,2.6.3 设计内容,2.面向对象数据库管理系统(OODBMS)两条途径:将关系型扩充成OODBMS:在传统的RDBMS的基础之上,增加抽象数据类型和继承性,以及一些一般用途的服务来创建操作类和对象。将面向对象编程语言(OOPL)扩充成OODBMS:在面向对象程序设计语言的基础之上,增加管理数据库中存储对象的语法和功能。,2023/8/29,2.7 面向对象的编程,2.

18、7.1 面向对象语言的选择2.7.2 编程准则,2023/8/29,开发人员在编程之前,应选择一种最合适的面向对象语言,可以考虑以下一些实际因素:1.将来能否占主导地位2.可重用性3.类库和开发环境4.其他因素:培训服务、技术支持,2.7.1 面向对象语言的选择,2023/8/29,良好的编程风格有助于提高软件的可重用性、可扩充性和健壮性。以下准则值得注意:1.提高类的内聚2.减小类的规模3.尽量不使用全局信息4.封装实现策略5.精心确定公有方法 6.预防用户的操作错误7.检查参数的合法性8.不要预先确定限制条件,2.7.2 编程准则,2023/8/29,2.8 面向对象的测试,2.8.1 面

19、向对象分析的测试2.8.2 面向对象设计的测试2.8.3 面向对象编程的测试2.8.4 面向对象的单元测试2.8.5 面向对象的集成测试2.8.6 面向对象的系统测试,2023/8/29,2.8.1 面向对象分析的测试,传统的面向过程分析是一个功能分解的过程,是把一个系统看成可以分解的功能的集合。这种传统的功能分解分析法的着眼点在于研究一个系统需要什么样的信息处理方法和过程,以过程的抽象来对待系统的需要。而OOA则是“把E-R图和语义网络模型(即信息模型中的概念)与面向对象程序设计语言中的重要概念结合在一起而形成的分析方法”,最后通常是得到问题空间的图表的形式描述。,2023/8/29,2.8

20、.2 面向对象设计的测试,建议针对功能的实现和重用以及对OOA结果的拓展,应从如下三方面考虑:(1)对认定的类的测试;(2)对构造的类层次结构的测试;(3)对类库的支持的测试。,2023/8/29,2.8.3 面向对象编程的测试,将测试的目光集中在:类功能的实现面向对象程序风格主要体现为以下两个方面(假设编程使用C+语言):数据成员是否满足数据封装的要求;类是否实现了要求的功能。,2023/8/29,2.8.4 面向对象的单元测试,传统的单元测试是针对程序的函数、过程或完成某一定功能的程序块。新的单元测试沿用单元测试的概念,实际测试类成员函数。一些传统的测试方法在面向对象的单元测试中都可以使用

21、。如等价类划分法、因果图法、边值分析法、逻辑覆盖法、路径分析法、程序插装法等等。单元测试一般建议由程序员完成。,2023/8/29,2.8.5 面向对象的集成测试,只关注于系统的结构和内部的相互作用。步骤:先进性静态测试,再进行动态测试。,2023/8/29,2.8.6 面向对象的系统测试,检测软件的整体行为表现OOT的视角扩大到包括复审分析和设计模型,此外,测试的焦点从过程构件(模块)移向了类。,2023/8/29,2.9 面向对象的软件维护,OO方法可提高软件维护效率的重要原因是:由于程序与问题域一致,各个阶段的表示一致,从而大大降低了理解的程度。将系统中最容易变化的因素(功能)作为对象的

22、服务而封装在对象的内部,对象的封装性使一个对象的修改对其他影响也小,从而避免了波动效应。,2023/8/29,2.10 思考与练习,1.填空题(1)面向对象具有_、_、_、_、_、_等六个要素。(2)在用面向对象方法建立的系统中,_是基本组成单位。(3)现实世界中的对象有两个共同特征:它们都有_和_。2.选择题(1)面向对象的方法与结构化方法最大的不同在于()。A.软件的可维护性 B.软件的可重用性 C.接近人类认识自然界的思维方式 D.对用户需求变化的适应性(2)面向对象方法学中在设计阶段的准则是()。A.容易用 B.美观C.简单性 D.低耦合(3)下面哪一项不属于OOD的组成部分。A.人机

23、接口设计 B.数据库设计C.界面设计 D.网络设计,2023/8/29,2.10 思考与练习,3.判断题(1)面向对象强调对象的结构。()(2)面向对象的对象模型仅表示系统的动态结构。()(3)面向对象的动态模型说明什么时候发生,对象模型指明发生的客体,功能模型说明发生什么。()(4)对象实现了数据和操作的结合,使数据和操作抽象于对象的统一体中。()4.简答题(1)什么是面向对象的方法?(2)试述面向对象方法的出发点和基本原则。(3)说明面向对象方法的基本原理。(4)试比较传统的软件工程学与面向对象的软件工程学。(5)试说明三种模型之间的关系。(6)试述面向对象分析中的五个步骤的工作内容。,2023/8/29,Q&A?Thanks!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号