当前位置:文档之家› 软件工程试题

软件工程试题

、单选题(25分,每题1分)(1) 软件可以分为系统软件、支撑软件、应用软件等,这是根据( )来划分的。

A. 软件的工作方式B. 软件的用途C. 软件的功能D. 软件的制造过程(2) 基于软件的服务范围一般将其划分为产品软件和( )。

A. 免费软件B. 定制软件C. 管理软件D. 服务软件(3) 软件设计包括概要设计和( d )。

A. 宏观设计B. 计算机辅助设计C. 面向过程的设计D. 详细设计二、简答题(35分,每题7分)1.什么是软件工程?简述软件工程的七条基本原理。

软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。

它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。

七条基本原理:用分阶段的生命周期计划严格管理;坚持进行阶段评审;实行严格的产品控制;采用现代程序设计技术;结果应能清楚地审查;开发小组的人员应该少而精;承认不断改进软件工程实践的必要性2.什么是软件生存周期模型?请至少列举四种主要的模型。

答:软件生存周期模型是软件开发全部过程、活动和任务的结构框架。

它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。

四种主要的模型:瀑布模型,演化模型,喷泉模型,基于构件的开发模型3.为什么软件需要维护?简述软件维护的过程。

原因:1)改正在特定使用条件下暴露出来的一些潜在程序错误或设计缺陷;2)因在软件使用过程中数据环境发生变化(如所要处理的数据发生变化)或处理环境发生变化(如硬件或软件操作系统等发生变化),需要修改软件,以适应这种变化;3)用户和数据处理人员在使用时常提出改进现有功能、增加新功能、以及改善总体性能的要求,为满足这些要求,需要修改软件。

软件维护的过程:首先建立维护的机构,申明提出维护申请报告的过程及评价的过程,为每一个维护申请规定标准的处理步骤,建立维护活动的记录保管,并规定复审的标准。

4.影响软件维护工作量的因素有哪些?答:1)系统大小。

系统越大,功能越复杂,理解掌握起来就越困难,需要的维护工作量越大。

2)程序设计语言。

使用功能强的程序设计语言可以控制程序的规模。

语言的功能越强,生成程序所需的指令数就越少;语言的功能越弱,实现同样功能所需的语句就越多,程序就越大,维护起来就越困难。

3)系统年龄。

老系统比新系统需要更多的维护工作量。

许多老系统在当初并未按照软件工程的要求进行开发,没有文档,或文档太少,或者在长期的维护中许多地方与程序不一致,维护起来困难较大。

4)数据库技术的应用。

使用数据库工具,可有效地管理和存储用户程序中的数据,可方便地修改、扩充报表。

数据库技术的使用可以减少维护工作量。

5)先进的软件开发技术。

在软件开发时,如果使用能使软件结构比较稳定的分析与设计技术(如面向对象分析、设计技术),可以减少一定的工作量。

6)其它。

如,应用的类型、数学模型、任务的难度、IF嵌套深度等等都会对维护工作量产生一定的影响。

5软件文档的作用在软件的生产过程中,总是伴随着大量的信息要记录、要使用。

因此,软件文档在产品的开发生产过程中起着重要的作用。

1)提高软件开发过程的能见度。

把开发过程中发生的事件以某种可阅读的形式记录在文档中。

管理人员可把这些记载下来的材料作为检查软件开发进度和开发质量的依据,实现对软件开发的工程管理。

2)提高开发效率。

软件文档的编制,使得开发人员对各个阶段的工作都进行周密思考、全盘权衡、从而减少返工。

并且可在开发早期发现错误和不一致性,便于及时加以纠正。

3)作为开发人员在一定阶段的工作成果和结束标志。

4)记录开发过程中的有关信息,便于协调以后的软件、开发、使用和维护。

5)提供对软件的运行、维护和培训的有关信息,便于管理人员、开发人员、操作人员、用户之间的协作、交流和了解。

使软件开发活动更科学、更有成效。

