第一章测试题一.问答题1:软件是计算机系统中与硬件相互依存的另一部分,它是包括(A)、(B)及(C)的完整集合。其中,(A)是按事先设计的功能和性能要求执行的指令序列。(B)是使程序能够正确操纵信息的数据结构。(C)是与程序开发、维护和使用有关的图文材料。答案2:开发软件时对提高软件开发人员工作效率至关重要的是(A)。软件工程中描述生存周期的瀑布模型一般包括计划、(B)、设计、编码、测试、维护等几个阶段,其中设计阶段在管理上又可以依次分成(C)和(D)两步。答案3:从供选择的答案中选出适当字句填入下列关于软件发展过程的叙述中的()内。有人将软件的发展过程划分为4个阶段:第一阶段(1950〜1950年代末)称为“程序设计的原始时期”,这时既没有(A),也没有(B),程序员只能用机器指令编写程序。笋二阶段(1950年代末〜1960年代末)称为“基本敢件期”。出现了(A),并逐渐普及。随着(B)的发展,编译技术也有较大的发展。第三阶段(1960年代末〜1970年代中期)称为“程序设计方法时代”。这一时期,与硬件费用下降相反,软件开发费急剧上升。人们提出了(C)和(D)等程坪设计方法,设法降低软件的开发费用。第四阶段(1970年代中期〜现在)称为“软件工程时期”。软件开发技术不再仅仅是程序设计技术,而是包括了与软件开发的各个阶段,如(E)、(F)、编码、单元测试、综合测试、(G)及其整体有关的各种管理技术。供选择的答案:答案二.问答题1:软件工程过程有哪几个基本过程活动?试说明之。答案软件工程过程的基本过程活动有4步:(1)P(Plan):软件规格说明规定软件的功能及其运行的限制。(2)D(Do):软件开发。产生满足规格说明的软件。(3)C(Check):软件确认。确认软件能够完成客户提出的要求。(4)A(Action):软件演进。为满足客户的变更要求,软件必须在使用的过程中演进。2:什么是软件危机?为什么会产生软件危机?答案软件危机泛指在计算机软件的开发、维护和使用过程中所遇到的一系列严重问题。从宏观上说,软件危机主要是指:①软件的发展赶不上计算机硬件的发展;②软件的发展赶不上社会对于软件需求的增长。从具体的软件来说,软件危机是指:①软件往往不能按计划、按预算、按时完成;②已开发的软件不能很好地使用,甚至很快就不用。产生软件危机的主要原因包括:(1)软件需求分析不充分;(2)软件开发的规范性不够;(3)软件开发计划的科学性不够;(4)缺少对于软件的评测手段。3:试说明“软件生存周期”的概念。答案软件与任何一个事物一样,有它的孕育、诞生、.成长、成熟、衰亡的生存过程。这就是软件的生存周期。它主要分为6个阶段:软件项有计划、软件需求分析.和定义、软件设计、程序编码、软件测试,以及运行维护。(1)软件项目计划在这一步要确定软件工作范围,进行软件风险分析,预计软件开发所需要的资源,建立成本与进度的估算。根据有关成本与进度的限制分析项目的可行性。(2)软件需求分析和定义:在这一步详细定义分配给软件的系统元素。可以用以下两种方式中的一种对需求进行分析和定义。一种是正式的信息域分析,可用于建立信息流和信息结构的模型,然后逐渐扩充这些模型成为软件的规格说明。另一种是软件原型化方法,即建立软件原型,并由用户进行评价,从而确定软件需求。(3)软件设计:软件的设计过程分两步走。第一步进行概要设计,以结构设计和数据设计开始,建立程序的模块结构,定义接口并建立数据结构。此外,要使用一些设计准则来判断软件的质量。第二步做详细设计,考虑设计每一个模块部件的过程雄述。经过评审后,把每一个加细的过程性描述加到设计规格说明中去。(4)程序编码:在设计完成之后,用一种适当的程序设计语言或CASE工具生成源程序。应当就风格及清晰性对代码进行评审,而且反过来应能直接追溯到详细设计描述。(5)软件测试:单元测试检查每一单独的模块部件的功能和性能。组装测试提供了构造软件模块结构的手段,同时测试其功能和接口。确认测试检查所有的需求是否都得到满足。在每一个测试步骤之后,要进行调试,以诊断和纠正软件的故障。(6)软件维护:为改正错误,适应环境变化及功能增强而进行的一系列修改活动。与软件维护相关联的那些任务依赖于所要实施的维护的类型。4:试论述瀑布模型软件开发方法的基本过程。答案瀑布模型规定了各项软件工程活动,包括:制定软件项目计划,进行需求分析和定义,软件设计,程序编码,测试及运行维护。并且规定了它们自上而下,相互衔接的固定次序,如同瀑布流水,逐级下落。然而软件开发的实践表明,上述各项活动之间并非完全是自上而下,呈线性图式。实际情况是,每项开发活动均应具有以下特征:(1)从上一项活动接受本项活动的工作对象,作为输入;(2)利用这一输人实施本项活动应完成的内容;(3)给出本项活动的工作成果,作为输出传给下一项活动;(4)对本项活动实施的工作进行评审。若其工作得到确认,则继续进行下一项活动,否则返回前项,甚至更前项的活动进行返工。5:软件工程是开发、运行、维护和修复软件的系统化方法,它包含哪些要素?试说明之。答案软件工程包括三个要素:方法、工具和过程。软件工程方法为软件开发提供了“如何做”的技术。它包括了多方面的任务,如项目计划与估算、软件系统需求分析、数据结构、系统总体结构的设计、算法过程的设计、编码、测试以及维护等。软件工程方法常采用某一种特殊的语言或图形的表达方法及一套质量保证标准。软件工具为软件工程方法提供了自动的或半自动的软件支撑环境。目前,已经推出了许多软件工具,已经能够支持上述的软件工程方法。特别地,已经有人把诸多的软件工具集成起来,使得一种工具产生的信息可以为其他的工具所使用,这样建立起一种被称之为计算机辅助软件工程(CASE)的软件开发支撑系统。CASE将各种软件工具、开发机器和一个存放开发过程信息的工程数据库组合起来形成一个软件工程环境。软件工程的过程则是将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。过程定义了方法使用的颃序、要求交付的文挡资料、为保证质量和协调变化所需要的管理、及软件开发各个阶段完成的里程碑。6:软件工程学的基本原则有哪些?试说明之。答案在软件开发过程中必须遵循下列软件工程原则。(1)抽象:采用分层次抽象,自顶向下、逐层细化的办法进行功能分解和过程分解,可以由抽象到具体、由复杂到简单,逐步得到问题的解。(2)信息隐蔽:遵循信息封装,使用与实现分离的原则,将模块设计成“黑箱”,可以将实现的细节隐藏在模块内部,使用者只能通过模块接口访问模块中封装的数据。(3)模块化:按模块划分系统的体系结构,使得各模间有良好的接口。这样有助于信息隐蔽和抽象,有助于表示复杂的系统。(4)局部化:按抽象数据类型思想及问题域中的概念来建立模块,确保模块之间低耦合,模块内部高内聚。这有助于控制解的复杂性。(5)确定性:软件开发过程中所有概念的表达应是确定的、无歧义性的、规.范的。这有助于人们之间的沟通,保证整个开发工作协调一致。(6)一致性:强调软件开发过程的标准化、统一化。包括文档格式的一致,工作流程的一致,内、外部接口的一致,系统规格说明与系统行为的一致等。(7)完备性:软件系统不丢失任何-要成分,可以完全实现系统所要求功能。(8)可验证性:开发大型的软件系统需要对系统自顶向下、逐层分解。系统分解应遵循系统易于检查、测试、评审的原则,以确保系统的正确性。7:有人说:软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大。对否?请解释你的回答。答案软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大。这个说法是对的。在1970年代,GTE,,TRW和IBM等三家公司对此问题做了独立研究,最后它们得到相似的结论:从表中可以看出,在需求分析阶段检查和修复一个错误所需的代价只有编码阶段所需代价的1/5到1/10,而在维护阶段做同样的工作所付出的代价却是编码阶良的20倍。8:什么是软件的定义?答案软件是为了特定目的而开发的程序、数据和文档的集合。程序:能够执行特定功能的计算机指令序列。数据:执行程序所必须的数据和数据结构。大量的敖据都是按两一定的数据结构由用户在使用软件的过程中积累起来的。文档:与程序开发,维护和使用有关的图文资料。9:软件是如何分类的?答案按软件的功能进行划分;可分为系统软件和应用软件。按软件工作方式划分:可分为分时软件、交互式软件、并行处理软件。(1)分时软件:允许多个联机用户伺时使用计算机的软件。(2)交互式软件:能实现人机通信的软件。(3)并行处理软件:能够将一件任务,分配给多个处理器,同时协同处理,达到高速完成的效果的软件。10:软件有何特性?答案包括4个方面,即抽象性、复杂性、维护尹期性、髙成长性。11:简述软件的发展阶段?答案软件的发展经历了三个阶段,即程序设计阶段、程序系统阶段、软件工程阶段。12:什么是软件工程的定义?答案软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法13:软件工程的目标是什么?答案软件工程的目标是为了解决软件开发和生产中的各种问题,获得髙质量、低成本、髙可靠性、易维护、并能及时投放市场的软件产品。14:试说明软件工程的基本原理。答案主要有4条:(1)用分阶段的生命周期计划严格管理;(2)坚持进行阶段评审多;(3)实行严格的产品控制;(4)结果应能清楚地审查。15:简述软件工程的研究对象?答案软件工程的研究对象由三个具有层次关系的要素组成:过程、方法和工具。16:试说明软件工程过程和软件生命周期。答案软件工程过程:软件工程过程包含软件开发、维护以及软件开发和维护时所需的管理活动。软件生命周期:软件生命周期是指软件产品从考虑其概念开始,到该软件产品不再能使用为止的整个时期。具体地说,软件生命周期是指从时间角度对软件开发和维护的复杂问題进行分解,把软件生命的搜长周期依次划分为若干个阶段,每个阶段都有相对独立的任务,然后逐步完成每个阶段的任务。一般将软件生命周期划分为六个阶段:软件项目计划、软件需求分析和定义、软件设计、程序编码、软件测试,以及运行维护。计划阶段所需要完成的工作包括软件的可行性分析和制定开发计划。主要回答的问题是“用户要解决的问题是什么”。软件系统的开发必须在可行性研究的基础上进行,要从技术上、经济上和社舍因素方面进行研究,通过具体的成本一效益数值说明软件项目开发的可行性。通过对原有旧系统的调查,将新建立的系统用规范的描述工具述,得出新系统的模型对新建系统的模型进行论证,最终形成可行性研究报告,并交给有关人员审查以决定软件项目是否可以进行开发。对于可行的软件项目要进行开发,必须要审定项目的开发计划、估算费用、确定资源分配和项目开发的速度安排,这就需要制定出软件项目的开发计划。需求分析阶段的主要任务是确定所要开发的软件系统需要具备哪些功能,也就是说准确地确定软件系统“做什么”的问题。设计阶段的主要任务是将分析阶段得出的系统逻辑模型转化为具体的计算机软件方案,也就是确定软件“怎么做”的问题。设计阶段主要包括软件的总体靖构设计和对各个具体模块的详细设计,有时也可以分别称为概要计和详细设计。设计阶段的成果是软件设计说明书。编码阶段是将设计阶段的结果“翻译”成指定的计算机程序语言的源程序。测试阶段软件测试是为了发现错误而执行程序的过程。运行维护阶段是软件生存期的最后一个阶段。根据对软件进行维护的目的不同,可以将软件维护分为改正性维护、适应性维护和完善性维护三种。17:解释软件生命周期模型。答案软件过程可以通过软件过程模型来表示。如瀑布模型、原型模型、快速应用开发模型、演化模型、喷泉模型等,其中最经典的过程模型是瀑布模型。该模型将软件生存周期的各项活动规定为按照固定顺序连接的若干阶段工作,自上而下,相互衔接,如同瀑布流水,逐级下落。它包括软件可性性分析和制定项目开发计划、需求分析、概要设计、概要设计、详细设计、软件编码、软件测试软件维护等阶段,各阶段相互衔接、次序固定。优点是支持结构化软件开发、控制了软件开发的复杂性、促进了软件开发工程化。缺点是缺