软件工程601-705.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《软件工程601-705.ppt》由用户(罗嗣辉)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 601 705
- 资源描述:
-
1、10.6 定义服务定义服务1. 常规行为(服务)常规行为(服务) 如,读、写类属性的操作;如,读、写类属性的操作;2. 从事件导出的操作(服务)从事件导出的操作(服务) 如,如,“请分行验卡请分行验卡”事件事件“验证卡号验证卡号”;3. 与数据流图中处理框对应的操作(服务)与数据流图中处理框对应的操作(服务) 如如“更新帐户更新帐户”等;等;4. 利用继承减少冗余操作(服务)利用继承减少冗余操作(服务)第第11章章 面向对象设计面向对象设计11.1 面向对象设计的准则面向对象设计的准则 1. 模块化模块化 面向对象的软件开发模式,支持了系统模块化面向对象的软件开发模式,支持了系统模块化的原则:
2、对象就是模块。它把数据结构和操作(的原则:对象就是模块。它把数据结构和操作(方法)紧密地结合在一起构成模块。方法)紧密地结合在一起构成模块。2. 抽象抽象 类实际上是一种抽象数据类型,它对外开放类实际上是一种抽象数据类型,它对外开放的公共接口构成了类的规格说明(协议),这的公共接口构成了类的规格说明(协议),这种接口规定了外界可以使用的合法操作符,利种接口规定了外界可以使用的合法操作符,利用这些操作符可以对类的实例中包含的数据进用这些操作符可以对类的实例中包含的数据进行操作。行操作。 3. 信息隐蔽信息隐蔽 在面向对象方法中,信息隐蔽通过对象的封在面向对象方法中,信息隐蔽通过对象的封装性实现:
3、类结构分离了类的接口与类的实装性实现:类结构分离了类的接口与类的实现,从而支持了信息隐蔽。现,从而支持了信息隐蔽。 4. 弱耦合弱耦合 弱的耦合可以提高软件模块的独立性,避免弱的耦合可以提高软件模块的独立性,避免某一部分模块发生变化对其它模块有较大的影某一部分模块发生变化对其它模块有较大的影响。响。一般来说,对象间的耦合有两大类:一般来说,对象间的耦合有两大类: A交互耦合交互耦合:对象间的耦合通过信息连接来:对象间的耦合通过信息连接来实现。应使交互耦合尽量松散。实现。应使交互耦合尽量松散。 B继承偶合继承偶合:与交互耦合相反,应该提高继:与交互耦合相反,应该提高继承耦合的程度。因为通过继承关
4、系结合起承耦合的程度。因为通过继承关系结合起来的基类和派生类,结合得越紧密越好。来的基类和派生类,结合得越紧密越好。5. 强内聚强内聚面向对象设计中存在三种内聚:面向对象设计中存在三种内聚: A服务内聚:一个服务应该完成一个且完成一服务内聚:一个服务应该完成一个且完成一个功能。个功能。 B类内聚:一个类应该只有一个用途,它的属类内聚:一个类应该只有一个用途,它的属性和服务应该是高内聚的。性和服务应该是高内聚的。 C一般一般特殊内聚:即基类特殊内聚:即基类派生类的内聚。派生类的内聚。 6. 可重用可重用 使用已经存在的类(包括开发环境提供的使用已经存在的类(包括开发环境提供的类库,及以往开发相似
5、系统时创建的类),类库,及以往开发相似系统时创建的类),可以提高软件重用性,提高软件生产率。可以提高软件重用性,提高软件生产率。 人们在面向对象方法中也积累了一些经验,人们在面向对象方法中也积累了一些经验,总结出几条启发规则:总结出几条启发规则: 1. 设计结果应该清晰易懂;设计结果应该清晰易懂; 1)用词一致;)用词一致; 2)使用已有的协议;)使用已有的协议; 3)减少消息模式的数目;)减少消息模式的数目; 4)避免模糊的定义。)避免模糊的定义。11.2 启发规则启发规则 2. 一般一般特殊结构的深度应适当:中等规模特殊结构的深度应适当:中等规模的系统中,类等级层次数应保持为的系统中,类等
6、级层次数应保持为72。不是必。不是必要情况,不应该随意创建派生类;要情况,不应该随意创建派生类;3. 设计简单的类:设计小而简单的类,便于设计简单的类:设计小而简单的类,便于开发和管理;开发和管理; 1)避免包含过多的属性;)避免包含过多的属性; 2)有明确的定义;)有明确的定义; 3)尽量简化对象之间的合作关系;)尽量简化对象之间的合作关系; 4)不要提供太多服务。)不要提供太多服务。4. 使用简单的协议:设计简单的类接口,发送使用简单的协议:设计简单的类接口,发送的消息中参数要少。的消息中参数要少。5. 使用简单的服务:编写实现每一个服务时,使用简单的服务:编写实现每一个服务时,避免复杂的
7、语句和结构;避免复杂的语句和结构;6. 把设计变动减至最小。把设计变动减至最小。11.3 软件重用软件重用11.3.1 概述概述 1. 重用重用 重用的三个层次:重用的三个层次: 1)知识重用;)知识重用; 2)方法和标准的重用;)方法和标准的重用; 3)软件成分的重用。)软件成分的重用。2. 软件成分的重用级别:软件成分的重用级别: 1)代码重用)代码重用 a. 源代码剪贴;源代码剪贴; b. 源代码包含;源代码包含; c. 继承;继承; 2)设计结果重用)设计结果重用 3)分析结果重用)分析结果重用 3. 典型的可重用软件成分典型的可重用软件成分 1)项目计划;)项目计划; 2)成本计划;
8、)成本计划; 3)体系结构;)体系结构; 4)需求模型和规格说明;)需求模型和规格说明; 5)设计;)设计; 6)源代码;)源代码; 7)用户文档和技术文档;)用户文档和技术文档;8)用户界面;)用户界面; 9)数据;)数据; 10)测试用例。)测试用例。11.4 系统分解系统分解类与对象层类与对象层人机交互人机交互部分部分问题域部问题域部分分任务管理任务管理部分部分数据管理数据管理部分部分主题层主题层结构层结构层属性层属性层服务层服务层图图11.2 典型的面向对象设计模型典型的面向对象设计模型11.5 设计问题域子系统设计问题域子系统 在设计问题域部分时,仅需要从实现的角度对在设计问题域部分
9、时,仅需要从实现的角度对问题域模型(对象模型、动态模型、功能模型)问题域模型(对象模型、动态模型、功能模型)作一些补充、修改,主要是增添、合并或分解类作一些补充、修改,主要是增添、合并或分解类与对象、属性和服务,调整继承关系等。与对象、属性和服务,调整继承关系等。1. 调整需求调整需求2. 重用已有的类重用已有的类3. 组合问题域的类组合问题域的类4. 增添基类以定义公共函数集合增添基类以定义公共函数集合5. 调整继承层次调整继承层次 1)使用多重继承机制)使用多重继承机制 2)使用单继承机制)使用单继承机制6. ATM系统实例系统实例11.6 设计人机交互子系统设计人机交互子系统 在面向对象
10、分析中,已经对用户界面需求作了在面向对象分析中,已经对用户界面需求作了初步分析,在面向对象设计过程中,要对系统人初步分析,在面向对象设计过程中,要对系统人机交互部分进行详细设计,其中包括指定窗口和机交互部分进行详细设计,其中包括指定窗口和报表的形式、设计命令层次等等。报表的形式、设计命令层次等等。 设计人机交互子系统的策略:设计人机交互子系统的策略: 1)分类用户;)分类用户; 2)描述用户;)描述用户; 3)设计命令层次;)设计命令层次; 4)设计人机交互类。)设计人机交互类。11.7 设计任务管理子系统设计任务管理子系统 任务可视作进程(任务可视作进程(Process)1. 分析并发性分析
11、并发性 基于动态模型分析并发性,如果对象间不存在交互,基于动态模型分析并发性,如果对象间不存在交互,或不同时接受事件,则是并发的。或不同时接受事件,则是并发的。 并发任务可以在不同的处理器上实现,也可以在单个并发任务可以在不同的处理器上实现,也可以在单个处理器上利用多任务操作系统实现。处理器上利用多任务操作系统实现。2. 设计任务管理子系统设计任务管理子系统 1)确定事件驱动型任务:主要完成通信工作)确定事件驱动型任务:主要完成通信工作 工作过程:睡眠工作过程:睡眠等待来自数据线的中断等待来自数据线的中断任务任务唤醒、接收数据唤醒、接收数据通知相应对象通知相应对象继续睡眠继续睡眠 2)确定时钟
12、驱动型任务)确定时钟驱动型任务 每隔一定时间触发执行某些任务。每隔一定时间触发执行某些任务。 3)确定优先任务)确定优先任务4)确定关键任务)确定关键任务5)确定协调任务)确定协调任务 当同时运行的任务较多时(当同时运行的任务较多时(3个以上),一般个以上),一般设计协调任务,会增加系统开销,但有利于封设计协调任务,会增加系统开销,但有利于封装不同任务间的协调控制。装不同任务间的协调控制。6)尽量减少任务数)尽量减少任务数7)确定资源需求)确定资源需求 计算系统载荷(单位时间处理业务数),估计算系统载荷(单位时间处理业务数),估算所需算所需CPU性能。性能。11.8 设计数据管理子系统设计数据
13、管理子系统11.8.1 选择数据存储管理模式选择数据存储管理模式 1. 文件管理系统文件管理系统 2. 关系数据库管理系统关系数据库管理系统 3. 面向对象数据库管理系统面向对象数据库管理系统11.8.2 设计数据管理子系统设计数据管理子系统 1. 设计数据格式设计数据格式 2. 设计相应的服务设计相应的服务11.8.3 ATM系统实例系统实例 采用成熟的商品化关系数据库。根据数据库范式设计,保持数据采用成熟的商品化关系数据库。根据数据库范式设计,保持数据一致性、完整性。一致性、完整性。 处理并发事务时,每个事务作为一个不可分割的批操作来处理,处理并发事务时,每个事务作为一个不可分割的批操作来
14、处理,由事务封锁帐户,直至事务结束。由事务封锁帐户,直至事务结束。11.9 设计类中的服务设计类中的服务11.9.1 确定类中应有的服务确定类中应有的服务11.9.2 设计实现服务的方法设计实现服务的方法 1. 设计实现服务的算法设计实现服务的算法 1)算法复杂度;)算法复杂度; 2)容易理解、容易实现;)容易理解、容易实现; 3)容易修改;)容易修改; 2. 选择数据结构选择数据结构 3. 定义内部类和内部操作定义内部类和内部操作第第12章章 面向对象实现面向对象实现12.1.1 面向对象语言的优点面向对象语言的优点 使用面向对象语言时,编译程序可以自动把使用面向对象语言时,编译程序可以自动
15、把面向对象概念映射到目标程序中。面向对象概念映射到目标程序中。 使用非面向对象语言编写面向对象程序,则使用非面向对象语言编写面向对象程序,则必须由程序员自己把面向对象概念映射到程序必须由程序员自己把面向对象概念映射到程序中。中。 1980年的年的smalltalk-80发展了发展了Simula-67的对的对象和类的概念,并引入了方法、消息、元类及象和类的概念,并引入了方法、消息、元类及协议等概念,所以有人将协议等概念,所以有人将smalltalk80称为第一称为第一个面向对象语言。个面向对象语言。 但是,使面向对象广泛流行的是但是,使面向对象广泛流行的是C+。12.1.2 面向对象语言的技术特
16、点面向对象语言的技术特点选择面向对象语言时应考虑的技术特点:选择面向对象语言时应考虑的技术特点: 1. 支持类与对象概念的机制支持类与对象概念的机制 2. 实现整体部分(聚集)结构的机制实现整体部分(聚集)结构的机制 3. 实现一般特殊(泛化)结构的机制实现一般特殊(泛化)结构的机制 4. 实现属性和服务的机制实现属性和服务的机制 5. 类型检查类型检查6. 类库类库7. 效率效率8. 持久保存对象持久保存对象9. 参数化类参数化类10. 开发环境开发环境12.1.3 选择面向对象语言选择面向对象语言 1. 将来能否占主导地位将来能否占主导地位 2. 可重用性可重用性 3. 类库和开发环境类库
17、和开发环境 4. 其他因素其他因素 有否提供技术支持?提供开发人员什么开发平台?有否提供技术支持?提供开发人员什么开发平台?对及其性能的需求?集成已有软件的容易程度。对及其性能的需求?集成已有软件的容易程度。 12.2 程序设计风格程序设计风格12.2.1 提高可重用性提高可重用性12.2.2 提高可扩充性提高可扩充性12.2.3 提高健壮性提高健壮性12.3 测试策略测试策略12.3.1 面向对象的单元测试面向对象的单元测试基类:操作基类:操作A:X子类:操作子类:操作A1:XA2:XA3:X有必要在每有必要在每个子类中测个子类中测试操作试操作 X 不孤立地测试单个操作(函数),而是把操作作
18、为类的一部分进行测试。不孤立地测试单个操作(函数),而是把操作作为类的一部分进行测试。12.3.2 面向对象的集成测试面向对象的集成测试 两种不同的测试策略:两种不同的测试策略: 1)基于线程的测试()基于线程的测试(thread based testing) 将响应系统的一个输入或一个事件所需要的哪些类集将响应系统的一个输入或一个事件所需要的哪些类集成起来测试。成起来测试。 2)基于使用的测试(基于使用的测试(use based testing) 先测试独立类,再测试使用独立类的下一层次的类先测试独立类,再测试使用独立类的下一层次的类(依赖类),重复直至完毕。(依赖类),重复直至完毕。12.
19、3.3 面向对象的确认测试面向对象的确认测试 主要是根据动态模型和描述系统行为的脚本来设计确认主要是根据动态模型和描述系统行为的脚本来设计确认测试用例。测试用例。12.4 设计测试用例设计测试用例12.4.1 测试类的方法测试类的方法1. 随机测试随机测试 ATM系统中系统中account(帐户)类的操作有:帐户)类的操作有:Open(打打开)、开)、Setup(建立)、建立)、Deposit(存款)、存款)、Withdraw(取取款)、款)、Balance(余额)、余额)、Summarize(清单)、清单)、CreditLimit(透支限额)、透支限额)、Close(关闭)。关闭)。 可以随
20、机地产生一系列不同的操作序列:可以随机地产生一系列不同的操作序列:测试用例测试用例1:Open.Setup.Deposit.Balance.Summarize.Withdraw.Close测试用例测试用例2: Open.Setup.Withdraw.Deposit.Balance.CreditLimit.Close2. 划分测试(类似于等价类划分)划分测试(类似于等价类划分)1)基于状态的划分)基于状态的划分 改变改变Account类状态的操作:类状态的操作: deposit, withdraw; 不改变不改变Account类状态的操作:类状态的操作: balance, summarize,
21、creditLimit 测试用例:测试用例: 1.open.setup.deposit.deposit.withdraw.withdraw.close; 2.open.setup.balance.summarize.creditLimit.close;2)基于属性的划分)基于属性的划分 根据类操作使用的属性来划分操作。根据类操作使用的属性来划分操作。 例,按属性例,按属性Balance分可三类:分可三类: 使用使用Balance的操作;的操作; 不使用不使用Balance的操作;的操作; 不使用也不修改不使用也不修改balance的操作。的操作。3)基于功能的划分)基于功能的划分 依据类操作完
22、成的功能来划分类操作。依据类操作完成的功能来划分类操作。 例,初始化操作:例,初始化操作:open,setup 计算操作:计算操作:deposit,withdraw 查询操作:查询操作:balance, summarize, creditLimit 3. 基于故障的测试基于故障的测试一般依靠经验和直觉,类似于错误推测测试法。一般依靠经验和直觉,类似于错误推测测试法。12.4.2 集成测试方法集成测试方法 测试类协作可以使用随机测试方法、划分测试测试类协作可以使用随机测试方法、划分测试方法、行为测试等。方法、行为测试等。 1. 多类测试多类测试2. 从动态模型导出测试用例从动态模型导出测试用例E
23、mptyacctsetupacctworkingacctnonworkingacctdeadacctopenSetup acctDeposit(initial)closeWithdraw (final)depositwithdrawBalanceCreditAcct InfoAccount类的状态转换图类的状态转换图应使应使Account类实例遍历所有允许的状态转换:类实例遍历所有允许的状态转换:测试用例测试用例1: open. setupacct. deposit(initial). withdraw(final). Close测试用例测试用例2: open. setupacct. depo
24、sit(initial). deposit. blance. credit. withdraw(final). Close测试用例测试用例3: open. setupacct. deposit(initial). deposit. withdraw. AcctInfo. withdraw(final). Close 第13章:软件评价与管理 ANSI/IEEE Std 729-1983 定义的定义的“软件质量软件质量”为:为:与软件产品满足规定的和隐含的需求的能与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体力有关的特征或特性的全体。 M.J.Fisher定义的定义的“软件质量软件
25、质量”为:为:所有描述所有描述计算机软件优秀程度的特性的组合计算机软件优秀程度的特性的组合。 13.1 软件质量软件质量 在计算机发展早期,计算机内存容量有限,在计算机发展早期,计算机内存容量有限,运行速度慢,人们设计软件时特别强调时间、运行速度慢,人们设计软件时特别强调时间、空间效率。空间效率。 现今对软件质量已经开始形成较全面的评价。现今对软件质量已经开始形成较全面的评价。 13.1.1 软件质量标准软件质量标准一般说来,应从三个方面考虑软件质量:一般说来,应从三个方面考虑软件质量:1)功能与性能方面功能与性能方面 软件应该能够按照既定的要求进行工作,与软件应该能够按照既定的要求进行工作,
展开阅读全文