六章面向对象的设计.ppt

上传人:本田雅阁 文档编号:3187986 上传时间:2019-07-23 格式:PPT 页数:88 大小:710.04KB
返回 下载 相关 举报
六章面向对象的设计.ppt_第1页
第1页 / 共88页
六章面向对象的设计.ppt_第2页
第2页 / 共88页
六章面向对象的设计.ppt_第3页
第3页 / 共88页
六章面向对象的设计.ppt_第4页
第4页 / 共88页
六章面向对象的设计.ppt_第5页
第5页 / 共88页
点击查看更多>>
资源描述

《六章面向对象的设计.ppt》由会员分享,可在线阅读,更多相关《六章面向对象的设计.ppt(88页珍藏版)》请在三一文库上搜索。

1、第六章 面向对象的设计,面向对象的设计模型 系统设计 对象设计 领域对象设计,面向对象设计的任务,面向对象设计的任务 系统设计 系统整体结构的设计 对象设计 对OOA模型中类/对象模型的具体化和细化 消息设计 从对象- 关系模型,设计出消息模型 设计模型复审,面向对象设计,责任设计,消息设计,类及对象设计,子系统设计,系统设计过程, 划分子系统; 确定需要并发运行的子系统并为它们分配处理器; 描述子系统之间的通信; 确定系统资源的管理和控制; 确定人机交互构件; 选择实现数据管理和任务管理的基本策略。,四种主要子系统,问题域子系统 人机交互子系统 任务管理子系统 数据管理子系统,划分子系统,划

2、分原则 模块化、功能独立、信息隐藏 同一个子系统的类拥有共同特性 同一个子系统的类具有共同目的 同一个子系统的类提供相似服务 同一个子系统的类间相对高耦合 子系统标准 有明确的借口,与其他子系统通信 一般类只和子系统内部的其它类协作,处理并发操作,并发的对象(子系统) 同时 异步 作用于同一事件 处理 将并发子系统分配到不同处理器 将并发子系统分配到同一处理器 系统提供同步控制,描述子系统间的通信,子系统协作模型 客户/服务器 端对端,请求,客户,子系统,contract,服务器,子系统,peer,subsystem,peer,subsystem,请求,请求,人机交互设计,分类分析用户特点,设

3、计不同界面 增加用户界面专用的类和对象 利用快速原型演示,改进界面设计,任务管理设计,策略 确定任务的特征 定义一个协调者任务和与之关联的对象 集成其它任务和协调者 步骤 识别由事件驱动和时间驱动的任务 识别关键性任务、任务优先级和任务管理类 定义任务 必要时扩充有关任务的类和对象,数据管理设计,解决对象数据的存储和检索 数据管理设计 定义数据格式 与所使用的数据存储管理模式相关 设计相应的操作 说明对象及所属类和对象如何存储自己,对象设计,设计模型,对象 数据结构 算法 消息传递 控制,分析模型,类 属性 方法 关系 行为,对象描述,对象描述 协议描述:一组消息和对消息的注释 实现描述:对对

4、象接收到某个消息后所执行的操作的实现细节的描述 算法设计 程序构件与接口 对象间的接口和对象的整体结构,领域对象的设计,设计目的支持软件复用 设计内容 调整需求 复用已有的组件 引入父类,分组管理领域类 添加一般化类以建立协议 调整OOA模型 设计复审 设计模板,第七章 统一建模语言UML,UML简介 静态建模 动态建模 物理架构建模 RUP,UML,Unified Modeling Language 近10年来OOSE最重要的成果 贡献者:Grady Booch, Ivar Jacobson, Jin Rumbaugh 中文网站 http:/www. http:/,UML的组成,UML的模

5、型元素 表示模型中的某个概念 表示模型元素之间的关系 UML的元模型结构 元元模型层 元模型层 模型层 用户模型层 UML模型,UML模型,图 静态图 动态图 视图 用例视图 逻辑视图 并发视图 构件视图 部署视图,UML的特点,统一标准 面向对象 表达能力强大 可视化,UML的应用,用于描述系统开发的不同类型于不同阶段 从需求分析到软件设计到软件测试及维护 可视化问题描述,帮助理解问题 帮助建立各阶段的文档 获取和交流有关应用问题求解的知识 辅助构建系统,静态建模,用例模型 用例图表示 从最终用户的角度描述系统功能 类和对象模型 类图和对象图表示,类图Class Diagram,1 购买 0

6、* 属于,对象图Object Diagram,对象间关系,关联关系 (Association) 聚集关系(Aggregation) 泛化关系(Generalization) 依赖关系(Dependency) 细化关系 (Refinement),包图,动态建模,状态图(State Diagram) 时序图(Sequence Diagram) 协作图(Collaboration Diagram) 活动图(Activity Diagram),消息,同步消息,异步消息,简单消息,状态图State Diagram,打印机就绪 打印文件,时序图(Sequence Diagram),打印机忙 保存文件,打印

