软件工程课件:第11、12章 软件设计与实现

上传人:cn****1 文档编号:569579707 上传时间:2024-07-30 格式:PPT 页数:43 大小:531.50KB
返回 下载 相关 举报
软件工程课件:第11、12章 软件设计与实现_第1页
第1页 / 共43页
软件工程课件:第11、12章 软件设计与实现_第2页
第2页 / 共43页
软件工程课件:第11、12章 软件设计与实现_第3页
第3页 / 共43页
软件工程课件:第11、12章 软件设计与实现_第4页
第4页 / 共43页
软件工程课件:第11、12章 软件设计与实现_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《软件工程课件:第11、12章 软件设计与实现》由会员分享,可在线阅读,更多相关《软件工程课件:第11、12章 软件设计与实现(43页珍藏版)》请在金锄头文库上搜索。

1、第第11章章 面向对象设计面向对象设计11.1 面向面向对象象设计的准的准则 1. 模模块化化 面面向向对象象的的软件件开开发模模式式,支支持持了了系系统模模块化化的的原原则:对象象就就是是模模块。它它把把数数据据结构构和和操操作作(方法)(方法)紧密地密地结合在一起构成模合在一起构成模块。2. 抽象抽象 类实际上是一种抽象数据上是一种抽象数据类型,它型,它对外开外开放的公共接口构成了放的公共接口构成了类的的规格格说明(明(协议),),这种接口种接口规定了外界可以使用的合法操作符,定了外界可以使用的合法操作符,利用利用这些操作符可以些操作符可以对类的的实例中包含的数据例中包含的数据进行操作。行

2、操作。 3. 信息隐蔽信息隐蔽 在面向对象方法中,信息隐蔽通过对象在面向对象方法中,信息隐蔽通过对象的封装性实现:类结构分离了类的接口与类的的封装性实现:类结构分离了类的接口与类的实现,从而支持了信息隐蔽。实现,从而支持了信息隐蔽。 4. 弱耦合弱耦合 弱弱的的耦耦合合可可以以提提高高软件件模模块的的独独立立性性,避避免免某某一一部部分分模模块发生生变化化对其其它它模模块有有较大大的的影响。影响。一般来一般来说,对象象间的耦合有两大的耦合有两大类: A交交互互耦耦合合:对象象间的的耦耦合合通通过信信息息连接接来来实现。应使交互耦合尽量松散。使交互耦合尽量松散。 B继承偶合承偶合:与交互耦合相反

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

4、往往开开发发相相似似系系统统时时创创建建的的类类),可以提高软件重用性,提高软件生产率。可以提高软件重用性,提高软件生产率。 人人们在在面面向向对象象方方法法中中也也积累累了了一一些些经验,总结出几条启出几条启发规则: 1. 设计结果果应该清晰易懂;清晰易懂; 1)用)用词一致;一致; 2)使用已有的)使用已有的协议; 3)减少消息模式的数目;)减少消息模式的数目; 4)避免模糊的定)避免模糊的定义。11.2 启发规则启发规则 2. 一一般般特特殊殊结构构的的深深度度应适适当当:中中等等规模模的的系系统中中,类等等级层次次数数应保保持持为72。不不是是必必要要情况,不情况,不应该随意随意创建派

5、生建派生类;3. 设计简单的的类:设计小小而而简单的的类,便便于于开开发和管理;和管理; 1)避免包含)避免包含过多的属性;多的属性; 2)有明确的定)有明确的定义; 3)尽量)尽量简化化对象之象之间的合作关系;的合作关系; 4)不要提供太多服)不要提供太多服务。4. 使使用用简单的的协议:设计简单的的类接接口口,发送送的消息中参数要少。的消息中参数要少。5. 使使用用简单的的服服务:编写写实现每每一一个个服服务时,避免复避免复杂的的语句和句和结构;构;6. 把把设计变动减至最小。减至最小。11.3 软件重用软件重用11.3.1 概述概述 1. 重用重用 重用的三个重用的三个层次:次: 1)知

6、)知识重用;重用; 2)方法和)方法和标准的重用;准的重用; 3)软件成分的重用。件成分的重用。2. 软件成分的重用件成分的重用级别: 1)代)代码重用重用 a. 源代源代码剪剪贴; b. 源代源代码包含;包含; c. 继承;承; 2)设计结果重用果重用 3)分析)分析结果重用果重用 3. 典型的可重用典型的可重用软件成分件成分 1)项目目计划;划; 2)成本)成本计划;划; 3)体系)体系结构;构; 4)需求模型和)需求模型和规格格说明;明; 5)设计; 6)源代)源代码; 7)用)用户文档和技文档和技术文档;文档;8)用)用户界面;界面; 9)数据;)数据; 10)测试用例。用例。11.4

