面向对象的设计课件_第1页
面向对象的设计课件_第2页
面向对象的设计课件_第3页
面向对象的设计课件_第4页
面向对象的设计课件_第5页
已阅读5页,还剩171页未读 继续免费阅读

下载本文档

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

文档简介

第六章面向对象的设计面向对象的设计模型系统设计对象设计领域对象设计第六章面向对象的设计面向对象的设计模型1面向对象设计的任务面向对象设计的任务

系统设计

系统整体结构的设计

对象设计

对OOA模型中类/对象模型的具体化和细化

消息设计

从对象-关系模型,设计出消息模型

设计模型复审面向对象设计的任务面向对象设计的任务2面向对象设计责任设计消息设计类及对象设计子系统设计属性、操作、协作者对象-行为模型对象-关系模型类/对象模型使用实例面向对象设计责任设计消息设计类及对象设计子系统设计属性、操作3系统设计过程⑴

划分子系统;⑵

确定需要并发运行的子系统并为它们分配处理器;⑶

描述子系统之间的通信;⑷

确定系统资源的管理和控制;⑸

确定人机交互构件;⑹选择实现数据管理和任务管理的基本策略。

系统设计过程⑴划分子系统;4四种主要子系统问题域子系统人机交互子系统任务管理子系统数据管理子系统四种主要子系统问题域子系统5划分子系统划分原则模块化、功能独立、信息隐藏同一个子系统的类拥有共同特性同一个子系统的类具有共同目的同一个子系统的类提供相似服务同一个子系统的类间相对高耦合子系统标准有明确的借口,与其他子系统通信一般类只和子系统内部的其它类协作划分子系统划分原则6处理并发操作并发的对象(子系统)同时异步作用于同一事件处理将并发子系统分配到不同处理器将并发子系统分配到同一处理器系统提供同步控制处理并发操作并发的对象(子系统)7描述子系统间的通信子系统协作模型客户/服务器端对端请求客户子系统contract服务器子系统peersubsystempeersubsystem请求请求描述子系统间的通信子系统协作模型请求客户子系统contrac8人机交互设计分类分析用户特点,设计不同界面增加用户界面专用的类和对象利用快速原型演示,改进界面设计人机交互设计分类分析用户特点,设计不同界面9任务管理设计策略确定任务的特征定义一个协调者任务和与之关联的对象集成其它任务和协调者步骤识别由事件驱动和时间驱动的任务识别关键性任务、任务优先级和任务管理类定义任务必要时扩充有关任务的类和对象任务管理设计策略10数据管理设计解决对象数据的存储和检索数据管理设计定义数据格式与所使用的数据存储管理模式相关设计相应的操作说明对象及所属类和对象如何存储自己数据管理设计解决对象数据的存储和检索11对象设计

设计模型对象数据结构算法消息传递控制分析模型类属性方法关系行为对象设计设计模型对象分析模型类12对象描述对象描述协议描述:一组消息和对消息的注释

实现描述:对对象接收到某个消息后所执行的操作的实现细节的描述

算法设计

程序构件与接口

对象间的接口和对象的整体结构

对象描述对象描述13领域对象的设计设计目的——支持软件复用设计内容调整需求复用已有的组件引入父类,分组管理领域类添加一般化类以建立协议调整OOA模型设计复审设计模板领域对象的设计设计目的——支持软件复用14第七章统一建模语言UMLUML简介静态建模动态建模物理架构建模RUP第七章统一建模语言UMLUML简介15UMLUnifiedModelingLanguage近10年来OOSE最重要的成果贡献者:GradyBooch,IvarJacobson,JinRumbaugh中文网站http://www.UMLUnifiedModelingLanguage16UML的组成UML的模型元素表示模型中的某个概念表示模型元素之间的关系UML的元模型结构元元模型层元模型层模型层用户模型层UML模型UML的组成UML的模型元素17UML模型图静态图动态图视图用例视图逻辑视图并发视图构件视图部署视图UML模型图18UML的特点统一标准面向对象表达能力强大可视化UML的特点统一标准19UML的应用用于描述系统开发的不同类型于不同阶段从需求分析到软件设计到软件测试及维护可视化问题描述,帮助理解问题帮助建立各阶段的文档获取和交流有关应用问题求解的知识辅助构建系统UML的应用用于描述系统开发的不同类型于不同阶段20静态建模用例模型用例图表示从最终用户的角度描述系统功能类和对象模型类图和对象图表示静态建模用例模型21类图ClassDiagram学生姓名:string学号:string书书名:string价格:real 1 购买

