2003.11.
全国计算机等级考试二级公共基础知识
(4)
4.软件工程基础
4.0 内容
软件工程基本概念,软件生命周期概念,
软件工具与软件开发环境。
结构化分析方法,数据流图,数据字典,
软件需求规格说明书。
结构化设计方法,总体设计与详细设计。
软件测试的方法,白盒测试与黑盒测试,
测试用例设计,软件测试的实施,单元测试、集成测试和系统测试。
程序的调试,静态调试与动态调试。
4.1 基本概念
1,软件工程
软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程。其目的是提高软件生产率、提高软件质量、降低软件成本。
2,软件危机
早期的软件主要指程序,采用个体工作方式,缺少相关文档,质量低,维护困难,这些问题称为
“软件危机”,软件工程概念的出现源自于软件危机。
3,软件生命周期
将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期
分为软件定义、软件开发及软件运行维护 3个阶段。维护是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性,降低维护代价
6个活动阶段
可行性研究与计划制定:确定系统的总体目标。参加人员有用户、项目负责人和系统分析员,产生文档有可行性分析报告、项目计划书等
需求分析:确定系统的逻辑模型。参加人员有用户、项目负责人和系统分析员。产生文档为需求规格说明书,其作用,( 1)便于用户、开发人员进行理解交流;( 2)反映用户问题的结构,可以作为软件开发工作的基础和依据;
( 3)作为确认测试和验收的依据。
软件设计:包括软件结构设计、数据设计、接口设计和过程设计。其中结构设计是定义软件系统各部件之间的关系;数据设计是将分析时创建的模型转化为数据结构的定义;接口设计是描述软件内部、
软件和操作系统之间及软件与人之间如何通信;过程设计则是把系统结构部件转换成软件的过程性描述。软件设计分概要设计和详细设计。参加人员有系统分析员和高级程序员。产生的文档有设计规格说明书。
编码:编程。高级程序员和程序员产生源程序清单
测试:由另一部门的高级程序员或系统分析员产生软件测试计划和软件测试报告
运行维护
4,软件工程三要素
方法:完成软件工程项目的技术手段
工具:支持软件的开发、管理、文档生成
过程:支持软件开发的各个环节的控制、管理
5,软件工程的理论和技术研究的内容
软件开发技术和软件工程管理
6,软件工程的目标
在给定的成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可适应性、
可移植性、可追踪性和可互操作性且满足用户需求的产品
软件工程鼓励研制和采用各种先进的软件开发方法、工具和环境
7,软件工具和软件开发环境
软件工具 (CASE):用来辅助软件开、运行、维护、管理、支持等过程中的活动的软件
软件开发环境:支持软件产品开发的软件系统,
它由软件工具集和环境集成机制构成
4.2 结构化分析方法
基本思想
将系统分析看成工程项目,有计划、有步骤地进行工作。
开发策略
自顶向下,逐层分解
分析结果
一套分层的数据流图 (DFD):用来描述数据流从输入到输出的变换流程
一个数据字典 (DD):用来描述 DFD中的每个数据流、文件以及组成数据流或文件的数据项
一组小说明(加工逻辑说明):用来描述每个基本加工的加工逻辑
4.3 结构化设计方法、总体设计和详细设计
4.3.1 结构化设计方法
结构图
基本成分:模块、调用、输入输出数据
模块用矩形表示,模块间用线段连接,表示调用关系,输入输出数据可写在调用线段的旁边
信息流的类型
变换流
事务流
4.3.2 总体设计
设计原则
分解 — 协调原则
自顶向下的原则
信息屏蔽、抽象的原则
一致性原则
明确性原则
模块间的耦合度尽可能小,模块内部组合尽可能紧凑
(内聚性高)
模块的扇入和扇出系数合理
模块的规模适当
4.3.3 详细设计
根本目标
确定应用怎样具体的实现所要求的系统,不是具体的编写程序,而是要设计程序的“蓝图”
此阶段的结果基本上决定了最终的程序代码的质量
包括内容:
代码设计
输入设计
输出设计
处理过程设计
用户界面设计
安全控制设计
4.4 软件测试
4.4.1 意义目的
为了发现错误
希望能以最少的人力和时间发现潜在的各种错误和缺陷
保证系统质量和可靠性的关键步骤
4.4.2 测试方法
人工测试
机器测试
4.4.3 白盒测试
结构测试
将软件看成透明的白盒,根据程序的内部结构和逻辑结构来设计测试例子,对程序的路径和过程进行测试,检查是否满足设计的要求
4.4.4 黑盒测试
功能测试
将软件看成黑盒子,在完全考虑软件内部结构和特性的情况下,测试软件的外部特性
4.4.5 软件测试的实施
单元测试(模块测试):白盒测试法
组装测试(集成测试)
确认测试
系统测试
4.5 程序调试
4.5.1 任务
根据测试时发现的错误,找出原因和具体的位置,进行改正
有程序开发人员来进行,谁开发的程序就由谁来进行调试
方法:
强行排错法
回溯法
原因排除法(演绎、归纳、二分法 )
4.5.2 静态调试
通过人的思维来分析源程序代码和排错,是主要的调试手段
4.4.4 动态调试
辅助静态调试例题讲解
为了提高测试的效率,应该
A) 随机选取测试数据 B) 取一切可能的输入数据作为测试数据
C) 在完成编码以后制定软件的测试计划 D) 集中对付那些错误群集的程序
软件生命周期中所花费用最多的阶段是
A) 详细设计 B) 软件编码 C) 软件测试 D) 软件维护
下列叙述中,不属于软件需求规格说明书的作用的是
A) 便于用户、开发人员进行理解和交流
B) 反映出用户问题的结构,可以作为软件开发工作的基础和依据
C) 作为确认测试和验收的依据
D) 便于开发人员进行需求分析
下列不属于软件工程的 3个要素的是
A ) 工具 B ) 过程 C ) 方法 D ) 环境
软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指
A) 模块间的关系 B) 系统结构部件转换成软件的过程描述
C) 软件层次结构 D) 软件开发过程
检查软件产品是否符合需求定义的过程称为
A ) 确认测试 B ) 集成测试 C ) 验证测试 D ) 验收测试
数据流图用于抽象描述一个软件的逻辑模型,
数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是
A ) 控制流 B ) 加工 C ) 数据存储 D ) 源和流
开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作
A) 软件投机 B) 软件危机 C) 软件工程 D) 软件产生
下面不属于软件设计原则的是
A ) 抽象 B ) 模块化 C ) 自底向上 D ) 信息隐蔽
开发大型软件时,产生困难的根本原因是
A) 大系统的复杂性 B) 人员知识不足
C) 客观世界千变万化 D) 时间紧、任务重
软件工程的出现是由于
A) 程序设计方法学的影响 B) 软件产业化的需要
C) 软件危机的出现 D) 计算机的发展
软件开发离不开系统环境资源的支持,其中必要的测试数据属于
A) 硬件资源 B) 通信资源 C) 支持软件 D) 辅助资源
在数据流图 (DFD) 中,带有名字的箭头表示
A) 模块之间的调用关系 B) 程序的组成成分
C) 控制程序的执行顺序 D) 数据的流向
下列不属于结构化分析的常用工具的是
A) 数据流图 B) 数据字典 C) 判定树 D) PAD图
在软件生产过程中,需求信息的给出是
A) 程序员 B) 项目管理者
C) 软件分析设计人员 D) 软件用户
下列工具不是需求分析常用工具的是
A ) PAD B ) PFD C ) N-S D ) DFD
模块独立性是软件模块化所提出的要求,衡量模块独立性的度量标准则是模块的
A) 抽象和信息隐蔽 B) 局部化和封装化
C) 内聚性和耦合性 D) 激活机制和控制方法
软件开发的结构化生命周期方法将软件生命周期划分成
A) 定义、开发、运行维护 B) 设计阶段、编程阶段、测试阶段
C) 总体设计、详细设计、编程调试 D) 需求分析、功能定义、系统设计
在软件工程中,白箱测试法可用于测试程序的内部结构。此方法将程序看做是
A) 路径的集合 B) 循环的集合 C) 目标的集合 D) 地址的集合
完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例的测试方法是
A) 黑箱测试法 B) 白箱测试法 C) 错误推测法 D) 安装测试法
在结构化设计方法中,生成的结构图 (SC) 中,
带有箭头的连线表示
A) 模块之间的调用关系 B) 程序的组成成分
C) 控制程序的执行顺序 D) 数据的流向
下列选项中,不属于模块间耦合的是
A) 数据耦合 B) 同构耦合 C) 异构耦合 D) 公用耦合
下列叙述中,不属于测试的特征的是
A) 测试的挑剔性 B) 完全测试的不可能性
C) 测试的可靠性 D) 测试的经济性
需求分析中开发人员要从用户那里了解
A) 软件做什么 B) 用户使用界面
C) 输入的信息 D) 软件的规模
下列不属于软件调试技术的是
A) 强行排错法 B) 集成测试法
C) 回溯法 D) 原因排除法
为了避免流程图在描述程序逻辑时的灵活性,
提出了用方框图来代替传统的程序流程图,
通常也把这种图称为
A) PAD图 B) N-S图 C) 结构图 D) 数据流图
软件复杂性度量的参数包括
A) 效率 B) 规模 C) 完整性 D) 容错性
下列叙述中,正确的是
A) 软件就是程序清单 B) 软件就是存放在计算机中的文件
C) 软件应包括程序清单及运行结果 D) 软件包括程序和文档
软件设计中,有利于提高模块独立性的一个准则是
A) 低内聚低耦合 B) 低内聚高耦合
C) 高内聚低耦合 D) 高内聚高耦合
软件生命周期中花费时间最多的阶段是
A) 详细设计 B) 软件编码 C) 软件测试 D) 软件维护
下列叙述中,不属于结构化分析方法的是
A) 面向数据流的结构化分析方法
B) 面向数据结构的 Jackson方法
C) 面向数据结构的结构化数据系统开发方法
D) 面向对象的分析方法
详细设计的结果基本决定了最终程序的
A) 代码的规模 B) 运行速度
C) 质量 D) 可维护性
下列不属于静态测试方法的是
A) 代码检查 B) 白盒法
C) 静态结构分析 D) 代码质量度量
在软件生命周期中,能准确地确定软件系统必须做什么和必须局别哪些功能的阶段是
A)概要设计 B)详细设计 C)可行性分析 D)需求分析
检查软件产品是否符合需求定义的过程称为
A)确认测试 B)集成测试 C)验证测试 D)验收测试
数据流图用于抽象描述一个软件的逻辑模型,
数据流图由一些特定的图符构成,下列图符名标识的图符不属于数据流图合法图符的是
A)控制流 B)加工 C)数据存储 D)源和潭
下面不属于软件设计原则的是
A)抽象 B)模块化 C)自底向上 D)信息屏蔽
程序流程图( PFD)中的箭头代表的是
A)数据流 B)控制流 C)调用关系 D)组成关系
下列工具中为需求分析常用工具的是
A) PAD B) PFD C) N-S D) DFD
在结构化方法中,软件功能分解属于下列软件开发中的阶段是
A)详细设计 B)需求分析
C)总体设计 D)编程调试
软件调试的目的是
A)发现错误 B)改正错误
C)改善软件的性能 D)挖掘软件的潜能
软件需求分析阶段的工作,可以分为四个方面:需求获取,需求分析,编写需求规格说明书,以及
A)阶段性报告 B)需求评审
C)总结 D)都不正确
通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为 【 4】 。
耦合和内聚是评价模块独立性的两个主要标准,其中 【 3】 反映了模块内各成分之间的联系。
软件工程研究的内容主要包括,【 4】 技术和软件工程管理。
Jackson结构化程序设计方法是英国的
M.Jackson提出的,它是一种面向 【 2】 的设计方法。数据结构
软件设计模块化的目的是 【 4】 。降低复杂性
数据流图的类型有 【 4】 和事务型。
软件危机出现于 60年代末,为了解决软件危机,人们提出了 【 3】 的原理来设计软件,
这就是软件工程诞生的基础。
软件开发环境是全面支持软件开发全过程的
【 4】 集合。
测试的目的是暴露错误,评价程序的可靠性;
而 【 2】 的目的是发现错误的位置并改正错误。
软件维护活动包括以下几类:改正性维护、
适应性维护,【 3】 维护和预防性维护。
软件结构是以 【 3】 为基础而组成的一种控制层次结构。
为了便于对照检查,测试用例应由输入数据和预期的 【 4】 两部分组成。
软件工程包括 3个要素,分别为方法、工具和
【 4】 。
软件工程的出现是由于 【 2】 。
单元测试又称模块测试,一般采用 【 3】 测试。
软件的 【 3】 设计又称为总体结构设计,其主要任务是建立软件系统的总体结构。
软件是程序、数据和 ____的集合。
Jackson方法是一种面向 ____的结构化方法。
软件工程研究的内容主要包括,____技术和软件工程管理。
数据流图的类型有 ____和事务型。
软件开发环境是全面支持软件开发全过程的
_____集合。