软件工程试题及答案(较详细)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一.判断题:

1.如果决定将软件全部包给第三方公司开发。(×)

2.有了对系统的目标有了大致的了解,就可以开始开发项目,以后的在开发中继续了解。(×)

3.对于一个成功的软件项目,可执行程序是唯一交付的东西。(×)

4.直到程序运行,才评估软件系统的质量。(×)

5.如果未能按时完成任务,我们可以通过增加程序员来加快完成任务。(×)

6.虽然软件需求不断变更,但因软件比硬件有弹性,所以我们经常可以变更它。(×)

7.软件工程将导致我们产生大量的无用文档,降低工作效率。(×)

8.在面向对象建模中,主题划分提供了在更高一层上描述。(主题划分是指UML中将一组关联比较强的类的

集合。则上百个类可划分为几个主题)(√)

9.面向对象的开发,对象分解取代功能分解。(√)

10.软件中80%的错误存在20%的模块中。(√)

11.结构化分析方法在建立系统模型时,使用一般――特殊结构(实际上没有这种关系)来处理信息。

(×)

12.开发软件就是编程。(×)

13.需求规格说明书说明了(√)

14.结构化方法,建立系统模型时使用一般连接组织信息。(×)

15.敏捷过程模型选用小而高激励的团队使用而不适用于大团队。(√)

二.简答题

1.软件工程是层次化的,其四个层次是

答:方法,工具,过程,质量保证

软件工程是一种层次化的技术(如图2-1所示)。任何工程方法(包括软件工程)必须以有组织的质量保证为基础。

全面的质量管理和类似的理念刺激了不断的过程改进,正是这种改进导致了更加成熟的软件工程方法的不断出现。支持软件工程的根基就在于对质量的关注。

软件工程的基层是过程层。软件工程过程是将技术层结合在一起的凝聚力,使得计算机软件能够被合理地和及时地开发出来。过程定义了一组关键过程区域的框架(KPAs)[PAY93],这对于软件工程技术的有效应用是必须的。关键过程区域构成了软件项目的管理控制的基础,并且确立了上下各区域之间的关系,其中规定了技术方法的采用、工程产品(模型、文档、数据、报告、表格等)的产生、里程碑的建立、质量的保证及变化的适当管理。

软件工程的方法层提供了建造软件在技术上需要“如何做”。方法涵盖了一系列的任务:需求分析、设计、编程、测试和维护。软件工程方法依赖于一组基本原则,这些原则控制了每一个技术区域,且包含建模活动和其他描述技术。

软件工程的工具层对过程和方法提供了自动的或半自动的支持。当这些工具被集成起来使得一个工具产生的信息可被另外一个工具使用时,一个支持软件开发的系统就建立了,称为计算机辅助软件工程(CASE)。CASE集成了软件、硬件和一个软件工程数据库(一个仓库,其中包含了关于分析、设计、编程和测试的重要信息),从而形成了一个软件工程环境,它类似于硬件的CAD/CAE(计算机辅助设计/工程)。

软件工程必须以有组织的质量保证为基础

软件质量保证就是向用户及社会提供满意的高质量的产品,确保软件产品从诞生到消亡为止的所有阶段的质量的活动,即确定、达到和维护需要的软件质量而进行的所有有计划、有系统的管理活动。

2.软件工程的框架是

答:沟通,策划,建模,构建,部署

通用过程框架

通用过程框架可适用于绝大多数的软件项目,该框架由沟通、策划、建模、构造和部署5个通用框架活动组成。

(1) 沟通。这项框架活动包含系统分析员与客户之间大量的交流和协作,还包括需求获取以及其他相关活动。

(2) 策划。策划活动协助软件开发团队定义全局目标,并为后续的软件工程工作制定计划。策划活动包括一系列

管理和技术实践,如描述需要执行的技术任务、可能的风险、资源需求、工作产品和工作进度计划。

(3) 建模。建模的目的是为了更好地理解需要构建的实体。

在软件工程中,要创建两类模型:分析模型和设计模型。

分析模型通过描述软件的信息域、功能域及行为域来表达客户的需求;

设计模型描述软件架构、用户界面及构件细节,从而帮助开发者高效地开发软件。

(4) 构造。构造活动包括一系列构件组装、编码和测试任务,从而为向客户和最终用户交付可运行软件做好准备。

(5) 部署。部署活动是将软件(全部或者完成的部分)交付给用户,用户对其进行评测并给出反馈意见。

部署活动包括三个动作:交付、支持和反馈。

3.一个模块的三个基本要素有哪些

答:功能,状态,逻辑(程序流程图描述逻辑的一个方法)

功能:指模块实现什么功能(包括所调用的子模块的功能),做什么事情

逻辑:描述模块内部怎么做

状态:指该模块使用时的环境和条件

4.不同的对象收到同一个消息,产生不同的结果这种现象叫多态。

多态性含义

把相同的操作施加于不同类型的对象,获得不同的行为效果和结果。

在C++中,多态性是通过虚函数(Virtual)实现的。

动态联编(Dynamic binding),滞后联编。

5.模块的基本要素:功能,状态,逻辑

6.面向对象建模需要识别五个层次:

a.类与对象层

b.属性层

c.结构层(类与类之间的关系)

d.方法层

e.主题层(为多个类划分主题)

主题层:它相当于高层的模块或子系统

类与对象层:它们是对问题域概念的抽象,可以从用户需求或其它规格说明书中找到。

结构层:描述类之间的整体与部分、一般与特殊的关系。

属性层:它们是类所保存的信息,同时要给出各个类之间的实例连接。

服务层:它们是类可提供的操作,同时要根据需要的功能给出各个操作之间的消息连接。

软件测试的四个阶段:

a.单元测试

b.集成测试

c.确认测试

d.系统测试

单元测试(模块测试):目的是保证每个模块作为一个单元能正确运行。主要测试编码和详细设计阶段的错误。

子系统测试:把经过单元测试的模块放在一起形成子系统。注重模块接口。

系统测试(集成测试):测试由子系统组成的整个系统,不仅测试模块间的协调和通信能力。还要测试设计错误、需求说明中的功能错误。

验收测试:确认系统能够满足用户的需求,方法同系统测试,主要强调用户的参与(alpha测试),测试需求说明中的功能错误。

平行运行、beta测试

测试过程按4个步骤进行,即单元测试、组装测试、确认测试和系统测试。

开始是单元测试,集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。

•组装测试把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。

•确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。

•系统测试把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试。

•单元测试又称模块测试,是针对软件设计的最小单位─程序模块,进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。

•单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。

•组装测试(集成测试、联合测试)

•通常,在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。这时需要考虑的问题是:•在把各个模块连接起来的时侯,穿越模块接口的数据是否会丢失;

•一个模块的功能是否会对另一个模块的功能产生不利的影响;

•确认测试又称有效性测试。任务是验证软件的功能和性能及其它特性是否与用户的要求一致。

•对软件的功能和性能要求在软件需求规格说明书中已经明确规定。它包含的信息就是软件确认测试的基础。

•确认测试一般采用黑盒测试,其测试范围与系统测试略有不同,如弱化一些技术性的测试,强化用户所关心的功能和性能测试等。

确认测试一般包括

相关文档
最新文档