软件工程导论第11章PPT学习教案_第1页
软件工程导论第11章PPT学习教案_第2页
软件工程导论第11章PPT学习教案_第3页
软件工程导论第11章PPT学习教案_第4页
软件工程导论第11章PPT学习教案_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、会计学1 软件工程导论第软件工程导论第11章章 2. 抽象抽象 类实际上是一种抽象数据类型,它对外开放类实际上是一种抽象数据类型,它对外开放 的公共接口构成了类的规格说明(协议),这的公共接口构成了类的规格说明(协议),这 种接口规定了外界可以使用的合法操作符,利种接口规定了外界可以使用的合法操作符,利 用这些操作符可以对类的实例中包含的数据进用这些操作符可以对类的实例中包含的数据进 行操作。行操作。 第1页/共45页 3. 信息隐蔽信息隐蔽 在面向对象方法中,信息隐蔽通过对象的封在面向对象方法中,信息隐蔽通过对象的封 装性实现:类结构分离了类的接口与类的实装性实现:类结构分离了类的接口与类的

2、实 现,从而支持了信息隐蔽。现,从而支持了信息隐蔽。 第2页/共45页 4. 弱耦合弱耦合 弱的耦合可以提高软件模块的独立性,避弱的耦合可以提高软件模块的独立性,避 免某一部分模块发生变化对其它模块有较大的免某一部分模块发生变化对其它模块有较大的 影响。影响。 第3页/共45页 一般来说,对象间的耦合有两一般来说,对象间的耦合有两 大类:大类: A交互耦合交互耦合:对象间的耦合通过信息连接来:对象间的耦合通过信息连接来 实现。应使交互耦合尽量松散。实现。应使交互耦合尽量松散。 B继承偶合继承偶合:与交互耦合相反,应该提高继:与交互耦合相反,应该提高继 承耦合的程度。因为承耦合的程度。因为通过继

3、承关系结合通过继承关系结合 起来的基类和派生类起来的基类和派生类,结合得越紧密越,结合得越紧密越 好。好。 第4页/共45页 5. 强内聚强内聚 面向对象设计中存在三种内聚:面向对象设计中存在三种内聚: A服务内聚:一个服务应该完成一个且完成一服务内聚:一个服务应该完成一个且完成一 个功能。个功能。 B类内聚:一个类应该只有一个用途,它的属类内聚:一个类应该只有一个用途,它的属 性和服务应该是高内聚的。性和服务应该是高内聚的。 C一般一般特殊内聚:即基类特殊内聚:即基类派生类的内聚。派生类的内聚。 第5页/共45页 6. 可重用可重用 使用已经存在的类(包括开发环境提供的使用已经存在的类(包括

4、开发环境提供的 类库,及以往开发相似系统时创建的类),类库,及以往开发相似系统时创建的类), 可以提高软件重用性,提高软件生产率。可以提高软件重用性,提高软件生产率。 第6页/共45页 人们在面向对象方法中也积累了一些经验,人们在面向对象方法中也积累了一些经验, 总结出几条启发规则:总结出几条启发规则: 1. 设计结果应该清晰易懂;设计结果应该清晰易懂; 1)用词一致;)用词一致; 2)使用已有的协议;)使用已有的协议; 3)减少消息模式的数目;)减少消息模式的数目; 4)避免模糊的定义。)避免模糊的定义。 11.2 启发规则启发规则 第7页/共45页 2. 一般一般特殊结构的深度应适当特殊结

5、构的深度应适当 中等规模的系统中,类等级层次数应保中等规模的系统中,类等级层次数应保 持为持为72。不是必要情况,不应该随意创建派生。不是必要情况,不应该随意创建派生 类;类; 第8页/共45页 3. 设计简单的类:设计小而简单的类,便于设计简单的类:设计小而简单的类,便于 开发和管理;开发和管理; 1)避免包含过多的属性;)避免包含过多的属性; 2)有明确的定义;)有明确的定义; 3)尽量简化对象之间的合作关系;)尽量简化对象之间的合作关系; 4)不要提供太多服务。)不要提供太多服务。 第9页/共45页 4. 使用简单的协议:设计简单的类接口,发送使用简单的协议:设计简单的类接口,发送 的消

6、息中参数要少。的消息中参数要少。 5. 使用简单的服务:编写实现每一个服务时,使用简单的服务:编写实现每一个服务时, 避免复杂的语句和结构;避免复杂的语句和结构; 6. 把设计变动减至最小。把设计变动减至最小。 第10页/共45页 11.3 软件重用软件重用 11.3.1 概述概述 1. 重用重用 重用的三个层次:重用的三个层次: 1)知识重用;)知识重用; 2)方法和标准的重用;)方法和标准的重用; 3)软件成分的重用。)软件成分的重用。 第11页/共45页 2. 软件成分的重用级别:软件成分的重用级别: 1)代码重用)代码重用 a. 源代码剪贴;源代码剪贴; b. 源代码包含;源代码包含;