7、 系统分解系统分解类与对象层类与对象层人机交人机交互部分互部分问题域问题域部分部分任务管任务管理部分理部分数据管数据管理部分理部分主题层主题层结构层结构层属性层属性层服务层服务层图图11.2 典型的面向对象设计模型典型的面向对象设计模型11.5 设计问题域子系统设计问题域子系统 在在设计问题域部分域部分时,仅需要从需要从实现的角度的角度对问题域模型(域模型(对象模型、象模型、动态模型、功能模型模型、功能模型)作一些作一些补充、修改,主要是增添、合并或分解充、修改,主要是增添、合并或分解类与与对象、属性和服象、属性和服务,调整整继承关系等。承关系等。1. 调整需求整需求2. 重用已有的重用已有的

8、类3. 组合合问题域的域的类4. 增添基增添基类以定以定义公共函数集合公共函数集合5. 调整整继承承层次次 1)使用多重)使用多重继承机制承机制 2)使用)使用单继承机制承机制6. ATM系系统实例例11.6 设计人机交互子系统设计人机交互子系统 在在面面向向对象象分分析析中中,已已经对用用户界界面面需需求求作作了了初初步步分分析析,在在面面向向对象象设计过程程中中,要要对系系统人人机机交交互互部部分分进行行详细设计,其其中中包包括括指指定定窗窗口口和和报表的形式、表的形式、设计命令命令层次等等。次等等。 设计人机交互子系人机交互子系统的策略:的策略: 1)分)分类用用户; 2)描述用)描述用

9、户; 3)设计命令命令层次;次; 4)设计人机交互人机交互类。11.7 设计任务管理子系统设计任务管理子系统 任任务可可视作作进程(程(Process)1. 分析并分析并发性性 基于基于动态模型分析并模型分析并发性,如果性,如果对象象间不存在交互,不存在交互,或不同或不同时接受事件,接受事件,则是并是并发的。的。 并并发任任务可以在不同的可以在不同的处理器上理器上实现,也可以在,也可以在单个个处理器上利用多任理器上利用多任务操作系操作系统实现。2. 设计任任务管理子系管理子系统 1)确定事件)确定事件驱动型任型任务:主要完成通信工作:主要完成通信工作 工作工作过程:睡眠程:睡眠等待来自数据等待

10、来自数据线的中断的中断任任务唤醒、接收数据醒、接收数据通知相通知相应对象象继续睡眠睡眠 2)确定)确定时钟驱动型任型任务 每隔一定每隔一定时间触触发执行某些任行某些任务。 3)确定)确定优先任先任务4)确定关)确定关键任任务5)确定)确定协调任任务 当同当同时运行的任运行的任务较多多时(3个以上),一个以上),一般般设计协调任任务,会增加系,会增加系统开开销,但有利于,但有利于封装不同任封装不同任务间的的协调控制。控制。6)尽量减少任)尽量减少任务数数7)确定)确定资源需求源需求 计算系算系统载荷(荷(单位位时间处理理业务数),数),估算所需估算所需CPU性能。性能。11.8 设计数据管理子系

11、统设计数据管理子系统11.8.1 选择数据存数据存储管理模式管理模式 1. 文件管理系文件管理系统 2. 关系数据关系数据库管理系管理系统 3. 面向面向对象数据象数据库管理系管理系统11.8.2 设计数据管理子系统设计数据管理子系统 1. 设计数据格式设计数据格式 2. 设计相应的服务设计相应的服务11.8.3 ATM系统实例系统实例 采用成熟的商品化关系数据库。根据数据库范式设计,保持数据采用成熟的商品化关系数据库。根据数据库范式设计,保持数据一致性、完整性。一致性、完整性。 处理并发事务时,每个事务作为一个不可分割的批操作来处理,处理并发事务时,每个事务作为一个不可分割的批操作来处理,由

12、事务封锁帐户,直至事务结束。由事务封锁帐户,直至事务结束。11.9 设计类中的服中的服务11.10 设计关关联11.11 设计优化化第第12章章 面向对象实现面向对象实现12.1.1 面向面向对象象语言的言的优点点 使用面向对象语言时,编译程序可以自动使用面向对象语言时,编译程序可以自动把面向对象概念映射到目标程序中。把面向对象概念映射到目标程序中。 使用非面向对象语言编写面向对象程序,使用非面向对象语言编写面向对象程序,则必须由程序员自己把面向对象概念映射到程则必须由程序员自己把面向对象概念映射到程序中。序中。 1980年的年的smalltalk-80发展了展了Simula-67的的对象和象

13、和类的概念,并引入了方法、消息、元的概念,并引入了方法、消息、元类及及协议等概念,所以有人将等概念,所以有人将smalltalk80称称为第第一个面向一个面向对象象语言。言。 但是,使面向但是,使面向对象广泛流行的是象广泛流行的是C+。12.1.2 面向对象语言的技术特点面向对象语言的技术特点选择面向面向对象象语言言时应考考虑的技的技术特点:特点: 1. 支持支持类与与对象概念的机制象概念的机制 2. 实现整体部分(聚集)整体部分(聚集)结构的机制构的机制 3. 实现一般特殊(泛化)一般特殊(泛化)结构的机制构的机制 4. 实现属性和服属性和服务的机制的机制 5. 类型型检查6. 类库7. 效