6)便于潜在用户了解软件的功能、性能等各项指标,为他们选购符合自己需要的软件提供依据5.提高可维护性的方法有哪些?答:建立明确的软件质量目标和优先级使用提高软件质量技术和工具进行明确的质量保证审查选择有利于可维护性的程序设计语言提供完整和一致的文档6.软件重用的效益是什么?答:可重用的软部件有的可以不加修改直接使用,有的需要修改后再用。

可重用软部件应具有清晰的结构和注解,应具有正确的编码和较低的时/空开销。

各种可重用软部件还可以按照某种规则存放在软部件库中,供软件工程师选用。

可重用性有助于提高软件产品的质量和开发效率、有助于降低软件的开发和维护费用。

从更广泛的意义上理解,软件工程的可重用性还应该包括:应用项目的重用,规格说明(也称为规约)的重用,设计的重用,概念和方法的重用,等等。

一般来说,重用的层次越高,带来的效益也就越大。

7.如何理解模块独立性?用什么指标来衡量模块独立性?答:模块的独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。

模块的独立程度可以由两个定性标准度量:耦合,模块之间的相对独立性的度量;内聚,模块功能强度的度量。

8.原型化方法主要用于解决什么问题?试说明这种方法的主要优缺点。

答:主要用于解决诸如用户定义了一组一般性目标,但不能标识出详细的输入、处理及输出需求;开发者可能不能确定算法的有效性、操作系统的适应性或人机交互的形式等问题原型模型的优点:原型系统已经通过与用户交互而得到验证,据此产生的规格说明文档正确地描述了用户需求,因此,在开发过程的后续阶段不会因为发现了规格说明文档的错误而进行较大的返工。

开发人员通过建立原型系统已经学到了许多东西(至少知道了“系统不应该做什么,以及怎样不去做不该做的事情”),因此,在设计和编码阶段发生错误的可能性也比较小,这自然减少了在后续阶段需要改正前面阶段所犯错误的可能性。

原型模型的缺点:系统的开发缺乏统一规划和标准,导致对系统的开发缺乏有效的控制9.简述软件测试要经过哪几个步骤,每个步骤与什么文档有关。

答:1. 模块测试--- 单元2. 子系统测试--- 局部3. 系统测试--- 集成4. 验收测试--- 用户参与5. 平行运行--- 新旧共存10.采用黑盒技术设计测试用例有哪几种方法?这些方法各有什么特点?黑盒测试技术:等价划分法、边界值分析法、错误推测法、因果图法等。

等价类划分即把输入空间分解成一系列子域,软件在一个子域内的行为应是等价的。

边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件;边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。

错误推测法是列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。

因果图适合于描述对于多种输入条件的组合,相应产生多个动作的形式来设计测试用例。

因果图方法最终生成的是判定表。

12.G.j.Myers对软件测试的目的提出了以下观点:1)软件测试是为了发现错误而执行程序的过程2)一个好的测试用例能够发现至今尚未发现的错误3)一个成功的测试是发现了至今尚未发现的错误1、C2、B3、B4、A5、B6、D7、B8、B9、A 10、A 11、A 12、A 13、D 14、D 15、C1、软件危机主要体现在(C )A、软件成本太高B、开发周期长C、软件产品的质量难以控制D、软件规模过大2、为了解决软件危机,人们提出了用(B )的原理来设计软件。

