第六章 面向对象的设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
由底向上测试 混合方式测试(sandwich testing)
对上层模块采取自顶向下测试 对关键模块或子系统采取由底向上测试
确认测试
目的
确认组装好的程序是否满足(SRS)的要求
任务
有效性测试(黑盒测试) 配置复审(confinguration review)
类和对象模型
类图和对象图表示
类图Class Diagram
学生 姓名:string 学号:string 书 书名:string 价格:real
1
购买 0..* 属于
对象图Object Diagram
英语:书 书名:英语 价格:26.5 王平:学生 姓名:王平 学号:020106 数学:书 书名:数学 价格:21.8
单元测试
实施步骤
编译 静态分析器检查 代码评审 动态测试
测试驱动模块 测试桩模块
集成测试
目的
将经过单元测试的模块逐步组装成具有良好 一致性的完整的程序
任务
制订集成测试实施策略 确定集成测试的实施步骤,设计测试用例 逐一地添加模块,进行测试
集成测试
策略与步骤
自顶向下测试
先广后深实施步骤 先深后广实施步骤
逻辑架构 物理架构
构件图 配置图
RUP—基于UML的统一建模过程
第八章 编码和语言选择
编码的目的 编码的风格 编码使用的语言
编码的目的
编码 模块的过程性描述一一一>源程序 (不可执行的) (可执行的) 编码的过程
熟悉所选语言的功能和程序开发环境 仔细阅读设计文档详细设计 弄清要编码的模块的外部接口与内部过程
程序设计语言的发展
面向机 器的语言 高级语言 (第3代) 甚高级 语言
机器语言 (第1代)
汇编语言 (第2代)
基础 语言
结构 语言
面向 对象 语言
第4代 语 言
语言的选择
选择编码语言的标准
应用领域 算法与计算复杂性 数据结构的复杂性 效率的考虑
适用各类应用领域的语言
年代 20 世 纪 60 年 代 应用领域 商业 科学计算 系统 人工智能 商业 现代 科学计算 系统 人工智能 主要语言 COBOL FORTRAN Assembler LISP 其他语言 Assembler ALGOL , BASIC , APL Forth SNOBOL
说明对象及所属类和对象如何存储自己
对象设计
分析模型 类 属性 方法 关系 行为 设计模型 对象 数据结构 算法 消息传递 控制
对象描述
对象描述
协议描述:一组消息和对消息的注释 实现描述:对对象接收到某个消息后所执行 的操作的实现细节的描述
算法设计 程序构件与接口
对象间的接口和对象的整体结构
领域对象的设计
常用的纠错技术
插入打印语句 设置断点 掩蔽部分程序 蛮力纠错技术
多模块程序的测试策略
测试的层次性
单元(模块)测试(unit testing) 综合(集成)测试(integration testing) 确认测试(validation testing) 系统测试(system testing)
程序错误的类型
http://www. umlchina.com http://www.uml.com.cn
UML的组成
UML的模型元素
表示模型中的某个概念 表示模型元素之间的关系
UML的元模型结构
元元模型层 元模型层 模型层 用户模型层
UML模型
UML模型
图
静态图 动态图
视图
用例视图 逻辑视图 并发视图 构件视图 部署视图
消息
同步消息 异步消息 简单消息
状态图State Diagram
上楼 在底楼 到达 向上移动
到达 到达 向下移动 上楼 超时 空闲
上楼
向底楼移动
时序图(Sequence Diagram)
打印文件 计算机 打印服务器 计算机 打印队列 [打印机就绪] 打印文件 [打印机忙] 保存文件
打印文件
协作图(Collaboration Diagram)
等价分类法(equivalence partitioning) 等价分类法
把输入数据的可能值划分为若干等价类 有效等价类和无效等价类 每一无效等价类至少需要一个测试用例
例子 某工厂公开招工,规定报名者年龄应在16周岁至 35周岁之间(到2002年3月30日止)即出生年月不在 上述范围内,将拒绝接受,并显示"年龄不合格" 等出错信息.
对象间关系
关联关系 (Association) 聚集关系(Aggregation) 泛化关系(Generalization) 依赖关系(Dependency) 细化关系 (Refinement)
包图
子系统A 子系统D
子系统C 子系统B
子系统E
子系统F
动态建模
状态图(State Diagram) 时序图(Sequence Diagram) 协作图(Collaboration Diagram) 活动图(Activity Diagram)
第六章 面向对象的设计
面向对象的设计模型 系统设计 对象设计 领域对象设计
面向对象设计的任务
面向对象设计的任务
系统设计
系统整体结构的设计
对象设计
对OOA模型中类/对象模型的具体化和细化
消息设计
从对象- 关系模型,设计出消息模型
设计模型复审
面向对象设计
责任设 计 类及对象设计 子系统设计 消息设计 属性,操作, 协作者
COBOL , C++ , Java , C,PL/1 电子表格 BASIC FORTRAN,C,C++ Java C,C++,Java Ada,Modula LISP,Prolog
第九章 软件测试
测试的基本概念 黑盒测试 白盒测试 测试用例设计 多模块程序的测试策略 面向对象系统的测试
测试的基本概念
强
白盒测试
路径测试法(path 路径测试法(path testing)
着眼于程序执行路径的测试方法 程序图(program graph) 点覆盖 边覆盖 路径覆盖
测试用例设计
黑盒测试用例设计
三角形分类程序 见教材p205
白盒测试用例设计
学生成绩查询程序 见教材p208
软件的纠错
纠错的策略
试凑法 跟踪法 推理法
"出生年月"的等价分类
输入数据 有效等价类 无效等价类 ②有非数字字符 ③少于6个数字符 ④多于6个数字符 ⑥<196702 ⑦>198603 ⑨等于"0" ⑩>12
出生年月
①6位数字字符
对应数值
⑤在196702—198603 之间
月份对应数 值
⑧在1—12之间
黑盒测试
边界值分析法(boundary 边界值分析法(boundary value analysis)
设计目的——支持软件复用 设计内容
调整需求 复用已有的组件 引入父类,分组管理领域类 添加一般化类以建立协议 调整OOA模型 设计复审
设计模板
第七章 统一建模语言UML
UML简介 静态建模 动态建模 物理架构建模 RUP
UML
Unified Modeling Language 近10年来OOSE最重要的成果 贡献者:Grady Booch, Ivar Jacobson, Jin Rumbaugh 中文网站
划分子系统
划分原则
模块化,功能独立,信息隐藏 同一个子系统的类拥有共同特性 同一个子系统的类具有共同目的 同一个子系统的类提供相似服务 同一个子系统的类间相对高耦合
子系统标准
有明确的借口,与其他子系统通信 一般类只和子系统内部的其它类协作
处理并发操作
并发的对象(子系统)
同时 异步 作用于同一事件
测试(testing)的目的与任务
目的:发现程序的错误 任务:通过执行程序,暴露潜在的错误
纠错(debugging)的目的与任务
目的:定位和纠正错误 任务:消除软件故障,保证程序的可靠运行
测试的特性
挑剔性
抱着为证明程序有错的目的去测试
复杂性
设计合适的测试用例
不彻底性
Dijkstra 一句名言:"程序测试只能证明错 误的存在,但不能证明错误不存在"
发 现 错 误 的 能 力 语句覆盖 判定覆盖 弱 条件覆盖 判定/条件 覆盖 条件组合 覆盖 每条语句至少执行一次 每一判定的每个分支至少执行一次 每一判定中的每个条件,分别按"真", "假"至少各执行一次 同时满足判定复盖和条件复盖的要求 求出判定中所有条件的各种可能组合值, 每一可能的条件组合至少执行一次
类/对 象 使用 模型 实例
对象关系模型
对Baidu Nhomakorabea-行为模 型
系统设计过程
⑴ 划分子系统; ⑵ 确定需要并发运行的子系统并为它们分配处理 器; ⑶ 描述子系统之间的通信; ⑷ 确定系统资源的管理和控制; ⑸ 确定人机交互构件;
⑹ 选择实现数据管理和任务管理的基本策略.
四种主要子系统
问题域子系统 人机交互子系统 任务管理子系统 数据管理子系统
经济性
测试的种类
静态分析(不执行程序)
静态分析器 代码复审(Code Review)
动态分析(执行程序)
黑盒测试
测试程序功能
白盒测试
测试程序结构
测试的文档
测试计划
测试项目的名称 各项测试的目的,步骤和进度 测试用例的设计
测试报告
测试项目名称 实测结果与期望结果的比较 发现的问题 测试达到的效果
黑盒测试
源程序的文档化
documentation) 有意义的变量名称 适当的注释 标准的书写格式
(code
——用分层缩进的写法显示嵌套结构的层次; ——在注释段的周围加上边框; ——在注释段与程序段,以及不同程序段之间插入 空行; ——每行只写一条语句; ——书写表达式时,适当使用空格或圆括号等作隔 离符;
处理
将并发子系统分配到不同处理器 将并发子系统分配到同一处理器
系统提供同步控制
描述子系统间的通信
子系统协作模型
客户/服务器 端对端
客户 子系统 请求 服务器 子系统
请求 peer subsystem 请求
contract
peer subsystem
人机交互设计
分类分析用户特点,设计不同界面 增加用户界面专用的类和对象 利用快速原型演示,改进界面设计
语法错误 结构性错误 功能性错误 接口错误
单元测试
目的
通过模块测试,使其代码达到模块说明书的需求
任务
(1) 对模块代码进行编译,发现并纠正其语法错误; (2) 进行静态分析,验证模块结构及其内部调用序 列是否正确; (3) 确定模块的测试策略,并据此设计一组测试用 例和必要的测试软件; (4) 用选定的测试用例对模块进行测试,直至满足 测试终止标准为止; (5) 编制单元测试报告.
编码的风格
追求"聪明"和"技巧"---〉提倡"简明"和 "直接" 使用标准的控制结构 清晰的前提下求取效率
. 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. (保持程序简单以求快) . don't sacrifice clarity for "efficiency". (书写清楚,不要为"效率"牺牲清楚)
UML的特点
统一标准 面向对象 表达能力强大 可视化
UML的应用
用于描述系统开发的不同类型于不同阶 段
从需求分析到软件设计到软件测试及维护 可视化问题描述,帮助理解问题 帮助建立各阶段的文档 获取和交流有关应用问题求解的知识 辅助构建系统
静态建模
用例模型
用例图表示 从最终用户的角度描述系统功能
任务管理设计
策略
确定任务的特征 定义一个协调者任务和与之关联的对象 集成其它任务和协调者
步骤
识别由事件驱动和时间驱动的任务 识别关键性任务,任务优先级和任务管理类 定义任务 必要时扩充有关任务的类和对象
数据管理设计
解决对象数据的存储和检索 数据管理设计
定义数据格式
与所使用的数据存储管理模式相关
设计相应的操作
计算机 [打印机忙] 保存文件 打印文件 [打印机就绪] 打印文件 打印队列
打印服务器
打印机
活动图Activity Diagram
Win.printAll() Disk full 显示磁盘满
Disk free 显示在打印 建立打印文件
^printer.print()
删去显示信息
物理架构建模
逻辑架构和物理架构
使被测程序在边界值及其附近运行,从而更 有效地暴露程序中潜藏的错误
错误猜测法(error 错误猜测法(error guessing)
猜测被测程序在哪些地方容易出错 针对可能的薄弱环节来设计测试用例
白盒测试
逻辑复盖测试法(logic 逻辑复盖测试法(logic coverage testing)
用流程图来设计测试用例 逻辑复盖测试的5种标准