第7章 软件工程(答案)
- 格式:doc
- 大小:33.50 KB
- 文档页数:5
软件工程考核知识点-第7章-软件测试7.1 软件测试的目的及原则7.1.1 软件测试的目的(1)软件测试是为了发现错误而执行程序的过程。
(2)一个好的测试用例能够发现至今尚未发现的错误。
(3)一个成功的测试是发现了至今尚未发现的错误的测试。
因此,测试阶段的基本任务应该是根据软件开发各阶段的文档资料和程序的内部结构,精心设计一组“高产”的测试用例,利用这些实例执行程序,找出软件中潜在的各种错误和缺陷。
7.1.2软件测试的原则在软件测试中,应注意以下原则:(1)测试用例应由输入数据和预期的输出数据两部分组成。
这样便于对照检查,做到"有的放矢"。
(2)测试用例不仅选用合理的输入数据,还要选择不合理的输入数据。
这样能更多地发现错误,提高程序地可靠性。
对于不合理地输入数据,程序应拒绝接受,并给出相应提示。
(3)除了检查程序是否做了它应该做的事,还应该检查程序是否做了它不应该做的事。
例如程序正确打印出用户所需信息的同时还打印出用户并不需要的多余的信息。
(4)应制定测试计划并严格执行,排除随意性。
(5)长期保留测试用例。
测试用例的设计耗费很大的工作量,必须作为文档保存。
因为修改后的程序可能有新的错误,需要进行回归测试。
同时,为以后的维护提供方便。
(6)对发现错误较多的程序段,应进行更深入的测试。
有统计数字表明,一段程序中所发现的错误数越多,其中存在的错误概率也越大。
因为发现错误数多的程序段,其质量较差。
同时在修改错误过程中又容易引入新的错误。
(7)程序员避免测试自己的程序。
测试是一种"挑剔性"的行为,心理状态是测试自己程序的障碍。
另外,对需求规格说明的理解而引入的错误则更难发现。
因此应由别的人或另外的机构来测试程序员编写的程序会更客观,更有效。
7.2 测试方法软件测试方法一般分为两大类:动态测试方法与静态测试方法,而动态测试方法中又根据测试用例的设计方法不同,分为黑盒测试与白盒测试两类。
第7章自测题及参考答案一、名词解释1. 软件测试2.黑盒法3.白盒法4.渐增式测试5.非渐增式测试6.调试二、填空题1.软件测试是为了_____而执行程序的过程。
2.运行被测程序的方法称为_______测试。
3.动态测试中,主要测试软件功能的方法称为______法。
4.选择测试用例,使得被测程序中每个判定的每个分支至少执行一次,这种逻辑覆盖标准称为_______。
5.要覆盖含有循环结构的所有路径是不可能的,一般通过限制_____来测试。
6.用等价类划分法设计测试用例时,如果被测程序的某个输入条件规定了取值范围,则可确定一个合理的等价类和_______。
7.凭经验或直觉推测程序中可能存在的错误而设计测试用例的方法是_______。
8.集成测试中的具体方法是______。
9.确认测试阶段的两项工作是______。
10.在单元测试中,测试一个模块时,需要设计_______。
三、选择题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.需求分析B.概要分析C.详细设计D.编码8.不属于白盒测试的技术是( )。
A.路径覆盖B.判定覆盖C.循环覆盖D.边界值分析9.集成测试时,能较早发现高层模块接口错误的测试方法为( )。
第一章软件工程概述软件工程的基本原则是什么?1,抽象:采用分层次抽象,自顶向下逐层细化的办法控制软件开发过程的复杂性。
2,模块化:模块化有助于信息隐蔽和抽象,有助于表示复杂的系统。
3,信息隐蔽:将模块化设计成“黑箱”,实现的细节隐蔽在模块内部,不让模块的使用直接访问,这就是信息封装。
4,局部化:保证模块之间具有松散的耦合,模块内部具有较强的内聚,这有助于控制模块的复杂性5,一致性:整个软件系统使用一致的概念符号和术语。
6,完整性:软件系统不丢失任何重要成分,可以完全实现系统所要求功能的程度。
7,不可验证性:易于检查、测试、评审,确保系统的正确性。
第二章可行性研究选择题1,研究开发所需要的成本和资源属于可行性研究中(经济可行性)研究的一方面。
2,可行性分析研究的目的是(项目值得开发与否)。
3,软件分析的第一步要做的工作在于(分析系统开发的可行性)。
4,可行性研究目的主要在于(用最小的代价确定问题定义阶段所确定的目标和规模是否可实现,可解决)。
5,软件可行性分析是着重确定系统的目标和规模。
对功能,性能及约束条件的分析应属于下列(技术可行性分析)。
简答题简述可行性研究的步骤?1,复查系统规模和目标2,研究目前正在使用的系统3,导出新系统的高层逻辑模型4,重新定义问题5,导出和评价供选择方案6,推荐一个方案并说明理由7,推荐行动方针8,书写计划任务书9,提交审查应用题设计一个软件的开发成本为5万元,寿命为3年。
未来3年的每年收益预计为22000元,24000元,26620元,银行年利率为10%。
试对此项目进行成本效益分析,以决定其经济可行性。
答:设银行的年利率是10%,则下列出每年的收益第一年:22000/1.1=20000第二年:24000/1.21=19834.71第三年:26620/1.331=20000因此:现有值收益为20000+19834.71+20000=59834.71投资回收期2+10165/20000=2.51纯收入59835-50000=9834.71第三章需求分析需求分析的原则有哪些?1.需求分析方法应该容易被用户理解。
第7章软件工程习题(答案)一、选择题1. D2. B3. C4. B5. A6. C7. A8. D9. BD 10. C11. B 12. C二、简答题1.什么叫软件危机?答:随着计算机应用的普及和深化,计算机软件的数量、规模、复杂程度和开发所需的人力、物力等都在急剧增加,计算机发展初期个人编写小程序的传统方法,已不再适合现代大型软件的开发,用传统方法开发出来的许多大型软件甚至无法投入运行。
同时,由于计算机应用领域和硬件技术得到丁飞速发展,软件的生产速度、质量和规模远远适应不了对软件的需求,造成大量人力、物力、财力的浪费,在软件开发和维护过程中出现了巨大的困难。
计算机领域把大型软件开发和维护过程中遇到的一系列严重问题称为“软件危机”(Software Crisis)。
2.软件危机的表现形式是什么?答:软件危机的表现形式:(1) 软件的质量难以保证开发的软件可靠性差。
由于在开发过程中,没有确保软件质量的体系和措施,在软件测试时,又没有严格的、充分的、完全的测试,提交给用户的软件质量差,在运行中暴露出大量的问题。
这种不可靠的软件,轻者会影响系统正常工作,重者会发生事故,造成生命财产的重大损失。
(2) 软件开发成本和开发进度难以控制经费预算经常突破,完成时间一再拖延。
由于缺乏软件开发的经验和软件开发数据的积累,使得开发工作的计算很难制定。
主观盲目制定的计算,执行起来和实际情况有很大差距,使得开发经费一再突破。
由于对工作量和开发难度估计不足,进度计划无法按时完成,开发时间一再拖延。
(3) 软件的维护非常困难开发的软件可维护性差。
开发过程没有统一的、公认的规范,软件开发人员按各自的风格工作,各行其事。
开发过程无完整、规范的文档,发现问题后进行杂乱无章的修改。
程序结构不好,运行进发现错误也很难修改,导致维护性差。
(4) 用户对“已完成”的软件系统不满意开发的软件不能满足用户要求。
开发初期对用户的要求了解不够明确,未能得到明确表达。
开发工作开始后,软件人员和用户又未能及进交换意见,使得一些问题不能及时解3.什么叫软件工程?答:软件工程是研究大规模程序设计的方法、工具和管理的一门工程科学,也就是运用系统的、规范的和可定量的方法来开发、运行和维护软件的系统工程。
软件工程是—门交叉学科,涉及到计算机科学、管理科学、工程学和数学。
软件工程的理论、方法、技术都是建立在计算机科学的基础上,它是用管理学的原理、方法来进行软件生产管理;用工程学的观点来进行费用估算、制定进度和实施方案;用数学方法来建立软件可靠性模型以及分析各种算法和性质。
软件工程是指导计算机软件开发和维护的工程学科。
4.软件工程的目标是什么?答:软件工程的目标可概括为:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足用户需要的软件产品。
5.简述软件工程过程。
答:软件工程过程包含如下7个过程。
(1) 获取过程:获取过程为需方按合同获取一个系统、软件产品或服务的活动。
(2) 供应过程:供应过程为供方向需方提供合同中的系统、软件产品或服务所需的活动。
(3) 开发过程:开发过程为开发者和机构为了定义和开发软件或服务所需的活动。
引过程包括需求分析、设计、编码、集成、测试、软件安装和验收等活动。
(4) 操作过程:操作过程为操作者和机构为了在规定的运行环境中为其用户运行一个计算机系统所需要的活动。
(5) 维护过程:维护过程为维护者和机构为了管理软件的修改,使它处于良好运行状态所需要的活动。
(6) 管理过程:管理过程为软件工程过程中各项管理活动,包括项目开始和范围定义;项目管理计划;实施和控制,评审和评价;项目完成。
(7) 支持过程:支持过程对项目的生存周期过程给予支持。
它有助于项目的成功并能提高项目的质量。
6.简述软件生存周期。
答:软件生存周期是指一个软件从提出开发要求开始直到该软件报废为止的整个时期。
通常,软件生存周期包括可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等活动,可以将这些活动以适当方式分配到不同阶段去完成。
7.常见的软件开发模型有哪些?答:常见的软件工程模型有:瀑布模型、螺旋模型、快速原型模型、智能模型等等。
8.简述喷泉模型。
答:喷泉模型是一种以用户需求为动力,以对象作为驱动的模型。
它适合于面向对象的开发方法。
它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。
喷泉模型使开发过程具有迭代性和无间隙性。
系统某些部分常常重复工作多次,相关功能在每次迭代中随之加入演化的系统。
无间隙是指在分析、设计和实现等开发活动之间不存在明显的边界。
9.简述智能模型。
智能模型又称智能生存周期模型,是基于知识的软件开发模型,它把瀑布模型与专家系统结合在—起。
该模型在实施过程中要建立知识库,将模型本身、软件工程知识与特定领域的知识分别存入数据库。
以软件工程知识为基础的生成规则构成的专家系统与含应用领域知识规则的其他专家系统相结合,构成这一应用领域软件的开发系统。
10.简述模块划分的原则。
答:模块的划分不能够随意进行,而是应该遵循一定的原则:(1) 划分的模块要有尽量高的功能独立性,而模块之间应该是低耦合(关联少)的。
(2) 模块的大小要适宜,过大,增加模块本身的复杂性;过小,模块数增多,会增加模块间关联度。
(3) 模块间接口是必须是明确的。
(4) 模块间可以有调用关系,这个调用的层次不能太多。
(5) 尽量注意提高模块的复用率,提高开发效率。
11.简述结构化方法遵循的原则。
答:结构化方法通常遵循以下原则:(1) 用户参与的原则。
由于整个软件开发工作的复杂性,用户的需求分析至关重要,但是,用户的需求不是一次就能够明确的,而是随着系统开发工作的深入,用户的需求表达和开发人员对用户需求的理解才能逐步明确、深化和细化。
这就要求软件的开发要有用户的积极参与。
否则,往往导致开发缓慢、不断反复、甚至失败。
(2) 先分析、再设计、后实现的原则。
结构化方法强调在进行系统设计和系统实施之前,要先进行充分的需求调查与分析,进行可行性的论证,即首先解决系统“做什么”的问题,然后再进入系统设计、系统实施阶段,来解决“如何做”的问题。
(3) 自顶向下的原则。
在系统分析、设计、实施等各阶段,结构化方法都强调“自项向下”的原则,即从总体目标和功能出发,逐级分解、逐步细化,将整个开发系统分解,先实现某些子系统,然后再实现总的目标和功能。
遵循这个原则,可以将一个复杂的问题分解成若干个比较简单的问题分别加以解决,从而降低了解决问题的难度。
(4) 阶段成果文档化。
结构化方法强调要将每一工作阶段的成果,用明确的文字和标准化的图形、表格等文档化工具进行完整而又准确的描述。
这些文档即可标志阶段开发工作的结束,又是下阶段工作开展的主要依据。
12.简述软件质量的含义。
答:软件质量是贯穿软件生存期的一个极为重要的问题,关于软件质量的定义有多种说法,从实际应用来说,软件质量定义如下:(1) 与所确定的功能和性能需求的一致性。
(2) 与所成文的开发标准的一致性。
(3) 与所有专业开发的软件所期望的隐含特性的一致性。
13.简述软件质量保证的含义答:软件的质量保证就是向用户及社会提供满意的高质量的产品,确保软件产品从诞生到消亡为止的所有阶段的质量活动,即确定、达到和维护需要的软件质量而进行的所有有计划、有系统的管理活动。
14.简述软件可靠性的含义。
答:软件可靠性定义表明了一个程序按照用户的要求和设计的目标,执行其功能的正确程度。
一个可靠的程序应要求是正确的、完整的、一致的和健壮的。
15.简述设计质量的评审内容。
答:设计质量的评审内容:(1) 评价软件的规格说明是否合乎用户的要求,即总体设计思想和设计方针是否明确;需求规格说明是否得到了用户或单位上级机关的批准;需求规格说明与软件的概要设计规格说明是否一致等。
(2) 评审可靠性,即是否能避免输入异常(错误或超载等)、硬件失效及软件失效所产生的失效,一旦发生应能及时采取代替或恢复手段。
(3) 评审保密措施实现情况,即是否提供对使用系统资格进行检查;对特定数据的使用资格、特殊功能的使用资格进行检查,在查出有违反使用资格情况后,能否向系统管理人员报告有关信息;是否提供对系统内重要数据加密的功能等。
(4) 评审操作特性实施情况,即操作命令和操作信息的恰当性,输入数据与输入控制语句的恰当性;输出数据的恰当性;应答时间的恰当性等。
(5) 评审性能实现情况,即是否达到所规定性能的的目标值。
(6) 评审软件是否具有可修改性、可扩充性、可互换性和可移植性。
(7) 评审软件是否具有可测试性。
(8) 评审软件是否具有复用性。
16.简述容错软件的含义。
答:容错软件的定义,有以下4种:(1) 规定功能的软件,在一定程度上对自身错误的作用(软件错误)具有屏蔽能力,则称此软件为具有容错功能的软件,即容错软件。
(2) 规定功能的软件,在一定程度上能从错误状态自动恢复到正常状态,则称之为容错软件。
(3) 规定功能的软件,在因错误而发生错误时,仍然能在一定程度上完成预期的功能,则把该软件称为容错软件。
(4) 规定功能的软件,在一定程度上具有容错能力,则称之为容错软件。
17.简述软件开发环境。
答:软件开发环境是指在计算机的基本软件的基础上,为了支持软件的开发而提供的一组工具软件系统。
软件工程环境是一组方法、过程及计算机程序(计算机化的工具)的整体化构件,它支持从需求定义、程序生成直到维护的整个软件生存期。
三、讨论题1.软件是计算机的灵魂,用软件工程的方法来保证软件开发过程的顺利进行有哪些好处?答案略。
2.学习了软件工程后,你觉得在哪些方面的收获最大?答案略。