软件工程基本概念

软件工程基本概念

考点1 软件的定义与软件特点

1软件的组成

软件指的是计算机系统中与硬件相互依赖的另一部分,包括程序、数据和相关的文档。

软件由两部分组成:

(1)机器可执行的程序和数据;

(2)与软件开发、运行、维护及使用等有关的文档。

2软件的特点

软件具有如下特点:

(1)软件是逻辑产品,而不是物理实体,它具有无形性,通过计算机的执行才能体现它的功能和作用;

(2)没有明显的制作过程,其成本主要体现在软件的开发和研制上,可进行大量的复制;

(3)不存在磨损和消耗问题;

(4)软件的开发、运行对计算机系统具有依赖性;

(5)开发和维护成本高;

(6)软件开发涉及诸多社会因素。

3软件的分类

结合应用观点,软件可分应用软件、系统软件和支撑软件3类。

(1)应用软件是特定应用领域内专用的软件;

(2)系统软件居于计算机系统中最靠近硬件的一层,是计算机管理自身资源,提高计

算机使用效率并为计算机用户提供各种服务的软件;

(3)支撑软件介于系统软件和应用软件之间,是支援其他软件的开发与维护的软件。 4软件的作用

软件是用户与硬件之间的接口,是计算机系统的指挥者,是计算机系统结构设计的重要依据。

考点2 软件危机与软件工程

1软件危机

随着计算机软件规模的扩大,软件本身的复杂性不断增加,研制周期显著变长,正确性难以保证,软件开发费用上涨,生产效率急剧下降,从而出现了人们难以控制软件发展的局面,即所谓的“软件危机”。软件危机主要表现在:

(1)软件需求的增长得不到满足;

(2)软件开发成本和进度无法控制;

(3)软件质量难以保证;

(4)软件不可维护或维护程度非常低;

(5)软件成本不断提高;

(6)软件开发生产效率的提高赶不上硬件的发展和应用需求的增长。

总之,可以将软件危机归结为成本、质量和生产率等问题。

2软件工程的产生

国标(GB)中指出软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。

软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。

考点3 软件工程过程

ISO9000定义:软件工程过程是把输入转化为输出的一组彼此相关的资源和活动。 软件工程过程包含4种基本活动:

(l)软件规格说明P(Plan):规定软件的功能及其运行机制;

(2)软件开发D(Do):产生满足规格说明的软件;

(3)软件确认C(Check):确认软件能够满足客户提出的要求;

(4)软件演进A(Action):为满足客户的变更要求,软件必须在使用的过程中演进。 考点4 软件生命周期

软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。 在国家标准“计算机软件开发规范”中,把软件生命周期划分为三个阶段、八个子阶段,即定义阶段(可行性研究与计划、需求分析)、开发阶段(概要设计、详细设计、实现、综合测试、确认测试)、维护阶段(使用与维护),对每个阶段,都明确规定了该阶段的任务、实施方法、实施步骤和完成标志,其中特别规定了每个阶段需要产生的文档。

考点5 软件工程的目标与原则

1软件工程的目标

软件工程的目标是,在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性巨满足用户需求的产品。

软件工程研究的内容主要包括:软件开发技术和软件工程管理。

(1)软件开发技术。软件开发技术包括:软件开发方法学、开发过程、开发工具和软

件工程环境,其主体内容是软件开发方法学。

(2) 软件工程管理包括软件管理学、软件工程经济学、软件心理学等内容。 2软件工程的原则

软件工程原则包括抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。

(1)抽象。抽象事物最基本的特性和行为,忽略非本质细节,采用分层次抽象,自顶向下,逐层细化的办法控制软件开发过程的复杂性。

(2)信息隐蔽。采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单

(3)模块化。模块是程序中相对独立的成分,一个独立的编程单位,应有良好的接口定义。模块的大小要适中,模块过大会使模块内部的复杂性增加,不利于模块的理解和修改,也不利于模块的调试和重用;模块太小会导致整个系统表示过于复杂,不利于控制系统的复杂性。

(4)局部化。要求在一个物理模块内集中逻辑上相互关联的计算资源,保证模块间具有松散的耦合关系,模块内部有较强的内聚性,这有助于控制系统的复杂性。

(5)确定性。软件开发过程中所有概念的表达应是确定的、无歧义的且规范的这有助于入与入的交互,不会产生误解和遗漏,以保证整个开发工作的协调一致。

(6)一致性包括程序、数据和文档的整个软件系统的各模块应使用已知的概念、符号和术语;程序内外部接口应保持一致,系统规格说明与系统行为应保持一致。

(7)完备性。软件系统不丢失任何重要成分,完全实现系统所需的功能:

(8)可验证性。开发大型软件系统需要对系统自顶向下,逐层分解。系统分解应遵循容易检查、测评、评审的原则,以确保系统的正确性。

考点6 软件开发工具与软件开发环境

(l)软件开发工具。是协助开发入员进行软件开发活动所使用的软件或环境,它包括需求分析工具、设计工具、编码工具、排错工具、测试工具等。

(2)软件开发环境。是指支持软件产品开发的软件系统,它由软件工具集和环境集成机制构成。工具集包括支持软件开发相关过程、活动、任务的软件工具,以便对软件开发提供全面的支持。环境集成机制为工具集成和软件开发、维护与管理提供统一的支持,它通常包括数据集成、控制集成和界面集成3个部分。

3.2 结构化分析方法

考点7 可行性研究

可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。 1经济可行性研究

分析系统的估算开发成本是否会超过项目预期的全部利润。分析系统开发对其他产品或利润的影响。

2技术可行性研究

根据客户提出的系统功能、性能及现实系统的各项约束条件,从技术角度研究实现系统可行性。

3法律可行性分析

研究在系统开发过程中可能涉及的各种合同、侵权、责任以及同法律相抵触的问题。 4开发方式的选择性研究

提出并评价实现系统的各种开发方案,并从中选出一种最适宜项目的开发方案。 考点8 需求分析方法

1需求分析

软件需求分析是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。需求分析的任务是发现需求、求精、建模和定义需求的过程。

(l)需求分析的定义。IEEE软件工程标准词汇表对需求分析定义如下:

①用户解决问题或达到目标所需的条件或权能;

②系统或系统部件要满足合同、标准、规范或其他正式规定文档所具有的条件或权能;

③一种反映①或②所描述的条件或权能的文档说明。

(2)需求分析阶段的工作。需求分析阶段的工作可概括为4个方面:

①需求获取;

②需求分析;

③编写需求规格说明书;

④需求审评。

2需求分析方法

(l)结构化分析方法。主要包括面向数据流的结构化分析方法、面向数据结构的Jackson方法和面向数据结构的结构化数据系统开发方法

(2)面向对象的分析方法。从需求分析建立的模型的特点来分,需求分析方法又分为静态分析方法和动态分析方法。

考点9 结构化分析方法

结构化分析方法是结构化程序设计理论在软件需求分析阶段的运用。结构化分析方法(Structure Ana1ysis,简称SA)是面向数据流进行需求分析的方法,采用自顶向下、

逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。

考点10 结构化分析常用工具

1数据流图

数据流图即DFD图,它以图形的方式描绘数据在系统中流动和处理的过程,它只反映系统必须完成的逻辑功能,所以是一种功能模型。见表3-1。

表3-1 数据流图的元素说明

2数据字典

数据字典是结构化分析方法的核心。数据字典是对所有与系统相关的数据元素的一个有组织的列表,以及精确的、严格的定义,使得用户和系统分析员对于输入、输出、存储成分和中间计算结果有共同的理解。

在数据字典的编制过程中,常使用定义式描述数据结构,见表3-2。

表3-2 数据字典定义式中出现的符号

考点11 软件需求规格说明书

软件需求规格说明书是需求分析阶段的最后成果,是软件开发的重要文档之一。

(1)软件需求规格说明书有以下几个方面的作用。①便于用户、开发人员进行理解和交流;

②反映出用户问题的结构,可以作为软件开发工作的基础和依据;

③作为确认测试和验收的依据。

(2)软件需求规格说明书有以下几个方面的内容。

①概述;

②数据描述;

③功能描述;

④性能描述;

⑤参考文献;

⑥附录。

(3)软件需求规格说明书有以下几个方面的特点。

①正确性;

②无歧义性;

③完整性;

④可验证性;

⑤一致性;

⑥可理解性;

⑦可修改性;

⑧可追踪性。

3.3结构化设计方法

考点12 软件设计的基本概念

1软件设计的基础

软件设计是软件工程的重要阶段,是一个把软件需求转换为软件表示的过程。软件设计的重要性和地位概括为以下几点:

(l)软件开发阶段(设计、编码、测试)占软件项目开发总成本的绝大部分,是在软件开发中形成质量的关键环节;

(2)软件设计是开发阶段最重要的步骤,是将需求准确地转化为完整的软件产品或系统的唯一途径;

(3)软件设计做出的决策,最终影响软件实现的成败;

(4)设计是软件工程和软件维护的基础。

从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。 从工程管理角度来看,软件设计分两步完成:概要(总体)设计和详细设计。 2软件设计的基本原理

(1)抽象。抽象是一种思维工具,就是把事物本质的共同特性提取出来而不考虑其他细节。

(2)模块化.模块是指把一个待开发的软件分解成若千小的简单的部分。模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。

(3)信息隐蔽。是指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。

(4)模块独立性。是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。

模块的独立程度是评价设计好坏的重要度量标准。衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准。

内聚性是度量一个模块功能强度的一个相对指标,耦合性则用来度量模块之间的相互联系程度。

耦合可以分为下列几种,它们之间的耦合度由高到低排列:

内容耦合――若一个模块直接访问另一模块的内容,则这两个模块称为内容耦合。 公共耦合――若一组模块都访问同一全局数据结构,则称为公共耦合。 外部耦合――若一组模块都访问同一全局简单变量,则称为外部耦合。

控制耦合—一若一模块明显地把开关量、名字等信息送入另一模块,控制另一模块的功能,则称为控制耦合。

标记耦合――若两个以上的模块都需要其余某一数据结构的子结构时,不使用其余

全局变量的方式而全使用记录传递的方式,这样的耦合称为标记耦合。

数据耦合――若一个模块访问另一个模块,被访问模块的输入和输出都是数据项参数,则这两个模块为数据耦合。

非直接耦合――若两个模块没有直接关系,它们之间的联系完全是通过程序的控制和调用来实现的,则称这两个模块为非直接耦合,这样的耦合独立性最强。

内聚是从功能角度来衡量模块的联系,它描述的是模块内的功能联系。内聚有如下种类,它们之间的内聚度由弱到强排列。

偶然内聚—指一个模块内的个处理元素之间没有任何联系。

逻辑内聚――这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的参数来确定该模块应完成哪一种功能。

时间内聚――这种模块顺序完成一类相关功能,比如初始化模块,它顺序地为变量置初值。

通信内聚――指它的所有功能都通过使用公用数据而发生关系。

顺序内聚――如果一个模块内各个处理元素和同一个功能密切相关,而且这些处理必须顺序执行,处理元素的输出数据作为下一个处理元素的输入数据,则称为顺序内聚。 功能内聚――是最强的一种内聚,它是指模块内所有元素共同完成一个功能,缺一不可,模块已不可能再分。

耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。

考点13 概要设计任务

概要设计的基本任务有4条:

(1)设计软件系统结构:以模块为基础,影响软件质量及一些整体特性。

(2)数据结构和数据库设计:对于大型数据处理的软件系统是重要的。在概要设计阶段,数据结构设计宜采用抽象的数据类型,数据库设计对应于数据库的逻辑设计。

(3)编写概要设计文档:编写概要设计说明书、数据库设计说明书、用户手册和修订测试计划。

(4)评审:针对设计方案的可行性、正确性、有效性、一致性等。

软件结构图的基本图符如图3-2所示

图3-2 结构图的基本图符

软件结构图是软件系统的模块层次结构,反映了整个系统的功能实现。

软件结构图往往用网状或树状结构的图形来表示。如图3-3所示。

图3-3结构图的基本形式

结构图的形态特征:

①深度(模块的层数);

②宽度(一层中最大的模块个数);

③扇出(一个模块直接调用下属模块的个数);

④扇入(一个模块直接上属模块的个数)。

经常使用的结构图有如图3-4所示的4种模块类型:

①传入模块;

②传出模块;

③变换模块;

④协调模块。

图3-4 4种模块类型

考点14 面向数据流的设计方法

1数据流的类型

数据流类型有两种:变换型和事务型。

(1)变换流是指信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式,离开软系统。 变换型数据处理问题的工作过程大致分为3步,即取得数据、变换数据和输出数据,如图3-5所示。

图3-5 变换型数据流结构

变换型系统结构图由输入、中心变换和输出3部分组成,如图3-6所示。

图3-6 变换型数据流结构组成

(2)当信息沿输入通路到达一个处理,这个处理根据输入数据的类型从若干个动作序列中选择出一个来执行,这类数据流归为特殊的二类,称为事务流。在一个事务流中,事务中心接收数据,分析每个事务以确定它的类型,根据事务类型选取一条活动通路。如图3-7所示。

图3-7 事务型数据流结构

考点15 设计准则

设计准则包括如下几点:

(l)提高模块独立性;

(2)模块规模适中;

(3)深度、宽度、扇出和扇入适当;

(4)使模块的作用域在该模块的控制域内;

(5)应减少模块的接口和界面的复杂性;

(6)设计成单入口、单出口的模块;

(7)设计功能可预测的模块。

考点16 详细设计

详细设计主要确定每个模块具体执行过程,也称过程设计。详细设计的结果基本上决定了最终的程序代码的质量。

详细设计的常用工具有:

(1)程序流程图、N一S、PAD(问题分析图)和HIPO;

(2)判定表;

(3)PDL(伪码)。

1程序流程图

