来源:奥鹏远程教育 日期: 作者:奥鹏作业辅导
南开19秋《软件工程与软件测试》课程期末复习资料满分答案
《软件工程与软件测试》课程期末复习资料
《软件工程与软件测试》课程讲稿章节目录及知识点:
第1章 概述
(1) 了解软件的定义
(2) 了解软件危机的产生
(3) 了解软件工程的定义
第2章 软件过程
(1) 掌握软件过程的定义
(2) 掌握软件生命周期的几个阶段
(3) 掌握瀑布模型、快速原型模型、软件开发模型的基本过程,了解其优缺点
(4) 掌握增量模型、螺旋模型、喷泉模型的基本过程,了解其优缺点
第3章 可行性研究
(1) 了解可行性研究的目的与任务
(2) 掌握系统流程图
(3) 掌握数据流图
(4) 掌握数据字典
(5) 了解成本-效益分析的方法
第4章 软件需求分析
(1) 了解需求分析的任务
(2) 掌握需求获取的常用方法
(3) 掌握结构化分析方法
(4) 熟练使用需求分析图形工具
第5章 软件总体设计
(1) 了解软件设计和总体设计的定义
(2) 掌握模块化、抽象和信息隐蔽和局部化的原理
(3) 掌握模型快独立性和衡量标准
(4) 掌握软件结构设计准则
(5) 熟练使用软件结构设计图形工具
(6) 掌握结构化设计方法
第6章 软件详细设计
(1) 了解详细设计的目标和任务
(2) 掌握程序流程图、盒图等程序设计工具的使用
(3) 掌握程序判定表、判定树等程序设计工具的使用
(4) 掌握人机界面设计的原则和方法
第7章 软件编码
(1) 掌握程序设计语言的选择准则
(2) 掌握程序设计风格要点
第8章 软件测试
(1) 掌握软件测试的目标和原则
(2) 掌握几种软件测试方法的定义
(3) 掌握语句覆盖、判定覆盖等逻辑覆盖方法
(4) 掌握条件覆盖、条件组合覆盖等逻辑覆盖方法
(5) 掌握循环测试和基本路径测试基本方法
(6) 掌握等价类划分的方法
(7) 掌握边界值分析、错误推测和因果图的原理和方法
(8) 掌握单元测试方法
(9) 掌握集成测试方法
(10) 掌握确认测试和系统测试方法
(11) 掌握软件调试的方式
第9章 软件维护
(1) 了解软件维护定义
(2) 掌握软件维护过程
(3) 掌握软件可维护定义和方法
(4) 了解软件维护中存在的问题
第10章 面向对象方法学
(1) 了解面向对象方法定义
(2) 掌握面向对象的基本概念
(3) 掌握对象、类及类之间关系
(4) 掌握统一建模语言UML
第11章 面向对象的分析
(1) 掌握面向对象的分析过程
(2) 掌握建立用例模型方法
(3) 掌握建立对象模型方法
(4) 掌握建立顺序图和通信图方法
(5) 掌握建立状态图和活动图方法
(6) 掌握建立物理实现模型方法
第12章 面向对象的设计与实现
(1) 掌握面向对象的设计准则和启发式规则
(2) 掌握问题与子系统和人机监护子系统
(3) 掌握任务管理子系统和数据管理子系统
(4) 掌握服务设计方法
(5) 掌握关联设计方法
(6) 掌握面向对象设计优化方法
(7) 掌握面向对象系统实现方法
一、客观部分:(单项选择、多项选择)
(一)、单项选择
1模块独立性是由内聚性耦合性来度量的,其中内聚性是( )
A. 模块间的联系程度
B. 模块的功能强度
C. 信息隐藏程度
D. 接口的复杂程度
★考核知识点:模块独立性
参见讲稿章节:5.3
附1.1.1:(考核知识点解释)
模块的独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其它的模块的接口是简单的。
模块的独立性可以从两个方面来度量:耦合衡量不同模块彼此间相互依赖的紧密程度。耦合要低,即每个模块和其他模块之间的关系要简单。内聚衡量一个模块内部各个元素之间彼此结合的紧密程度的度量。 内聚要高,每个模块完成一个相对独立的特定子功能。
模块耦合性类型包括:无直接耦合、数据耦合、标记耦合、控制耦合、公共环境耦合、内容耦合,它们之间依次耦合性由低到高,模块独立性由强到弱。
模块内聚类型包括:偶然内聚、逻辑内聚、时间内聚、通信内聚、顺序内聚、功能内聚,它们之间依次内聚性由低至高,模块独立性由弱至强。
2. 成本/效益分析是()的一项重要内容
A.可行性研究
B.需求分析
C.软件测试
D.软件维护
[答案]:A
★考核知识点:可行性研究-成本/效益分析
参考讲稿章节:3.1、3.5
附1.1.2(考核知识点解释):
可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。需要明确,这个阶段不是解决用户提出的问题,而是确定这个问题是否值得去解决。
可行性研究的主要任务是,首先需要进一步分析和澄清问题定义,在问题定义阶段初步确定的规模和目标,如果是正确的就进一步加以肯定,如果有错误就应该及时改正,如果对目标系统有任何约束和限制,也必须把它们清楚地列举出来。
在澄清了问题定义之后,分析员应该导出系统的逻辑模型。然后从系统逻辑模型出发,探索若干种可供选择的主要解法,也就是系统实现方案。分析每种解法可行性和利弊,从而判定系统的目标和规模是否现实,系统完成后带来的效益是否达到值得投资开发这个系统的程度。
可行性的研究实际上是一次大大简化了的系统分析和系统设计的过程,即以抽象的方式进行分析和研究。
成本-效益分析的目的是从经济角度评价开发一个新的软件项目是否可行,从而帮助客户正确地作出是否投资于这项开发工程的决定。
3. 软件开发模型不包括()
A.瀑布模型
B.用例模型
C.增量模型
D.螺旋模型
★考核知识点:软件开发模型
参见讲稿章节:2.3、2.4
附1.1.3:(考核知识点解释)
经典的软件开发模型有瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型等。
瀑布模型也称生存周期模型或线性顺序模型,是W·Royce于1970年首先提出来的。它是将软件生存周期各个活动规定为依线性顺序连接的若干阶段的模型。
快速原型(rapid prototype)是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。
增量模型也称为渐增模型,是瀑布模型的顺序特征和快速原型法的迭代特征相结合的产物,是一种非整体开发的模型。
螺旋模型加入了瀑布模型与增量模型都忽略了的风险分析,即将两种模型结合起来,弥补了两种模型的不足。螺旋模型是一种迭代模型,它把开发过程分为几个螺旋周期,每迭代一次,螺旋线就前进一周。它是一种风险驱动的模型。基本思想:使用原型及其他方法来尽量降低风险。简单理解,在每个阶段之前都增加了风险分析过程的快速原型模型。
喷泉模型是典型的面向对象生命周期模型。以用户需求为动力,以对象作为驱动的模型,适合面向对象的开发方法。
(二)、多项选择
1.结构化程序设计所使用的结构有()
A. 顺序
B. 选择
C. 重复
D. GOTO
★考核知识点:结构化程序设计
参考讲稿章节:6.1
附1.2.1(考核知识点解释):
结构程序设计的概念最早是由E.W.Dijkstra在1965年召开的IFIP(国际信息处理联合会)会议上提出的,他指出:“可以从高级语言中取消GOTO语句”,“程序的质量与程序中所包含的GOTO语句的数量成反比”。1966年,Bohm和Jacopini证明了程序设计语言中,只用3种基本控制结构就能实现任何单入口、单出口的程序。这3种基本的控制结构是顺序、选择和循环。
结构化程序设计经典定义: “如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。”
2. 面向对象系统的逻辑设计模型划分为若干部分,分别对应组成目标系统的()。
A. 问题域子系统
B. 人机交互子系统
C. 任务管理子系统
D. 数据管理子系统
★考核知识点: 面向对象的系统设计
参考讲稿章节:12.2
附1.2.2(考核知识点解释):
面向对象系统的逻辑设计模型可以划分为4部分,分别对应组成目标系统的4个子系统。分别是:问题域子系统、人机交互子系统、任务管理子系统、数据管理子系统。
南开19秋《软件工程与软件测试》课程期末复习资料多选题答案
二、主观部分:(一)、名词解释
1. 软件工程
★考核知识点: 软件工程的定义
参考讲稿章节:1.3
附2.1.1(考核知识点解释):
软件工程是指导计算机软件开发和维护的一门工程学科,采用工程的概念、原理、技术和方法来开发和维护软件。
2. 软件过程
★考核知识点: 软件过程
参考讲稿章节:2.1
附2.1.2(考核知识点解释):
软件过程(software process)是为了获得高质量所需要完成的一系列任务的框架,它规定了完成多项任务的工作步骤。
3. 软件生命周期
★考核知识点: 软件生命周期
参考讲稿章节:2.2
附2.1.3(考核知识点解释):
软件生命周期是指某一软件项目被提出来并着手实现开始直到该软件报废或停止使用为止的生命周期,又称软件生存期。
4. 数据流图
★考核知识点: 数据流图
参考讲稿章节:3.3
附2.1.4(考核知识点解释):
数据流图(Data Flow Diagram, DFD) 用于表示系统逻辑模型的一种工具,它以直观的图形清晰地描述了系统数据的流动和处理过程。数据流图是系统逻辑功能的图形展示。
5. 数据字典
★考核知识点: 数据字典
参考讲稿章节:3.4
附2.1.5(考核知识点解释):
数据字典是关于数据的信息集合,也是对数据流图包含的所有元素的定义的集合。
6. 模块
★考核知识点:软件设计的概念和原理
参见讲稿章节:5.2
附2.1.6:(考核知识点解释)
模块,又称“组件”,是软件结构的基础,是软件元素,是能够单独命名、独立完成一定功能的程序语句的集合。
7.静态测试
★考核知识点:软件测试方法
参见讲稿章节:8.2
附2.1.7:(考核知识点解释)
静态测试,就是静态分析,指被测程序不在机器上运行,对模块的源代码进行研读,查找错误或收集一些度量数据,检测只进行特性分析。
8.动态测试
★考核知识点:软件测试方法
参见讲稿章节:8.2
附2.1.8:(考核知识点解释)
动态测试是指通过运行程序发现错误。
9.黑盒测试
★考核知识点:软件测试方法
参见讲稿章节:8.2
附2.1.9:(考核知识点解释)
黑盒测试,也称功能测试或数据驱动测试。它不考虑程序内部结构和处理过程。把被测程序看成一个黑盒子,只在软件接口处进行测试。测试者只知道该程序输入和输出之间的关系或程序的功能,依靠能够反映这一关系和程序功能的需求规格说明书考虑确定测试用例和推断测试结果的正确性,检查程序是否满足功能要求 黑盒测试被用来证实软件功能的正确性和可操作性。
10.白盒测试
★考核知识点:软件测试方法
参见讲稿章节:8.2
附2.1.10:(考核知识点解释)
白盒测试,也称结构测试或逻辑驱动测试。白盒测试法与黑盒测试法不同,测试人员将程序视为一个透明的白盒子,测试人员需了解程序的内部结构和处理过程。以检查处理过程的细节为基础,要求对程序的结构特性做到一定程度的覆盖,对程序中的所有逻辑路径进行测试,并检验内部控制结构是否有错,确定实际的运行状态与预期的状态是否一致。
11. 集成测试
★考核知识点:集成测试
参见讲稿章节:8.9
附2.1.11:(考核知识点解释)
集成测试是在单元测试基础上,将所有模块按要求组装成一个完整的系统而进行的测试。集成测试用于组装软件的一种系统的技术,是要把模块按照设计要求组装起来的同时进行测试,用以发现和接口相联系的问题。
12. 确认测试
★考核知识点:确认测试
参见讲稿章节:8.10
附2.1.12:(考核知识点解释)
确认测试,又称为有效性测试或验收测试,是从质量的角度,在功能、性能、可靠性、易用性等方面对软件做全面的质量检测。
13. 系统测试
★考核知识点:系统测试
参见讲稿章节:8.10
附2.1.13:(考核知识点解释)
系统测试是将经过单元测试、集成测试、确认测试以后的软件,作为计算机系统中的一个组成部分,需要与系统中的硬件、外部设备、支持软件、数据及操作人员结合起来,在实际运行环境下对计算机系统进行一系列的严格有效的测试来发现软件的潜在问题,以保证各组成部分不仅单独的正常运行,而且在系统各部分统一协调下也能正常运行。
系统测试不同于功能测试。功能测试主要是验证软件功能是否符合用户需求,并不考虑各种环境及非功能问题,如安全性、可靠性、性能等,而系统测试是在更大范围内进行的测试,着重对系统的性能、特性进行测试。
14. 封装
★考核知识点:面向对象基本概念
参见讲稿章节: 10.2
附2.1.14:(考核知识点解释)
封装指把对象的属性和操作结合成一个独立的系统单位,并尽可能隐藏对象的内部细节,又称信息隐藏。通过对象的封装特性,用户只能看到对象封装界面上的信息,对象内部对用户是隐蔽的,有效地实现了模块化功能。封装的目的是将对象的使用者与设计者分开。
15. 构件
★考核知识点:构件
参见讲稿章节: 11.6
附2.1.15:(考核知识点解释)
构件是一个相对独立的可装配的物理块,一般作为一个独立的文件存在。构件具有确定的接口,相互之间可以调用,构件之间存在依赖关系。构件定义了一个系统的功能,一个构件是一个或多个类的实现。
(二)、简答
1. 简述软件危机的表现形式,产生软件危机的原因,软件危机的解决途径
★考核知识点:软件危机
参见讲稿章节:1.2
附2.2.1(考核知识点解释):