06-第六章-面向对象设计方法-软件工程教案-海南大学(共15章).ppt
《06-第六章-面向对象设计方法-软件工程教案-海南大学(共15章).ppt》由会员分享,可在线阅读,更多相关《06-第六章-面向对象设计方法-软件工程教案-海南大学(共15章).ppt(113页珍藏版)》请在三一办公上搜索。
1、软件工程(第二版)齐治昌、谭庆平、宁洪 编著 高等教育出版社,主讲:陈明锐 教授,省级精品课程,第六章 面向对象设计方法,面向对象设计概述系统设计对象设计领域对象设计,面向对象设计概述,与传统的结构化设计相比:相同点:将需求分析模型转变为软件设计模型不同点:OOA和OOD之间没有明显界限 OOA和OOD都是迭代过程,开发过程模型,瀑布式分析设计编程,开发过程模型,螺旋式分析,原型开发,风险管理设计,原型开发,风险管理编程,原型开发,风险管理,开发过程模型,增量式少量的分析少量的设计重复,面向对象设计的步骤,面向对象设计过程的步骤 1.系统设计 系统整体结构的设计 2.对象设计 对OOA模型中类
2、/对象模型的具体化和细化 3.消息设计 从对象关系模型,设计出消息模型 4.设计模型复审,结构化方法中软件设计的基本原理在进行面向对象设计时仍然成立,但是增加了一些与面向对象方法密切相关的新特点,从而具体化为面向对象设计准则。,OOD遵循的原则,OOD遵循的原则,(一)模块化对象就是模块,把数据和方法结合在一起(二)抽象过程抽象数据抽象参数化抽象(某些PDL),OOD遵循的原则,(一)模块化对象就是模块,把数据和方法结合在一起(二)抽象过程抽象数据抽象参数化抽象(某些PDL),OOD遵循的原则,(三)信息隐藏通过对象的封装性实现(四)弱耦合降低交互耦合提高继承耦合,信息隐藏的实例,信息隐藏的实
3、例,OOD遵循的原则,(五)强内聚服务内聚类内聚一般-特殊内聚(六)可重用尽量使用已有的类创建新类时,考虑将来的可重用性,(一)模块化面向对象软件开发模式,很自然地支持了把系统分解成模块的设计原理:类就是模块。它是把数据结构和对数据的操作紧密地结合在一起所构成的模块。,面向对象设计的的原则详解,(二)抽象面向对象方法不仅支持过程抽象,而且支持数据抽象。类实际上是一种抽象数据类型,它对外开放的公共接口构成了类的规格说明(即协议),这种接口规定了外界可以使用的合法操作符,利用这些操作符可以对类实例中包含的数据进行操作。使用者无须知道这些操作符的实现算法和类中数据元素的具体表示方法,就可以通过这些操
4、作符使用类中定义的数据。通常把这类抽象称为规格说明抽象。,(三)信息隐藏在面向对象方法中,信息隐藏通过对象的封装来实现。对于用户来说,类中的属性的表示方法和操作的实现算法都应该是隐藏的。,(四)弱耦合结构化方法中耦合是指在系统中的各个模块之间的相互连接或相互依赖的强度。在面向对象方法中,耦合主要指不同对象之间通过消息相互关联的紧密程度。应该遵守下列准则使这种耦合尽量松散:,1.尽量降低消息连接的复杂程度。应该尽量减少消息中包含的参数个数,降低参数的复杂程度。2.减少对象发送(或接收)的消息数。,(五)强内聚内聚用于描述系统内组成部分中各元素彼此结合的紧密程度,应尽量避免低内聚。在面向对象设计中
5、,从三个层次来考察内聚性。1.单个方法的内聚性:方法是指操作的实现过程,一个操作由一个或多个方法实现。对方法的内聚性的评价与结构化设计中的相同,具有高内聚的方法应当只执行一个功能。,2.类的内聚性:设计类的原则是,一个类应该只有一个用途,类中的属性和操作应该全都是完成该类的任务所必需的,其中不包括无用的属性和操作。如果某个类有多个用途,通常应该把它分解成多个专用的类。3.层次结构的内聚性:对象之间通过继承关系而构成的层次结构,特殊类应该确实是对它的一般化类的一种具体化。如果一个派生类摒弃了它基类的许多属性和服务,那就是一个低内聚的。,(六)可重用软件重用是提高软件开发生产率和目标系统质量的重要
6、途径。重用基本上从设计开始。重用有两方面的含义:一是尽量使用已有的类(包括开发环境提供的类库,以及以往开发类似系统是创建的类);二是如果确实需要创建新类,则在设计这些新类的协议时,应该考虑将来的可重复使用性。,用例,对象-关 系模型,CRC索引卡片,属性、,子 系 统 设 计,类及对象设计,消息设计,责任设计,分析模型,设计模型,操作、,协作者,对象-行为模型,将OO分析模型转换为OO设计模型,OOD的四个层次:,子系统层:包含每个子系统的表示类和对象层:包含类层次和每个对象 的设计表示消息层:包含使得每个对象能够和其 协作者通信的细节,建立系 统的外部和内部接口责任层:包含针对每个对象的所有
7、属性 和操作的数据结构和算法的设计,用例图类 图交互图状态图,方法描述:if A then Calculate Sales Tax Calculate Total Amount End if,设计带方法的类图,由OO分析模型转换到OO设计模型,包图,系统内部,保险单,包图示例,客户,保险单填写界面,数据库界面(abstract),Oracle界面,Sybase界面,客户支持系统,客户维护子系统,包图示例,库存管理子系统,订单输入子系统,目录维护子系统,订单执行子系统,客户支持系统,包括设计类的包图示例,客户维护子系统,订单输入子系统,目录维护子系统,订单执行子系统,客户,目录,包,订单条目,订
8、单交易,订单,退货条目,发运人,运输,Fichman和Kemerer提出的10种设计建模成分模块层次的表示数据定义规约过程逻辑的规约端到端处理序列的指明对象状态和变迁的表示类及层次的定义操作到类的赋予详细的操作定义消息连接的规约排它服务的标识,结构化方法所不支持的,6.2系统设计过程,划分子系统;确定需要并发运行的子系统并为它们分配处理器;描述子系统之间的通信;确定系统资源的管理和控制;确定人机交互构件;选择实现数据管理和任务管理的基本策略。,系统设计的四种主要子系统(组件),1.问题域直接负责实现客户需求的子系统2.人机交互实现用户界面的子系统(包括可复用的GUI子系统)3.任务管理负责控制
9、和协调并发任务的子 系统,任务可能被包装在一个 子系统中或不同的子系统间;4.数据管理负责对象的存储和检索的子系统,系统组成观点的OOD模型,主体层,结构层,属性层,服务层,问题域 部分(PDC),人机交互部分(HIC),任务管理部分(TMC),数据管理部分(DMC),OOD阶段建立,OOA 阶段模型修改,OOD由四个活动组成:,类及对象层,1.问题域部分(PDC)的设计概述,OOA的模型直接放到OOD的问题域部,OOD阶段对OOA结果进行改动和增补。根据需求变化,对OOA产生模型的类与对象、结构、属性、操作进行组合与分解,增加必要的类、属性和关系。,对OOA结果加以增补要考虑的因素,重用设计
10、把问题域专用类组合在一起通过增添一般类而建立协议调整继承的支持级别改进性能增加低层的类和对象,2.人机交互部分(HIC)的设计概述,虽然好的人机交互部分不可能挽救一个功能很差的软件,但性能很差的人机交互部分将使一个功能很强的产品变的不可接受!,3.任务管理部分(TMC)的设计概述,为什么要有任务管理部分?系统中有许多并发行为时,需要按照各个行为的协调和通信关系,划分各种任务(进程),简化并发行为的设计和编码。根据动态模型分析、定义并发性;选择软件实现的控制方法。,怎样设计任务管理部分?任务管理主要包括任务的选择和调整识别事件驱动任务识别时钟驱动任务识别优先任务和关键任务识别协调者审查每个任务定
11、义每个任务,3.任务管理部分(TMC)的设计概述,4.数据管理部分(DMC)的设计概述,数据管理部分提供了数据在数据管系统中存储和检索对象的基本结构,它分离了数据管理方案的影响(不管该方案是普通文件、关系型数据库、面向对象数据库或其它方式。)如何设计数据管理部分(1)数据存放方法设计(2)相应服务的设计 为每个需存储其对象的类增加一个属性和服务,6.2.2 子系统设计问题(领)域部分,子系统描述实现客户需求的组件实现客户需求所必需的支持环境子系统可看作高层次的模块,通过外部接口与系统通信子系统来源OOA模型中的类、关系和行为的映射,问题域子系统(PDC)的设计,一般来说,基于问题域的总体组织框
12、架是长时间保持稳定的(当然,细节是会变的,这里加一个类说明,那里加一个属性或服务)。例如银行储蓄系统中分行、终端、储户这个组织结构会长期保持稳定,虽然如储户的属性可能会发生变化。正是基于这种稳定,面向对象的分析和设计模型按问题域本身的样子来组织系统,也能从容适应变化的需求,能保持稳定性。,OOD中,OOA的结果恰好就是OOD的问题域部分。这也正是面向对象的设计和分析方法的一个最优良的特点。但是可能要作些改动,这种改动不是否定OOA的分析结果,而是完善。,这些改动基于以下几个原因:(1)由于需求的变化;(2)分析员对问题域的理解可能有误解或欠缺,需要对此加以修正;(3)分析与设计毕竟是性质不同的
13、两类开发工作,分析可以而且应该与具体实现无关,而设计在很大程度上受具体实现环境的约束。,对OOA的改动准则(一)依照面向对象设计的准则审核每个类优秀的设计能够权衡各种因素,从而使得系统在其整个生命周期中的总开销最小。对大多数软件系统而言,60%以上的软件费用都用于软件维护,因此,优秀软件设计的一个主要特点就是容易维护。在问题域系统中,仔细对照面向对象设计的准则,审查OOA中的每个类。,(二)重用设计和编程的类根据需要重用现成的类,现成类是已用OO语言或非OO语言编写的可用源程序。例如图(a)是OOA结果中有一个类“交通工具”,设计者发现有一个类似的现成类“交通工具1”(图(b),那么他就可以按
14、以下步骤重用现成类(图(c)。,PDC中重用类例子,(三)通过增添超类而建立协议将问题域许多不同的类聚集在一起,这时可建立一个新的父类超类,将这许多类作为该超类的子类。这样一方面有助于改进模型的可理解性,同时可以在超类中给出一个公共的协议,用来与其它子系统或与外部系统部件进行通信。通信的细节在子类中定义。,(四)考虑语言调整继承支持级别如果OOA模型依赖于多重继承而设计者发现最终用于实现系统的程序设计语言只能支持单继承或不具备继承机制。这时就需要修改原来的类层次结构。(五)修改设计以提高性能如果开发的系统在执行速度上要求严格,我们就需对问题域部分加以修改,例如合并那些消息频繁连接的类。,例:银
15、行储蓄系统的PDC储蓄系统中,为了提高整个系统的性能,增加“终端控制器”来控制和协调柜员及终端的所有动作,它和“事务”对象协同工作;此外,增加了“事务记录器”,用一个独立的对象记录柜员的操作过程,当需要时能复查柜员的操作过程。以下是银行储蓄系统的PDC部分,为简单起见,以简单的类表示方式描述。,储户,帐户,事务,1+,1+,1+,1+,1+,存款事务,取款事务,总行,分行,储蓄所,1+,柜员,终端控制器,事务记录器,银行储蓄系统的PDC,终端,1+,1+,1+,确定子系统需要考虑的问题,哪个子系统负责什么客户需求?OOA中定义的对象分配到哪个子系统 中?哪些子系统必须并发运行,以及由什么系统构
16、件协调和控制它们?全局资源如何被子系统管理?,划分子系统时应考虑的原则,模块化、独立性、信息隐藏等等同一个子系统的类是否拥有共同特性?同一个子系统的类是否具有相同的目的?同一个子系统的类是否提供相似的服务类型?同一个子系统的类之间是否具有高耦合性?,组织系统的两种方案,水平层次组织上层在下层的基础上建立,下层为上层提供必要的服务垂直块状组织把软件系统垂直地分解成若干个相对独立、弱耦合的子系统,典型应用系统的组织结构,纠正课本错误:P128,例6.1P129,例6.2,处理并发操作,并发的对象(子系统)从对象行为模型中查找分析同时异步作用于同一事件处理方案将并发子系统分配到不同处理器将并发子系统
17、分配到同一处理器并由系统提供同步控制,描述子系统间的通信,子系统协作模型客户/服务器端对端,客户端子系统,端子系统,服务器端子系统,端子系统,请求,请求,请求,合约,合约,确定子系统间交互方式的步骤,列出所有可能接收到的请求,按子系统组织这些请求,并在一个或多个合约中定义对每个合约,列出完成每个请求所需的操作,将操作和子系统内的特定类相关联对每个合约创建子系统协作表(P130),资源管理构件,多个子系统竞争共享资源为每个资源设置一个“保护者对象”保护者对象控制对资源的访问协调对资源请求的冲突,6.2.3 人机交互设计(HIC),OOA阶段通过用例图给出了用户和系统的交互情况,确定了人机交互的属
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 06 第六 面向 对象 设计 方法 软件工程 教案 海南 大学 15
链接地址:https://www.31ppt.com/p-2833127.html