7、文件,打印文件,计算机,打印服务器,打印队列,计算机,协作图(Collaboration Diagram),活动图Activity Diagram,物理架构建模,逻辑架构和物理架构 逻辑架构 物理架构 构件图 配置图,RUP基于UML的统一建模过程,第八章 编码和语言选择,编码的目的 编码的风格 编码使用的语言,编码的目的,编码 模块的过程性描述一一一源程序 (不可执行的) (可执行的) 编码的过程 熟悉所选语言的功能和程序开发环境 仔细阅读设计文档详细设计 弄清要编码的模块的外部接口与内部过程,编码的风格,追求“聪明”和“技巧”-提倡“简明”和“直接” 使用标准的控制结构 清晰的前提下求取效

8、率 . Make it right before you make it faster. . Make it clear before you make it faster. . Keep it right when you make it faster. (求快不忘保持程序正确) . Keep it simple to make it faster. (保持程序简单以求快) . dont sacrifice clarity for “efficiency”. (书写清楚,不要为“效率”牺牲清楚),源程序的文档化 (code documentation),有意义的变量名称 适当的注释 标准的书

9、写格式 用分层缩进的写法显示嵌套结构的层次; 在注释段的周围加上边框; 在注释段与程序段、以及不同程序段之间插入空行; 每行只写一条语句; 书写表达式时,适当使用空格或圆括号等作隔离符;,程序设计语言的发展,语言的选择,选择编码语言的标准 应用领域 算法与计算复杂性 数据结构的复杂性 效率的考虑,适用各类应用领域的语言,第九章 软件测试,测试的基本概念 黑盒测试 白盒测试 测试用例设计 多模块程序的测试策略 面向对象系统的测试,测试的基本概念,测试(testing)的目的与任务 目的:发现程序的错误 任务:通过执行程序,暴露潜在的错误 纠错(debugging)的目的与任务 目的:定位和纠正错

10、误 任务:消除软件故障,保证程序的可靠运行,测试的特性,挑剔性 抱着为证明程序有错的目的去测试 复杂性 设计合适的测试用例 不彻底性 Dijkstra 一句名言:“程序测试只能证明错误的存在,但不能证明错误不存在” 经济性,测试的种类,静态分析(不执行程序) 静态分析器 代码复审(Code Review) 动态分析(执行程序) 黑盒测试 测试程序功能 白盒测试 测试程序结构,测试的文档,测试计划 测试项目的名称 各项测试的目的、步骤和进度 测试用例的设计 测试报告 测试项目名称 实测结果与期望结果的比较 发现的问题 测试达到的效果,黑盒测试,等价分类法(equivalence partitio

11、ning) 把输入数据的可能值划分为若干等价类 有效等价类和无效等价类 每一无效等价类至少需要一个测试用例 例子 某工厂公开招工,规定报名者年龄应在16周岁至35周岁之间(到2002年3月30日止)即出生年月不在上述范围内,将拒绝接受,并显示“年龄不合格”等出错信息。,“出生年月”的等价分类,黑盒测试,边界值分析法(boundary value analysis) 使被测程序在边界值及其附近运行,从而更有效地暴露程序中潜藏的错误 错误猜测法(error guessing) 猜测被测程序在哪些地方容易出错 针对可能的薄弱环节来设计测试用例,白盒测试,逻辑复盖测试法(logic coverage

12、testing) 用流程图来设计测试用例 逻辑复盖测试的5种标准,白盒测试,路径测试法(path testing) 着眼于程序执行路径的测试方法 程序图(program graph) 点覆盖 边覆盖 路径覆盖,测试用例设计,黑盒测试用例设计 三角形分类程序 见教材p205 白盒测试用例设计 学生成绩查询程序 见教材p208,软件的纠错,纠错的策略 试凑法 跟踪法 推理法 常用的纠错技术 插入打印语句 设置断点 掩蔽部分程序 蛮力纠错技术,多模块程序的测试策略,测试的层次性 单元(模块)测试(unit testing) 综合(集成)测试(integration testing) 确认测试(val

13、idation testing) 系统测试(system testing) 程序错误的类型 语法错误 结构性错误 功能性错误 接口错误,单元测试,目的 通过模块测试,使其代码达到模块说明书的需求 任务 (1) 对模块代码进行编译,发现并纠正其语法错误; (2) 进行静态分析,验证模块结构及其内部调用序列是否正确; (3) 确定模块的测试策略,并据此设计一组测试用例和必要的测试软件; (4) 用选定的测试用例对模块进行测试,直至满足测试终止标准为止; (5) 编制单元测试报告。,单元测试,实施步骤 编译 静态分析器检查 代码评审 动态测试 测试驱动模块 测试桩模块,集成测试,目的 将经过单元测试