程序流程图是一种传统的、应用广泛的、巨有争议的软件设计表示工具。它用方框表示一个处理步骤,菱形代表一个逻辑条件,箭头表示控制流。如图3-8所示。

图3-8 程序流程图基本图符

程序流程图的5种控制结构:

(1)顺序型;

(2)选择型;

(3)先判断重复型;

(4)后判断重复型;

(5)多分支选择型。

2N-S图

为了避免流程图在描述程序逻辑时的随意性与灵活性,1973年Nossi和Shneiderman提出了用方框图代替传统的程序流程图,引起了人们的重视,人们也把这种图称为N-S图。方框图中仅含5种基本的控制结构,即顺序型、选择型、多分支选择型、WHILE重复型和UNTIL重复型。如图3-10所示。

图3-10 N-S图的5种控制结构

在方框图中,每个处理步骤都是用一个盒子来表示的,这些处理步骤可以是语句或语句序列,在需要时,盒子中还可以嵌套另一个盒子,嵌套深度一般没有限制,只要整张图可以在一张纸上容纳下就行。

3 PAD图

PAD是问题分析图(Problem Analysis Diagram)的英文缩写。它是继流程图和方框图之后,由日本的二村良彦等人在1979年提出的又一种主要用于描述软件详细设计的图形表示下具。与方框图一样,PAD也只能描述结构化程序允许使用的几种基本结构、PAD图的一个独特之处在于,以PAD为基础,遵循一个机械的规则就能方便地编写出程序,这个规则称为走树(free Walk)。

PAD图的基本图符表示5种基本控制结构,如图3-11所示。

图3-11 PAD图图符构成的5种控制结构

4 PDL

PDL又称伪码(Pseudo一code),它是一种非形式化的比较灵活的语一言,实际上PDL语言是对伪码的-种补充、它借助于某些高级程序语一言的控制结构和一些自然语言的嵌套。一般说来,伪码的语法规则分成外语法和内语法外语法应当符合一般程序设计语言常用的程序语句的语法规则;而内语法是没有定义的,它可以用自然语言的一些简洁的句子、短语和通用的数学符号来描述程序应该执行的功能。

用PDL表示的基本控制结构的常用词汇如下:

顺序:A/A END

条件:IF/THEN/ELSE/ENDIF

循环:DO WHILE/ENDDO

循环:REPEAT UNTIL/ENDREPEAT

分支:CASE OF,/WHEN/SELECT/WHEN/SELECT/ENDCASE

3.4 软件的测试

考点17 软件测试的目的和准则

1软件侧试的目的

(l)软件测试是为了发现错误而执行程序的过程;

(2)一个好的测试用例能够发现至今尚未发现的错误;

(3)一个成功的测试是发现了至今尚未发现的错误。

2软件测试的准则

(l)所有测试都应追溯到需求;

(2)严格执行测试计划,排除测试的随意性;

(3)充分注意测试中的群集现象;

(4)程序员应避免检查自己的程序;

(5)穷举测试不可能;

(6)妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。 考点18 软件测试技术与方法

测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件中的错误。软件测试是对软件规格说明、设计和编码的最后复审,所以软件测试贯穿在整个软件开发期的全过程。测试是为了发现程序中的错误而执行程序的过程。好的测试方案是尽可能地发现至今尚未发现的错误,显然,成功的测试是发现至今尚未发现的错误。 1静态测试与动态测试

(l)静态测试一般是指人工评审软件文档或程序,借以发现其中的错误。由于被评审的文档或程序不必运行,所以称为静态的。

静态测试包括代码检查、静态结构分析、代码质量度量等。

(2)动态测试是指通常的上机测试,这种方法是使程序有控制地运行,并从多种角度观察程序运行时的行为,以发现其中的错误。测试是否能够发现错误取决于测试实例的设计。动态测试的设计测试实例方法一般有两类:黑盒测试方法和白盒测试方法。 2白盒测试方法与测试用例设计

自盒测试法即结构测试,根据产品的内部工作过程,检查内部成分,以确认每种内部操作符合设计规范要求。它将涉及程序设计风格、控制方法、源语句、数据库设计、编码细节。使用白盒测试法需要了解程序内部的结构,此时的测试用例是根据程序的内部逻辑来设计的,如果想用白盒测试法发现程序中的所有错误,则至少必须使程序中每种可能的路径都执行一次。

白盒测试法主要有逻辑覆盖、基本路径测试等。

(l)逻辑覆盖测试。泛指一系列以程序内部的逻辑结构为基础的测试用例设计技术。通常所指的程序中的逻辑表示有判断、分支、条件等几种表示方式。

①语句覆盖。语句覆盖是一个比较弱的测试标准,它的含义是,选择足够的测试实例,使得程序中的每个语句都能执行一次。

②路径覆盖。执行足够的测试用例,使程序中所有的可能路径都至少经历一次。 ③判定覆盖。设计足够的测试实例,使得程序中的每个判定至少都获得一次“真值”和“假值”的机会。

判定覆盖要比语句覆盖严格,因为如果每个分支都执行过了,则每个语句也执行过了。

④条件覆盖。对于每个判定中所包含的若干个条件,应设计足够多的测试实例,使得判定中的每个条件都取到“真”和“假”两个不同的结果。条件覆盖通常比判定覆盖强,但也有的测试实例满足条件覆盖而不满足判定覆盖。

⑤判断一条件覆盖设计足够多的测试实例,使得判定中的每个条件都能取得各种可能的“真”和“假”值,并且使每个判定都能取到“真”和“假”两种结果。

(2)基本路径测试。它的思想和步骤是,根据软件过程性描述中的控制流程确定程序的环路复杂性度量,用此度量定义基本路径集合,并由此导出一组测试用例对每一条独立执行路径进行测试。

3黑盒测试方法与测试用例设计

黑盒测试不关心程序内部的逻辑,只是根据程序的功能说明来设计测试用例。在使用黑盒测试法时,手头只需要有程序功能说明就可以了。黑盒测试法分等价类划分法、边界值分析法和错误推测法。

(1)等价类划分法是一种典型的黑盒测试方法它是将程序的所有可能的输入数据划

分成若干部分,然后从每个等价类中选取数据作为测试用例。

(2)边界值分析法。是对各种输入、输出范围的边界情况设计测试用例的方法。实践证明,程序往往在处理边缘情况时出错,因而检查边缘情况的测试实例查错率较高,这里边缘情况是指输入等价类或输出等价类的边界值。

(3)错误推测法。测试人员也可以通过经验或直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的例子。

错误推测法在很大程度依靠直觉和经验进行,它的基本想法是列出程序中可能有的错误和容易发生错误的特殊情况,并且根据它们选择测试方案。

考点19 软件测试的实施

软件测试是保证软件质量的重要手段,软件测试是一个过程,其测试流程是该过程规定的程序,目的是使软件测试工作系统化

软件测试过程分4个步骤,即单元测试、集成测试、验收测试和系统测试. 1单元测试