7、 c. 继承;继承; 2)设计结果重用)设计结果重用 3)分析结果重用)分析结果重用 第12页/共45页 3. 典型的可重用软件成分典型的可重用软件成分 1)项目计划;)项目计划; 2)成本计划;)成本计划; 3)体系结构;)体系结构; 4)需求模型和规格说明;)需求模型和规格说明; 5)设计;)设计; 6)源代码;)源代码; 7)用户文档和技术文档;)用户文档和技术文档;8)用户界面;)用户界面; 9)数据;)数据; 10)测试用例。)测试用例。 第13页/共45页 11.3.2 类类 构件构件 1. 可重用软构件应具备的特点可重用软构件应具备的特点 1)模块独立性强)模块独立性强 2)具有

8、高度可塑性)具有高度可塑性 3)接口清晰、简明、可靠)接口清晰、简明、可靠 第14页/共45页 2. 类构件的重用方式类构件的重用方式 1)实例重用)实例重用 2)继承重用)继承重用 3)多态重用)多态重用 第15页/共45页 1、可以使用适当的构造函数,按照需要创建、可以使用适当的构造函数,按照需要创建 类的实例。然后向所创建的实例发送适当类的实例。然后向所创建的实例发送适当 的消息,启动相应的服务,完成需要完成的消息,启动相应的服务,完成需要完成 的工作。的工作。 2、可以用几个简单的对象作为类的成员,创、可以用几个简单的对象作为类的成员,创 建出一个更复杂的类。建出一个更复杂的类。 实例

9、重用实例重用 第16页/共45页 18 继承重用继承重用 1 1、为、为提高继承重用的效果,关键是设计一个合理提高继承重用的效果,关键是设计一个合理 的、具有一定深度的类构件继承层次结构。的、具有一定深度的类构件继承层次结构。 2 2、这样、这样做有下述两个好处:做有下述两个好处: n每个子类在继承父类的属性和服务的基础上,只加每个子类在继承父类的属性和服务的基础上,只加 入少量新属性和新服务。入少量新属性和新服务。 n降低了每个类构件的接口复杂度降低了每个类构件的接口复杂度 n表现出一个清晰的进化过程,提高了每个子类的可理解性表现出一个清晰的进化过程,提高了每个子类的可理解性 n为软件开发人

10、员提供了更多可重用的类构件为软件开发人员提供了更多可重用的类构件 n为多态重用奠定了良好基础。为多态重用奠定了良好基础。第17页/共45页 19 多态重用多态重用 1 1、使、使对象的对外接口更加一般化,从而降低了消对象的对外接口更加一般化,从而降低了消 息连接的复杂程度。息连接的复杂程度。 2 2、提供、提供一种简便可靠的软构件组合机制。一种简便可靠的软构件组合机制。 3 3、设计、设计类时,应注意以下可能影响重用性的操作:类时,应注意以下可能影响重用性的操作: n与表示方法有关的操作。例如,不同实例的比较、与表示方法有关的操作。例如,不同实例的比较、 显示、擦除等等。显示、擦除等等。 n与

11、数据结构、数据大小等有关的操作。与数据结构、数据大小等有关的操作。 n与外部设备有关的操作。例如,设备控制。与外部设备有关的操作。例如,设备控制。 n实现算法在将来可能会改进(或改变)的核心操作实现算法在将来可能会改进(或改变)的核心操作 第18页/共45页 11.3.3 软件重软件重 用的效益用的效益 1.质量:每一次重用,都会发现质量:每一次重用,都会发现 错误并清除,构件质量也随之错误并清除,构件质量也随之 改善。改善。 2.生产率:每一次重用,都会减生产率:每一次重用,都会减 少重用部分的工作,软件生产少重用部分的工作,软件生产 率也随之提高。率也随之提高。 3.成本:成本:重用所带来

