1、二级公共基础知识辅导第二级公共基础知识辅导第3章章 3.1 软件工程基本概念软件工程基本概念3.1.1 3.1.1 软件的定义与特点软件的定义与特点 1.软件的定义软件的定义 软件是指与计算机系统的操作有关的计算机软件是指与计算机系统的操作有关的计算机程序、规程、规则,以及可能有的文件、文档和程序、规程、规则,以及可能有的文件、文档和数据。数据。2.软件特点软件特点 3软件的分类软件的分类软件可分系统软件、应用软件和支撑软件软件可分系统软件、应用软件和支撑软件3类。类。(1)系统软件居于计算机系统中最靠近硬件的一层,系统软件居于计算机系统中最靠近硬件的一层,是计算机管理自身资源,提高计算机使用
2、效率并为计算是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。机用户提供各种服务的软件。(2)应用软件是特定应用领域内专用的软件。应用软件是特定应用领域内专用的软件。(3)支撑软件介于系统软件和应用软件之间,是支援支撑软件介于系统软件和应用软件之间,是支援其它软件的开发与维护的软件。其它软件的开发与维护的软件。(1)软件是指)软件是指_。A)程序)程序 B)程序和文档)程序和文档 C)算法加数据结构)算法加数据结构 D)程序、数据与相关文档的完整集合)程序、数据与相关文档的完整集合D (2)软件按功能可以分为:应用软件、)软件按功能可以分为:应用软件、系统软件和支撑软件
3、(或工具软件)。下面系统软件和支撑软件(或工具软件)。下面属于应用软件的是属于应用软件的是_。A)编译软件)编译软件 B)操作系统)操作系统 C)教务管理系统)教务管理系统 D)汇编程序)汇编程序C(3)软件按功能可以分为:应用软件、系)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面统软件和支撑软件(或工具软件)。下面属于系统软件的是属于系统软件的是 _。A)编辑软件)编辑软件 B)操作系统)操作系统 C)教务管理系统)教务管理系统 D)浏览器)浏览器 B(4)软件按功能可以分为:应用软件、系)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面统软件和支
4、撑软件(或工具软件)。下面属于应用软件的是属于应用软件的是 _。A)学生成绩管理系统)学生成绩管理系统 B)C语言编译程序语言编译程序 C)UNIX操作系统操作系统 D)数据库管理系统)数据库管理系统 A 3.1.2 软件危机与软件工程软件危机与软件工程 软件危机是泛指在计算机软件的开发和维护软件危机是泛指在计算机软件的开发和维护中遇到的一系列严重问题。中遇到的一系列严重问题。软件工程是应用于计算机软件的定义、开发软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和和维护的一整套方法、工具、文档、实践标准和工序,包括软件开发技术和软件工程管理。工序,包括软件开发技术
5、和软件工程管理。3.1.3 软件过程与软件生命周期软件过程与软件生命周期 1软件过程软件过程 软件过程是把输入转化为输出的一组彼此相关软件过程是把输入转化为输出的一组彼此相关的资源和活动。的资源和活动。软件过程通常包含软件过程通常包含4种基本活动:种基本活动:(1)P(Plan)软件规格说明软件规格说明(2)D(Do)软件开发或软件设计与实现软件开发或软件设计与实现(3)C(Cleck)软件确认软件确认(4)A(Action)软件演进软件演进3.1.3 软件工程过程与软件生命周期软件工程过程与软件生命周期 2软件生命周期软件生命周期 软件产品从提出、实现、使用维护到停止使用的过软件产品从提出、
6、实现、使用维护到停止使用的过程称为软件生命周期。程称为软件生命周期。软件生命周期划分为软件定义、软件开发及软件运软件生命周期划分为软件定义、软件开发及软件运行维护三个阶段。行维护三个阶段。一般包括可行性分析研究与需求分析、一般包括可行性分析研究与需求分析、总体总体设计、设计、详细详细设计、设计、编码、编码、测试、使用以及维护等活动,如图测试、使用以及维护等活动,如图3-1所示。所示。总体总体设计设计和详细和详细设计设计又称为系统设计。又称为系统设计。编码和编码和测试测试又称为系统实现。又称为系统实现。(1)下列选项中不属于软件生命周期开发下列选项中不属于软件生命周期开发阶段任务的是阶段任务的是
7、 _。A)软件测试软件测试 B)概要设计(总体设计)概要设计(总体设计)C)软件维护软件维护 D)详细设计详细设计 C(2)软件生命周期可分为多个阶段,一般)软件生命周期可分为多个阶段,一般分为定义阶段、开发阶段和维护阶段。编分为定义阶段、开发阶段和维护阶段。编码和测试属于码和测试属于_ 阶段。阶段。A维护维护 B定义定义 C开发开发 D可行性分析可行性分析 C 需求分析(4)软件生命周期可分为多个阶段,一般)软件生命周期可分为多个阶段,一般分为定义阶段、开发阶段和维护阶段。详分为定义阶段、开发阶段和维护阶段。详细设计属于细设计属于_ 阶段。阶段。A定义定义 B开发开发 C维护维护 D上述三个
8、阶段上述三个阶段B(5)软件生命周期中的活动不包括)软件生命周期中的活动不包括_。A需求分析需求分析 B市场调研市场调研 C软件测试软件测试 D软件维护软件维护 B(6)下面不属于需求分析阶段任务的是)下面不属于需求分析阶段任务的是_。A确定软件系统的功能需求确定软件系统的功能需求 B制定软件集成测试计划制定软件集成测试计划 C确定软件系统的性能需求确定软件系统的性能需求 D需求规格说明书评审需求规格说明书评审 B 3.1.4 软件工程的目标与原则软件工程的目标与原则 2软件工程的原则软件工程的原则 软件工程的原则包括:抽象、信息隐蔽、模软件工程的原则包括:抽象、信息隐蔽、模块化、局部化、确定
9、性、一致性、完备性和可验块化、局部化、确定性、一致性、完备性和可验证性。证性。(3)软件工程三要素包括方法、工具和过软件工程三要素包括方法、工具和过程,其中,程,其中,_支持软件开发的各个环支持软件开发的各个环节的控制和管理。节的控制和管理。A)方法)方法 B)过程)过程 C)工具)工具 D)队象)队象B3.2 3.2 结构化分析方法结构化分析方法3.2.1 3.2.1 需求分析与需求分析方法需求分析与需求分析方法 需求分析的任务是发现需求、求精、建模和定义需求分析的任务是发现需求、求精、建模和定义需求的过程。可概括为:需求获取、需求分析、编写需需求的过程。可概括为:需求获取、需求分析、编写需
10、求规格说明书和需求评审。求规格说明书和需求评审。1常见的需求分析方法常见的需求分析方法 结构化分析方法:其实质着眼于数据流,自顶向结构化分析方法:其实质着眼于数据流,自顶向下,逐层分解,建立系统的处理流程。下,逐层分解,建立系统的处理流程。面向对象的分析方法面向对象的分析方法。3.2.2 3.2.2 结构化分析方法结构化分析方法 结构化分析就是使用数据流图(DFD)、数据字典(DD)、结构化英语、判定表和判定树等工具,来建立一种新的、称为结构化规格说明的目标文档文档。2结构化分析常用工具结构化分析常用工具 结构化分析常用工具包括数据流图、数字字典(核心方法)、结构化分析常用工具包括数据流图、数
11、字字典(核心方法)、判断树和判断表。判断树和判断表。(1)数据流图:即数据流图:即DFD图,以图形的方式描绘数据在系统中流图,以图形的方式描绘数据在系统中流动和处理的过程,它只反映系统必须完成的逻辑功能,是一种功动和处理的过程,它只反映系统必须完成的逻辑功能,是一种功能模型。能模型。符号名称作用:符号名称作用:箭头代表数据流,沿箭头方向传送数据的通道。箭头代表数据流,沿箭头方向传送数据的通道。圆或椭圆代表加工,输入数据经加工变换产生输出圆或椭圆代表加工,输入数据经加工变换产生输出 双杠代表存储文件,表示处理过程中存放各种数据文件双杠代表存储文件,表示处理过程中存放各种数据文件 方框代表源和潭,
12、表示系统和环境的接口方框代表源和潭,表示系统和环境的接口 (2)数据字典(数据字典(DD)结构化分析方法的核心。数据字典是对所有结构化分析方法的核心。数据字典是对所有与系统相关的数据元素的一个有组织的列表,以与系统相关的数据元素的一个有组织的列表,以及精确的、严格的定义,使得用户和系统分析员及精确的、严格的定义,使得用户和系统分析员对于输入、输出、存储成分和中间计算结果有共对于输入、输出、存储成分和中间计算结果有共同的理解。同的理解。(3)判定树判定树 使用判定树进行描述时,应先从问题定义的文字描述中使用判定树进行描述时,应先从问题定义的文字描述中分清判定的条件和判定的结论,根据描述材料中的连
13、接词找分清判定的条件和判定的结论,根据描述材料中的连接词找出判定条件之间的从属关系、并列关系、选择关系,根据它出判定条件之间的从属关系、并列关系、选择关系,根据它们构造判定树。们构造判定树。(4)判定表判定表 与判定树相似,当数据流图中的加工要依赖于多个逻辑与判定树相似,当数据流图中的加工要依赖于多个逻辑条件的取值,即完成该加工的一组动作是由于某一组条件取条件的取值,即完成该加工的一组动作是由于某一组条件取值的组合引发的,使用判定表比较适宜。值的组合引发的,使用判定表比较适宜。(1)在结构化分析使用的数据流图()在结构化分析使用的数据流图(DFD)中,利用中,利用_对其中的图形元素进行对其中的
14、图形元素进行确切解释。确切解释。A)数据字典数据字典 B)事件)事件 C)模块)模块 D)N-S 图图A (2)数据流图中带有箭头的线段表示的)数据流图中带有箭头的线段表示的是是 。A)控制流)控制流 B)事件驱动)事件驱动 C)模块调用)模块调用 D)数据流)数据流 D(3)在软件开发中,需求分析阶段可以使)在软件开发中,需求分析阶段可以使用的工具是用的工具是 。A)N-S 图图 B)DFD 图图 C)PAD 图图 D)程序流程图)程序流程图B(4)数据流图()数据流图(DFD 图)是图)是_。A)软件概要设计的工具软件概要设计的工具 B)软件详细设计的工具软件详细设计的工具 C)结构化方法
15、的需求分析工具结构化方法的需求分析工具 D)面向对象方法的需求分析工具面向对象方法的需求分析工具C 3.2.3 软件需求规格说明书软件需求规格说明书 软件需求规格说明书是需求分析阶段的最后成软件需求规格说明书是需求分析阶段的最后成果,是软件开发的重要文档之一。果,是软件开发的重要文档之一。(1)软件需求规格说明书的作用软件需求规格说明书的作用 便于用户、开发人员进行理解和交流。便于用户、开发人员进行理解和交流。反映出用户问题的结构,可作为软件开发工作的基础和依据。反映出用户问题的结构,可作为软件开发工作的基础和依据。作为确认测试和验收的依据。作为确认测试和验收的依据。为成本估算和编制计划进度提
16、供依据。为成本估算和编制计划进度提供依据。软件不断改进的基础。软件不断改进的基础。(2)软件需求规格说明书的内容软件需求规格说明书的内容 概述概述 数据描述数据描述 功能描述功能描述 性能描述性能描述 参考文献参考文献 附录附录(3)软件需求规格说明书的特点软件需求规格说明书的特点 正确性正确性 无歧义性无歧义性 完整性完整性 可验证性可验证性 一致性一致性 可理解性可理解性 可修改性可修改性 可追踪性可追踪性3.2.3 3.2.3 软件需求规格说明书软件需求规格说明书 软件需求规格说明书(SRS)是需求阶段的最后成果,是软件开发中的重要文档之一。软件需求规格说明书的特点:(p73)正确性 体
17、现待开发系统的真实要求 无歧义性 完整性 可验证性 一致性 可理解性 可修改性 可追踪性 (1)软件需求规格说明书应具有完整性,软件需求规格说明书应具有完整性,无岐义性、正确性、可验证性、可修改性无岐义性、正确性、可验证性、可修改性等特征,其中最重要的是等特征,其中最重要的是 。A)完整性完整性 B)可验证性可验证性 C)正确性正确性 D)可修改性可修改性 C (2)在软件开发中,需求分析阶段产)在软件开发中,需求分析阶段产生的主要文档是生的主要文档是_。A)可行性分析报告)可行性分析报告 B)软件需求规格说明书)软件需求规格说明书 C)概要设计说明书)概要设计说明书 D)集成测试计划)集成测
18、试计划B 3.3 结构化设计方法结构化设计方法 经过需求分析,软件系统确定了要经过需求分析,软件系统确定了要“做什么做什么”的目标,而软件设计要解决和的目标,而软件设计要解决和确定确定“怎样做怎样做”的问题。的问题。3.3.1 软件设计的基本概念软件设计的基本概念 1软件设计的基础软件设计的基础 软件设计是一个把软件需求转换为软件表示的过程。软件设计是一个把软件需求转换为软件表示的过程。2.软件设计的基本原理软件设计的基本原理 抽象、模块化、信息隐藏、模块独立性(抽象、模块化、信息隐藏、模块独立性(度量标准:耦合性和内聚性,低耦合、高内聚)。度量标准:耦合性和内聚性,低耦合、高内聚)。(2)结
19、构化设计方法结构化设计方法 结构化设计方法的基本思想是将软件设计成由相对结构化设计方法的基本思想是将软件设计成由相对独立、单一功能的模块组成的结构。独立、单一功能的模块组成的结构。3.3.1 软件设计的基本概念软件设计的基本概念 1软件设计的基础软件设计的基础 软件设计是一个把软件需求转换为软件表示的过程。软件设计是一个把软件需求转换为软件表示的过程。从技术观点上看,软件设计包括软件结构设计、数据设计、接从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。口设计、过程设计。(1)结构设计定义软件系统各主要部件之间的关系;)结构设计定义软件系统各主要部件之间的关系;(2)数据
20、设计将分析时创建的模型转化为数据结构的定义;)数据设计将分析时创建的模型转化为数据结构的定义;(3)接口设计是描述软件内部、软件和协作系统之间以及软件)接口设计是描述软件内部、软件和协作系统之间以及软件与人之间如何通信;与人之间如何通信;(4)过程设计则是把系统结构部件转换为软件的过程性描述。)过程设计则是把系统结构部件转换为软件的过程性描述。从工程管理角度来看,软件设计分两步完成:概要设计和详从工程管理角度来看,软件设计分两步完成:概要设计和详细设计。细设计。(1)概要设计)概要设计(又称结构设计)(又称结构设计)将软件需求转化为软件体系将软件需求转化为软件体系结构、确定系统级接口、全局数据
21、结构或数据库模式;结构、确定系统级接口、全局数据结构或数据库模式;(2)详细设计确立每个模块的实现算法和局部数据结构,用)详细设计确立每个模块的实现算法和局部数据结构,用适当方法表示算法和数据结构的细节。适当方法表示算法和数据结构的细节。3.3.1 软件设计的基本概念软件设计的基本概念2.软件设计的基本原理软件设计的基本原理 (1)抽象:软件设计中考虑模块化解决方案时,可以)抽象:软件设计中考虑模块化解决方案时,可以定出多个抽象级别。抽象的层次从概要设计到详细设计定出多个抽象级别。抽象的层次从概要设计到详细设计逐步降低。逐步降低。(2)模块化:模块是指把一个待开发的软件分解成若)模块化:模块是
22、指把一个待开发的软件分解成若干小的简单的部分。模块化是指解决一个复杂问题时自干小的简单的部分。模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。顶向下逐层把软件系统划分成若干模块的过程。(3)信息隐蔽:信息隐蔽是指在一个模块内包含的)信息隐蔽:信息隐蔽是指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。来说是不能访问的。(4)模块独立性:模块独立性是指每个模块只完成系)模块独立性:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且统要求的独立的子功能,并且与其他
23、模块的联系最少且接口简单。接口简单。模块的独立程度是评价设计好坏的重要度量标准。衡量软件的模模块的独立程度是评价设计好坏的重要度量标准。衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准。内聚性是信息隐块独立性使用耦合性和内聚性两个定性的度量标准。内聚性是信息隐蔽和局部化概念的自然扩展。一个模块的内聚性越强则该模块的模块蔽和局部化概念的自然扩展。一个模块的内聚性越强则该模块的模块独立性越强。一个模块与其他模块的耦合性越强则该模块的模块独立独立性越强。一个模块与其他模块的耦合性越强则该模块的模块独立性越弱。性越弱。内聚性是度量一个模块功能强度的一个相对指标。内聚是从功能内聚性是度量一个模块
24、功能强度的一个相对指标。内聚是从功能角度来衡量模块的联系,它描述的是模块内的功能联系。内聚有如下角度来衡量模块的联系,它描述的是模块内的功能联系。内聚有如下种类,它们之间的内聚度由弱到强排列:种类,它们之间的内聚度由弱到强排列:偶然内聚、逻辑内聚、时间偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚内聚、过程内聚、通信内聚、顺序内聚、功能内聚。耦合性是模块之间互相连接的紧密程度的度量。耦合性取决于耦合性是模块之间互相连接的紧密程度的度量。耦合性取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。耦合各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。耦合可以分
25、为下列几种,它们之间的耦合度由高到低排列:可以分为下列几种,它们之间的耦合度由高到低排列:内容耦合、公内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合、非直接耦合共耦合、外部耦合、控制耦合、标记耦合、数据耦合、非直接耦合。在程序结构中,各模块的内聚性越强,则耦合性越弱。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到一般较优秀的软件设计,应尽量做到高内聚,低耦合,高内聚,低耦合,即即减弱模减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。优秀的软件设计应尽量做到高内聚,低耦合优秀
26、的软件设计应尽量做到高内聚,低耦合选择题选择题 (1)两个或两个以上模块之间关联的紧两个或两个以上模块之间关联的紧密程度称为密程度称为_。A)耦合度耦合度 B)内聚度内聚度 C)复杂度复杂度 D)数据传输特性数据传输特性A (2)在结构化程序设计中,模块划分的原则在结构化程序设计中,模块划分的原则是是 _。A)各模块应包括尽量多的功能各模块应包括尽量多的功能 B)各模块的规模应尽量大各模块的规模应尽量大 C)各模块之间的联系应尽量紧密各模块之间的联系应尽量紧密 D)模块内具有高内聚度、模块间具有低耦合度模块内具有高内聚度、模块间具有低耦合度 D (3)软件设计中模块划分应遵循的准则)软件设计中
27、模块划分应遵循的准则是是_。A)低内聚低耦合)低内聚低耦合 B)高内聚低耦合)高内聚低耦合 C)低内聚高耦合)低内聚高耦合 D)高内聚高耦合)高内聚高耦合 B (4)耦合性和内聚性是对模块独立性度量的两个标)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是准。下列叙述中正确的是_。A)提高耦合性降低内聚性有利于提高模块的独立性)提高耦合性降低内聚性有利于提高模块的独立性 B)降低耦合性提高内聚性有利于提高模块的独立性)降低耦合性提高内聚性有利于提高模块的独立性 C)耦合性是指一个模块内部各个元素间彼此结合的)耦合性是指一个模块内部各个元素间彼此结合的紧密程度紧密程度 D)内聚性是
28、指模块间互相连接的紧密程度)内聚性是指模块间互相连接的紧密程度 B 3.3.2 概要设计概要设计1概要设计(总体设计或结构设计)基本任务概要设计(总体设计或结构设计)基本任务 (1)设计软件系统结构)设计软件系统结构 (2)数据结构及数据库设计)数据结构及数据库设计 (3)编写概要设计文档)编写概要设计文档 (4)概要设计文档评审。)概要设计文档评审。概要设计概要设计本结构图三层深度是本结构图三层深度是3本结构图宽度是本结构图宽度是8结构图(也称程序结构图)结构图(也称程序结构图)深度:表示控制的层数深度:表示控制的层数宽度:整体控制跨度宽度:整体控制跨度(最大模块数)的表示最大模块数)的表示
29、 3.3.2 概要设计概要设计2.面向数据流的结构化设计方法面向数据流的结构化设计方法(1)数据流类型有两种)数据流类型有两种:交换型交换型 事务型事务型(2)面向数据流设计方法的实施要点与设计过程)面向数据流设计方法的实施要点与设计过程 3.3.2 概要设计概要设计(3)设计准则)设计准则 提高模块独立性提高模块独立性 模块规模适中模块规模适中 深度、宽度、扇出和扇入适当深度、宽度、扇出和扇入适当 使模块的作用域在该模块的控制域内使模块的作用域在该模块的控制域内 应该减少模块的接口和界面的复杂性应该减少模块的接口和界面的复杂性 设计成单入口、单出口的模块设计成单入口、单出口的模块 设计功能可
30、预测的模块设计功能可预测的模块选择题选择题 (1)从工程管理角度,软件设计一般分从工程管理角度,软件设计一般分为两步完成,它们是为两步完成,它们是 _。A)概要设计与详细设计概要设计与详细设计 B)数据设计与接口设计数据设计与接口设计 C)软件结构设计与数据设计软件结构设计与数据设计 D)过程设计与数据设计过程设计与数据设计 A2.下列软件系统结构图的宽度为下列软件系统结构图的宽度为_。A.1 B.3 C.4 D.6TCBDEFB (3)某系统总体结构图如下图所示:某系统总体结构图如下图所示:该系统总体结构图的深度是_。A)7 B)6 C)3 D)2C 3.3.3 详细设计详细设计 详细设计的
31、任务是为软件结构图中的每个模详细设计的任务是为软件结构图中的每个模块确定实现算法和局部数据结构,用某种选定的块确定实现算法和局部数据结构,用某种选定的表达表示工具算法和数据结构的细节。表达表示工具算法和数据结构的细节。常见的详细设计的工具包括:常见的详细设计的工具包括:图形工具:程序流程图、图形工具:程序流程图、N-S、PAD、HIPO。表格工具:判定表。表格工具:判定表。语言工具:语言工具:PDL(伪码伪码)。(1)程序流程图中带有箭头的线段表示的)程序流程图中带有箭头的线段表示的是是_。A)图元关系)图元关系 B)数据流)数据流 C)控制流)控制流 D)调用关系)调用关系C (2)软件详细
32、设计产生的图如下图:)软件详细设计产生的图如下图:该图是该图是_。A.N-S图图 B.PAD图图 C.程序流程图程序流程图 D.E-R图图C(3)程序流程图中菱形表示的是)程序流程图中菱形表示的是_。A)加工)加工 步骤步骤 B)数据流)数据流 C)控制流)控制流 D)逻辑条件)逻辑条件D (3)结构化程序所要求的基本结构)结构化程序所要求的基本结构不包括不包括_。A)顺序顺序结构结构 B)选择选择结构结构 C)GOTO 跳转跳转 D)重复重复结构结构C(4)下面描述中错误的是)下面描述中错误的是_。A3.4 软件测试软件测试3.4.1 3.4.1 软件测试的目的和定义软件测试的目的和定义 软
33、件测试是为了发现错误而执行程序的过程。软件测试是为了发现错误而执行程序的过程。3.4.2 3.4.2 软件测试的准则软件测试的准则所有测试应追溯到用户需求。所有测试应追溯到用户需求。严格执行测试计划,排除测试的随意性。严格执行测试计划,排除测试的随意性。充分注意测试中的群集现象。充分注意测试中的群集现象。程序员应避免检查自己的程序。程序员应避免检查自己的程序。穷举测试不可能。穷举测试不可能。1.妥善保存设计计划、测试用例、出错统计和最终分析报告。妥善保存设计计划、测试用例、出错统计和最终分析报告。3.4.2 软件测试的准则软件测试的准则 (1)下列叙述中正确的是下列叙述中正确的是_。A)软件测
34、试的主要目的是发现程序中的错误软件测试的主要目的是发现程序中的错误 B)软件测试的主要目的是确定程序中错误的位置软件测试的主要目的是确定程序中错误的位置 C)为了提高软件测试的效率,最好由程序编制者自为了提高软件测试的效率,最好由程序编制者自己来完成软件的测试工作己来完成软件的测试工作 D)软件测试是证明软件没有错误软件测试是证明软件没有错误 A(2)下面叙述中错误的是)下面叙述中错误的是_。A)软件测试的目的是发现错误并改正错误)软件测试的目的是发现错误并改正错误 B)对被调试的程序进行)对被调试的程序进行“错误定位错误定位”是程序是程序调试的必要步骤调试的必要步骤 C)程序调试通常也称为)
35、程序调试通常也称为Debug D)软件测试应严格执行测试计划,排除测试)软件测试应严格执行测试计划,排除测试的随意性的随意性A(3)下列叙述中正确的是下列叙述中正确的是_。A)软件测试应该由程序开发者来完成软件测试应该由程序开发者来完成 B)程序经调试后一般不需要再测试程序经调试后一般不需要再测试 C)软件维护只包括对程序代码的维护软件维护只包括对程序代码的维护 D)以上三种说法都不对以上三种说法都不对 D3.4.3 软件测试方法与技术综述软件测试方法与技术综述 软件测试的方法按是否需要执行被测软件的软件测试的方法按是否需要执行被测软件的角度,可分为静态测试和动态测试,按功能分为角度,可分为静
36、态测试和动态测试,按功能分为白盒测试和黑盒测试。白盒测试和黑盒测试。(1)白盒测试白盒测试 根据程序的内部逻辑设计测试用例,主要方根据程序的内部逻辑设计测试用例,主要方法有逻辑覆盖测试、基本路径测试等。法有逻辑覆盖测试、基本路径测试等。(2)黑盒测试黑盒测试 根据规格说明书的功能来设计测试用例,主根据规格说明书的功能来设计测试用例,主要诊断方法有等价划分法、边界值分析法、错误要诊断方法有等价划分法、边界值分析法、错误推测法、因果图法等,主要用于软件确认测试。推测法、因果图法等,主要用于软件确认测试。3.4.3 软件测试技术与方法综述软件测试技术与方法综述白盒白盒测试方法测试方法白盒测试方法白盒
37、测试方法3.4.3 软件测试技术与方法综述软件测试技术与方法综述 (1)程序测试分为静态分析和动态测试。程序测试分为静态分析和动态测试。其中其中 【4】是指不执行程序,而只是对是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。析和发现程序中的错误。静态分析填空题(每空填空题(每空2分)分)(2)软件测试分为白箱(盒)测试和黑)软件测试分为白箱(盒)测试和黑箱(盒)测试,等价类划分法属于箱(盒)测试,等价类划分法属于_测试。测试。黑箱 (3)在两种基本测试方法中,在两种基本测试方法中,【2】测测试的原则之一是保证所测模块中每一个
38、独试的原则之一是保证所测模块中每一个独立路径至少执行一次。立路径至少执行一次。白盒 (4)测试用例包括输入值集和测试用例包括输入值集和 【1】。输出集集填空题填空题(5)软件测试可分为白盒测试和黑盒测试。)软件测试可分为白盒测试和黑盒测试。基本路径测试属于基本路径测试属于 【2】测试。测试。白盒(6)在黑盒测试方法中,设计测试用例的)在黑盒测试方法中,设计测试用例的主要根据是主要根据是_。A程序内部逻辑程序内部逻辑 B程序流程图程序流程图 C程序数据结构程序数据结构 D程序外部功能程序外部功能 D3.4.4 软件测试的策略软件测试的策略单元测试单元测试 单元测试是单元测试对软件设计的最小单位单
39、元测试是单元测试对软件设计的最小单位模块(程序模块(程序单元)进行正确性检验测试。单元)进行正确性检验测试。单元测试的目的是发现各模块内部可能存在的各种错误。单元测试的目的是发现各模块内部可能存在的各种错误。单元测试的依据是详细的设计说明书和源程序。单元测试的依据是详细的设计说明书和源程序。单元测试的技术可以采用静态分析和动态测试。对动态测试单元测试的技术可以采用静态分析和动态测试。对动态测试通常以白盒动态测试为主,辅之以黑盒测试。通常以白盒动态测试为主,辅之以黑盒测试。(1)按照软件测试的一般步骤,集成测按照软件测试的一般步骤,集成测试应在试应在 _测试之后进行。测试之后进行。A系统测试系统
40、测试B集成测试集成测试C验收测试验收测试D单元测试单元测试D (2)对软件设计的最小单位(模块或)对软件设计的最小单位(模块或程序单元)进行的测试通常称为程序单元)进行的测试通常称为_。A系统测试系统测试B集成测试集成测试C单元测试单元测试D验收测试验收测试C3.5 程序的调试程序的调试3.5.1 基本概念基本概念 在对程序进行了成功的测试之后将进入程序在对程序进行了成功的测试之后将进入程序调试(通常称调试(通常称Debug,即排错)。程序的调试任,即排错)。程序的调试任务是诊断和改正程序中的错误。调试主要在开务是诊断和改正程序中的错误。调试主要在开发阶段进行。发阶段进行。程序调试活动由两部分
41、组成,一是根据错程序调试活动由两部分组成,一是根据错误的迹象确定程序中错误的确切性质、原因和误的迹象确定程序中错误的确切性质、原因和位置;二是对程序进行修改,排除这个错误。位置;二是对程序进行修改,排除这个错误。1.程序调试的基本步骤程序调试的基本步骤(1)错误定位)错误定位 从错误的外部表现形式入手,研究有关部从错误的外部表现形式入手,研究有关部分的程序,确定程序中出错位置,找出错误的分的程序,确定程序中出错位置,找出错误的内在原因;内在原因;(2)修改设计和代码,以排除错误;)修改设计和代码,以排除错误;(3)进行回归测试,防止引进新的错误。)进行回归测试,防止引进新的错误。2.程序调试的
42、原则程序调试的原则(可以从以下两个方面考虑可以从以下两个方面考虑):(1)确定错误的性质和位置时的注意事项)确定错误的性质和位置时的注意事项 分析思考与错误征兆有关的信息;避开死胡同;只分析思考与错误征兆有关的信息;避开死胡同;只把调试工具当作辅助手段来使用;避免用试探法,最多把调试工具当作辅助手段来使用;避免用试探法,最多只能把它当作最后手段。只能把它当作最后手段。(2)修改错误原则)修改错误原则 在出现错误的地方,很可能有别的错误;修改错误在出现错误的地方,很可能有别的错误;修改错误的一个常见失误是只修改了这个错误的征兆或这个错误的一个常见失误是只修改了这个错误的征兆或这个错误的表现,而没
43、有修改错误本身;注意修正一个错误的同的表现,而没有修改错误本身;注意修正一个错误的同时有可能会引入新的错误;修改错误的过程将迫使人们时有可能会引入新的错误;修改错误的过程将迫使人们暂时回到程序设计阶段;修改源代码程序,不要改变目暂时回到程序设计阶段;修改源代码程序,不要改变目标代码。标代码。3.5.2 软件调试方法软件调试方法调试方法:调试方法:强行排错法强行排错法 回溯法回溯法1.原因排除法。原因排除法。3.5.2 软件调试方法软件调试方法3.5.2 软件调试方法软件调试方法 (1)软件调试的目的是)软件调试的目的是_。A)发现错误)发现错误 B)改正错误)改正错误 C)改善软件的性能)改善
44、软件的性能 D)验证软件的正确性)验证软件的正确性B(2)软件(程序)调试的任务是软件(程序)调试的任务是_。A软件测试软件测试4软件测试的实施软件测试的实施软件测试是保证软件质量的重要手段,软件测试是一个过程,其软件测试是保证软件质量的重要手段,软件测试是一个过程,其测试流程是该过程规定的程序,目的是使软件测试工作系统化。测试流程是该过程规定的程序,目的是使软件测试工作系统化。软件测试过程分软件测试过程分4个步骤,即单元测试、集成测试、验收测试和个步骤,即单元测试、集成测试、验收测试和系统测试。系统测试。单元测试是对软件设计的最小单位单元测试是对软件设计的最小单位模块(程序单元)进行正模块(程序单元)进行正确性检验测试。确性检验测试。单元测试的目的是发现各模块内部可能存在的各种错误。单元测试的目的是发现各模块内部可能存在的各种错误。单元测试的依据是详细的设计说明书和源程序。单元测试的依据是详细的设计说明书和源程序。单元测试的技术可以采用静态分析和动态测试。单元测试的技术可以采用静态分析和动态测试。和原因排除法。和原因排除法。学海无涯,惟勤是岸学海无涯,惟勤是岸!祝大家顺利通过考试!祝大家顺利通过考试!谢谢!