单元测试是对软件设计的最小单位—模块(程序单元)进行正确性检验测试。单元测试的目的是发现各模块内部可能存在的各种错误。

2集成测试

集成测试是测试和组装软件的过程。集成测试所设计的内容包括:软件单元的接口测试、全局数据结构测试、边界条件和非法输入的测试等。

3确认测试

确认测试的任务是验证软件的功能和性能及其他特性是否满足了需求规格说明中确定的各种需求,以及软件配置是否完全、正确

4系统测试

系统测试是通过测试确认的软件作为整个计算机系统的一个元素,与计算机硬件、外设、支撑软件、数据和人员等其他系统元素组合在一起,在实际运行(使用)环境下对计算机系统进行一系列的集成测试和确认测试。

3.5 程序的调试

考点20 软件调试的概念

在对程序进行成功测试之后将进行程序调试(排错)。程序的调试任务是诊断和改正程序中的错误。调试主要在开发阶段进行

1程序调试的基本步骤

(1)错误定位从错误的外部表现形式入手,研究有关部分的程序,确定程序中出错的位置,找出错误的内在原因。

(2)修改设计和代码,以排除错误\排错是软件开发过程中一项艰苦工作,这也决定了调试工作是一个具有很强技术性和技巧性的工作。

(3)进行回归测试,防止引进新的错误因为修改程序可能带来新的错误,重复进行暴露这个错误的原始测试或某此有关测试,以确认该错误是否被排除、是否引进了新的错误。

2程序调试原则

(l)确定错误的性质和位置时的注意事项:

①分析思考与错误征兆有关的信息;

②避开死胡同;

(了只把调试工具当作辅助手段来使用;

④避免用试探法,最多只能把它当作最后手段二

(2)修改错误原则:

①在出现错误的地方,很可能有别的错误;

②修改错误的一个常见失误是只修改了这个错误的征兆或这个错误的表现,而没有修改错误本身;

③注意修正一个错误的同时有可能会引入新的错误;

④修改错误的过程将迫使人们暂时回到程序设计阶段;

⑤修改源代码程序,不要改变目标代码。

考点21 软件调试的方法

1强行排错法

作为传统的调试方法,其过程可概括为设置断点、程序暂停、观察程序状态、继续运行程序。涉及的调试技术主要是设置断点和监视表达式:

(1)通过内存全部打印来排错;

(2)在程序特定部位设置打印语句,即断点法;

(3)自动调试工具。

2回溯法

该方法适合于小规模程序的排错、即一旦发现了错误,先分析错误征兆,确定最先发现“症状”的位置。然后,从发现“症状”的地方开始,沿程序的控制流程,逆向跟踪源程序代码,直到找到错误根源或确定出错产生的范围、

3原因排除法

原因排除法是通过演绎和归纳,以及二分法来实现。

演绎法是一种从一般原理或前提出发,经过排除和精化的过程来推导出结论的思考方法。

归纳法是一种从特殊推断出一般的系统化思考方法。其基本思想是从一些线索着手,

通过分析寻找到潜在的原因,从而找出错误。

二分法实现的基本思想是,如果已知每个变量在程序中若干个关键点的正确值,则可以使用定值语句(如赋值语句、输入语句等)在程序中的某点附近给这些变量赋正确值,然后运行程序并检查程序的输出。

一、选择题

1、在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是

A)概要设计 B)详细设计 C)可行性分析 D)需求分析

2、下面不属于软件工程的3个要素的是

A)工具 B)过程 C)方法 D)环境

3、检查软件产品是否符合需求定义的过程称为

A)确认测试 B)集成测试 C)验证测试 D)验收测试

4、数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流合法图符的是

A)控制流 B)加工 C)数据存储 D)源和潭

5、下面不属于软件设计原则的是

A)抽象 B)模块化 C)自底向上 D)信息隐蔽

6、程序流图(PFD)中箭头代表的是

A)数据流 B)控制流 C)调用关系 D)组成关系

7、下列工具中为需求分析常用工具的是

A)PAD B)PFD C)N-S D)DFD

8、在结构化方法中,软件功能分解属于下列软件开发中的阶段是

A)详细设计 B)需求分析 C)总体设计 D)编程调试

9、软件调试的目的是

A)发现错误 B)改正错误 C)改善软件的性能 D)编程调试

10、软件需求分析阶段的工作,可以分为四个方面:需求获取,需求分析,编写需求规格说明书,以及

A)阶段性报告 B)需求评审 C)总结 D)都不正确

二、填空题

1、软件是程序、数据和_____________的集合。

2、Jackson方法是一种面向_______________的结构化方法。

3、软件工程研究的内容主要包括:___________技术 和 软件工程管理。

4、数据流图的类型有___________和事务型。

5、软件开发环境是全面支持软件开发全过程的______________集合。

参考答案:

一、选择题: DDAAC BDCBB

二、填空题:

1、相关文档

2、数据结构

3、软件开发

4、交换型

5、软件

软件工程基本概念

考点1 软件的定义与软件特点

1软件的组成

软件指的是计算机系统中与硬件相互依赖的另一部分,包括程序、数据和相关的文档。

软件由两部分组成:

(1)机器可执行的程序和数据;

(2)与软件开发、运行、维护及使用等有关的文档。

2软件的特点

软件具有如下特点:

(1)软件是逻辑产品,而不是物理实体,它具有无形性,通过计算机的执行才能体现它的功能和作用;

(2)没有明显的制作过程,其成本主要体现在软件的开发和研制上,可进行大量的复制;

(3)不存在磨损和消耗问题;

(4)软件的开发、运行对计算机系统具有依赖性;

(5)开发和维护成本高;

(6)软件开发涉及诸多社会因素。

3软件的分类

结合应用观点,软件可分应用软件、系统软件和支撑软件3类。

(1)应用软件是特定应用领域内专用的软件;

(2)系统软件居于计算机系统中最靠近硬件的一层,是计算机管理自身资源,提高计

算机使用效率并为计算机用户提供各种服务的软件;

(3)支撑软件介于系统软件和应用软件之间,是支援其他软件的开发与维护的软件。 4软件的作用

软件是用户与硬件之间的接口,是计算机系统的指挥者,是计算机系统结构设计的重要依据。

考点2 软件危机与软件工程

1软件危机

随着计算机软件规模的扩大,软件本身的复杂性不断增加,研制周期显著变长,正确性难以保证,软件开发费用上涨,生产效率急剧下降,从而出现了人们难以控制软件发展的局面,即所谓的“软件危机”。软件危机主要表现在:

(1)软件需求的增长得不到满足;

(2)软件开发成本和进度无法控制;

(3)软件质量难以保证;

(4)软件不可维护或维护程度非常低;

(5)软件成本不断提高;

(6)软件开发生产效率的提高赶不上硬件的发展和应用需求的增长。

总之,可以将软件危机归结为成本、质量和生产率等问题。

2软件工程的产生

国标(GB)中指出软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。

软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。

考点3 软件工程过程