12、的净成本重用所带来的净成本C=Cs-Cr- Cd(Cs是项目从头开发时所需要的成本;是项目从头开发时所需要的成本;Cr 是与重用相关联的成本;是与重用相关联的成本;Cd是交付给客户的软是交付给客户的软 件的实际成本。件的实际成本。 第19页/共45页 11.4 系统分解系统分解 类与对象层类与对象层 人机交人机交 互部分互部分 问题域问题域 部分部分 任务管任务管 理部分理部分 数据管数据管 理部分理部分 主题层主题层 结构层结构层 属性层属性层 服务层服务层 图图11.2 典型的面向对象设计模型典型的面向对象设计模型 第20页/共45页 1、子系统之间的两种交互方式、子系统之间的两种交互方式

13、 A.客户客户供应商关系供应商关系 B.平等伙伴关系平等伙伴关系 2、组织系统的两种方案、组织系统的两种方案 A.层次组织:下层为上层提供服务层次组织:下层为上层提供服务 封闭式:每层子系统仅仅使用其直接下层提供服封闭式:每层子系统仅仅使用其直接下层提供服 务务 开放式:可以调用下层任何子系统开放式:可以调用下层任何子系统 B.块状组织:子系统相互独立,弱耦合块状组织:子系统相互独立,弱耦合第21页/共45页 11.5 设计问题设计问题 域子系统域子系统 在设计问题域部分时,仅需要从实现的角度对在设计问题域部分时,仅需要从实现的角度对 问题域模型(对象模型、动态模型、功能模型)问题域模型(对象

14、模型、动态模型、功能模型) 作一些补充、修改,主要是增添、合并或分解类作一些补充、修改,主要是增添、合并或分解类 与对象、属性和服务,调整继承关系等。与对象、属性和服务,调整继承关系等。 第22页/共45页 1. 调整需求调整需求 2. 重用已有的类重用已有的类 3. 组合问题域的类组合问题域的类 4. 增添基类以定义公共函数集增添基类以定义公共函数集 合合 5. 调整继承层次调整继承层次 1)使用多重继承机制)使用多重继承机制 2)使用单继承机制)使用单继承机制 第23页/共45页 25 第24页/共45页 26 第25页/共45页 6. ATM系统实例系统实例 第26页/共45页 11.6

15、 设计人机交互子系统设计人机交互子系统 在面向对象分析中,已经对用户界面需求作了在面向对象分析中,已经对用户界面需求作了 初步分析,在面向对象设计过程中,要对系统人初步分析,在面向对象设计过程中,要对系统人 机交互部分进行详细设计,其中包括指定窗口和机交互部分进行详细设计,其中包括指定窗口和 报表的形式、设计命令层次等等。报表的形式、设计命令层次等等。 第27页/共45页 设计人机交互子系统的策略:设计人机交互子系统的策略: 1)分类用户;)分类用户; 2)描述用户;)描述用户; 3)设计命令层次;)设计命令层次; 4)设计人机交互类。)设计人机交互类。 第28页/共45页 11.7 设计任务

16、管理子系统设计任务管理子系统 任务可视作进程(任务可视作进程(Process) 1. 分析并发性分析并发性 基于动态模型分析并发性,如果对象间不存在交互,基于动态模型分析并发性,如果对象间不存在交互, 或不同时接受事件,则是并发的。或不同时接受事件,则是并发的。 并发任务可以在不同的处理器上实现,也可以在单并发任务可以在不同的处理器上实现,也可以在单 个处理器上利用多任务操作系统实现。个处理器上利用多任务操作系统实现。 第29页/共45页 2. 设计任务管理子系统设计任务管理子系统 1)确定事件驱动型任务:主要完成通信工作)确定事件驱动型任务:主要完成通信工作 工作过程:睡眠工作过程:睡眠等待

17、来自数据线的中断等待来自数据线的中断任务任务 唤醒、接收数据唤醒、接收数据通知相应对象通知相应对象继续睡眠继续睡眠 2)确定时钟驱动型任务)确定时钟驱动型任务 每隔一定时间触发执行某些任务。每隔一定时间触发执行某些任务。 3)确定优先任务)确定优先任务 第30页/共45页 4)确定关键任务)确定关键任务 5)确定协调任务)确定协调任务 当同时运行的任务较多时(当同时运行的任务较多时(3个以上),一般个以上),一般 设计协调任务,会增加系统开销,但有利于封设计协调任务,会增加系统开销,但有利于封 装不同任务间的协调控制。装不同任务间的协调控制。 6)尽量减少任务数)尽量减少任务数 7)确定资源需

18、求)确定资源需求 计算系统载荷(单位时间处理业务数),估计算系统载荷(单位时间处理业务数),估 算所需算所需CPU性能。性能。 第31页/共45页 11.8 设计数据管理子系统设计数据管理子系统 11.8.1 选择数据存储管理模式选择数据存储管理模式 1. 文件管理系统文件管理系统 2. 关系数据库管理系统关系数据库管理系统 3. 面向对象数据库管理系统面向对象数据库管理系统 第32页/共45页 11.8.2 设计数据管理子系统设计数据管理子系统 1. 设计数据格式设计数据格式 2. 设计相应的服务设计相应的服务 第33页/共45页 11.8.3 ATM系统实例系统实例 采用成熟的商品化关系数

