2022年软件工程自考复习资料.docx
精选学习资料 - - - - - - - - - 读书之法 ,在循序而渐进 ,熟读而精思软件工程自考复习资料第 1 章 软件:运算机程序及说明程序的各种文档;“程序 ”是运算任务的处理对象和处理规章的描述;“文档 ”是有关运算机程序功能、设计、编制、使用的文字或图形资料;软件生产的进展:程序设计时代,程序系统时代,软件工程时代;软件工程:用科学学问和技术原理来定义、开发、保护软件的一门学科;软件工程性质:它涉及运算机科学、工程科学、治理科学、数学等领域,运算机科学着重于原理和理论, 而软件工程着重于如何建造一个软件系统;软件工程要用工程科学中的观点来进行费用估算、 制定进度、 制定方案和方案;软件工程要用治理科学中的方法和原理进行软 件生产的治理; 软件工程要用数学的方法建立软件开发中的各种模型和各种算法,如牢靠性 模型,说明用户需求的形式化模型等;软件工程讨论的主要内容是软件开发技术和软件开发治理两个方面;在软件开发技术中,主 要讨论软件开发方法、软件开发过程、软件开发工具和环境;在软件开发治理中,主要是 讨论软件治理学、软件经济学、软件心理学等;软件工程面临的问题:软件费用;软件牢靠性;软件保护;软件生产率;软件重用;软件工程过程:猎取过程;供应过程;开发过程;操作过程;保护过程;治理过程;支持过 程;软件生存周期: 可行性分析和项目开发方案;保护;需求分析; 概要设计; 具体设计; 编码;测试;软件生存周期模型是描述软件开发过程中各种活动如何执行的模型;瀑布模型是将软件生存周期各个活动规定为依线性次序连接的如干阶段的模型;增量模型是一种非整体开发的模型;瀑布模型是一种整体开发的模型螺旋模型将瀑布模型与增量模型结合起来,加入了风险分析, 用于复杂的大型软件开发;分为几个螺旋周期:第一,制定方案;其次,风险分析;第三,开发实施;第四,用户评估;喷泉模型是一种以用户需求为动力,以对象作为驱动的模型,适合于面对对象的开发方法;喷泉模型使开发过程具有迭代性和无间隙性;基本学问的模型又称智能模型,它把瀑布模型和专家系统结合在一起;变换模型是一种适合于形式化开发方法的模型;从软件需求形式化说明开头,经过一系列变换,最终得到系统的目标程序;软件开发方法:结构化方法由结构化分析、结构化设计、 结构化程序设计构成;它是一种面对数据流的开发 方法;结构化方法总的指导思想是自顶向下、逐步求精; 它的基本原就是功能的分解与抽象,它是软件工程中最早显现的开发方法,特殊适合于数据处理领域的问题;Jackson方法是一种面对数据结构的开发方法;维也纳开发方法(VDM)是一种形式化的开发方法,软件的需求用严格的形式语言描述;面对对象的开发方法包括面对对象分析、有 Booch 方法、 Coad 方法 第 2 章面对对象设计、 面对对象实现; 面对对象开发方法软件可行性讨论的目的就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开名师归纳总结 - - - - - - -第 1 页,共 14 页精选学习资料 - - - - - - - - - 读书之法 ,在循序而渐进 ,熟读而精思发,是否值得去开发;留意,可行性讨论的目的不是去开发一个软件项目,而是讨论这个软件项目是否值得去开发,其中的问提能否解决;可行性讨论实质上是要进行一次简化、压缩了的需求分析、设计过程,要在较高层次上以较抽象的方式进行需求分析和设计过程;可行性讨论的任务技术可行性:对要开发项目的功能、性能、限制条件进行分析,确定在现有的资源条件下,技术风险有多大,项目是否能实现;包括:开发的风险;资源的有效性;技术;开发人员在评估技术可行性时,一旦估量错误,将会显现灾难性后果;经济可行性包括成本成效分析、公司经营长期策略、开发所需的成本和资源、潜在的市场前景;社会可行性包括:合同、责任、侵权、用户组织的治理模式及规范,其他一些技术人员经常不明白的陷阱等;典型的可行性讨论有以下步骤:确定项目规模和目标;讨论正在运行的系统;建立新系统的高层规律模型;导出和评判各种方案;举荐可行的方案;编写可行性讨论报告;可行性讨论报告的主要内容:引言;可行性讨论前提;对现有系统的分析;所建议系统的技术可行性分析;所建议系统的经济可行性分析;社会因素可行性分析;其他可供挑选方案;结论看法;成本 效益分析第一是估算将要开发的系统的开发成本,然后与可能取得的效益进行比较和权衡;效益分有形效益和无形效益两种;有形效益可以用货币的时间价值、投资回收期、纯收入等指标进行度量;无形效益主要从性质上、心理上进行衡量, 很难直接进行量的比较;投资回收期就是使累计的经济效益等于最初的投资费用所需的时间;项目的纯收入, 也就是在整个生存周期之内的累计经济效益(折合成现在值) 与投资之差;项目开发方案:项目概述;实施方案;人员组织及分工;交付期限;第 3 章在进行可行性讨论和软件方案以后,假如确认开发一个新的软件系统是必要的而且是可能的,那么就进入需求分析阶段;需求分析是指, 开发人员要精确懂得用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程;它的难点主要表达在以下几个方面:问题的复杂性;沟通障碍;不完备性和不一样性;需求易变性;需求分析的基本任务是要精确地定义新系统的目标,为了满意用户需要,回答系统必需“ 做什么 ”的问题;本阶段要进行以下几方面的工作:问题识别:功能需求;性能需求;环境需求;用户界面需求分析与综合:导出软件的规律模型编写文档: 需求规格说明书;初步用户使用手册;确认测试方案; 修改完善软件开发方案;结构化分析( SA)是面对数据流进行需求分析的方法;SA 方法利用图形等半形式化的描述方式表达需求,简明易懂,用它们形成需求说明书中的主要部分;这些描述工具是:数据流图;数据字典;描述加工规律的结构化语言,判定表、判定树;“数据流图 (DFD)”描述的分解, 即描述系统由哪几部分组成,各部分之间有什么联系等等;“数据字典 ” 定义了数据流图中每一个图形元素;结构化语言、 判定表或判定树就具体描述数据流图中不能被再分解的每一个加工;数据流是数据在系统内传播的路径,因此由一组成分固定的数据项组成;加工(又称数据处理) ;对数据流进行某些操作或变换;数据储备(又称文件) ,指临时储存的数据,它可以是数据库文件或任何形式的数据组织;数据源点或终点:是本软件系统外部环境中的实体,统称外部实体;数据字典( DD)就是用来定义数据流图中的各个成分的具体含义的,它和数据流图共同构成了系统的规律模型,是需求规格说明书的主要组成部分;数据字典的内容及格式名师归纳总结 - - - - - - -第 2 页,共 14 页精选学习资料 - - - - - - - - - 读书之法 ,在循序而渐进 ,熟读而精思数据项是组成数据流和数据储备的最小元素;数据流条目; 数据储备条目; 数据项条目; 加工条目数据字典中的加工规律主要描述该加工“做什么 ”,即实现另工的策略,而不是实现加工的细节,它描述如何把输入数据流变换为输出数据流的加工规章;加工规律也称为“ 小说明 ”,描述加工规律一般用以下三种工具:结构化语言、判定表、判定树;结构化语言是介于自然语言和形式语言之间的一种半形式语言;它的结构可分成外层和内层两层:外层用来描述掌握结构,采纳次序、挑选、重复三种基本结构;内层对于次序执行和循环执行的动作,用结构化语言描述;对于存在多个条件复杂组合的判定问题 ,用判定表和判定树;IDEF0:用来描述系统的功能活动及其联系,建立系统的功能模型;IDEF1:用来描述系统的信息及其联系,建立系统的信息模型;IDEF2:用来进行系统模拟,建立系统的动态模型;传统的 SA方法主要用于数据处理方面的问题,主要工具 DFD表达了系统 “做什么 ”的功能,但它仅是一个静态模型,没有反映处理的次序,即掌握流程;形式化方法是将需求规格说明用形式规约语言来描述;典型的有基于模型的 Z 语言及 VDM开发方法;第 4 章在软件需求分析阶段,已经搞清晰了软件“做什么 ”的问题, 并把这些需求通过规格说明书描述了出来,这也是目标系统的规律模型;进入了设计阶段,要把软件“做什么 ” 的规律模型变换为 “怎么做 ”的物理模型,即着手实现软件的需求,并将设计的结果反映在“设计规格说明 ”文档中, 软件设计是一个把软件需求转换为软件表示的过程,最初这种表示只是描述了软件的总的体系结构, 称为软件概要设计或结构设计;然后对结构进一步细分,称为具体设计或过程设计;概要设计的基本任务:1 设计软件系统结构(简称软件结构)采纳某种设计方法,将一个复杂的系统按功能划分成模块; 确定每个模块的功能;确定模块之间的接口,即模块之间传递的信息;评判模块结构的质量;软件结构设计是以模块为基础的,在需求分析阶段, 已经把系统分解为层次结构;设计阶段,以需求分析的结果为依据,从实现的角度进一步划分为模块,并组成模块的层次结构;2 数据结构及数据库设计 数据库的设计指数据储备文件的设计(概念设计、规律设计、物理设计)数据库的 “概念设计 ” 、“规律设计 ”分别对应于系统开发中的 据库的 “物理设计 ”与模块的 “具体设计 ”相对应;“需求分析 ”与 “概要设计 ”,而数3 编写概要设计文档(概要设计说明书、数据库设计说明书、用户手册、修订测试方案,对 测试策略、方法、步骤提出明确要求;)4 评审:对设计部分是否完整地实现了需求中规定的功能、性能等要求, 设计方案的可行性,关键的处理及内外部接口定义正确性、有效性,各部分之间的一样性等等都一一进行评审;模块的基本属性: 接口指模块的输入与输出;功能指模块实现什么功能;规律描述内部如何实现要求的功能及所需的数据;状态指该模块的运行环境,即模块的调用与被调用关系;功能、状态与接口反映模块的外部特性,规律反映它的内部特性;模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分为如干模块的过程;模块完成一个特定的子功能,全部的模块按某种方法组装起来,成为一个整体, 完成整个系统所要求的功能;开发一个大而复杂的软件系统,将它进行适当的分解,不但可降低其复杂性,仍可削减开发工作量,从而降低开发成本,提高软件生产率,这就是模块化的依据;抽象是熟悉复杂现象过程中使用的思维工具,细节,不考虑其他因素;即抽出事物本质的共同的特性而暂不考虑它的名师归纳总结 - - - - - - -第 3 页,共 14 页精选学习资料 - - - - - - - - - 读书之法 ,在循序而渐进 ,熟读而精思通过抽象, 可以确定组成软件的过程实体;通过信息隐藏, 可以定义和实施对模块的过程细节和局部数据结构的存取限制;信息隐藏指在设计和确定模块时,使得一个模块内部包含的信息(过程或数据) ,对于不需要这些信息的其他模块来说,是不能拜访的;模块独立性指每个模块只完成系统要求的独立子功能,单,两个定性的度量标准耦合性和内聚性;并且与其他模块的联系最少且接口简耦合性也称块间联系;指软件系统结构中各模块间相互联系紧密程度的一种度量;模块之间联系越紧密, 其耦合性就越强,模块的独立性就越差;模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息;无直接耦合数据耦合标记耦合掌握耦合公共耦合内容耦合(低 高)1 无直接耦合2 数据耦合指两个模块之间有调用关系,传递的是简洁的数据值,相当于高级语言的值传递;3 标记耦合指两个模块之间传递的是数据结构,如高级语言中的数组名、记录名、文件名等 这些名字即标记,其实传递的是这个数据结构的地址;4 掌握耦合指一个模块调用另一个模块时,传递的是掌握变量(如开关、标志等),被调模 块通过该掌握变量的值有挑选地执行块内某一功能;5 公共耦合指通过一个公共数据环境相互作用的那些模块间的耦合;公共耦合的复杂程序随耦合模块的个数增加而增加;6 内容耦合:这是最高程度的耦合,也是最差的耦合;当一个模块直接使用另一个模块的内 部数据,或通过非正常入口而转入另一个模块内部;内聚性又称块内联系;指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量;如一个模块内各元素(语名之间、程序段之间)联系的越紧密,就它的内聚性就越高;偶然内聚规律内聚时间内聚通信内聚次序内聚功能内聚(低 高)1 偶然内聚指一个模块内的各处理元素之间没有任何联系;2 规律内聚指模块内执行几个规律上相像的功能,通过参数确定该模块完成哪一个功能;3 时间内聚:把需要同时执行的动作组合在一起形成的模块为时间内聚模块;4 通信内聚指模块内全部处理元素都在同一个数据结构上操作(有时称之为信息内聚),或 者指各处理使用相同的输入数据或者产生相同的输出数据;5 次序内聚指一个模块中各个处理元素都亲密相关于同一功能且必需次序执行,前一功能元 素输出就是下一功能元素的输入;6 功能内聚:这是最强的内聚,指模块内全部元素共同完成一个功能,缺一不行;与其他模 块的耦合是最弱的;耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础;软件结构图主要内容有:模块、模块的掌握关系、模块间的信息传递、两个附加符号结构图的形状特点:深度指结构图掌握的层次;宽度指一层中最大的模块个数;扇出指一个模块直接下属模块的个数;扇入指一个模块直接上属模块的个数;假如如干模块之间耦合强度过高,每个模块内功能不复杂,可将它们合并, 以削减信息的传递和公共区的引用;如有多个相关模块,应对它们的功能进行分析,消去重复功能;一个模块的作用范畴应在其掌握范畴这内,尽量靠近;且判定所在的模块应与受其影响的模块在层次上一个模块的作用范畴指受该模块内一个判定影响的全部模块的集合;一个模块的掌握范畴指模块本身以及其全部下属模块(直接或间接从属于它的模块)的集合;要把数据流图( DFD)转换成软件结构,第一必需讨论DFD 的类型,一般可分为变换型和事名师归纳总结 - - - - - - -第 4 页,共 14 页精选学习资料 - - - - - - - - - 读书之法 ,在循序而渐进 ,熟读而精思务型两类;变换型 DFD是由输入、变换(或称处理)和输出三部分组成;变换型数据处理的工作过程一般分为三步:取得数据、 变换数据和给出数据,这三步表达了变换型 DFD 的基本思想;变换是系统的主加工,变换输入端的数据流为系统的规律输入,输出端为规律输出;而直接从外部设备输入数据称为物理输入,反之称为物理输出;如某个加工将它的输入流分别成很多发散的数据流,形成很多加工路径,并依据输入的值选择其中一个路径来执行,这种特点的 中心;DFD 称为事务型的数据流图,这个加工称为事务处理基于 iDEF0图的设计也是结构化设计技术之一,它以系统的功能模型和信息结构为基础设计系统的软件结构;HIPO 图是表示软件系统结构的工具;它既可以描述软件总的模块层次结构H 图(层次图),又可以描述每个模块输入 /输出数据、处理功能及模块调用的具体情形IPO 图;第 5 章具体设计是软件设计的其次阶段,主要确定每个模块具体执行过程,故也称“过程设计 ” 具体设计的基本任务:1.为每个模块进行具体的算法设计;2.为模块内的数据结构进行设计;3.对数据库进行物理设计,即确定数据库的物理结构;4.其他设计(代码设计、输入输出格式设计、人机对话设计)5.编写具体设计说明书6.评审处理过程设计中采纳的典型方法是结构化程序设计( SP)方法; 具体设计的目标不仅是规律上正确地实现每个模块的功能,仍应使设计出的处理过程清晰易读;结构化程序设计是实现该目标的关键技术之一,它指导人们用良好的思想方法开发易于懂得、易于验证的程序;构化程序设计方法的基本要点是:1 采纳自顶向下、逐步求精的程序设计方法2 使用三种基本掌握结构构造程序 任何程序都可由次序、挑选、 重复三种基本掌握结构构造;口、单出口;3 主程序员组的组织形式;具体描述处理过程常用三种工具:图形、表格和语言;这三种基本结构的共同点是单入程序流程图又称为程序框图,都应由三种基本掌握结构次序组合和完整嵌套而成,不能有相互交叉的情形,这样的流程图是结构化的流程图;PAD图指问题分析图,它是一种自左往右绽开的二维树型结构;掌握流程为自上而下、从左到右的执行;由机器自动通过走树的方法生成相应的源代码,大大提高了软件的生产率;过程设计语言 (PDL),也称程序描述语言,又称伪码; 它是一种用于描述模块算法设计和处理细节的语言; 伪码的结构一般分为内外两层,外层语法应符合一般程序设计语言常用的语法规章, 而内层语法就用一些简洁的句子、短语和通用的数学符号,来描述程序应执行的功能,具有严格的关键字外层语法,用于定义掌握结构、数据结构和模块接口,而它表示实际操作和条件的内层语语法又是敏捷自由的,使用自然语言的词汇;JACKSON方法是面对数据结构的设计方法,70 岁月中期出了 “面对数据结构 ”的设计方法, 其中有代表性的是由英国 M.JACKSON 提出的 JACKSON方法和由法国人 J.WARNIER提出的WARNIER方法;JACKSON在 JSP的基础上扩展成了一种系统的开发方法,简称 JSD;JSD主要以活动大事为中心,通过由一串活动次序组合构成的进程,建立系统模型,最终实现该模型;JSP方法定义了一组以数据结构为指导的映射过程,它依据输入、 输出的数据结构,按肯定的规章映射成软件的过程描述,即程序结构,而不是软件的体系结构,因此该方法适用于具体设计阶段;JACKSON方法供应了自己的描述工具JACKSON结构图;无论数据结构仍是程序结构,都限于三种基本结构(次序结构、挑选结构、重复结构)及它们的组合;JACKSON结构图的特点:1 能对结构进行自顶向下分解,因此可以表示层次结构;2 结构易读,形象直观;3 既能表示数据结构也能表示程序结构,且表示的是组成关系;JSP方法一般通过以下五个步骤来完成设计:名师归纳总结 - - - - - - -第 5 页,共 14 页精选学习资料 - - - - - - - - - 读书之法 ,在循序而渐进 ,熟读而精思1 分析并确定输入数据和输出数据的规律结构,并用 JACKson结构图表示这些数据结构;2 找出输入数据结构和输出数据结构中有对应关系的数据单元;“ 对应关系 ”指这些数据单元 在数据内容上、 数量上和次序上有直接的因果关系,对于重复的数据单元,重复的次序和次 数都相同才有对应关系;3 按肯定的规章由输入、输出的数据结构导出程序结构 4 列出基本操作与条件,并把它们安排到程序结构图的适当位置;5 用伪码写出程序;第 6 章将具体设计得到的处理过程的描述转换为基于某种运算机语言的程序,即源程序代码;程序设计语言特性:1 心理特性指影响程序员心理的语言性能,很多这类特性是作为程序设计的结果而显现的;歧义性:有些语法规章简洁使人用不同的方式来说明语言,这就产生了心理上的二义性;简洁性,人们必需记住的语言成分的数量越多,简洁性越差;局部性和次序性:局部性是指语言的联想性,在编码过程中, 由语句组合成模块,由模块组装成系统结构,并在组装过程实现模块的高内聚,低耦合,使局部性得到加强;传统性:传统性简洁影响人们学习新语种的积极性;2 工程特性 可移值性:指程序从一个运算机环境移植到另一个运算机环境的简洁程度;开发工具的可利用性 软件的可重用性可保护性;3 技术特性为开发一个特定项目挑选程序设计语言时,虑;通常,考虑选用语言的因素有:必需从技术特性、 工程特性和心理特性几方面考1 项目的应用领域:科学工程运算(需要大量的标准库函数,以便处理复杂的数值运算,可供选用的语言有:FORTRAN Pascal C PL/1);数据处理与数据库应用(CoBol SQL 4GL);实时处理(汇编语言 Ada);系统软件(汇编语言 C语言 Pascal语言和 Ada 语言);人工智能 (Lisp是一种函数型语言 Prolog 是一种规律型语言)2 软件开发的方法: 有时编程语言的挑选依靠于开发的方法,假如要用快速原形模型来开发,要求能快速实现原形,宜采纳4GL;假如是面对对象方法,宜采纳面对对象的语言编程C+ JAVA 3 软件执行的环境4 算法和数据结构的复杂性5 软件开发人员的学问;程序设计风格指一个编制程序时所表现出来的特点、习惯、规律思想等;语句构造的原就是:简洁直接,不能为了追求效率而使代码复杂化;效率指处理机时间和储备空间的使用:效率是一个性能要求,目标在需求分析给出;追求效率建立在不损害程序可读性或牢靠性基础之上;提高程序效率的根本途径在于挑选良好的设计方法、良好的数据结构与算法,而不是靠编程时对程序语句做调整第 7 章软件测试的目的:1.软件测试是为了发觉错误而执行程序的过程;2.一个好的测试用例能够发觉至今尚未发觉的错误;3.一个胜利的测试是发觉了至今尚未发觉的错误的测试;测试阶段的基本任务应当是依据软件开发各阶段的文档资料和程序的内部结构,细心设计一组“ 高产 ”的测试用例,利用这些实例执行程序,找出软件中潜在的各种错误和缺陷;软件测试中,应留意以下指导原就:测试用例应由输入数据和预期的输出数据两部分组成;测试用例不仅选用合理的输入数据,仍要挑选不合理的输入数据;这样能更多的发觉错误,名师归纳总结 - - - - - - -第 6 页,共 14 页精选学习资料 - - - - - - - - - 读书之法 ,在循序而渐进 ,熟读而精思提高程序的牢靠性;对不合理的输入数据,程序应拒绝接受,并给出相应提示;软件测试方法一般分为两大类:动态测试方法与静态测试方法;静态测试指被测试程序不在机器上运行,而是采纳人工检测和运算机帮助静态分析的手段对程序进行检测;动态测试指通过运行程序发觉错误,分为黑盒测试法和白盒测试法;黑盒法:把被测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满意功能要求;因此,黑盒测试又称为功能测试或数据驱动测试;白盒法: 把测试对象看作一个打开的盒子,测试人员须明白程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的规律路径进行测试,检验内部掌握结构和数据结构是否有错,实际的运行状态与预期的状态是否一样;由于白盒测试是结构测试,所以被测对象基本上是源程序,以程序的内部规律为基础设计测试用例;1.规律掩盖语句掩盖是指设计足够的测试用例,使被测程序中的每个语句至少执行一次,语句掩盖是比较弱的掩盖标准;判定掩盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次“ 真”值和“假”值,从而使程序的每一个分支至少都通过一次,因此判定掩盖也称分支掩盖;条件掩盖指设计足够的测试用例,使得判定表达式中每个条件的各种可能的值至少显现一次;判定 /条件掩盖指设计足够的测试用例,使得判定表达式中的每个条件的全部可能取值至少显现一次,并使每个判定表达式全部可能的结果也至少显现次;条件组合掩盖是比较强的掩盖标准,它是指设计足够的测试用例,使得每个判定表达式中条件的各种可能的值的组合至少显现一次,满意条件组合掩盖的测试肯定满意“判定掩盖 ”、“ 条件掩盖 ”和“ 判定 / 条件掩盖 ”;路径掩盖是指设计足够的测试用例,掩盖被测程序中全部可能的路径;语句掩盖发觉错误能力最弱;判定掩盖包含了语句掩盖,但它可能会使一些条件得不到测试;P87 2.循环掩盖3.基本路径测试是在程序掌握流程图的基础上,通过分析掌握构造的环路复杂性,导出基本路径集合,从而设计测试用例,保证这些路径至少通过一次;独立路径是指包括一组以前没有处理的语句或条件的一条路径;从程序图来看, 一条独立路径是至少包含有一条在其他独立路径中未有过的边的路径;P89 黑盒测试是功能测试,因此设计测试用例时,需要讨论需求规格说明和概要设计说明中有关程序功能或输入、输出之间的关系等信息,从而与测试后的结果进行分析比较;黑盒技术:1 等价类划分:它将输入数据域按有效的或无效的(也称合理的或不合理的)划分为如干个等价类,测试每个等价类的代表值就等于对该类其他值的测试;用等价类划分的方法设计测试用例的步骤为:划分等价类确定测试用例的步骤:为每一个等价类编号;设计一个测试用例,使其尽可能多地掩盖尚未被掩盖过的合理等价类;重覆这步, 直到全部合理等价类被测试用例掩盖;设计一个测试用例,使其只掩盖一个不合理等价类;重覆这一步,直到全部不合理等价类被掩盖;2 边界值分析 使用边界值分析方法设计测试用例时一般与等价类划分结合起来;但它不是从一个等价类中任选一个例子作为代表,而将测试边界情形作为重点目标,选取正好等于、 刚刚大于或刚刚小于边界值的测试数据;3 错误估量:在测试程序时,人们可能依据体会或直觉估量程序中可能存在的各种错误,从 而有针对性地编写检查这些错误的测试用例,这就是错误估量法;4 因果图:因果图能有效地检测输入条件的各种组合可能会引起的错误;因果图的基本原理 是通过画因果图, 把用自然语言描述的功能说明转换为判定表,最终为判定表的每一列设计 一个测试用例;5 综合策略 软件测试时需要三类信息:1 软件配置:指需求规格说明书、设计说明书、源程序等;2 测试配置:指测试方案、测试用例、测试驱动程序等 3 测试工具:指运算机帮助测试的有关工具;软件产品在交付使用之前要经过哪些测试呢?一般要经过以下四步测试:单元测试、 集成测试、确认测试和系统测试;软件测试的步骤及与各开发阶段的关系名师归纳总结 - - - - - - -第 7 页,共 14 页精选学习资料 - - - - - - - - - 读书之法 ,在循序而渐进 ,熟读而精思单元测试指对源程序中每一个程序单元进行测试,检查各个模块是否正的确现规定的功能,从而发觉模块在编码中或算法中的错误;该阶段涉及编码和具体设计的文档;各模块经过单元测试后,将各模块组装起来进行集成测试,以检查与设计相关的软件体系结构的有关问题;确认测试主要检查已实现的软件是否满意需求规格说明书中确定了的各种需求;系统测试指把已确认的软件与其他系统元素结合在一起进行测试;单元测试主要针对模块的以下五个基本特点进行测试:行路径、错误处理、边界条件;模块接口、 局部数据结构、 重要的执在单元测试时,需要为被测模块设计驱动模块和桩模块;驱动模块的作用是用来模拟被测模块的上级调用模块,它只完成接受测试数据,以上级模块调用被测模块的格式驱动被测模块,接收被测模块的测试结果并输出;桩模块用来代替被测试模块所调用的模块;它的作用是返回被测试模块所需的信息;集成测试是指在单元测试的基础上,将全部模块依据设计要求组装成一个完整的系统进行的测试,故也称组装测试或联合测试;集成测试的方法主要有两种:非渐增式测试和渐增式测试;非渐增式方法把单元测试和集成测试分成两个不同的阶段;P97 渐增式测试有以下两种不同的组装模块的方法:自顶向下结合 (深度优先策略、宽度优先策略);自底向上结合确认测试又称有效性测试;它的任务是检查软件的功能与性能是否与需求规格说明书中确定的指标相符合,确认测试阶段有两项工作:进行确认测试与软件配置审查;确认测试一般是在模拟环境下运用黑盒测试方法,由特地测试人员和用户参与的测试;软件配置审查的任务是检查软件的全部文档资料的完整性、正确性; 如发觉遗漏和错误,应补充和改正;软件测试的目的是尽可能多地发觉程序中的错误,而调试就是在进行了胜利的测试之后才开始的工作,因此调试也称为纠错;归纳法调试从测试结果发觉的线索入手,分析它们之间的联系,导出错误缘由的假设,然后再证明或否定这个假设;步骤:收集有关数据;组织数据;提出假设;证明假设演绎法调试是列出全部可能的错误缘由的假设,然后利用测试数据排除不适当的假设,最终再测试数据验证余下的假设的确是出错的缘由;步骤: 列出全部可能的错误缘由的假设;排除不适当的假设;精化余于的假设;证明余于的假设;回溯法调试: 该方法从程序产生错误的地方动身,人工沿程序的规律路径反向搜寻,直到找到错误缘由为止;第 8 章软件保护的内容有四种:校正性保护,适应性保护,完善性保护和预防性保护;校正性保护: 为了识别和订正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性保护;适应性保护:为了使应用软件适应硬件和软件环境的变化而修改软件的过程称为适应性维护;完善性保护: 增加软件功能、 增强软件性能、 提高软件运行效率而进行的保护活动称为完善性保护;预防性保护:为了提高软件的可保护性和牢靠性而对软件进行的修改称为预防性保护;软件的开发过程对软件的保护有较大的影响;如不采纳软件工程的方法开发软件,就软件只有程序而无文档, 保护工作特别困难,这是一种非结构化的保护;如采纳软件工程的方法开发软件,就各阶段都有相应的文档,简洁进行保护工作,这是一种结构化的保护;用于软件保护工作的活动可分为生产性活动和非生产性活动两种;生产性活动包括分析评价、修改设计和编写程序代码等;非生产性活动包括懂得程序代码功能、说明数据结构接口特点和设计约束;P106 保护的流程:制定保护申请报告;审查申请报告并批准;进行保护并做具体记录;覆审;保护申请报告是一种由用户生产的文档,它用作方案保护任务的基础;名师归纳总结 不管保护类型如何,大体上要开展相同的技术工作;这些工作包括修改软件设计、必要的代第 8 页,共 14 页- - - - - - -精选学习资料 - - - - - - - - - 读书之法 ,在循序而渐进 ,熟读而精思码修改、单元测试、集成测试、确认测试以及复审;有两类保护技术, 它们是面对保护的技术和保护支援技术;面对保护的技术是在软件开发阶段用来削减错误、 提高软件可保护性的技术;保护支援技术是在软件保护阶段用来提高保护 作业的效率和质量的技术;这些技术方法都能削减软件错误,提高软件的可保护性;因修改软件而造成的错误或其他不期望显现的情形称为保护的副作用;(编码副作用、数据 副作用、文档副作用)在软件交付这前对整个软件配置进行评审,以削减文档副作用;软件可保护性的定义:软件能够被懂得、校正、适应及增强功能的简洁程度;软件的可保护性可用 软件的可保护性、 可使用性、 牢靠性是衡量软件质量的几个主要特性;下面七个质量特性可来衡量,即可懂得性、可测试性、可修改性、牢靠性、可移植性、可使 用性和效率;对不同类型的保护,这七种特性的侧重点也不相同;提高可保护性的方法:建立明确的软件质量目标;利用先进的软件开发技术和工具;建立明确的质量保证工作;挑选可保护的程序设计语言;改进程序文档;为了保证可保护性,以下四类检查是特别有用的:在检查点进行检查;验收检查; 周期性的保护检查;对软件包的检查;第 9 章传统的瀑布模型本质上是一种线性次序模型,各阶段之间存在着严格的次序性和依靠性,特别强调预先定义需求的重要性;瀑布模型属于整体开发模型,它规定在开头下一个阶段的工作之前,必需完成前一阶段的所 有细节; 而增量模型属于非整体开发模型,它推迟某些阶段或全部阶段中的细节,从而较早 的产生工作软件;增量模型是在项目的开发过程中以一系列的增量方式开发系统;增量方式包括增量开发和增 量提交; 增量开发是指在项目开发周期内,以肯定的时间间隔开发部分工作软件;增量提交 是指在项目开发周期内,以肯定的时间间隔增量方式向用户提交工作软件及相应文档;依据增量的方式和形式的不同,分为渐增模型和原型模型;渐增模型是瀑布模型的变种,有两类渐增模型:1 增量构造模型:它在瀑布模型基础上,对一些阶段进行整体开发,对另一些阶段进行增量 开发;前面的开发阶段按瀑布模型进行整体开发,后面的开发阶段按增量方式开发;2 演化提交模型:它在瀑布模型的基础上,全部阶段都进行增量开发,也就是说不仅是增量 开发,也是增量提交;原形模型又称快速原形模型,它是增量模型的另一种形式;依据原型的不同作用,有三类原型模型:1 探究型原型:这种类型的原型模型是把原型用于开发的需求分析阶段,目的是要弄清用户 的需求,确定所期望的特性,并探究各种方案的可行性;它主要针对开发目标模糊,用户与 开发都对项目都缺乏体会的情形,通过对原型的开发来明确用户的需求;2 试验型原型:主要用于设计阶段,考核实现方案是否合适,能否实现;3 演化型原型:主要用于及早向用户提交一个原型系统,该原型系统或者包含系统的框架,或者包含系统的主要功能,在得到用户的认可后,将原型系统不断扩充演化为最终的软件系统;它将原型的思想扩展到软件开发的全过程;