14、的模块逐步组装成具有良好一致性的完整的程序 任务 制订集成测试实施策略 确定集成测试的实施步骤,设计测试用例 逐一地添加模块,进行测试,集成测试,策略与步骤 自顶向下测试 先广后深实施步骤 先深后广实施步骤 由底向上测试 混合方式测试(sandwich testing) 对上层模块采取自顶向下测试 对关键模块或子系统采取由底向上测试,确认测试,目的 确认组装好的程序是否满足(SRS)的要求 任务 有效性测试(黑盒测试) 配置复审(confinguration review) 验收测试专用 alpha与beta测试通用,系统测试,目的 软件安装到系统中以后,能否与系统的其余部分协调运行 任务 测

15、试是否与硬件协调运行 测试是否和原来就有的其它软件协调运行 测试是否完成SRS对它的要求,终止测试的标准,规定测试策略和应达标准 规定至少要查出的错误数量,面向对象系统的测试,OO软件的测试策略 OO软件测试用例设计,OO软件的测试策略,OO软件的单元测试 全面地测试类和对象所封装的属性和操纵这些属性的操作的整体 发现类的所有操作中存在的问题 与其他的类协同工作时可能出现的错误 OO软件的集成测试 基于黑盒方法的集成测试 基于线程的测试(thread-based testing) 基于使用(use-based)的测试,OO软件的测试策略,OO软件的确认测试和系统测试 采用传统的黑盒法 OOA阶

16、段的用例所描述的用户交互进行测试 导出OO系统测试的测试用例 对象行为模型 时序图等 模拟用户实际使用环境,OO软件测试用例设计,(1) 每个测试用例都要有一个唯一的标识,并与被测试的一个或几个类相关联起来; (2) 每个测试用例都要陈述测试的目的; (3) 对每个测试用例要有相应的测试步骤,包括被测对象的特定状态、所使用的消息和操作、可能产生的错误、测试需要的外部环境等,OO概念对测试用例设计的影响,继承的成员函数需要测试 子类的测试用例可以参照父类 类测试用例设计 基于故障的测试用例设计 基于用例的测试用例设计 类间测试用例设计 类关系模型 类行为模型,第十章 软件复用,软件复用的基本概念

17、 领域工程 基于构件的开发 面向对象与软件复用 小结,软件复用的基本概念,软件复用的定义,软件复用的重要性,软件复用的目的是能更快、更好、成本更低地生产软件制品。 一般地说,在软件开发中采用复用构件可以比从头开发这个软件更加容易。,软件复用的粒度,按照可复用的粒度,软件制品从小到大分为以下几类: 源代码复用 软件体系结构复用 应用程序生成器 领域特定的软件体系结构的复用,领域工程,所谓的“领域”,指的是一组具有相似或相近软件需求的应用系统所覆盖的功能区域。 通过领域分析(domain analysis)找出最优复用,对它们进行设计和构造,形成为可复用构件,进而建立大规模的软件构件仓库的过程,就

18、是领域工程。,横向复用和纵向复用,横向复用是指复用不同应用领域中的软件元素。 纵向复用是指在一类具有较多公共性的应用领域之间进行软部品复用。,领域分析,定义 领域分析是在特定应用领域寻找最优复用,以公共对象、类、子集合和框架等形式进行标识、分析和规约。 目标 是获得领域分析模型,领域分析的输入和输出,建造可复用构件,创建领域构件的设计框架 标准数据 标准接口协议 程序模板,构件模型,建立可复用构件库,三种分类模式 枚举分类 门面分类 属性-值分类,基于构件的开发,构件集成模型 应用系统工程,面向对象与软件复用,OO方法对软件复用的支持 复用技术对OO方法的支持,小结,软件复用是在软件开发中避免

19、重复劳动的解决方案。 通过软件复用,可以提高软件开发的效率和质量。软件复用研究被视为解决软件危机,提高软件生产效率和质量的现实可行的途径。,第十一章 软件维护,软件维护的种类 软件可维护性 软件维护的实施 软件维护的管理 软件再工程,软件维护的种类,完善性维护(perfective maintenance) 适应性维护(adaptive maintenance) 纠错性维护(corrective maintenance) 预防性维护(preventive maintenance),软件可维护性 (maintainability),影响可维护性的软件属性 可理解性(understandabili

20、ty) 可修改性(modifiability) 可测试性(testability) 对可维护性的定量度量 提高可维护性的途径 提供完整和一致的文档 采用现代化的开发方法,软件维护的实施,不严重 维护人员 纠错 严重 名单 测试 * 已修改 适应 维护人 * 的软件 员名单 已修改 完善 高 的配置 批准交付 低 用户的配置 开发项目表,纠错项目表,维护的副作用,修改编码的副作用 修改数据的副作用 修改文档的副作用,软件维护的管理,维护的机构与人员 维护时期的配置管理 配置管理数据库 版本控制 变动控制 维护管理文档 维护日志 维护申请摘要报告和维护趋势图 维护费用的估算,软件再工程,逆向工程,重构代码,提取抽象,求精简化,“脏的”源代码,干净的源代码,初始的设计说明,最终的设计说明,处理,界面,数据库,软件重构,代码重构 应用最新的设计和实现技术 修改老系统的代码 提高可维护性 数据重构 不改变系统结构,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1