0..* 属于

类图ClassDiagram学生姓名:string书书名:22对象图ObjectDiagram王平:学生姓名:王平学号:020106英语:书书名:英语价格:26.5数学:书书名:数学价格:21.8对象图ObjectDiagram王平:学生姓名:王平英语:23对象间关系关联关系

(Association)

聚集关系(Aggregation)

泛化关系(Generalization)

依赖关系(Dependency)

细化关系

(Refinement)对象间关系关联关系(Association)24包图子系统A子系统D子系统B子系统C子系统E子系统F包图子系统A子系统D子系统B子系统C子系统E子系统F25动态建模状态图(StateDiagram)时序图(SequenceDiagram)协作图(CollaborationDiagram)活动图(ActivityDiagram)动态建模状态图(StateDiagram)26消息同步消息异步消息简单消息消息同步消息异步消息简单消息27状态图StateDiagram超时到达上楼上楼到达上楼到达在底楼向上移动向底楼移动向下移动空闲状态图StateDiagram超时到达上楼上楼到达上楼到达28[打印机就绪]打印文件时序图(SequenceDiagram)[打印机忙]保存文件打印文件打印文件计算机打印服务器打印队列计算机[打印机就绪]时序图(SequenceDiagram)[打29协作图(CollaborationDiagram)[打印机忙]保存文件[打印机就绪]打印文件打印文件计算机打印队列打印服务器打印机协作图(CollaborationDiagram)[打印机30活动图ActivityDiagramDiskfreeDiskfull显示磁盘满显示在打印删去显示信息建立打印文件Win.printAll()^printer.print()活动图ActivityDiagramDiskfreeDi31物理架构建模逻辑架构和物理架构逻辑架构物理架构构件图配置图物理架构建模逻辑架构和物理架构32RUP—基于UML的统一建模过程RUP—基于UML的统一建模过程33第八章编码和语言选择

编码的目的编码的风格编码使用的语言第八章编码和语言选择编码的目的34编码的目的

编码模块的过程性描述一一一>源程序(不可执行的)(可执行的)编码的过程熟悉所选语言的功能和程序开发环境

仔细阅读设计文档详细设计

弄清要编码的模块的外部接口与内部过程

编码的目的编码35编码的风格追求“聪明”和“技巧”---〉提倡“简明”和“直接”

使用标准的控制结构

清晰的前提下求取效率

.Makeitrightbeforeyoumakeitfaster..Makeitclearbeforeyoumakeitfaster..Keepitrightwhenyoumakeitfaster.(求快不忘保持程序正确).Keepitsimpletomakeitfaster.(保持程序简单以求快).don’tsacrificeclarityfor“efficiency”.(书写清楚,不要为“效率”牺牲清楚)编码的风格追求“聪明”和“技巧”---〉提倡“简明”和“直接36源程序的文档化

(codedocumentation)有意义的变量名称适当的注释标准的书写格式——用分层缩进的写法显示嵌套结构的层次;——在注释段的周围加上边框;——在注释段与程序段、以及不同程序段之间插入空行;——每行只写一条语句;——书写表达式时,适当使用空格或圆括号等作隔离符;

源程序的文档化(codedocumentation)有意37程序设计语言的发展面向机器的语言高级语言(第3代)甚高级语言机器语言(第1代)汇编语言(第2代)结构语言基础语言面向对象语言第4代语言程序设计语言的发展面向机高级语言甚高级机器语言汇编语言结构基38语言的选择选择编码语言的标准

应用领域

算法与计算复杂性

数据结构的复杂性

效率的考虑

语言的选择选择编码语言的标准39适用各类应用领域的语言

年代应用领域主要语言其他语言20世纪60年代商业COBOLAssembler科学计算FORTRANALGOL、BASIC、APL系统AssemblerForth人工智能LISPSNOBOL

现代商业COBOL、C++、Java、电子表格C、PL/1科学计算FORTRAN、C、C++JavaBASIC系统C、C++、JavaAda、Modula人工智能LISP、Prolog

适用各类应用领域的语言年代应用领域主要语言其他语言40第九章软件测试

测试的基本概念

黑盒测试

白盒测试

测试用例设计

多模块程序的测试策略

面向对象系统的测试

第九章软件测试测试的基本概念41测试的基本概念

测试(testing)的目的与任务

目的:发现程序的错误

任务:通过执行程序,暴露潜在的错误

纠错(debugging)的目的与任务

目的:定位和纠正错误

任务:消除软件故障,保证程序的可靠运行

测试的基本概念测试(testing)的目的与任务42测试的特性

挑剔性

抱着为证明程序有错的目的去测试

复杂性

设计合适的测试用例

不彻底性

Dijkstra一句名言:“程序测试只能证明错误的存在,但不能证明错误不存在”

经济性测试的特性挑剔性43测试的种类

静态分析(不执行程序)静态分析器代码复审(CodeReview)动态分析(执行程序)黑盒测试测试程序功能白盒测试测试程序结构测试的种类静态分析(不执行程序)44测试的文档

测试计划

测试项目的名称各项测试的目的、步骤和进度测试用例的设计

测试报告测试项目名称实测结果与期望结果的比较发现的问题测试达到的效果

测试的文档测试计划45黑盒测试

等价分类法(equivalencepartitioning)把输入数据的可能值划分为若干等价类

有效等价类和无效等价类每一无效等价类至少需要一个测试用例

例子某工厂公开招工,规定报名者年龄应在16周岁至35周岁之间(到2002年3月30日止)即出生年月不在上述范围内,将拒绝接受,并显示“年龄不合格”等出错信息。

黑盒测试等价分类法(equivalencepartiti46“出生年月”的等价分类

输入数据有效等价类无效等价类出生年月①6位数字字符②有非数字字符③少于6个数字符④多于6个数字符对应数值⑤在196702—198603之间⑥<196702⑦>198603月份对应数值⑧在1—12之间⑨等于“0”⑩>12“出生年月”的等价分类输入数据有效等价类无效等价类出生年月47黑盒测试边界值分析法(boundaryvalueanalysis)

使被测程序在边界值及其附近运行,从而更有效地暴露程序中潜藏的错误

错误猜测法(errorguessing)

猜测被测程序在哪些地方容易出错

针对可能的薄弱环节来设计测试用例

黑盒测试边界值分析法(boundaryvalueanal48白盒测试

逻辑复盖测试法(logiccoveragetesting)

用流程图来设计测试用例

逻辑复盖测试的5种标准发现错误的能力

强语句覆盖每条语句至少执行一次判定覆盖每一判定的每个分支至少执行一次条件覆盖每一判定中的每个条件,分别按“真”、“假”至少各执行一次判定/条件覆盖同时满足判定复盖和条件复盖的要求条件组合覆盖求出判定中所有条件的各种可能组合值,每一可能的条件组合至少执行一次白盒测试逻辑复盖测试法(logiccoveragete49白盒测试路径测试法(pathtesting)着眼于程序执行路径的测试方法

程序图(programgraph)

点覆盖边覆盖路径覆盖白盒测试路径测试法(pathtesting)50测试用例设计黑盒测试用例设计三角形分类程序见教材p205白盒测试用例设计学生成绩查询程序见教材p208测试用例设计黑盒测试用例设计51软件的纠错纠错的策略试凑法跟踪法推理法常用的纠错技术插入打印语句设置断点掩蔽部分程序蛮力纠错技术软件的纠错纠错的策略52多模块程序的测试策略

测试的层次性

单元(模块)测试(unittesting)综合(集成)测试(integrationtesting)确认测试(validationtesting)系统测试(systemtesting)程序错误的类型

语法错误

结构性错误

功能性错误

接口错误

多模块程序的测试策略测试的层次性53

单元测试

目的

通过模块测试,使其代码达到模块说明书的需求

任务

(1)对模块代码进行编译,发现并纠正其语法错误;(2)进行静态分析,验证模块结构及其内部调用序列是否正确;(3)确定模块的测试策略,并据此设计一组测试用例和必要的测试软件;(4)用选定的测试用例对模块进行测试,直至满足测试终止标准为止;(5)编制单元测试报告。

单元测试目的54单元测试实施步骤编译静态分析器检查代码评审动态测试测试驱动模块测试桩模块单元测试实施步骤55集成测试

目的将经过单元测试的模块逐步组装成具有良好一致性的完整的程序任务制订集成测试实施策略确定集成测试的实施步骤,设计测试用例逐一地添加模块,进行测试集成测试目的56集成测试策略与步骤

自顶向下测试

先广后深实施步骤

先深后广实施步骤

由底向上测试

混合方式测试(sandwichtesting)

对上层模块采取自顶向下测试

对关键模块或子系统采取由底向上测试

集成测试策略与步骤57

确认测试

目的

确认组装好的程序是否满足(SRS)的要求任务有效性测试(黑盒测试)配置复审(confingurationreview)

验收测试—专用

alpha与beta测试—通用确认测试目的58系统测试

目的

软件安装到系统中以后,能否与系统的其余部分协调运行

任务测试是否与硬件协调运行测试是否和原来就有的其它软件协调运行

测试是否完成SRS对它的要求

系统测试目的59终止测试的标准规定测试策略和应达标准规定至少要查出的错误数量终止测试的标准规定测试策略和应达标准60面向对象系统的测试

OO软件的测试策略

OO软件测试用例设计

面向对象系统的测试OO软件的测试策略61OO软件的测试策略OO软件的单元测试

全面地测试类和对象所封装的属性和操纵这些属性的操作的整体

发现类的所有操作中存在的问题

与其他的类协同工作时可能出现的错误

OO软件的集成测试

基于黑盒方法的集成测试

基于线程的测试(thread-basedtesting)

基于使用(use-based)的测试

OO软件的测试策略OO软件的单元测试62OO软件的测试策略OO软件的确认测试和系统测试采用传统的黑盒法OOA阶段的用例所描述的用户交互进行测试导出OO系统测试的测试用例对象—行为模型时序图等模拟用户实际使用环境OO软件的测试策略OO软件的确认测试和系统测试63OO软件测试用例设计

(1)

每个测试用例都要有一个唯一的标识,并与被测试的一个或几个类相关联起来;(2)

每个测试用例都要陈述测试的目的;(3)

对每个测试用例要有相应的测试步骤,包括被测对象的特定状态、所使用的消息和操作、可能产生的错误、测试需要的外部环境等

OO软件测试用例设计(1)

每个测试用例都要有64OO概念对测试用例设计的影响

继承的成员函数需要测试

子类的测试用例可以参照父类

类测试用例设计

基于故障的测试用例设计基于用例的测试用例设计类间测试用例设计

类—关系模型

类—行为模型

OO概念对测试用例设计的影响继承的成员函数需要测试65第十章软件复用 软件复用的基本概念 领域工程基于构件的开发

面向对象与软件复用

小结

第十章软件复用 软件复用的基本概念66软件复用的基本概念

软件复用的定义

软件复用的基本概念软件复用的定义67软件复用的重要性

软件复用的目的是能更快、更好、成本更低地生产软件制品。一般地说,在软件开发中采用复用构件可以比从头开发这个软件更加容易。

软件复用的重要性软件复用的目的是能更快、更好、成本更低地生68软件复用的粒度

按照可复用的粒度,软件制品从小到大分为以下几类:源代码复用软件体系结构复用应用程序生成器领域特定的软件体系结构的复用软件复用的粒度按照可复用的粒度,软件制品从小到大分为以下几69领域工程所谓的“领域”,指的是一组具有相似或相近软件需求的应用系统所覆盖的功能区域。通过领域分析(domainanalysis)找出最优复用,对它们进行设计和构造,形成为可复用构件,进而建立大规模的软件构件仓库的过程,就是领域工程。领域工程所谓的“领域”,指的是一组具有相似或相近软件需求的应70横向复用和纵向复用

横向复用是指复用不同应用领域中的软件元素。纵向复用是指在一类具有较多公共性的应用领域之间进行软部品复用。领域分析用户需求软件开发与构件开发目标软件确认可复用构件库检索理解横向复用和纵向复用横向复用是指复用不同应用领域中的软件元素71领域分析

定义领域分析是在特定应用领域寻找最优复用,以公共对象、类、子集合和框架等形式进行标识、分析和规约。目标是获得领域分析模型

领域分析定义72领域分析的输入和输出

领域分析的输入和输出73建造可复用构件

创建领域构件的设计框架

标准数据

标准接口协议程序模板建造可复用构件创建领域构件的设计框架 74构件模型

构件模型75建立可复用构件库

三种分类模式

枚举分类

门面分类

属性-值分类

建立可复用构件库三种分类模式76基于构件的开发

构件集成模型应用系统工程基于构件的开发构件集成模型77面向对象与软件复用

OO方法对软件复用的支持复用技术对OO方法的支持面向对象与软件复用OO方法对软件复用的支持78小结软件复用是在软件开发中避免重复劳动的解决方案。通过软件复用,可以提高软件开发的效率和质量。软件复用研究被视为解决软件危机,提高软件生产效率和质量的现实可行的途径。小结软件复用是在软件开发中避免重复劳动的解决方案。79第十一章软件维护软件维护的种类

软件可维护性

软件维护的实施

软件维护的管理

软件再工程

第十一章软件维护软件维护的种类80软件维护的种类完善性维护(perfectivemaintenance)

适应性维护(adaptivemaintenance)纠错性维护(correctivemaintenance)预防性维护(preventivemaintenance)

软件维护的种类完善性维护(perfectivemainte81软件可维护性

(maintainability)

影响可维护性的软件属性

可理解性(understandability)

可修改性(modifiability)

可测试性(testability)对可维护性的定量度量提高可维护性的途径提供完整和一致的文档

采用现代化的开发方法

软件可维护性(maintainability)影响可维护82软件维护的实施不严重

⊕维护人员纠错严重名单测试*⊕已修改⊕适应维护人*的软件员名单已修改完善高的配置⊕批准交付低用户的配置

开发项目表

严重性评价错误分析优先度评价维护过程配置复审问题分析区分类型纠错项目表软件维护的实施83维护的副作用

修改编码的副作用

修改数据的副作用

修改文档的副作用

维护的副作用修改编码的副作用84软件维护的管理

维护的机构与人员

维护时期的配置管理

配置管理数据库

版本控制

变动控制维护管理文档

维护日志

维护申请摘要报告和维护趋势图

维护费用的估算

软件维护的管理维护的机构与人员85软件再工程

正向工程信息库分析文档重构逆向工程代码重构数据重构软件再工程正向工程信息库分析文档重构逆向工程代码重构数据重86逆向工程重构代码提取抽象求精简化“脏的”源代码干净的源代码初始的设计说明最终的设计说明处理界面数据库逆向工程重构代码提取抽象求精简化“脏的”源代码干净的源代码初87软件重构代码重构应用最新的设计和实现技术修改老系统的代码提高可维护性数据重构不改变系统结构软件重构代码重构88第六章面向对象的设计面向对象的设计模型系统设计对象设计领域对象设计第六章面向对象的设计面向对象的设计模型89面向对象设计的任务面向对象设计的任务

系统设计

系统整体结构的设计

对象设计

对OOA模型中类/对象模型的具体化和细化

消息设计

从对象-关系模型,设计出消息模型

设计模型复审面向对象设计的任务面向对象设计的任务90面向对象设计责任设计消息设计类及对象设计子系统设计属性、操作、协作者对象-行为模型对象-关系模型类/对象模型使用实例面向对象设计责任设计消息设计类及对象设计子系统设计属性、操作91系统设计过程⑴

划分子系统;⑵

确定需要并发运行的子系统并为它们分配处理器;⑶

描述子系统之间的通信;⑷

确定系统资源的管理和控制;⑸

确定人机交互构件;⑹选择实现数据管理和任务管理的基本策略。

系统设计过程⑴划分子系统;92四种主要子系统问题域子系统人机交互子系统任务管理子系统数据管理子系统四种主要子系统问题域子系统93划分子系统划分原则模块化、功能独立、信息隐藏同一个子系统的类拥有共同特性同一个子系统的类具有共同目的同一个子系统的类提供相似服务同一个子系统的类间相对高耦合子系统标准有明确的借口,与其他子系统通信一般类只和子系统内部的其它类协作划分子系统划分原则94处理并发操作并发的对象(子系统)同时异步作用于同一事件处理将并发子系统分配到不同处理器将并发子系统分配到同一处理器系统提供同步控制处理并发操作并发的对象(子系统)95描述子系统间的通信子系统协作模型客户/服务器端对端请求客户子系统contract服务器子系统peersubsystempeersubsystem请求请求描述子系统间的通信子系统协作模型请求客户子系统contrac96人机交互设计分类分析用户特点,设计不同界面增加用户界面专用的类和对象利用快速原型演示,改进界面设计人机交互设计分类分析用户特点,设计不同界面97任务管理设计策略确定任务的特征定义一个协调者任务和与之关联的对象集成其它任务和协调者步骤识别由事件驱动和时间驱动的任务识别关键性任务、任务优先级和任务管理类定义任务必要时扩充有关任务的类和对象任务管理设计策略98数据管理设计解决对象数据的存储和检索数据管理设计定义数据格式与所使用的数据存储管理模式相关设计相应的操作说明对象及所属类和对象如何存储自己数据管理设计解决对象数据的存储和检索99对象设计

设计模型对象数据结构算法消息传递控制分析模型类属性方法关系行为对象设计设计模型对象分析模型类100对象描述对象描述协议描述:一组消息和对消息的注释

实现描述:对对象接收到某个消息后所执行的操作的实现细节的描述

算法设计

程序构件与接口

对象间的接口和对象的整体结构

对象描述对象描述101领域对象的设计设计目的——支持软件复用设计内容调整需求复用已有的组件引入父类,分组管理领域类添加一般化类以建立协议调整OOA模型设计复审设计模板领域对象的设计设计目的——支持软件复用102第七章统一建模语言UMLUML简介静态建模动态建模物理架构建模RUP第七章统一建模语言UMLUML简介103UMLUnifiedModelingLanguage近10年来OOSE最重要的成果贡献者:GradyBooch,IvarJacobson,JinRumbaugh中文网站http://www.UMLUnifiedModelingLanguage104UML的组成UML的模型元素表示模型中的某个概念表示模型元素之间的关系UML的元模型结构元元模型层元模型层模型层用户模型层UML模型UML的组成UML的模型元素105UML模型图静态图动态图视图用例视图逻辑视图并发视图构件视图部署视图UML模型图106UML的特点统一标准面向对象表达能力强大可视化UML的特点统一标准107UML的应用用于描述系统开发的不同类型于不同阶段从需求分析到软件设计到软件测试及维护可视化问题描述,帮助理解问题帮助建立各阶段的文档获取和交流有关应用问题求解的知识辅助构建系统UML的应用用于描述系统开发的不同类型于不同阶段108静态建模用例模型用例图表示从最终用户的角度描述系统功能类和对象模型类图和对象图表示静态建模用例模型109类图ClassDiagram学生姓名:string学号:string书书名:string价格:real 1 购买

0..* 属于

类图ClassDiagram学生姓名:string书书名:110对象图ObjectDiagram王平:学生姓名:王平学号:020106英语:书书名:英语价格:26.5数学:书书名:数学价格:21.8对象图ObjectDiagram王平:学生姓名:王平英语:111对象间关系关联关系

(Association)

聚集关系(Aggregation)

泛化关系(Generalization)

依赖关系(Dependency)

细化关系

(Refinement)对象间关系关联关系(Association)112包图子系统A子系统D子系统B子系统C子系统E子系统F包图子系统A子系统D子系统B子系统C子系统E子系统F113动态建模状态图(StateDiagram)时序图(SequenceDiagram)协作图(CollaborationDiagram)活动图(ActivityDiagram)动态建模状态图(StateDiagram)114消息同步消息异步消息简单消息消息同步消息异步消息简单消息115状态图StateDiagram超时到达上楼上楼到达上楼到达在底楼向上移动向底楼移动向下移动空闲状态图StateDiagram超时到达上楼上楼到达上楼到达116[打印机就绪]打印文件时序图(SequenceDiagram)[打印机忙]保存文件打印文件打印文件计算机打印服务器打印队列计算机[打印机就绪]时序图(SequenceDiagram)[打117协作图(CollaborationDiagram)[打印机忙]保存文件[打印机就绪]打印文件打印文件计算机打印队列打印服务器打印机协作图(CollaborationDiagram)[打印机118活动图ActivityDiagramDiskfreeDiskfull显示磁盘满显示在打印删去显示信息建立打印文件Win.printAll()^printer.print()活动图ActivityDiagramDiskfreeDi119物理架构建模逻辑架构和物理架构逻辑架构物理架构构件图配置图物理架构建模逻辑架构和物理架构120RUP—基于UML的统一建模过程RUP—基于UML的统一建模过程121第八章编码和语言选择

编码的目的编码的风格编码使用的语言第八章编码和语言选择编码的目的122编码的目的

编码模块的过程性描述一一一>源程序(不可执行的)(可执行的)编码的过程熟悉所选语言的功能和程序开发环境

仔细阅读设计文档详细设计

弄清要编码的模块的外部接口与内部过程

编码的目的编码123编码的风格追求“聪明”和“技巧”---〉提倡“简明”和“直接”

使用标准的控制结构

清晰的前提下求取效率

.Makeitrightbeforeyoumakeitfaster..Makeitclearbeforeyoumakeitfaster..Keepitrightwhenyoumakeitfaster.(求快不忘保持程序正确).Keepitsimpletomakeitfaster.(保持程序简单以求快).don’tsacrificeclarityfor“efficiency”.(书写清楚,不要为“效率”牺牲清楚)编码的风格追求“聪明”和“技巧”---〉提倡“简明”和“直接124源程序的文档化

(codedocumentation)有意义的变量名称适当的注释标准的书写格式——用分层缩进的写法显示嵌套结构的层次;——在注释段的周围加上边框;——在注释段与程序段、以及不同程序段之间插入空行;——每行只写一条语句;——书写表达式时,适当使用空格或圆括号等作隔离符;

源程序的文档化(codedocumentation)有意125程序设计语言的发展面向机器的语言高级语言(第3代)甚高级语言机器语言(第1代)汇编语言(第2代)结构语言基础语言面向对象语言第4代语言程序设计语言的发展面向机高级语言甚高级机器语言汇编语言结构基126语言的选择选择编码语言的标准

应用领域

算法与计算复杂性

数据结构的复杂性

效率的考虑

语言的选择选择编码语言的标准127适用各类应用领域的语言

年代应用领域主要语言其他语言20世纪60年代商业COBOLAssembler科学计算FORTRANALGOL、BASIC、APL系统AssemblerForth人工智能LISPSNOBOL

现代商业COBOL、C++、Java、电子表格C、PL/1科学计算FORTRAN、C、C++JavaBASIC系统C、C++、JavaAda、Modula人工智能LISP、Prolog

适用各类应用领域的语言年代应用领域主要语言其他语言128第九章软件测试

测试的基本概念

黑盒测试

白盒测试

测试用例设计

多模块程序的测试策略

面向对象系统的测试

第九章软件测试测试的基本概念129测试的基本概念

测试(testing)的目的与任务

目的:发现程序的错误

任务:通过执行程序,暴露潜在的错误

纠错(debugging)的目的与任务

目的:定位和纠正错误

任务:消除软件故障,保证程序的可靠运行

测试的基本概念测试(testing)的目的与任务130测试的特性

挑剔性

抱着为证明程序有错的目的去测试

复杂性

设计合适的测试用例

不彻底性

Dijkstra一句名言:“程序测试只能证明错误的存在,但不能证明错误不存在”

经济性测试的特性挑剔性131测试的种类

静态分析(不执行程序)静态分析器代码复审(CodeReview)动态分析(执行程序)黑盒测试测试程序功能白盒测试测试程序结构测试的种类静态分析(不执行程序)132测试的文档

测试计划

测试项目的名称各项测试的目的、步骤和进度测试用例的设计

测试报告测试项目名称实测结果与期望结果的比较发现的问题测试达到的效果

测试的文档测试计划133黑盒测试

等价分类法(equivalencepartitioning)把输入数据的可能值划分为若干等价类

有效等价类和无效等价类每一无效等价类至少需要一个测试用例

例子某工厂公开招工,规定报名者年龄应在16周岁至35周岁之间(到2002年3月30日止)即出生年月不在上述范围内,将拒绝接受,并显示“年龄不合格”等出错信息。

黑盒测试等价分类法(equivalencepartiti134“出生年月”的等价分类

输入数据有效等价类无效等价类出生年月①6位数字字符②有非数字字符③少于6个数字符④多于6个数字符对应数值⑤在196702—198603之间⑥<196702⑦>198603月份对应数值⑧在1—12之间⑨等于“0”⑩>12“出生年月”的等价分类输入数据有效等价类无效等价类出生年月135黑盒测试边界值分析法(boundaryvalueanalysis)

使被测程序在边界值及其附近运行,从而更有效地暴露程序中潜藏的错误

错误猜测法(errorguessing)

猜测被测程序在哪些地方容易出错

针对可能的薄弱环节来设计测试用例

黑盒测试边界值分析法(boundaryvalueanal136白盒测试

逻辑复盖测试法(logiccoveragetesting)

用流程图来设计测试用例

逻辑复盖测试的5种标准发现错误的能力

强语句覆盖每条语句至少执行一次判定覆盖每一判定的每个分支至少执行一次条件覆盖每一判定中的每个条件,分别按“真”、“假”至少各执行一次判定/条件覆盖同时满足判定复盖和条件复盖的要求条件组合覆盖求出判定中所有条件的各种可能组合值,每一可能的条件组合至少执行一次白盒测试逻辑复盖测试法(logiccoveragete137白盒测试路径测试法(pathtesting)着眼于程序执行路径的测试方法

程序图(programgraph)

点覆盖边覆盖路径覆盖白盒测试路径测试法(pathtesting)138测试用例设计黑盒测试用例设计三角形分类程序见教材p205白盒测试用例设计学生成绩查询程序见教材p208测试用例设计黑盒测试用例设计139软件的纠错纠错的策略试凑法跟踪法推理法常用的纠错技术插入打印语句设置断点掩蔽部分程序蛮力纠错技术软件的纠错纠错的策略140多模块程序的测试策略

测试的层次性

单元(模块)测试(unittesting)综合(集成)测试(integrationtesting)确认测试(validationtesting)系统测试(systemtesting)程序错误的类型

语法错误

结构性错误

功能性错误

接口错误

多模块程序的测试策略测试的层次性141

单元测试

目的

通过模块测试,使其代码达到模块说明书的需求

任务

(1)对模块代码进行编译,发现并纠正其语法错误;(2)进行静态分析,验证模块结构及其内部调用序列是否正确;(3)确定模块的测试策略,并据此设计一组测试用例和必要的测试软件;(4)用选定的测试用例对模块进行测试,直至满足测试终止标准为止;(5)编制单元测试报告。

单元测试目的142单元测试实施步骤编译静态分析器检查代码评审动态测试测试驱动模块测试桩模块单元测试实施步骤143集成测试

目的将经过单元测试的模块逐步组装成具有良好一致性的完整的程序任务制订集成测试实施策略确定集成测试的实施步骤,设计测试用例逐一地添加模块,进行测试集成测试目的144集成测试策略与步骤

自顶向下测试

先广后深实施步骤

先深后广实施步骤

由底向上测试

混合方式测试(sandwichtesting)

对上层模块采取自顶向下测试

对关键模块或子系统采取由底向上测试

集成测试策略与步骤145

确认测试

目的

确认组装好的程序是否满足(SRS)的要求任务有效性测试(黑盒测试)配置复审(confingurationreview)

验收测试—专用

alpha与beta测试—通用确认测试目的146系统测试

目的

软件安装到系统中以后,能否与系统的其余部分协调运行

任务测试是否与硬件协调运行测试是否和原来就有的其它软件协调运行

测试是否完成SRS对它的要求

系统测试目的147终止测试的标准规定测试策略和应达标准规定至少要查出的错误数量终止测试的标准规定测试策略和应达标准148面向对象系统的测试

OO软件的测试策略

OO软件测试用例设计

面向对象系统的测试OO软件的测试策略149OO软件的测试策略OO软件的单元测试

全面地测试类和对象所封装的属性和操纵这些属性的操作的整体

发现类的所有操作中存在的问题

与其他的类协同工作时可能出现的错误

OO软件的集成测试

基于黑盒方法的集成测试

基于线程的测试(thread-basedtesting)

基于使用(use-based)的测试

OO软件的测试策略OO软件的单元测试150OO软件的测试策略OO软件的确认测试和系统测试采用传统的黑盒法OOA阶段的用例所描述的用户交互进行测试导出OO系统测试的测试用例对象—行为模型时序图等模拟用户实际使用环境OO软件的测试策略OO软件的确认测试和系统测试151OO软件测试用例设计

(1)

每个测试用例都要有一个唯一的标识,并与被测试的一个或几个类相关联起来;(2)

每个测试用例都要陈述测试的目的;(3)

对每个测试用例要有相应的测试步骤,包括被测对象的特定状态、所使用的消息和操作、可能产生的错误、测试需要的外部环境等

OO软件测试用例设计(1)

每个测试用例都要有152OO概念对测试用例设计的影响

继承的成员函数需要测试

子类的测试用例可以参照父类

类测试用例设计

基于故障的测试用例设计基于用例的测试用例设计类间测试用例设计

类—关系模型

类—行为模型

OO概念对测试用例设计的影响继承的成员函数需要测试153第十章软件复用 软件复用的基本概念 领域工程基于构件的开发

面向对象与软件复用

小结

第十章软件复用 软件复用的基本概念154软件复用的基本概念

软件复用的定义

软件复用的基本概念软件复用的定义155软件复用的重要性

软件复用的目的是能更快、更好、成本更低地生产软件制品。一般地说,在软件开发中采用复用构件可以比从头开发这个软件更加容易。

软件复用的重要性软件复用的目的是能更快、更好、成本更低地生156软件复用的粒度

按照可复用的粒度,软件制品从小到大分为以下几类:源代码复用软件体系结构复用应用程序生成器领域特定的软件体系结构的复用软件复用的粒度按照可复用的粒度,软件制品从小到大分为以下几157领域工程所谓的“领域”,指的是一组具有相似或相近软件需求的应用系统所覆盖的功能区域。通过领域分析(domainanalysis)找出最优复用,对它们进行设计和构造,形成为可复用构件,进而建立大规模的软件构件仓库的过程,就是领域工程。领域工程所谓的“领域”,指的是一组具有相似或相近软件需求的

温馨提示

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

评论

0/150

提交评论