ISO9000定义:软件工程过程是把输入转化为输出的一组彼此相关的资源和活动。 软件工程过程包含4种基本活动:

(l)软件规格说明P(Plan):规定软件的功能及其运行机制;

(2)软件开发D(Do):产生满足规格说明的软件;

(3)软件确认C(Check):确认软件能够满足客户提出的要求;

(4)软件演进A(Action):为满足客户的变更要求,软件必须在使用的过程中演进。 考点4 软件生命周期

软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。 在国家标准“计算机软件开发规范”中,把软件生命周期划分为三个阶段、八个子阶段,即定义阶段(可行性研究与计划、需求分析)、开发阶段(概要设计、详细设计、实现、综合测试、确认测试)、维护阶段(使用与维护),对每个阶段,都明确规定了该阶段的任务、实施方法、实施步骤和完成标志,其中特别规定了每个阶段需要产生的文档。

考点5 软件工程的目标与原则

1软件工程的目标

软件工程的目标是,在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性巨满足用户需求的产品。

软件工程研究的内容主要包括:软件开发技术和软件工程管理。

(1)软件开发技术。软件开发技术包括:软件开发方法学、开发过程、开发工具和软

件工程环境,其主体内容是软件开发方法学。

(2) 软件工程管理包括软件管理学、软件工程经济学、软件心理学等内容。 2软件工程的原则

软件工程原则包括抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。

(1)抽象。抽象事物最基本的特性和行为,忽略非本质细节,采用分层次抽象,自顶向下,逐层细化的办法控制软件开发过程的复杂性。

(2)信息隐蔽。采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单

(3)模块化。模块是程序中相对独立的成分,一个独立的编程单位,应有良好的接口定义。模块的大小要适中,模块过大会使模块内部的复杂性增加,不利于模块的理解和修改,也不利于模块的调试和重用;模块太小会导致整个系统表示过于复杂,不利于控制系统的复杂性。

(4)局部化。要求在一个物理模块内集中逻辑上相互关联的计算资源,保证模块间具有松散的耦合关系,模块内部有较强的内聚性,这有助于控制系统的复杂性。

(5)确定性。软件开发过程中所有概念的表达应是确定的、无歧义的且规范的这有助于入与入的交互,不会产生误解和遗漏,以保证整个开发工作的协调一致。

(6)一致性包括程序、数据和文档的整个软件系统的各模块应使用已知的概念、符号和术语;程序内外部接口应保持一致,系统规格说明与系统行为应保持一致。

(7)完备性。软件系统不丢失任何重要成分,完全实现系统所需的功能:

(8)可验证性。开发大型软件系统需要对系统自顶向下,逐层分解。系统分解应遵循容易检查、测评、评审的原则,以确保系统的正确性。

考点6 软件开发工具与软件开发环境

(l)软件开发工具。是协助开发入员进行软件开发活动所使用的软件或环境,它包括需求分析工具、设计工具、编码工具、排错工具、测试工具等。

(2)软件开发环境。是指支持软件产品开发的软件系统,它由软件工具集和环境集成机制构成。工具集包括支持软件开发相关过程、活动、任务的软件工具,以便对软件开发提供全面的支持。环境集成机制为工具集成和软件开发、维护与管理提供统一的支持,它通常包括数据集成、控制集成和界面集成3个部分。

3.2 结构化分析方法

考点7 可行性研究

可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。 1经济可行性研究

分析系统的估算开发成本是否会超过项目预期的全部利润。分析系统开发对其他产品或利润的影响。

2技术可行性研究

根据客户提出的系统功能、性能及现实系统的各项约束条件,从技术角度研究实现系统可行性。

3法律可行性分析

研究在系统开发过程中可能涉及的各种合同、侵权、责任以及同法律相抵触的问题。 4开发方式的选择性研究

提出并评价实现系统的各种开发方案,并从中选出一种最适宜项目的开发方案。 考点8 需求分析方法

1需求分析

软件需求分析是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。需求分析的任务是发现需求、求精、建模和定义需求的过程。

(l)需求分析的定义。IEEE软件工程标准词汇表对需求分析定义如下:

①用户解决问题或达到目标所需的条件或权能;

②系统或系统部件要满足合同、标准、规范或其他正式规定文档所具有的条件或权能;

③一种反映①或②所描述的条件或权能的文档说明。

(2)需求分析阶段的工作。需求分析阶段的工作可概括为4个方面:

①需求获取;

②需求分析;

③编写需求规格说明书;

④需求审评。

2需求分析方法

(l)结构化分析方法。主要包括面向数据流的结构化分析方法、面向数据结构的Jackson方法和面向数据结构的结构化数据系统开发方法

(2)面向对象的分析方法。从需求分析建立的模型的特点来分,需求分析方法又分为静态分析方法和动态分析方法。

考点9 结构化分析方法

结构化分析方法是结构化程序设计理论在软件需求分析阶段的运用。结构化分析方法(Structure Ana1ysis,简称SA)是面向数据流进行需求分析的方法,采用自顶向下、

逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。

考点10 结构化分析常用工具

1数据流图

数据流图即DFD图,它以图形的方式描绘数据在系统中流动和处理的过程,它只反映系统必须完成的逻辑功能,所以是一种功能模型。见表3-1。

表3-1 数据流图的元素说明

2数据字典

数据字典是结构化分析方法的核心。数据字典是对所有与系统相关的数据元素的一个有组织的列表,以及精确的、严格的定义,使得用户和系统分析员对于输入、输出、存储成分和中间计算结果有共同的理解。

在数据字典的编制过程中,常使用定义式描述数据结构,见表3-2。

表3-2 数据字典定义式中出现的符号

考点11 软件需求规格说明书

软件需求规格说明书是需求分析阶段的最后成果,是软件开发的重要文档之一。

(1)软件需求规格说明书有以下几个方面的作用。①便于用户、开发人员进行理解和交流;

②反映出用户问题的结构,可以作为软件开发工作的基础和依据;

③作为确认测试和验收的依据。

(2)软件需求规格说明书有以下几个方面的内容。

①概述;

②数据描述;

③功能描述;

④性能描述;

⑤参考文献;

⑥附录。

(3)软件需求规格说明书有以下几个方面的特点。

①正确性;

②无歧义性;

③完整性;

④可验证性;

⑤一致性;

⑥可理解性;

⑦可修改性;

⑧可追踪性。

3.3结构化设计方法

考点12 软件设计的基本概念

1软件设计的基础

软件设计是软件工程的重要阶段,是一个把软件需求转换为软件表示的过程。软件设计的重要性和地位概括为以下几点:

(l)软件开发阶段(设计、编码、测试)占软件项目开发总成本的绝大部分,是在软件开发中形成质量的关键环节;

(2)软件设计是开发阶段最重要的步骤,是将需求准确地转化为完整的软件产品或系统的唯一途径;

(3)软件设计做出的决策,最终影响软件实现的成败;

(4)设计是软件工程和软件维护的基础。

从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。 从工程管理角度来看,软件设计分两步完成:概要(总体)设计和详细设计。 2软件设计的基本原理

