第十七章软件工程基础大纲要点:1.软件工程基本概念,软件生命周期概念,软件工具与软件开发环境。2.结构化分析方法,数据流图,数据字典,软件需求规格说明书。3.结构化设计方法,总体设计与详细设计。4.软件测试的方法,白盒测试与黑盒测试,测试用例设计,软件测试的实施,单元测试、集成测试和系统测试。5.程序的调试,静态调试与动态调试。重要考点:1.软件工程的一些基本概念以及他们之间的关系2.结构化分析方法中的数据流图,数据树,数据表;软件规格说明书的特点3.结构设计方法中的概要设计和详细设计4.静态测试和动态测试17.1软件工程的基本概念知识点1软件工程的定义(1)计算机软件是包括程序、数据及相关文档的完整集合;软件分为系统软件和应用软件。(2)软件危机是在计算机软件的开发和维护过程中所遇到的一系列严重问题,主要包括成本、质量以及生产效率三个方面的严重问题。(3)软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。软件工程正是为了应对软件危机而制定的一套科学开发软件的方法。【经典题解】1、下面描述中,不属于软件危机表现的是_________A)软件过程不规范B)软件开发生产率低C)软件质量难以控制D)软件成本不断提高【答案】A【解析】此题主要考查软件危机的特点,软件危机主要表现在成本、质量、生产率等问题,软件工程正是为了应对软件危机。2、软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是___________A)编辑软件B)操作系统C)教务管理系统D)浏览器【答案】B【解析】此题主要考查软件的分类,所谓系统软件,指控制和协调计算机及外部设备,支持应用软件开发和运行的系统,是无需用户干预的各种程序的集合。3、软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件),下面属于应用软件的是____________A)编译程序B)操作系统C)教务管理系统D)汇编程序【答案】C【解析】此题主要考查软件的分类,所谓应用软件,用于解决某类具体问题而开发的程序的集合,供多用户使用。4、软件是___________、数据和文档的集合。【答案】程序【解析】此题主要考查软件的概念。知识点2软件生命周期的定义(1)软件产品从提出、实现、使用维护到停止使用退役的过程称为软件的生命周期。(2)软件生命周期三个阶段:软件定义、软件开发、运行维护,过程如下表17-1所示:表17-1软件生命周期的三阶段时期阶段任务文档软件定义问题定义理解用户要求,划清工作范围计划任务书可行性分析可行性方案及代价需求分析软件系统的目标及应完成的工作需求规格说明书软件开发概要设计系统的逻辑设计概要设计说明书详细设计系统的模块设计详细设计说明书软件编码编写程序代码程序、数据、详细注释软件测试单元测试,综合测试测试后的软件、测试大纲、测试方案与结果软件维护软件维护运行和维护维护后的软件【经典题解】1、软件生命周期是指__________A)软件产品从提出、实现、使用维护到停止使用退役的过程B)软件从需求分析、设计、实现到测试完成的过程C)软件的开发过程D)软件的运行维护过程【答案】A【解析】此题主要考查软件生命周期的概念,软件产品从提出、实现、使用维护到停止使用退役的过程称为软件的生命周期。2、软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于__________A)定义阶段B)开发阶段C)维护阶段D)上述三个阶段【答案】B【解析】此题主要考查软件开发阶段的具体任务,它包括概要设计、详细设计、软件编码和软件测试四个任务。3、软件开发过程主要分为需求分析、设计、编码与测试四个阶段,其中________阶段产生“软件需求规格说明书”。【答案】需求分析【解析】此题主要考查需求分析阶段的具体任务,它包括给出软件系统的目标及应完成的工作,所有的内容以软件需求规格说明书的形式给出。知识点3软件工程的目标与基本原则(1)目标:在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。(2)基本原则:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。17.2结构化的分析方法知识点4结构化分析方法的实质结构化分析方法是结构化程序设计理论在软件需求分析阶段的运用。结构化分析方法着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。知识点5结构化分析的常用工具(1)常用工具有:数据流图、数据字典、判定树、判定表。(2)数据流图:描述数据处理过程的工具,全称DataFlowDiagram,简称DFD。图17-1为一个具体的数据流图实例——飞机票预定系统,其中:矩形表示数据输入的源点和输出的终点;椭圆形表示加工,输入数据在这里进行变换,产生输出;箭头表示数据流。图17-1飞机票预定系统数据流图(4)数据字典:对所有与系统相关的数据元素的一个有组织的列表,以及精确的、严格的定义,使得用户和系统分析员对于输入、输出、存储成分和中间计算结果有共同的理解。数据字典是结构化分析的核心例如:学生——出生年月、生源地、家庭住址、联系电话、父母姓名、父母单位、父母联系方式、系别、学号。(5)判定树:从问题定义的文字描述中分清哪些是判定的条件,哪些是判定的结论,根据描述材料中的连接词找出判定条件之间的从属关系、并列关系、选择关系,根据它们构造判定树。(6)判定表:与判定树相似,当数据流图中的加工要依赖于多个逻辑条件的取值,即完成该加工的一组动作是由于某一组条件取值的组合而引发的,使用判定表描述比较适宜。知识点6软件需求说明书的特点结构化分析的最终成果即是软件需求说明书,它的特点有:正确性、无岐义性、完整性、可验证性、一致性、可理解性、可追踪性。其中,正确性是最重要的。【经典题解】1、数据流图(DFD图)是_________A)软件概要设计的工具B)软件详细设计的工具C)结构化方法的需求分析工具D)面向对象方法的需求分析工具【答案】C【解析】此题主要考查结构化分析的常用工具。结构化分析的最终成果即是软件需求说明书。17.3结构化设计方法知识点7结构化设计的特点软件设计是用比较抽象概括的方式确定目标系统如何完成预定的任务。在软件设计中应遵循的的基本原理:(1)模块:在程序设计中,可完成特定功能的代码段称为模块。(2)模块独立性:每个模块只完成系统要求的独立的子功能,与其他模块的联系尽量少。①内聚性:指一个模块内部各个元素间彼此结合的紧密程度的度量。②耦合性:指模块间相互连接的紧密程度的度量。模块设计的基本原则(模块独立性原则):高内聚,低耦合。从工程管理角度来看,结构化设计分为:概要设计和详细设计。概要设计的主要任务:设计软件系统结构;设计数据结构及数据库;编写概要设计文档;概要设计文档评审。详细设计的主要任务是为软件结构图中的每一个模块确定实现算法和局部设计结构,用某种选定的工具表示算法和数据结构的细节。常见的设计工具有:程序流程图(PFD)、盒图、PAD图、过程设计语言(PDL)。知识点8程序流程图(1)通常由矩形、菱形和箭头组成;其中,菱形表示判断,矩形表示运算或者开始、结束。(2)它以图形的方式详细描述了程序的开发过程。(3)特点简洁、明了。【经典题解】1、软件设计中划分模块的一个准则是___________A)低内聚低耦合B)高内聚低耦合C)低内聚高耦合D)高内聚高耦合【答案】B【解析】此题主要考查模块设计的基本原则(即模块独立性原则):高内聚,低耦合。2、下列选项中不属于结构化程序设计原则的是__________A)可封装B)自顶向下C)模块化D)逐步求精【答案】A3、软件详细设计产生的图如下:该图是__________A)N-S图B)PAD图C)程序流程图D)E-R图【答案】C4、耦合性和内聚性是对模块独立性度量的两个标准,下列叙述中正确的是__________A)提高耦合性降低内聚性有利于提高模块的独立性B)降低耦合性提高内聚性有利于提高模块的独立性C)耦合性是指一个模块内部各个元素之间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度【答案】B【解析】此题主要考查模块设计的基本原则(也叫模块独立性原则):高内聚,低耦合。17.4软件测试知识点9软件测试的概念(1)软件测试是使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。(2)软件测试工作一般不由开发人员完成。(3)软件测试的目的:发现软件中的错误。(4)软件测试过程一般按4个步骤进行:单元测试、集成测试、验收测试(确认测试)和系统测试。知识点10软件测试的方法(1)从是否需要执行被测试软件的角度,软件测试的方法分为:静态测试和动态测试。①静态测试包括代码检查、静态结构分析、代码质量度量。不实际运行软件,主要通过人工进行。②动态测试:是基于计算机的测试(2)按照功能划分,软件测试的方法分为:白盒测试方法和黑盒测试方法。①白盒测试:在程序内部进行,主要用于完成软件内部操作的验证。主要方法有逻辑覆盖、基本路径测试。②黑盒测试:主要诊断功能不对或遗漏、界面错误、数据结构或外部数据库访问错误、性能错误、初始化和终止条件错,用于软件确认。主要方法有等价类划分法、边界值分析法、错误推测法、因果图等。【经典题解】1、软件测试的目的是______________A)评估软件的可靠性B)发现并改正程序中的错误C)改正程序中的错误D)发现程序中的错误【答案】D【解析】此题主要考查软件测试的目的:发现软件中的错误。17.5软件的调试知识点11软件调试的概念(1)程序调试的任务是诊断和改正程序中的错误,主要在开发阶段进行。(2)程序调试的基本步骤:错误定位;修改设计和代码,以排除错误;进行回归测试,防止引进新的错误。(3)主要调试方法:强行排错法、回溯法、原因排除法。【经典题解】1、软件(程序)调试的任务是___________A)诊断和改正程序中的错误B)尽可能多地发现程序中的错误C)发现并改正程序中的所有错误D)确定程序中错误的性质【答案】A【解析】此题主要考查软件调试的目的:诊断和改正程序中的错误。综合自测一、选择题1.结构化程序设计的基本原则不包括__________A)多态性B)自顶向下C)模块化D)逐步求精2.软件是指_________A)程序B)程序和文档C)算法加数据结构D)程序、数据和相关文档的集合3.下列选项中不属于软件生命周期开发阶段任务的是________。A)软件测试B)概要设计C)软件维护D)详细设计4.下列描述中正确的是__________A)软件工程只是解决软件项目的管理问题B)软件工程主要解决软件产品的生产率问题C)软件工程的主要思想是强调在软件开发过程中需要应用工程化原则D)软件工程只是解决软件开发中的技术问题5.下列叙述中正确的是__________A)软件交付使用后还需要进行维护B)软件一旦交付使用就不需要再进行维护C)软件交付使用后其生命周期就结束D)软件维护是指修复程序中被破坏的指令6.下列描述中正确的是__________A)程序就是软件B)软件开发不受计算机系统的限制C)软件既是逻辑实体,又是物理实体D)软件是程序、数据与相关文档的集合7.数据流图中带有箭头的线段表示的是__________A)控制流C)模块调用B)事件驱动D)数据流8.在软件开发中,需求分析阶段可以使用的工具是________A)N-S图B)DFD图C)PAD图D)程序流程图9.在软件开发中,需求分析阶段产生的主要文档是________A)可行性分析报告B)软件需求规格说明书C)概要设计说明书D)集成测试计划10.程序流程图中带有箭头的线段表示的是__________A)图元关系B)数据流C)控制流D)调用关系11.软件设计中模块划分应遵循的准则是__________A)低内聚低耦合B)高内聚低耦合C)低内聚高耦合D)高内聚高耦合12.在结构化程序设计