《西南科技大学软件工程复习重点.ppt》由会员分享,可在线阅读,更多相关《西南科技大学软件工程复习重点.ppt(120页珍藏版)》请在三一办公上搜索。
1、软件危机指的使软件开发和维护过程中遇到的一系列严重问题,包含两方面的问题:如何开发软件,怎样满足对软件的日益增长的需求如何维护数量不断膨胀的已有软件,软件工程的原理与方法,软件危机的形成:,软件工程的原理与方法,在运行中能提供所希望的功能和性能的指令集(即程序)。描述程序研制过程和方法使用的文档。,程序,软 件,可执行部分,不可执行部分,文档1,文档2,文档3,什么是软件?,软件工程的原理与方法,程序是用某种计算机语言规定的指令或语句编写的指令或语句的集合。,程序设计语言具有良好、严格语法和语义。,什么是程序?,软件工程的原理与方法,文档是记录软件开发活动和阶段性成果、理解软件所必需的阐述性资
2、料。,编写文档目的:促进对软件的开发,管理和维护;便于各种人员(用户,开发人员)的交流;,文档标准(国际ISO,国家GB,行业标准IEEE),需求分析文档 软件设计文挡.,什么是文档?,软件工程的原理与方法,1.1 GIS软件工程,一 GIS软件的主要特点,(5)数据共享和功能共享,不同格式空间数据之间转换,实现有缝的数据共享,程序是按既定算法,用某种计算机语言规定的指令或语句编写的指令或语句的集合。软件是程序再加上程序实现和维护程序时所必需的文档的总称。是程序和程序设计发展到规模化和商品化后所逐渐形成的概 念。工程是将理论和所学的知识应用于实践的科学。“软件工程”一词是1968年北大西洋公约
3、组织(NATO)在联邦德国召开的一次会议上首次提出的。它的中心思想是把软件当作一种工业产品,而不是某种个体或小作坊的神秘技巧,要求“采用工程化的原理与方法对软件进行计划、开发和维护”。,1.1 GIS软件工程,三 软件工程,1.1 GIS软件工程,软件工程是用科学知识和技术原理来定义,开发,维护软的一门学科。即:将用户的需求转化成有效的软件解决方案的一系列活动。,GIS软件工程就是在GIS软件的开发整个过程中,遵循一般软件开发的工程化原理和方法,并照顾到GIS软件开发的特殊规律和要求,对GIS软件从可行性研究,需求分析,总体设计,详细设计,软件编制,软件测试,直到软件维护的各个阶段进行工程化规
4、范的一门技术。,三 软件工程,1.2 软件生存周期模型,增量模型,智能模型,喷泉模型,螺旋模型,软件生存周期模型,软件开发的阶段:可行性分析,需求分析,总体设计,详细设计,编码,测试,维护。软件生存周期模型:描述软件开发过程中各种活动如何进行的模型。,1.2 软件生存周期模型,瀑布式模型:将软件生存周期各活动规定为依线性 顺序连接的若干阶段的模型。包含以下活动:软件需求分析设计代码生成测试维护,1.2 软件生存周期模型,定义时期,开发时期,维护时期,需求分析,验证,设计,验证,编码,验证,测试,验证,维护,验证,需求文档,说明文档,程序文档,维护文档,测试文档,1.2 软件生存周期模型,瀑布模
5、型的特点:,1.具有顺序性和依赖性,2.推迟实现的观点,3.质量保证的观点,文档驱动的模型,传统的瀑布模型 存在什么问题?,传统的瀑布模型过于理想化了,事实上,人在工作过程中不可能不犯错误。在设计阶段可能发生规格说明文档中的错误。而设计上的缺陷或错误可能在实现过程中显现 出来。在综合测试阶段将发现需求分析、设计或编码阶段的许多错误。用户必须有耐心。;,增量模型 融合了瀑布模型的基本成分和原型的迭代特征。采用随着日程时间的进展而交错的线性序列。,1.2 软件生存周期模型,1.2 软件生存周期模型,分析,分析,分析,分析,设计,设计,设计,设计,编码,编码,编码,编码,测试,测试,测试,测试,原型
6、,增量1,增量2,增量3,1.2 软件生存周期模型,增量模型融合了瀑布模型的基本成分,并且具有迭代特性。例如,使用增量模型开发字处理软件基本的文件管理、编辑和文档生成功能。更完善的编辑和文档生成能力。实现拼写和文法检查功能。完成高级的页面布局功能。,1.2 软件生存周期模型,螺旋模型:将瀑布模型和增量模型结合起来,加入风险分析的一种模型。,1.2 软件生存周期模型,优点对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;减少了过多测试或测试不足;维护和开发之间并没有本质区别。特点风险驱动的 主要适用于内部开发的大规模软件项目。,1.2 软件生存周期模型
7、,喷泉模型对软件复用和生存周期中多项开发活动的集成提供了支持,以面向对象的软件开发方法为基础,它适合面向对象的开发方法。无间隙是指在分析、设计和实现等开发活动之间不存在明显的边界。喷泉模型参见下图。,1.2 软件生存周期模型,“喷泉”这个词体现了面向对象软件开发过程,迭代和无缝的特性。,1.2 软件生存周期模型,软件系统可维护性较好;各阶段相互重叠,表明了面向对象开发方法各阶段间的交叉和无缝过渡;整个模型是一个迭代的过程,包括一个阶段内部的迭代和跨阶段的迭代;模型具有增量开发特性,即能做到分析一点、设计一点、实现一点,测试一点,使相关功能随之加入到演化的系统中。模型是对象驱动的,对象是各阶段活
8、动的主体,也是项目管理的基本内容。,喷泉模型的特点:,1.2 软件生存周期模型,智能模型是基于知识的软件开发模型,它把瀑布模型和专家系统综合在一起。该模型在各个开发阶段都利用了相应的专家系统来帮助软件人员完成开发工作。为此,建立了各个阶段的知识库,将模型、相应领域知识和软件工程知识分别存入数据库。以软件工程知识为基础的生成规则构成的专家系统与包含应用领域知识规则的其他专家系统相结合,构成该应用领域的开发系统。,1.2 软件生存周期模型,1.2 软件生存周期模型,2.2 可行性研究可行性研究的任务,2.经济可行性,3.社会因素的考虑,分析成本收益与短期效益长远利益这两个方面。要作出投资的估算和系
9、统投入运行后可能获得的经济效益或可节约的费用估算。,分析利用现有的技术能否实现,能否解决系统中的技术难题,所开发的系统能否达到所要求的功能和性能,系统对技术人员的要求,现有的技术人员能否胜任,开发所需要的软件与硬件能否如期得到等,1.技术可行性,主要考虑的是市场、政策与法律方面的问题。分析在系统开发的全部过程中可能出现和涉及的法律问题。,4.开发方案的选择,可行性研究的任务,确定问题定义后,导出系统逻辑模型,并给出主要解决方案,每种方案应认真分析其可行性。,2.2 可行性研究技术可行性分析,技术可行性至少要考虑以下几方面因素:在给定的时间内能否实现需求说明中的功能。必须充分考虑到可能出现的技术
10、问题,否则麻烦就大了。软件的质量如何?实时性软件的速度;高风险软件的正确性与精确性。软件的生产率如何?软件的质量不好,将导致维护的代价很高,会把前期拿到的利润慢慢地消耗光。如果企图通过偷工减料而提高生产率,是得不偿失的事。,2.2 可行性研究技术可行性分析,在进行技术可行性分析时,一个重要的内容是对现有系统绘制系统流程图。系统流程图中所用的符号与程序设计语言中的程序流程图所用的符号类似。系统流程图表达的是信息在系统中各个部件之间的流动情况。,2.2 可行性研究的工具系统流程图,可行性分析时需分析现有系统和设计新系统,我们常用系统流程图来描述。系统流程图的基本作用:以黑箱方式描述系统各部件(如人
11、工处理、程序、数据库、图表等),它描述了信息在系统各部件中的流动情况,它不对信息在系统中的加工进行描述。,2.3 成本效益分析,是从经济角度评价一个项目是否值得开发。步骤:首先估算开发的成本,然后与取得的效益比较。,效益估计(Benefit Estimation)例:假设某软件生存周期为5年。现在投资20万元,平均年利率3%。从第一年起,每年年底收入4.2万元,问该项目是否值得投资?,2.3 成本效益分析,到第5年底结算时:投资额=200000(1+3%)5 231855(元)(利息)收入=42000(1+3%)4+(1+3%)3+(1+3%)2+(1+3%)+1 222984(元),不合算!
12、,2.3 成本效益分析,衡量工程价值的经济指标有:纯收入=折合现价的总收入-当前投资额=,投资回收期例:第6年底可收回,2.3 成本效益分析,投资回收率:设为j,2.3 成本效益分析,西南科技大学,4.1 结构化分析方法数据流图,1数据流图(Data Flow Diagram 简称DFD)是描述系统中数据流程的图形工具,它标识了一个系统的逻辑输入和逻辑输出以及把逻辑输入转换为逻辑输出所需要的加工。,结构化分析方法的描述工具,西南科技大学,数据流图的组成 由四种基本成分组成,如图4.4所示:,数据流,加工,图4.4 数据流图的基本成分,P,X,F,S,数据存储,源点终点,不是指数据保存的物理地点
13、或物理存储介质,也不是指文件箱、磁盘或磁带,而是指数据存储的逻辑描述,4.1 结构化分析方法数据流图,第一种,第二种,西南科技大学,新生名单,毕业生登记表,统计报表,学生成绩单,学生登记表,教学计划,4.1 结构化分析方法示例,西南科技大学,图4.6学生学籍管理子系统数据流程图,学籍变动申请,学籍变动通知,毕业证书,毕业生登记表,留退名单,奖励名单,4.1 结构化分析方法示例,西南科技大学,4.1 结构化分析方法数据字典,2数据字典(Data Dictionary简称DD)描述软件系统的信息流程和加工,SA方法使用数据字典对这些成分进行详细说明。数据流图中的数据流名、数据存储名、数据项名、基本
14、加工名的严格定义的集合构成了数据字典。,结构化分析方法的描述工具,西南科技大学,4.1 结构化分析方法数据字典,数据字典的描述方法可采用卡片格式。对数据流、数据存储和 数据项的描述可采用如下符号:(1)“+”表示与。例如:登记表=姓名+专业+班级+年龄+性别+籍贯;(2)“|”表示或。例如:存期=1|2|3|5,表示银行存期可有1年,2年,3年,5年,而“”表示选择项。(3)“”表示重复。例如:发票=发票行,表示一张发票有若干行。,西南科技大学,图4.7 数据字典(a)数据流条目(b)数据存储条目;(c)数据项条目;(d)基本加工条目,(c),(d),4.1 结构化分析方法示例,西南科技大学,
15、4.1 结构化分析方法描述加工逻辑的工具,3描述加工逻辑的工具是基本加工条目中的一项重要内容,有三种工具来描述加工逻辑:结构化语言,判定表,判定树。,结构化分析方法的描述工具,西南科技大学,(1)年交易额在5万或5万以下,则不给予折扣;(2)对于年交易额在5万以上时:如果无欠款,则给予15%的折扣;如果有欠款,而且与本公司的交易关系在20年以上,则折扣为10%;如果有欠款,而且与本公司交易关系在20年以下,则折扣为5%。,订货折扣逻辑描述如下:,4.1 结构化分析方法示例,西南科技大学,订货处理优惠待遇,年交易额5万以上,年交易额5万或以下,无欠款,有欠款,交易20年以上,交易20年以下,15
16、%,10%,5%,0%,4.1 结构化分析方法判断树,西南科技大学,Y,Y,Y,Y,N,N,N,N,Y,Y,N,N,Y,Y,N,N,Y,N,Y,N,Y,N,Y,N,4.1 结构化分析方法判断表,西南科技大学,三种工具各有优缺点,所以在不同的情况下,使用三种不同的工具。从掌握这项工具的难易程度看,判断树最容易被初学者接受,易于掌握;结构化语言的难度居中;而判断表的难度最高。对于逻辑验证,判断表最好,它能够把所有的可能性全部考虑到,能够澄清疑问;结构化语言较好;而判断树不如这两项工具。从直观表达逻辑来看,判断树最好,它用图形表达,一目了然,易于和用户讨论;结构化语言居中;而判断表的表达能力最低。,
17、4.1 结构化分析方法三种表达工具的比较,西南科技大学,作为程序设计资料,结构化语言和判断表最好,而判断树却不如这两项工具。对于可修改性,结构化语言的可修改性较高;判断树居中;而判断表的可修改性最低。,4.1 结构化分析方法三种表达工具的比较,五个步骤常根据需要交叉进行,1确定类和对象,3定义主题,4定义属性和实例关联,5定义服务,2确定结构,4.3Coad分析方法OOA步骤,识别类与对象 确定系统中所有的对象及对象的属性和操作。(1)发现对象人员和组织结构物品和设备扮演的角色事件文档位置例:银行储蓄管理系统,4.3Coad分析方法 1.识别类与对象,名词往往是候选对象;结构也可提取候选的类及
18、对象;,系统必须观测、记忆的与时间有关的事件可作为候选的类及对象;如:建立帐户的日期 打开一个帐户等与系统发生交互的人及系统必须保留其信息的人,可作为候选的类及对象;如:柜员、储户等这些人所属的组织单位,可作为候选的类及对象;如:总行、分行等,4.3Coad分析方法 1.识别类与对象,系统必须记忆、且不在问题域约束中的顺序操作过程(为了指导人机交互)可作为候选的类及对象;如:柜员事务、远程事务等。其中属性是操作过程名,操作特权及操作步骤的描述;系统需了解掌握的物理位置、办公地点等可作为候选的类及对象;如:ATM机器、帐户等,4.3Coad分析方法 1.识别类与对象,(2)审查和筛选,舍弃无用的
19、类 对象的精简只有一个属性的对象只有一个服务的对象 推迟到OOD考虑的对象,4.3Coad分析方法 1.识别类与对象,帐册,上级系统接口,供货员,销售事件,特价商品,计量商品,收款机,商品一览表,超市销售管理系 统(对象层),4.3Coad分析方法 1.识别类与对象,定义结构与连接初步确定关联对应于描述性动词或动词短语需求陈述中隐含根据问题域知识得出分析标识对象之间的关系对象之间的分类关系:一般-特殊结构对象之间的组成关系:整体-部分结构对象之间的静态联系:实例连接对象之间的动态关系:消息连接,4.3Coad分析方法 2.定义结构与连接,分类结构:从一般类发现特殊类,?,4.3Coad分析方法
20、 2.定义结构与连接,通过增加属性简化一般-特殊结构,4.3Coad分析方法 2.定义结构与连接,标识主题(主体)Coad/Yourdon方法中主题的概念:主题是把一组具有较强联系的类组织在一起而得到的类的集合。,4.3Coad分析方法 3.标识主题(主体),主题概念及其用途主题层是在OOA基本模型(类图)之上建立一个能帮助人们从不同的认识层次来理解系统的补充模型;主题是一种比类和对象抽象层次更高、粒度更大的概念,用以建立系统的高层抽象视图;主题有助于指导系统设计者或用户等理解一个大的系统模型,有助于组织一个大项目的工作。,4.3Coad分析方法 3.标识主题(主体),主题概念的特点:是由一组
21、类构成的集合一个主题内部的对象类应具有某种意义上的内在联系描述系统中相对独立的组成部分(如一个子系统)描述系统中某一方面的事物(如人员、设备)解决系统中某一方面的问题(如输入输出)主题的划分有一定的灵活性和随意性,4.3Coad分析方法 3.标识主题(主体),主题的表示法三种表示方式:压缩方式 半展开方式 全展开方式,半展开方式:,下层主题,4.3Coad分析方法 3.标识主题(主体),定义属性属性是数据元素,用来描述对象或分类结构的实例。,4.3Coad分析方法 4.定义属性,属性的类型:描述型:指属性的值由对象实例的添加、变动、删除及选择等操作来建立和维持。定义型:用于标识和命名各个实例。
22、派生型:由其他属性的数据计算得到。参考型:与另一个实例的属性值相关。,西南科技大学,4.3Coad分析方法 4.定义属性,西南科技大学,上级系统接口,超市销售管理系 统(属性层),开始日期结束日期,单价计量单位计价方式,4.3Coad分析方法 4.定义属性,定义服务 服务是在接收到一条消息后所要进行的加工。包括操作和方法,如:检索、维护、计算、事件响应、状态改变、消息传送等这样一类操作和具体采用的某一种算法。,4.3Coad分析方法5.定义服务及消息连接,服务和消息传递,4.3Coad分析方法5.定义服务及消息连接,4.3Coad分析方法5.定义服务及消息连接,OOA的结构,消息连接,4.3C
23、oad分析方法OOA步骤,西南科技大学,OMT方法使用3种模型从不同角度来描述一个系统:(1)对象模型描述系统对象、类和它们之间关系的静态结构,反映了系统的“数据”性质。(2)动态模型用对象的状态和事件描述了瞬时的、行为化的系统的“控制”性质。(3)功能模型描述系统内的数据变化,指明了如何用输入值得到输出值,即反映了系统的“功能”性质。,4.4OMT分析方法,西南科技大学,对象模型 对象模型是通过描述系统中的对象、对象间的关系、标识类中对象的属性、操作来表示系统的静态组织结构。对象模型是3种模型中最重要的模型。面向对象的设计技术强调的是围绕对象,而不是围绕功能来构筑系统。,4.4OMT分析方法
24、,西南科技大学,例如:某个棒球手一年内可能为多个球队打球,也可能只为一个球队打球;每个球队有多个球员;每个球员又都有个人每年打球的输赢记录。,4.4OMT分析方法,西南科技大学,动态模型 动态模型描述系统中与时间有关的方面以及操作执行的顺序,包括引起变化的事件,事件的序列,定义事件序列上下文的状态以及事件和状态的主次。动态模型是用“状态图”和“事件追踪图”表示。一个动态模型可由多个状态图表组成。基本概念:事件、脚本和事件追踪、状态、触发条件与事件、动作(操作),4.4OMT分析方法,西南科技大学,4.4OMT分析方法,某一事件发生时刻,西南科技大学,功能模型 功能模型描述了系统中要发生什么。功
25、能模型考虑如何从输入值得到输出值,而不考虑参加计算的数据按什么时序执行。功能模型采用数据流图描述,一个功能模型由多个分层的数据流图组成。,4.4OMT分析方法,西南科技大学,3个模型之间的关系:(1)通过3个模型,系统以3视图的形式呈现给设计人员,以便设计者 采用统一的描述方法设计实现。(2)模型是可以独立地进行测试和理解的,但不是无关的、绝对独立 的。一个好的设计是指:实现了系统内部不同实质的分离,但又 相互补充,限制耦合。(3)三者关系:,4.4OMT分析方法,OM:操作的实体,DM:何时做,FM:做什么,1程序流程图,1程序流程图,例子,2盒图(N_S图),出于要有一种不允许违背结构程序
26、设计精神的图形工具的考虑,Nassi和Shneider-man提出了盒图,又称为N_S图。,也叫做盒图。五种基本控制结构由五种图形构件表示。,2盒图(N_S图),示例,2盒图(N_S图),PAD(Problem Analysis Diagram),3PAD图,PAD描述的示例,3PAD图,N-S图与PAD的转换,3PAD图,判定表&判定树(Decision Table&Tree)表示复杂的条件(input)组合与应做动作(output)之间的对应关系。,4判定表&判定树,西南科技大学,(1)年交易额在5万或5万以下,则不给予折扣;(2)对于年交易额在5万以上时:如果无欠款,则给予15%的折扣;
27、如果有欠款,而且与本公司的交易关系在20年以上,则折扣为10%;如果有欠款,而且与本公司交易关系在20年以下,则折扣为5%。,订货折扣逻辑描述如下:,4判定表&判定树,订货处理优惠待遇,年交易额5万以上,年交易额5万或以下,无欠款,有欠款,交易20年以上,交易20年以下,15%,10%,5%,0%,判定树,4判定表&判定树,Y,Y,Y,Y,N,N,N,N,Y,Y,N,N,Y,Y,N,N,Y,N,Y,N,Y,N,Y,N,判断表,4判定表&判定树,PDL是一种用于描述功能模块的算法设计和加工细节的语言。称为设计程序用语言。它是一种伪码。伪码的语法规则分为“外语法”和“内语法”。PDL具有严格的关键
28、字外语法,用于定义控制结构和数据结构,同时表示实际操作和条件的内语法可使用自然语言的词汇。,5过程设计语言(PDL),PDL(Program Design Language)又称 Pseudo code,显示系统用户界面;PUT(“请输入用户口令:”);GET(password);IF password系统口令 提示警告信息;退出运行 ENDIF 显示本系统主菜单;WHILE(true)接收用户选择ABC;IF ABC=“退出”,5过程设计语言(PDL),Break;ENDIF 调用相应下层模块完成用户选择功能;ENDWHILE;清屏;RETURNEND,5过程设计语言(PDL),各种软件错误
29、的出现比例,功能错,占整个软件错误27,是需求分析设计不完整而引起的。系统错,占整个软件错误16,是总体设计错误而引起的。数据错,占整个软件错误10,由编码错误引起的。编码错,占整个软件错误4,程序员编码错误引起的。其它错,占整个软件错误16,由文档错和硬件错所引起的。,10.3软件测试概述,10.3.1测试步骤:,测试阶段的信息流:,对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。主要测试以下五个方面:1、模块接口:内部检查:传输参数的数目、属性、单位、次序是否匹配;全程变量的定义是否一致;只做输入的变元有无被修改,等等。外部检查:打
30、开、结束、关闭文件的操作;文件和属性;IO错误处理;输出拼写等等。,(1)单元测试,3、重要的执行路径:由于穷尽测试不可能,故通常针对最常见的错误设计测试方案。,4、出错处理通路:预见出现错误的条件,设置处理。,5、边界条件:单元测试中最后,也可能是最重要的任务,因为软件常在其边界失效。,(1)单元测试,2、局部数据结构:数据说明(declaration);初始化与缺省值的设置;变量名拼写;数 据类型的相容性;上下文溢出及地址异常等等。,1、非渐增式测试(Big-bang testing),(2)集成测试(Integration Testing),是指在单元测试的基础上,将所有模块按照设计要求
31、组装成一个完整的系统而进行的测试,也称组装测试或联合测试。,自顶向下测试 第1步:测试顶端模块,用桩模块(stub)代替直接附属的 下层模块。Stub:模拟未测试模块的活动。,2、渐增式测试(Incremental testing),逐个把未经过测试的模块组装到已经测试过的模块上去,进行集成测试。,(2)集成测试(Integration Testing),第2步:根据深度优先或宽度优先的策略,每次用一个实 际模块代换一个stub。,(2)集成测试(Integration Testing),第3步:在结合进一个模块的同时进行测试。,第4步:回归测试(regression testing)全部或部
32、分地重复以前做过的测试。,优点:在早期即对主要控制及关键的抉择进行检验。问题:Stub只是对低层模块的模拟,测试时没有重 要的数据自下往上流,许多重要的测试须推 迟进行,而且在早期不能充分展开人力。,(2)集成测试(Integration Testing),自底向上测试第1步:把低层模块组合成族,每族实现一个子功能。第2步:用驱动模块(Driver)协调测试数据的IO,测试子功能族。,Driver:用来模拟被测模块的上级调用模块,功能要比正真的上级模块简单的多,只完成接受测试数据,接受被测模块的测试结果并输出。,(2)集成测试(Integration Testing),第3步:去掉Driver
33、,自下而上把子功能族合成更大的子功能族。,M,M,M,注意:两种策略的优、缺点刚好互补,但单用其中任一种都不实际,通常根据软件的特点将二者混用。,(2)集成测试(Integration Testing),(3)确认测试(Acceptance testing),任务:确任软件的有效性(功能和性能达标)。手段:黑盒测试;用户参与;主要用实际数据进行测试。内容:按合同规定审查软件配置;设计测试计划,使通过测试保证软件能满足所有功能、性能要求;文档与程序一致,具有维护阶段所必须的细节;严格按用户手册操作,以检查手册的完整性和正确性。,改正性维护,在软件交付使用后,因开发时测试的不彻底、不完全,必然会有
34、部分隐藏的错误遗留到运行阶段。为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程就叫做改正性维护。,适应性维护,在使用过程中,外部环境(新的硬、软件配置)数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化。为使软件适应这种变化,而去修改软件的过程就叫做适应性维护。,完善性维护,在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。这种情况下进行的维护活动叫做完善性维护。,预防性维护,预防性维护,是为了提高软件的可维护
35、性、可靠性等,为以后进一步改进软件打下良好基础。采用先进的软件工程方法对需要维护的软件或软件中的某一部分(重新)进行设计、编制和测试,称为预防性维护。,1.黑盒法 该方法把被测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求说明书,检查程序是否满足功能要求。因此,黑盒测试又称为功能测试或数据驱动测试。,10.4 黑盒测试法与白盒测试法,例 输入值是学生成绩,范围是0100,(1)黑盒测试-等价类划分,输入条件,报表日期的类型及长度,1个数字字符5个数字字符7个数字字符有1个非数字字符全部是非数字字符6个数字字符,显示出错显示出错显示出错显示出
36、错显示出错输入有效,日期范围,月份范围,“报表日期”边界值分析法测试用例,测试用例说明,测试数据,期望结果,选取理由,52001520010052001.5MAY-200105,月份为1月月份为12月月份12,200101200112200100200113,200101200512200100200513,输入有效输入有效显示出错显示出错,输入有效输入有效显示出错显示出错,在有效范围边界上选取数据,仅有1个合法字符比有效长度少1比有效长度多1只有1个非法字符6个非法字符类型及长度均有效,最小日期最大日期刚好小于最小日期刚好大于最大日期,最小月份最大月份刚好小于最小月份刚好大于最大月份,错误推
37、测 基本思想是列举出程序中可能的错误和容易发生错误的特殊情况,并且根据它们选择测试方案。错误推测方法是根据经验来设计测试用例的方法。例如,数据测试中的 缺省值、空白、空值、零值、无,(3)黑盒测试-错误推测,因果图法实例某电力公司有A、B、C、D四类收费标准,并规定:居民用电 100度/月 按A类收费 100度/月 按B类收费动力用电 10000度/月,非高峰,B类收费 10000度/月,非高峰,C类收费 10000度/月,高峰,C类收费 10000度/月,高峰,D类收费,(4)黑盒测试-因果图,列出原因和结果 原因:1居民用电 2动力用电 3100度/月 3100度/月 4非高峰 4高峰 5
38、10000度/月 510000度/月 结果:A按A类收费 B按B类收费 C按C类收费 D按D类收费,(4)黑盒测试-因果图,2.白盒法 该方法把测试对象看作一个打开的盒子,测试人员须了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。,2.白盒法,问题:若AND错写为OR,或X1错写为X1,则错误无法由上例测出。,Test case:A=2,B=0,X=4.,(1)语句覆盖:就是设计足够的调试用例,使得程序中的每个语句至少执行一次。,2.白盒法,If(A 1)And(B=0)The
39、n x:=x/A;If(A=2)or(x 1)Then x:=x+1,判定覆盖(Branch coverage):在的基础上,每个判定的每个分支至少执行一次。,Test cases:A=3,B=0,X=3A=2,B=1,X=1,问题:若X1错写为X1,仍然无法被测出。,2.白盒法,If(A 1)And(B=0)Then x:=x/A;If(A=2)or(x 1)Then x:=x+1,条件覆盖(Condition coverage):在的基础上,使每个判定表达式的每个条件都取到各种可能的结果。,Test cases:A=2,B=0,X=4(满足A1,B=0;A=2,X1)A=1,B=1,X=1
40、(满足A1,B0;A 2,X1),判定/条件覆盖:即判定覆盖条件覆盖,2.白盒法,If(A 1)And(B=0)Then x:=x/A;If(A=2)or(x 1)Then x:=x+1,条件组合覆盖:每个判定表达式中条件的各种可能组合都至少出现一次。,全部可能的条件组合为:A1,B=0 A1,B 0 A1,B=0 A1,B 0 A=2,X1 A=2,X 1 A 2,X1 A 2,X 1,Test cases:A=2,B=0,X=4(T T)A=2.B=1,X=1(F T)A=1,B=0,X=2(F T)A=1,B=1,X=1(F F),问题:没有测试到(T F)的情形,2.白盒法,If(A
41、1)And(B=0)Then x:=x/A;If(A=2)or(x 1)Then x:=x+1,(6)路径覆盖 选取足够多测试数据,使程序的每条可能路径都至少执行一次(如果程序图中有环,则要求每个环至少经过一次)。在例子中,共有四条可能的执行路径,1-2-3;1-2-6-7;1-4-5-3;1-4-5-6-7。因此,为了做到路径覆盖必须设计四组测试数据。,2.白盒法,2、调试策略 调试过程的关键不是调试技术,而是用来推断错误原因的基本策略。主要有:试探法,凭经验猜测。回溯法:由症状(symptom)最先出现的地方,沿control flow向回检查。适用于小型程序。对分法:在关键点插入变量的正确值,则:,10.6调 试(Debugging),收集数据,组织数据,研究数据间的关系,提出假设,证明假设,纠正错误,能,能,不能,不能,归纳法:从错误症状中找出规律,推断根源。,10.6调 试(Debugging),列举可能的原因,排除不正确的假设,精化余下的假设,证明假设,收集更多数据,纠正错误,有剩余,能,不能,无剩余,演绎法:普通 特殊 从假设中逐步排除、精化,从而导出错误根源。,10.6调 试(Debugging),