14、率效率8. 持久保存持久保存对象象9. 参数化参数化类10. 开开发环境境12.1.3 选择面向面向对象象语言言 1. 将来能否占主将来能否占主导地位地位 2. 可重用性可重用性 3. 类库和开和开发环境境 4. 其他因素其他因素 有否提供技有否提供技术支持?提供开支持?提供开发人人员什么开什么开发平台平台?对及其性能的需求?集成已有及其性能的需求?集成已有软件的容易程度。件的容易程度。 12.2 程序设计风格程序设计风格12.2.1 提高可重用性提高可重用性12.2.2 提高可提高可扩充性充性12.2.3 提高健壮性提高健壮性12.3 测试策略测试策略12.3.1 面向面向对象的象的单元元测

15、试基类:操作基类:操作A:X子类:操作子类:操作A1:XA2:XA3:X有必要有必要在每个在每个子类中子类中测试操测试操作作 X 不孤立地测试单个操作(函数),而是把操作作为类不孤立地测试单个操作(函数),而是把操作作为类的一部分进行测试。的一部分进行测试。12.3.2 面向面向对象的集成象的集成测试 两种不同的两种不同的测试策略:策略: 1)基于)基于线程的程的测试(thread based testing) 将响将响应系系统的一个的一个输入或一个事件所需要的哪些入或一个事件所需要的哪些类集集成起来成起来测试。 2)基于使用的基于使用的测试(use based testing) 先先测试独立

16、独立类,再,再测试使用独立使用独立类的下一的下一层次的次的类(依(依赖类),重复直至完),重复直至完毕。12.3.3 面向面向对象的确象的确认测试 主要是根据主要是根据动态模型和描述系模型和描述系统行行为的脚本来的脚本来设计确确认测试用例。用例。12.4 设计测试用例设计测试用例12.4.1 测试类的方法的方法1. 随机随机测试 ATM系系统中中account(帐户)类的操作有:的操作有:Open(打打开)、开)、Setup(建立)、建立)、Deposit(存款)、存款)、Withdraw(取取款)、款)、Balance(余余额)、)、Summarize(清清单)、)、CreditLimit(

17、透支限透支限额)、)、Close(关关闭)。)。 可以随机地可以随机地产生一系列不同的操作序列:生一系列不同的操作序列:测试用例用例1:Open.Setup.Deposit.Balance.Summarize.Withdraw.Close测试用例用例2: Open.Setup.Withdraw.Deposit.Balance.CreditLimit.Close2. 划分划分测试(类似于等价似于等价类划分)划分)1)基于状)基于状态的划分的划分 改改变Account类状状态的操作:的操作: deposit, withdraw; 不改不改变Account类状状态的操作:的操作: balance,

18、summarize, creditLimit 测试用例:用例: 1.open.setup.deposit.deposit.withdraw.withdraw.close; 2.open.setup.balance.summarize.creditLimit.close;2)基于属性的划分)基于属性的划分 根据根据类操作使用的属性来划分操作。操作使用的属性来划分操作。 例,按属性例,按属性Balance分可三分可三类: 使用使用Balance的操作;的操作; 修改修改Balance的操作;的操作; 不使用也不修改不使用也不修改balance的操作。的操作。3)基于功能的划分)基于功能的划分 依据

19、依据类操作完成的功能来划分操作完成的功能来划分类操作。操作。 例,初始化操作:例,初始化操作:open,setup 计算操作:算操作:deposit,withdraw 查询操作:操作:balance, summarize, creditLimit 3. 基于故障的基于故障的测试 一般依靠一般依靠经验和直和直觉,类似于似于错误推推测测试法。法。12.4.2 集成集成测试方法方法 测试类协作可以使用随机作可以使用随机测试方法、划分方法、划分测试方法、行方法、行为测试等。等。 1. 多多类测试 p3022. 从从动态模型模型导出出测试用例用例Emptyacctsetupacctworkingacct

20、nonworkingacctdeadacctopenSetup acctDeposit(initial)closeWithdraw (final)depositwithdrawBalanceCreditAcct InfoAccount类的状态转换图类的状态转换图应使使Account类实例遍例遍历所有允所有允许的状的状态转换:测试用例用例1: open. setupacct. deposit(initial). withdraw(final). Close测试用例用例2: open. setupacct. deposit(initial). deposit. blance. credit. withdraw(final). Close测试用例用例3: open. setupacct. deposit(initial). deposit. withdraw. AcctInfo. withdraw(final). Close

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号