(三)软件工程基础
【考点12】软件工程的基本概念
1.软件的定义与特点
(1)定义:软件是指与计算机系统的操作有关的计算机程序、规程、规则,以及可能有的文件、文档和数据。
(2)特点。
●是逻辑实体,有抽象性。
●生产没有明显的制作过程。
●运行使用期间不存在磨损、老化问题。
●开发、运行对计算机系统有依赖性,受计算机系统的限制,导致了软件移植问题。
●复杂性较高,成本昂贵。
●开发涉及诸多社会因素。
2.软件的分类
软件可分应用软件、系统软件和支撑软件3类。
(1)应用软件是特定应用领域内专用的软件。
(2)系统软件居于计算机系统中最靠近硬件的一层,是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。
(3)支撑软件介于系统软件和应用软件之间,是支援其他软件的开发与维护的软件。
3.软件危机与软件工程
软件危机指在计算机软件的开发和维护中遇到的一系列严重问题。软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序,包括软件开发技术和软件工程管理。
4.软件生命周期
软件产品从提出、实现、使用维护到停止使用的过程称为软件生命周期。
在国家标准中,软件生命周期划分为8个阶段:①软件定义期,包括问题定义、可行性研究和需求分析3个阶段;②软件开发期,包括概要设计、详细设计、实现和测试4个阶段;③运行维护期,即运行维护阶段。
5.软件工程的原则
软件工程的原则包括:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。
【考点13】结构化分析方法
需求分析的任务是发现需求、求精、建模和定义需求的过程,可概括为:需求获取、需求分析、编写需求规格说明书和需求评审。
1.常用的分析方法
●结构化分析方法:其实质着眼于数据流,自顶向下,逐层分解,建立系统的处理流程。
●面向对象分析方法。
2.结构化分析常用工具
结构化分析常用工具包括数据流图、数字字典(核心方法)、判断树和判断表。
(1)数据流图:即DFD图,以图形的方式描绘数据在系统中流动和处理的过程,它只反映系统必须完成的逻辑功能,是一种功能模型。
符号名称的作用如下。
●箭头代表数据流,沿箭头方向传送数据的通道。
●圆或椭圆代表加工,输入数据经加工变换产生输出。
●双杠代表存储文件,表示处理过程中存放各种数据文件。
●方框代表源和潭,表示系统和环境的接口。
(2)数据字典:结构化分析方法的核心。数据字典是对所有与系统相关的数据元素的一个有组织的列表,以及精确的、严格的定义,使得用户和系统分析员对于输入、输出、存储成分和中间计算结果有共同的理解。
(3)判定树:使用判定树进行描述时,应先从问题定义的文字描述中分清判定的条件和判定的结论,根据描述材料中的连接词找出判定条件之间的从属关系、并列关系、选择关系,根据它们构造判定树。
(4)判定表:与判定树相似,当数据流图中的加工要依赖于多个逻辑条件的取值,即完成该加工的一组动作是由于某一组条件取值的组合引发的,使用判定表比较适宜。
3.软件需求规格说明书
软件需求规格说明书是需求分析阶段的最后成果,是软件开发的重要文档之一。
(1)软件需求规格说明书的作用:①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为确认测试和验收的依据。
(2)软件需求规格说明书的内容:①概述;②数据描述;③功能描述;④性能描述;⑤参考文献;⑥附录。
(3)软件需求规格说明书的特点:①正确性;②无歧义性;③完整性;④可验证性;⑤一致性;⑥可理解性;⑦可修改性;⑧可追踪性。
【考点14】结构化设计方法
1.软件设计的基本概念和方法
软件设计是一个把软件需求转换为软件表示的过程。
(1)基本原理:抽象、模块化、信息隐藏、模块独立性(度量标准,耦合性和内聚性,低耦合、高内聚)。
(2)基本思想:将软件设计成由相对独立、单一功能的模块组成的结构。
2.概要设计
(1)4个任务:设计软件系统结构、数据结构及数据库设计、编写概要设计文档、概要设计文档评审。
(2)面向数据流的设计方法:数据流图的信息分为交换流和事物流,结构形式有交换型和事务型。
3.详细设计的工具
详细设计的工具包括以下几个。
●图形工具:程序流程图、N-S、PAD、HIPO。
●表格工具:判定表。
●语言工具:PDL(伪码)。
【考点15】软件测试
1.目的
为了发现错误而执行程序的过程。
2.准则
●所有测试应追溯到用户需求。
●严格执行测试计划,排除测试的随意性。
●充分注意测试中的群集现象。
●程序员应避免检查自己的程序。
●穷举测试不可能。
●妥善保存设计计划、测试用例、出错统计和最终分析报告。
3.软件测试技术和方法
软件测试的方法按是否需要执行被测软件的角度,可分为静态测试和动态测试,按功能分为白盒测试和黑盒测试。
(1)白盒测试:根据程序的内部逻辑设计测试用例,主要方法有逻辑覆盖测试、基本路径测试等。
(2)黑盒测试:根据规格说明书的功能来设计测试用例,主要诊断方法有等价划分法、边界值分析法、错误推测法、因果图法等,主要用于软件确认测试。
4.软件测试的实施
软件测试是保证软件质量的重要手段,软件测试是一个过程,其测试流程是该过程规定的程序,目的是使软件测试工作系统化。
软件测试过程分4个步骤,即单元测试、集成测试、验收测试和系统测试。
单元测试是对软件设计的最小单位——模块(程序单元)进行正确性检验测试。
单元测试的目的是发现各模块内部可能存在的各种错误。
单元测试的依据是详细的设计说明书和源程序。
单元测试的技术可以采用静态分析和动态测试。
【考点16】程序的调试
(1)任务:诊断和改正程序中的错误。
(2)调试方法:强行排错法、回溯法和原因排除法。
真题演练
(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)使用顺序、选择和重复(循环)3种基本控制结构表示程序的控制逻辑
B)模块只有一个入口,可以有多个出口
C)注重提高程序的执行效率
D)不使用GOTO语句
(7)在软件开发中,需求分析阶段可以使用的工具是( )。
A)N-S图
B)DFD图
C)PAD图
D)程序流程图
(8)数据流图中带有箭头的线段表示的是( )。
A)控制流
B)事件驱动
C)模块调用
D)数据流
(9)数据字典(DD)所定义的对象都包含于( )。
A)数据流图(DFD图)
B)程序流程图
C)软件结构图
D)方框图
(10)软件需求规格说明书的作用不包括( )。
A)软件验收的依据
B)用户与开发人员对软件要做什么的共同理解
C)软件设计的依据
D)软件可行性研究的依据
(11)下列叙述中错误的是( )。
A)系统总体结构图支持软件系统的详细设计
B)软件设计是将软件需求转换为软件表示的过程
C)数据结构与数据库设计是软件设计的任务之一
D)PAD图是软件详细设计的表示工具
(12)软件设计中模块划分应遵循的准则是( )。
A)低内聚低耦合
B)高内聚低耦合
C)低内聚高耦合
D)高内聚高耦合
(13)下列不属于软件设计阶段任务的是( )。
A)软件总体设计
B)算法设计
C)制定软件确认测试计划
D)数据库设计
(14)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是( )。
A)提高耦合性降低内聚性有利于提高模块的独立性
B)降低耦合性提高内聚性有利于提高模块的独立性
C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度
D)内聚性是指模块间互相连接的紧密程度
(15)在软件设计中不使用的工具是( )。
A)系统结构图
B)PAD图
C)数据流图(DFD图)
D)程序流程图
(16)软件详细设计图如下:
该图是( )。
A)N-S图
B)PAD图
C)程序流程图
D)E-R图
(17)程序流程图中带有箭头的线段表示的是( )。
A)图元关系
B)数据流
C)控制流
D)调用关系
(18)下列叙述中错误的是( )。
A)软件测试的目的是发现错误并改正错误
B)对被调试的程序进行“错误定位”是程序调试的必要步骤
C)程序调试通常也称为Debug
D)软件测试应严格执行测试计划,排除测试的随意性
(19)软件测试的目的是( )。
A)评估软件可靠性
B)发现并改正程序中的错误
C)改正程序中的错误
D)发现程序中的错误
(20)设有下列二叉树:
对此二叉树中序遍历的结果为( )。
A)ACBDEF
B)DEBFCA
C)ABDECF
D)DBEAFC
(21)下列属于黑盒测试方法的是( )。
A)语句覆盖
B)逻辑覆盖
C)边界值分析
D)路径覆盖
(22)在黑盒测试方法中,设计测试用例的主要根据是( )。
A)程序内部逻辑
B)程序外部功能
C)程序数据结构
D)程序流程图
(23)下列属于白盒测试方法的是( )。
A)等价类划分法
B)逻辑覆盖
C)边界值分析法
D)错误推测法