(1)抽象。抽象是一种思维工具,就是把事物本质的共同特性提取出来而不考虑其他细节。

(2)模块化.模块是指把一个待开发的软件分解成若千小的简单的部分。模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。

(3)信息隐蔽。是指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。

(4)模块独立性。是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。

模块的独立程度是评价设计好坏的重要度量标准。衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准。

内聚性是度量一个模块功能强度的一个相对指标,耦合性则用来度量模块之间的相互联系程度。

耦合可以分为下列几种,它们之间的耦合度由高到低排列:

内容耦合――若一个模块直接访问另一模块的内容,则这两个模块称为内容耦合。 公共耦合――若一组模块都访问同一全局数据结构,则称为公共耦合。 外部耦合――若一组模块都访问同一全局简单变量,则称为外部耦合。

控制耦合—一若一模块明显地把开关量、名字等信息送入另一模块,控制另一模块的功能,则称为控制耦合。

标记耦合――若两个以上的模块都需要其余某一数据结构的子结构时,不使用其余

全局变量的方式而全使用记录传递的方式,这样的耦合称为标记耦合。

数据耦合――若一个模块访问另一个模块,被访问模块的输入和输出都是数据项参数,则这两个模块为数据耦合。

非直接耦合――若两个模块没有直接关系,它们之间的联系完全是通过程序的控制和调用来实现的,则称这两个模块为非直接耦合,这样的耦合独立性最强。

内聚是从功能角度来衡量模块的联系,它描述的是模块内的功能联系。内聚有如下种类,它们之间的内聚度由弱到强排列。

偶然内聚—指一个模块内的个处理元素之间没有任何联系。

逻辑内聚――这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的参数来确定该模块应完成哪一种功能。

时间内聚――这种模块顺序完成一类相关功能,比如初始化模块,它顺序地为变量置初值。

通信内聚――指它的所有功能都通过使用公用数据而发生关系。

顺序内聚――如果一个模块内各个处理元素和同一个功能密切相关,而且这些处理必须顺序执行,处理元素的输出数据作为下一个处理元素的输入数据,则称为顺序内聚。 功能内聚――是最强的一种内聚,它是指模块内所有元素共同完成一个功能,缺一不可,模块已不可能再分。

耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。

考点13 概要设计任务

概要设计的基本任务有4条:

(1)设计软件系统结构:以模块为基础,影响软件质量及一些整体特性。

(2)数据结构和数据库设计:对于大型数据处理的软件系统是重要的。在概要设计阶段,数据结构设计宜采用抽象的数据类型,数据库设计对应于数据库的逻辑设计。

(3)编写概要设计文档:编写概要设计说明书、数据库设计说明书、用户手册和修订测试计划。

(4)评审:针对设计方案的可行性、正确性、有效性、一致性等。

软件结构图的基本图符如图3-2所示

图3-2 结构图的基本图符

软件结构图是软件系统的模块层次结构,反映了整个系统的功能实现。

软件结构图往往用网状或树状结构的图形来表示。如图3-3所示。

图3-3结构图的基本形式

结构图的形态特征:

①深度(模块的层数);

②宽度(一层中最大的模块个数);

③扇出(一个模块直接调用下属模块的个数);

④扇入(一个模块直接上属模块的个数)。

经常使用的结构图有如图3-4所示的4种模块类型:

①传入模块;

②传出模块;

③变换模块;

④协调模块。

图3-4 4种模块类型

考点14 面向数据流的设计方法

1数据流的类型

数据流类型有两种:变换型和事务型。

(1)变换流是指信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式,离开软系统。 变换型数据处理问题的工作过程大致分为3步,即取得数据、变换数据和输出数据,如图3-5所示。

图3-5 变换型数据流结构

变换型系统结构图由输入、中心变换和输出3部分组成,如图3-6所示。

图3-6 变换型数据流结构组成

(2)当信息沿输入通路到达一个处理,这个处理根据输入数据的类型从若干个动作序列中选择出一个来执行,这类数据流归为特殊的二类,称为事务流。在一个事务流中,事务中心接收数据,分析每个事务以确定它的类型,根据事务类型选取一条活动通路。如图3-7所示。

图3-7 事务型数据流结构

考点15 设计准则

设计准则包括如下几点:

(l)提高模块独立性;

(2)模块规模适中;

(3)深度、宽度、扇出和扇入适当;

(4)使模块的作用域在该模块的控制域内;

(5)应减少模块的接口和界面的复杂性;

(6)设计成单入口、单出口的模块;

(7)设计功能可预测的模块。

考点16 详细设计

详细设计主要确定每个模块具体执行过程,也称过程设计。详细设计的结果基本上决定了最终的程序代码的质量。

详细设计的常用工具有:

(1)程序流程图、N一S、PAD(问题分析图)和HIPO;

(2)判定表;

(3)PDL(伪码)。

1程序流程图

程序流程图是一种传统的、应用广泛的、巨有争议的软件设计表示工具。它用方框表示一个处理步骤,菱形代表一个逻辑条件,箭头表示控制流。如图3-8所示。

图3-8 程序流程图基本图符

程序流程图的5种控制结构:

(1)顺序型;

(2)选择型;

(3)先判断重复型;

(4)后判断重复型;

(5)多分支选择型。

2N-S图

为了避免流程图在描述程序逻辑时的随意性与灵活性,1973年Nossi和Shneiderman提出了用方框图代替传统的程序流程图,引起了人们的重视,人们也把这种图称为N-S图。方框图中仅含5种基本的控制结构,即顺序型、选择型、多分支选择型、WHILE重复型和UNTIL重复型。如图3-10所示。

图3-10 N-S图的5种控制结构

在方框图中,每个处理步骤都是用一个盒子来表示的,这些处理步骤可以是语句或语句序列,在需要时,盒子中还可以嵌套另一个盒子,嵌套深度一般没有限制,只要整张图可以在一张纸上容纳下就行。

3 PAD图

PAD是问题分析图(Problem Analysis Diagram)的英文缩写。它是继流程图和方框图之后,由日本的二村良彦等人在1979年提出的又一种主要用于描述软件详细设计的图形表示下具。与方框图一样,PAD也只能描述结构化程序允许使用的几种基本结构、PAD图的一个独特之处在于,以PAD为基础,遵循一个机械的规则就能方便地编写出程序,这个规则称为走树(free Walk)。

PAD图的基本图符表示5种基本控制结构,如图3-11所示。

图3-11 PAD图图符构成的5种控制结构

4 PDL

PDL又称伪码(Pseudo一code),它是一种非形式化的比较灵活的语一言,实际上PDL语言是对伪码的-种补充、它借助于某些高级程序语一言的控制结构和一些自然语言的嵌套。一般说来,伪码的语法规则分成外语法和内语法外语法应当符合一般程序设计语言常用的程序语句的语法规则;而内语法是没有定义的,它可以用自然语言的一些简洁的句子、短语和通用的数学符号来描述程序应该执行的功能。

