软件测试教程课后答案-机械工程测试技术第三版课后答案
《软件工程》习题参考答案周兵1.1 教材:《软件工程》方木云主编,清华大学出版社,20161.2 参考书目:1.《Software engineering》8th Edition Ian Sommervile,Pearson Education, 机械工业出版社,20062. 《软件工程》, 王忠群主编, 中国科学技术大学出版社, 20093. 《软件工程导论》(第 4 版),张海藩编著, 清华大学出版社, 20074、《 a practitioner's approach》 Roger S. Pressman. 6th ed. Pressman, Roger S. China Machine Press, 20081.3 说明:斜体部分是可选讲授内容,带星号的习题为可选。1第1章软件工程学概述1.1 习题A.1 什么是软件?软件可以分为哪些类?p11答:软件是程序、数据及相关文档的完整集合。软件可分为通 用软件和定制软件。A.2 *什么是软件危机及其表现?p11答:软件危机是指在算机软件的开发和维护过程中所遇到 的一系列严重问题。软件危机包含下述两方面的 问题:如何开发软 件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有 软件。
具体地说,软件危机主要有以下一些典型表现。(1) 对软件开发成本和进度的估常常很不准确。(2) 用户对“ 已完成的”软件系统不满意的现象经常发生。(3) 软件产品的质量往往靠不住。(4) 软件常常是不可维护的。(5) 软件通常没有适当的文档资料。(6) 软件成本在算机系统总成本中所占的比例逐年上升。(7) 软件开发生产率提高的速度,远远跟不上算机应用迅 速普及深入的趋势。2A.3 什么是软件工程?p11答:软件工程是指导 算机软件开发和维护的一门工程学科。 采用工程的概念、原理、技术和方法来开发与维护软件,把经过时 间考验而证明正确的管理技术和当前能够得到的最好的技术方法 结合起来,以经济地开发出高质量的软件并有效地维护它,这就 是软件工程。A.4 什么是软件过程?p20答:软件过程由软件定义、软件开发和运行维护(也称为软件维 护)3 个时期组成,每个时期又进一步划分成若干个阶段。3第2章软件过程模型2.1 习题A.1 什么是瀑布型方法?p20答:按照时间顺序依次进行可行性分析、项目划、需求分析、 概要设、详细设、编码与单元测试、集成测试、确认验证、运 行与维护等几个阶段进行软件开发。
A.2 什么是快速原型方法?p28答:所谓快速原型是快速建立起来的可以在算机上运行的 程序,它所能完成的功能往往是最终产品能完成的功能的一个子 集。强调过程的多次反复,对文档的要求不高。A.3 什么是增量方法?说说它产生的原因和适用的范围。 P43答:增量模型也称为渐增模型,是快速原型法的一种;使用增量 模型开发软件时,把软件产品作为一系列的增量构件来设、编 码、集成和测试。使用增量模型可以:在较短时间内向用户提交可完成部分工 作的产品;客户可以将早期的增量作为原型,从中获得对后面系统 增量的需求经验;项目总体性失败的风险比较低。A.4 什么是面向复用方法?说说它产生的原因和适用的范4 围。P43答:面向复用的方法使用可复用软件组件以及能集成这些组 件的框架来构建和开发新的软件;有时,这些组件本身就是一个独 立的能满足某种需要的系统。使用这种方法可以节省大量的重复劳动,加快开发速度。存 在大量可以重用的构件的时候,可以使用这种方法。A.5 什么是形式化方法?说说它产生的原因和适用的范围。 P43答:形式化系统开发是一个类似瀑布模型的软件开发方法,但 其开发过程基于的是用形式化数学转换来将系统描述转换成一个 可执行程序。
因为使用这种方法可以大大提高软件的可靠性,以及节省测 试成本;这种方法主要用于可靠性要求很高的软件。5第3章可行性研究第4章需求分析4.1 习题A.1 为什么要进行软件需求分析?请叙述软件需求分析的主要过程。P66答:软件需求分析在软件开发过程中具有举足轻重的地位,它是开发出正确的、高质量的软件系统的重要保证。有数据表明,更正需求分析阶段的一个错误所花费的工作量是更正测试阶段的一个错误的一百倍。软件需求分析的主要过程: 获取用户需求、分析用户需求、编写需求文档、进行需求评审A.2 软件需求规格说明书由哪些部分组成?p66答:软件需求规格说明书由引言、任务概述、需求规定、运行环境 规定四个部分组成。第5章概要设(总体)5.1 习题A.1 什么是模块?什么是模块化?。P75答:模块是由边界元素限定的相邻程序元素(例如,数据说明,6 可执行的语句)的序列,而且有一个总体标识符代表它。过程、函 数、子程序和宏等,都可作为模块。面向对象方法学中的对象是模 块,对象内的方法(或称为服务)也是模块。模块是构成程序的基本 构件。模块化就是把程序划分成独立命名且可独立访问的模块,每 个模块完成一个子功能,把这些模块集成起来构成一个整体,可 以完成指定的功能满足用户的需求。
模块化是为了使一个复杂的 大型程序能被人的智力所管理。A.2 衡量模块独立性的两个标准是什么?它们各表示什么 含义?P75答:模块的独立程度可以由两个定性标准度量,这两个标准分 别称为内聚和耦合。耦合是对一个软件结构内不同模块之间互连 程度的度量。内聚标志一个模块内各个元素彼此结合的紧密程度, 它是信息隐藏和局部化概念的自然扩展。7第6章界面设6.1 习题A.1 界面设的原则是什么?P88答:用户界面设 原则原则描述用户熟悉界面所使用的术语和概念应该是来自于用户的经验,这些用户是使用系统最多的人一致性界面应该是一致的,即尽可能地让相似的操作有同样的触发方式意外最小永远不要让用户对系统的行为感到吃惊 化可恢复性界面应该有一种机制来允许用户从错误中恢复用户指南在错误发生时界面应该提供有意义的反馈,并有上下文感知能力的用户帮助功能用户差异界面应该为不同类型用户提供合适的交互功能 性8第7章详细设7.1 习题A.1 *画出下列伪码程序的程序流程 图:STARTIF p THENWHILE q DOfEND DOELSEBLOCKgnEND BLOCKEND IFSTOP 答:9开F始TpgqTFnf结束A.2 *下图给出的程序流程图代表一个非结构化的程序,请 问:(1) 为什么说它是非结构化的?(2) 设一个等价的结构化程序。
(3) 在(2)题的设中你使用附加的标志变量 flag 了吗?若没用, 请再设一个使用 flag 的程序;若用了,再设一个不用 flag 的程 序。10图 一个非结构化程序答:(1) 因为它不是单出口的程序。 (2)11 (3)12第8章实现8.1习题A.1 p101A.2 什么是软件测试,软件测试的基本准则是什么?答:测试是为了发现程序中的错误而执行程序的过程,测试是保 证软件质量的重要手段之一。软件测试准则(经验)(1) 所有测试都应该能追溯到用户需求。(2) 应该远在测试开始之前就制定出测试划。(3) 把 Pareto 原理应用到软件测试中。Pareto 原理说明,测试发 现的错误中的 80%很可能是由程序中 20%的模块造成的。(4) 应该从“小规模”测试开始,并逐步进行“大规模”测试。(5) 穷举测试是不可能的。(6) 为了达到最佳的测试效果,应该由独立的第三方从事测试 工作。。A.3 软件测试的目的是什么,为什么把软件测试的目的定义为只是发现错误?答:测试的目的是找出整个软件开发周期中各个阶段的错误,如 果测试是为了发现程序中的错误,就会力求设出最能暴露错误的测13 试方案,从而提高测试效率。
A.4 黑盒测试方法有哪些?答:黑盒测试方法有等价划分、边界值分析、错误推测法。A.5 白盒测试方法有哪些?答:白盒测试方法有逻辑覆盖,逻辑覆盖又可分为:语句覆盖、判 定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖。14第9章演化(维护)9.1 习题A.1 P105维护分为哪几类?答:维护分为: 改正性维护、适应性维护、完善性维护、预防性维 护。第10章 面向对象方法学10.1 习题A.1 P115什么是 UML ?答:UML(Unified Modeling Language)是一种定义良好、易于表达、 功能强大且普遍适用的建模语言。它融入了软件工程领域的新思想、 新方法和新技术。它的作用域不仅仅限于支持面向对象的分析与设, 而是全面支持从需求分析开始的软件开发的全过程。A.2 P115一般从哪几种常用的视角来描述一个系统?答:用面向对象方法开发软件,通常需要建立 3 种形式的模型,它们分别是描述系统静态结构的对象模型软件测试教程课后答案,描述系统动态行为的动态模型和描述系统功能的功能模型。1516第11章 基于其它粒度的构造方法11.1 习题A.1 P131什么是软件体系结构?答:Hayes Roth 认为软件体系结构是一个抽象的系统规范,主要 包括用其行为来描述的功能构件和构件之间的相互连接、接口和关系。
A.2 P131软件体系结构的组成要素是什么?答:软件体系结构包含构件、连接件和约束 3 个最基本的组成元素。A.3 P149Agent 概念的几个主要特征是什么?答:与 Agent 概念相关的几个主要特性:自治性、异构性、动态性、通信、协议、承诺。A.4 P149Agent 的组织类型有哪些?答:Agent 的组织类型有:层次、组合、团队、市场。A.5 P171如何理解 SOA 架构?请画图给出面向服务体系结构中的协作是 怎样进行的过程。答:SOA 的定义为“客户端/服务器的软件设方法,一项应用由软17 件服务和软件服务使用者组成。SOA 架构的实质就是将系统模型与 系统实现分离。18第12章 面向云算方法12.1 习题A.1 P207从研究现状上看,云算具有什么特点?答:云算具有以下特点: 超大规模、虚拟化、高可靠性、通用性、 高可扩展性、按需服务、极其廉价。A.2 P207Google 云算技术具体包括哪些?答:Google 云算技术具体包括:Google 文件系统 GFS、分布式 算编程模型 MapReduce、分布式锁服务 Chubby 和分布式结构化数据 存储系统 Bigtable 等。
其中,GFS 提供了海量数据的存储和访问的能 力,MapReduce 使得海量信息的并行处理变得简单易行软件测试教程课后答案,Chubby 保证 了分布式环境下并发操作的同步 问题,Bigtable 使得海量数据的管理 和组织十分方便。第13章 CASE工具13.1 习题P207CASE 的定义是什么?答: CASE 即 Computer Aided Software Engineering,中文意思是算机辅助软件工程。19CASE 是一套方法和工具。CASE 的一个基本思想就是提供一组能够 自动覆盖软件开发生 命周期各个阶段的集成的、减少劳动力的工具。第14章 软件项目14.1习题A.1 P233什么是项目,软件项目有哪些特点?答:项目是为完成一个独特的产品、服务或者任务而进行的一次 性努力。软件项目是一种特殊的项目,软件项目除了具有一般项目的 基本特征外,还具有以下特征:(l)软件项目是知识密集型项目。(2)软件项目采用以用户为中心的理念。(3)软件项目的风险较大。(4)软件项目的管理严格。(5)软件产品需要多次完善。(6)软件项目的文档编写量较大。A.2 P233软件项目立项的一般过程包括哪些?答:软件项目立项的一般过程包括: 软件项目的发起阶段、项目的20 论证阶段、项目的审核阶段、项目的立项。
第15章 人员管理15.1 习题P245小组协作方式有哪些?答:小组协作方式有两种:民主制程序员组、主程序员组。第16章 进度管理16.1 习题P250表达项目进度的图形工具有那两种?答:表达项目进度的图形工具有两种:工程网络图(活动网络图)、 Gantt 图(条形图)。21第17章 成本管理17.1 习题P258软件成本的组成因素有哪些?答:软件成本的组成因素有: 包括维护在内的硬件和软件费用、差 旅费和培训费用、工作成本,即支付给软件开发人员的费用。P258软件生成率的度量方式有哪些?答:软件生成率的度量方式有:面向规模的度量、面向功能的度量。第18章 质量管理18.1 习题A.1 P268软件质量的定义是什么?答:国际标准化组织公布的国际标准 ISO 8042 综合将软件质量定 义为:反应实体满足明确的和隐含的需求的能力的特性的总和。A.2 P268软件质量因素有哪些?答:软件的质量属性22 安全性可理解性可移植性 保密性可测试性可使用性 可靠性适应性