A、运筹学B、工程学C、软件学D、数学3、瀑布模型的关键不足在于( B)A、过于简单B、不能适应需求的动态变更C、过于灵活 D、各个阶段需要进行评审4、软件使不同的系统约束条件和用户需求得到满足的容易程度称为软件的(A )A、兼容性B、可靠性C、坚固性D、可用性5、软件质量(可维护性、可理解性、可靠性)很大程度取决于(B )A、程序员的变成水平B、模块分解的合理C、程序运行效率D、有完整的故障处理 E、算法的合理性6、软件可行性研究一般不考虑( D)A、是否有足够的人员和相关的技术来支持系统开发B、是否有足够的工具和相关的技术来支持系统开发C、待开发软件是否有市场、经济上是否合算D、待开发的软件是否会有质量问题7、SA 法中,有一个处理过程逻辑不易用语言表达清楚,最好是用( B)来描述A、流程图B、判定表C、NS 图D、问题分析图PAD8、下列需求陈述中有效需求是(B )A、目标软件应有C++实现B、软件系统必须在5 秒内响应并处理外部事件C、目标软件必须有系统设置模块D、当软件和用户交互时,必须能使用满足MS 风格的界面9、在面向对象软件开发方法中,类与类之间主要有以下结构关系( A)A、继承和聚集B、继承和一般C、聚集和消息传递D、继承和方法调用10、面向对象模型主要由以下哪些模型组成(A )A、对象模型、动态模型、功能模型B、对象模型、数据模型、功能模型C、数据模型、动态模型、功能模型D、对象模型、动态模型、数据模型11、OOA 中应首先识别(A)A、对象B、类C、对象的属性D、对象所属的类12、概要设计的结果是提供一份( A)A、模块说明书B、框图C、程序D、系统结构图13、以下语言中属于4GL 是( D)A、PBB、VBC、UMLD、SQL Server 2000 中的SQL 语言14、与设计测试数据无关的文档是(D )A、需求分析说明书B、概要设计说明书C、源程序D、项目开发计划15、软件测试中的测试实例主要由输入数据和(C )组成A、测试规则B、测试计划C、预期输出结果D、以往测试记录分析1、瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。

八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和 ( C )。

A、详细计划B、可行性分析C、运行阶段D、测试与排错2、从结构化的瀑布模型看,在它的生命周期中的八个阶段中,下面的几个选项中哪个环节出错,对软件的影响最大 ( C )。

A、详细设计阶段B、概要设计阶段C、需求分析阶段D、测试和运行阶段3、在结构化的瀑布模型中,哪一个阶段定义的标准将成为软件测试中的系统测试阶段的目标 ( A )。

A、需求分析阶段B、详细设计阶段C、概要设计阶段D、可行性研究阶段4、软件工程的出现主要是由于( C )。

A.程序设计方法学的影响B.其它工程科学的影响C. 软件危机的出现D.计算机的发展5、软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是 ( C )A、硬件环境B、软件开发的环境C、软件开发工具和软件开发的环境D、开发人员的素质6、软件开发常使用的两种基本方法是结构化和原型化方法,在实际的应用中,它们之间的关系表现为 ( B )A、相互排斥B、相互补充C、独立使用D、交替使用7、UML是软件开发中的一个重要工具,它主要应用于哪种软件开发方法( C )A、基于瀑布模型的结构化方法B、基于需求动态定义的原型化方法C、基于对象的面向对象的方法D、基于数据的数据流开发方法8、在下面的软件开发方法中,哪一个对软件设计和开发人员的开发要求最高( B )A、结构化方法B、原型化方法C、面向对象的方法D、控制流方法9、结构化分析方法是一种预先严格定义需求的方法,它在实施时强调的是分析对象的 ( B ) A、控制流B、数据流C、程序流D、指令流10、软件开发的结构化生命周期方法将软件生命周期划分成 ( A )A、计划阶段、开发阶段、运行阶段B、计划阶段、编程阶段、测试阶段C、总体设计、详细设计、编程调试D、需求分析、功能定义、系统设计11、软件开发中常采用的结构化生命周期方法,由于其特征而一般称其为( A )A、瀑布模型B、对象模型C、螺旋模型D、层次模型12、软件开发的瀑布模型,一般都将开发过程划分为:分析、设计、编码和测试等阶段,一般认为可能占用人员最多的阶段是 ( C )A、分析阶段B、设计阶段C、编码阶段D、测试阶段40.请使用PAD图和PDL语言描述在数组A(1)~A(10)中找最大数的算法。

相关主题