用PDL表示的基本控制结构的常用词汇如下:

顺序:A/A END

条件:IF/THEN/ELSE/ENDIF

循环:DO WHILE/ENDDO

循环:REPEAT UNTIL/ENDREPEAT

分支:CASE OF,/WHEN/SELECT/WHEN/SELECT/ENDCASE

3.4 软件的测试

考点17 软件测试的目的和准则

1软件侧试的目的

(l)软件测试是为了发现错误而执行程序的过程;

(2)一个好的测试用例能够发现至今尚未发现的错误;

(3)一个成功的测试是发现了至今尚未发现的错误。

2软件测试的准则

(l)所有测试都应追溯到需求;

(2)严格执行测试计划,排除测试的随意性;

(3)充分注意测试中的群集现象;

(4)程序员应避免检查自己的程序;

(5)穷举测试不可能;

(6)妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。 考点18 软件测试技术与方法

测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件中的错误。软件测试是对软件规格说明、设计和编码的最后复审,所以软件测试贯穿在整个软件开发期的全过程。测试是为了发现程序中的错误而执行程序的过程。好的测试方案是尽可能地发现至今尚未发现的错误,显然,成功的测试是发现至今尚未发现的错误。 1静态测试与动态测试

(l)静态测试一般是指人工评审软件文档或程序,借以发现其中的错误。由于被评审的文档或程序不必运行,所以称为静态的。

静态测试包括代码检查、静态结构分析、代码质量度量等。

(2)动态测试是指通常的上机测试,这种方法是使程序有控制地运行,并从多种角度观察程序运行时的行为,以发现其中的错误。测试是否能够发现错误取决于测试实例的设计。动态测试的设计测试实例方法一般有两类:黑盒测试方法和白盒测试方法。 2白盒测试方法与测试用例设计

自盒测试法即结构测试,根据产品的内部工作过程,检查内部成分,以确认每种内部操作符合设计规范要求。它将涉及程序设计风格、控制方法、源语句、数据库设计、编码细节。使用白盒测试法需要了解程序内部的结构,此时的测试用例是根据程序的内部逻辑来设计的,如果想用白盒测试法发现程序中的所有错误,则至少必须使程序中每种可能的路径都执行一次。

白盒测试法主要有逻辑覆盖、基本路径测试等。

(l)逻辑覆盖测试。泛指一系列以程序内部的逻辑结构为基础的测试用例设计技术。通常所指的程序中的逻辑表示有判断、分支、条件等几种表示方式。

①语句覆盖。语句覆盖是一个比较弱的测试标准,它的含义是,选择足够的测试实例,使得程序中的每个语句都能执行一次。

②路径覆盖。执行足够的测试用例,使程序中所有的可能路径都至少经历一次。 ③判定覆盖。设计足够的测试实例,使得程序中的每个判定至少都获得一次“真值”和“假值”的机会。

判定覆盖要比语句覆盖严格,因为如果每个分支都执行过了,则每个语句也执行过了。

④条件覆盖。对于每个判定中所包含的若干个条件,应设计足够多的测试实例,使得判定中的每个条件都取到“真”和“假”两个不同的结果。条件覆盖通常比判定覆盖强,但也有的测试实例满足条件覆盖而不满足判定覆盖。

⑤判断一条件覆盖设计足够多的测试实例,使得判定中的每个条件都能取得各种可能的“真”和“假”值,并且使每个判定都能取到“真”和“假”两种结果。

(2)基本路径测试。它的思想和步骤是,根据软件过程性描述中的控制流程确定程序的环路复杂性度量,用此度量定义基本路径集合,并由此导出一组测试用例对每一条独立执行路径进行测试。

3黑盒测试方法与测试用例设计

黑盒测试不关心程序内部的逻辑,只是根据程序的功能说明来设计测试用例。在使用黑盒测试法时,手头只需要有程序功能说明就可以了。黑盒测试法分等价类划分法、边界值分析法和错误推测法。

(1)等价类划分法是一种典型的黑盒测试方法它是将程序的所有可能的输入数据划

分成若干部分,然后从每个等价类中选取数据作为测试用例。

(2)边界值分析法。是对各种输入、输出范围的边界情况设计测试用例的方法。实践证明,程序往往在处理边缘情况时出错,因而检查边缘情况的测试实例查错率较高,这里边缘情况是指输入等价类或输出等价类的边界值。

(3)错误推测法。测试人员也可以通过经验或直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的例子。

错误推测法在很大程度依靠直觉和经验进行,它的基本想法是列出程序中可能有的错误和容易发生错误的特殊情况,并且根据它们选择测试方案。

考点19 软件测试的实施

软件测试是保证软件质量的重要手段,软件测试是一个过程,其测试流程是该过程规定的程序,目的是使软件测试工作系统化

软件测试过程分4个步骤,即单元测试、集成测试、验收测试和系统测试. 1单元测试

单元测试是对软件设计的最小单位—模块(程序单元)进行正确性检验测试。单元测试的目的是发现各模块内部可能存在的各种错误。

2集成测试

集成测试是测试和组装软件的过程。集成测试所设计的内容包括:软件单元的接口测试、全局数据结构测试、边界条件和非法输入的测试等。

3确认测试

确认测试的任务是验证软件的功能和性能及其他特性是否满足了需求规格说明中确定的各种需求,以及软件配置是否完全、正确

4系统测试

系统测试是通过测试确认的软件作为整个计算机系统的一个元素,与计算机硬件、外设、支撑软件、数据和人员等其他系统元素组合在一起,在实际运行(使用)环境下对计算机系统进行一系列的集成测试和确认测试。

3.5 程序的调试

考点20 软件调试的概念

在对程序进行成功测试之后将进行程序调试(排错)。程序的调试任务是诊断和改正程序中的错误。调试主要在开发阶段进行

1程序调试的基本步骤

(1)错误定位从错误的外部表现形式入手,研究有关部分的程序,确定程序中出错的位置,找出错误的内在原因。

(2)修改设计和代码,以排除错误\排错是软件开发过程中一项艰苦工作,这也决定了调试工作是一个具有很强技术性和技巧性的工作。

(3)进行回归测试,防止引进新的错误因为修改程序可能带来新的错误,重复进行暴露这个错误的原始测试或某此有关测试,以确认该错误是否被排除、是否引进了新的错误。

2程序调试原则

(l)确定错误的性质和位置时的注意事项:

①分析思考与错误征兆有关的信息;

②避开死胡同;