19、据库。根据数据库范式设计,保持数据采用成熟的商品化关系数据库。根据数据库范式设计,保持数据 一致性、完整性。一致性、完整性。 处理并发事务时,每个事务作为一个不可分割的批操作来处理,处理并发事务时,每个事务作为一个不可分割的批操作来处理, 由事务封锁帐户,直至事务结束。由事务封锁帐户,直至事务结束。 第34页/共45页 11.9 设计类中的服务设计类中的服务 11.9.1 确定类中应有的服务确定类中应有的服务 11.9.2 设计实现服务的方法设计实现服务的方法 1. 设计实现服务的算法设计实现服务的算法 1)算法复杂度;)算法复杂度; 2)容易理解、容易实现;)容易理解、容易实现; 3)容易修

20、改;)容易修改; 2. 选择数据结构选择数据结构 3. 定义内部类和内部操作定义内部类和内部操作 第35页/共45页 37 11.10 设计关联设计关联 1、关联关系反映对象之间相互依赖、相互作、关联关系反映对象之间相互依赖、相互作 用的关系。用的关系。 2、在面向对象设计过程中,设计人员必须确、在面向对象设计过程中,设计人员必须确 定实现关联的具体策略。定实现关联的具体策略。 关联的遍历关联的遍历 实现单向关联实现单向关联 实现双向关联实现双向关联 关联对象的实现关联对象的实现 第36页/共45页 38 1、关联的遍历、关联的遍历 1)单向遍历:实现简单)单向遍历:实现简单 2)双向遍历:实

21、现麻烦)双向遍历:实现麻烦 第37页/共45页 39 2、实现单向关联、实现单向关联 1)用指针可以方便地实现单向关)用指针可以方便地实现单向关 联。联。 2)如果关联的阶是一元的,则实)如果关联的阶是一元的,则实 现关联的指针是一个简单指针;现关联的指针是一个简单指针; 如果阶是多元的,则需要用一如果阶是多元的,则需要用一 个指针集合实现关联。个指针集合实现关联。 第38页/共45页 40 3、实现双向关联、实现双向关联 实现双向关联有下列三种方法:实现双向关联有下列三种方法: 1.只用属性实现一个方向的关联,只用属性实现一个方向的关联, 当需要反向遍历时就执行一次正当需要反向遍历时就执行一

22、次正 向查找。向查找。 2.两个方向的关联都用属性实现,两个方向的关联都用属性实现, 这种方法能实现快速访问。这种方法能实现快速访问。 3.用独立的关联对象实现双向关联。用独立的关联对象实现双向关联。 关联对象不属于相互关联的任何关联对象不属于相互关联的任何 一个类,它是独立的关联类的实一个类,它是独立的关联类的实 例例 。 第39页/共45页 41 第40页/共45页 42 4、关联对象的实现、关联对象的实现 关联对象的实现方法取决于关联的关联对象的实现方法取决于关联的 阶数:阶数: n一对一关联:一对一关联: n关联对象可以与参与关联的任一个对关联对象可以与参与关联的任一个对 象合并。象合

23、并。 n一对多关联:一对多关联: n关联对象可以与关联对象可以与“多多”端对象合并。端对象合并。 n多对多关联:多对多关联: n通常使用一个独立的关联类来保存描通常使用一个独立的关联类来保存描 述关联性质的信息,这个类的每个实述关联性质的信息,这个类的每个实 例标示一条具体的关联链及该链的属例标示一条具体的关联链及该链的属 性。性。 第41页/共45页 43 11.11设计优化设计优化 1、确定优先级、确定优先级 2、提高效率的几项技术、提高效率的几项技术 1)增加冗余关联以提高访问效率)增加冗余关联以提高访问效率 2)调整查询次序)调整查询次序 3)保留派生属性)保留派生属性 3、调整继承关系、调整继承关系 1)抽象与具体)抽象与具体 2)为提高继承程度而修改类定义)为提高继承程度而修改类定义 3)利用委托实现行为共享)利用委托实现行为共享 第42页/共45页 练习题练习题 填空题:填空题: 1、大型、复杂系统的对象通常由下述大型、复杂系统的对象通常由下述5个层次组成:(个层次组成:( )、)、 类与对象层、(类与对象层、( )、()、( )和()和( )。)。 2、软

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论