(了只把调试工具当作辅助手段来使用;

④避免用试探法,最多只能把它当作最后手段二

(2)修改错误原则:

①在出现错误的地方,很可能有别的错误;

②修改错误的一个常见失误是只修改了这个错误的征兆或这个错误的表现,而没有修改错误本身;

③注意修正一个错误的同时有可能会引入新的错误;

④修改错误的过程将迫使人们暂时回到程序设计阶段;

⑤修改源代码程序,不要改变目标代码。

考点21 软件调试的方法

1强行排错法

作为传统的调试方法,其过程可概括为设置断点、程序暂停、观察程序状态、继续运行程序。涉及的调试技术主要是设置断点和监视表达式:

(1)通过内存全部打印来排错;

(2)在程序特定部位设置打印语句,即断点法;

(3)自动调试工具。

2回溯法

该方法适合于小规模程序的排错、即一旦发现了错误,先分析错误征兆,确定最先发现“症状”的位置。然后,从发现“症状”的地方开始,沿程序的控制流程,逆向跟踪源程序代码,直到找到错误根源或确定出错产生的范围、

3原因排除法

原因排除法是通过演绎和归纳,以及二分法来实现。

演绎法是一种从一般原理或前提出发,经过排除和精化的过程来推导出结论的思考方法。

归纳法是一种从特殊推断出一般的系统化思考方法。其基本思想是从一些线索着手,

通过分析寻找到潜在的原因,从而找出错误。

二分法实现的基本思想是,如果已知每个变量在程序中若干个关键点的正确值,则可以使用定值语句(如赋值语句、输入语句等)在程序中的某点附近给这些变量赋正确值,然后运行程序并检查程序的输出。

一、选择题

1、在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是

A)概要设计 B)详细设计 C)可行性分析 D)需求分析

2、下面不属于软件工程的3个要素的是

A)工具 B)过程 C)方法 D)环境

3、检查软件产品是否符合需求定义的过程称为

A)确认测试 B)集成测试 C)验证测试 D)验收测试

4、数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流合法图符的是

A)控制流 B)加工 C)数据存储 D)源和潭

5、下面不属于软件设计原则的是

A)抽象 B)模块化 C)自底向上 D)信息隐蔽

6、程序流图(PFD)中箭头代表的是

A)数据流 B)控制流 C)调用关系 D)组成关系

7、下列工具中为需求分析常用工具的是

A)PAD B)PFD C)N-S D)DFD

8、在结构化方法中,软件功能分解属于下列软件开发中的阶段是

A)详细设计 B)需求分析 C)总体设计 D)编程调试

9、软件调试的目的是

A)发现错误 B)改正错误 C)改善软件的性能 D)编程调试

10、软件需求分析阶段的工作,可以分为四个方面:需求获取,需求分析,编写需求规格说明书,以及

A)阶段性报告 B)需求评审 C)总结 D)都不正确

二、填空题

1、软件是程序、数据和_____________的集合。

2、Jackson方法是一种面向_______________的结构化方法。

3、软件工程研究的内容主要包括:___________技术 和 软件工程管理。

4、数据流图的类型有___________和事务型。

5、软件开发环境是全面支持软件开发全过程的______________集合。

参考答案:

一、选择题: DDAAC BDCBB

二、填空题:

1、相关文档

2、数据结构

3、软件开发

4、交换型

5、软件


相关内容

  • 2012软件设计师大纲
  • 考试科目1:计算机与软件工程知识 1. 计算机科学基础知识 1.1数制及其转换  二进制.八进制.十进制和十六进制等常用数制及其相互转换 (Ⅱ) 1.2 计算机内数据的表示  数的表示  带符号定点数据(纯整数和纯小数)的原码.反码.补码和移码表示 (Ⅱ)  浮点数(实数)的表示(Ⅱ)  ...

  • 建筑业初级经济师考试大纲
  • 第一章 经济制度的变革与演化 考试内容 一.物质资料生产和基本经济规律 物质资料生产及其必备的基本要素,社会生产关系及其主要类型,社会基本矛盾及其运动过程,以及社会经济规律的客观性及其类型. 二.社会经济制度的变革和演化 人类社会制度的变革和演化 三.自然经济与商品经济 自然经济的概念和基本特征,商 ...

  • 2010年土地估价师考试大纲电子版内容
  • 全国土地估价师资格考试大纲 (2006年) 前 言 为了指导广大应考人员了解2006年全国土地估价师资格考试的内容和要求,全国土地估价师资格考试委员会决定编写<全国土地估计师资格考试大纲>,并由全国土地估价师资格考试办公室组织专家编写了<全国土地估价师资格考试大纲>(2006 ...

  • 全国计算机等级考试大纲
  • 全国计算机等级考试大纲 全国计算机等级考试一级MS-Office 考试大纲(2009年版) 基本要求 1.具有使用微型计算机的基础知识(包括计算机病毒的防治常识). 2.了解微型计算机系统的组成和各组成部分的功能. 3.了解操作系统的基本功能和作用,掌握Windows 的基本操作和应用. 4.了解文 ...

  • 1250052生态工程学教学大纲doc
  • <生态工程学>教学大纲 一.基本信息 二.教学目标及任务 <生态工程学>课程是生态学专业的专业核心课.通过<生态工程学>课程的教学,使学生系统地掌握生态工程学的基本理论(生态工程学概论,生态工程学原理,生态工程模型,能值分析和生态工程的能量系统模型,生态工程设计) ...

  • 水工程施工名词解释
  • 第一章 土石方工程与地基基础处理 第一节 土的工程性质及分类 基本概念:压实性.压缩性.土压力. 知识点:土的工程性质,土的工程分类,压实性与压缩性. 第二节 土石方平衡与调配 第三节 土石方开挖与机械化施工 基本概念:土石方平衡.平衡调配. 知识点:土石方工程量的计算,基坑边坡坡度与开挖断面,土方 ...

  • 项目管理自考考纲
  • 北京市高等教育自学考试课程考试大纲 课程名称:系统工程 课程代码:03095 2015年5月版 第一部分 课程性质与设置目的 一.课程性质与特点 本课程是北京市高等教育自学考试项目管理专业(独立本科段)的专业基础课之一,它是从系统的观点出发,立足整体,统筹全局,合理开发.运行和革新一个大规模复杂系统 ...

  • 概念图汇编
  • 必修一 第1章 走进细胞 概念图汇编 河南省滑县第六高级中学 李希明 一.本章核心概念 主要概念:细胞,组织,器官,系统,个体,种群,群落,生态系统,生物圈,生命系 统及层次,真核细胞,原核细胞,病毒,细胞学说 次要概念:原核生物,真核生物,拟核,细胞核,细胞膜,细胞质 二.本章总概念图 第1节 从 ...

  • 云南省"全国建设工程造价员"资格
  • 云南省"全国建设工程造价员"资格考试大纲 (云南省建设厅标准定额处 二00九年五月编制 2011年3月修改草案) 第一科目 工程造价相关知识与计价 内容一:工程造价管理概论与相关法规 一.工程造价管理概论 1.掌握工程造价管理的含义 2.了解全面造价管理的定义及内容 3.了解我国 ...

  • 北京邮电大学软件工程招生资料
  • 北京邮电大学 招生简章 北京邮电大学网址: http://www.bupt.edu.cn 北京邮电大学研究生招生网址:http://www.yzb.bupt.cn 单位代码:10013 通讯地址:北京市海淀区西土城路10号北京邮电大学研究生招生办公室 邮政编码:100876 研究生招生办公室地址:学 ...