软件工程复习及答案分析.docx

上传人:b****7 文档编号:26164908 上传时间:2023-06-17 格式:DOCX 页数:24 大小:95.78KB
下载 相关 举报
软件工程复习及答案分析.docx_第1页
第1页 / 共24页
软件工程复习及答案分析.docx_第2页
第2页 / 共24页
软件工程复习及答案分析.docx_第3页
第3页 / 共24页
软件工程复习及答案分析.docx_第4页
第4页 / 共24页
软件工程复习及答案分析.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

软件工程复习及答案分析.docx

《软件工程复习及答案分析.docx》由会员分享,可在线阅读,更多相关《软件工程复习及答案分析.docx(24页珍藏版)》请在冰豆网上搜索。

软件工程复习及答案分析.docx

软件工程复习及答案分析

复习思考题

(一)软件工程概论

1.试说明“软件生命周期”的概念。

同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为软件生存周期(软件生命周期)。

2.论述瀑布模型软件开发方法的基本过程。

瀑布模型规定了各项软件工程活动,包括:

制定软件项目计划,进行需求分析和定义,软件设计,程序编码,测试及运行维护。

并且规定了它们自上而下,相互衔接的固定次序,如同瀑布流水,逐级下落。

3.软件工程的基本原理有哪些?

1.用分阶段的生命周期计划严格管理

2.坚持进行阶段评审

3.实行严格的产品控制

4.采用现代程序设计技术

5.结果应能清楚地审查

6.开发小组的人员应该少而精

7.承认不断改进软件工程实践的必要性

4.从供选择的答案中选出正确答案填入下列叙述中的()内。

(1)软件开发时,一个错误发现得越晚,为改正它所付出的代价就()。

A)越大B)越小C)越不可捉摸D)越接近平均水平

(2)功能模型中描述处理流程的最基本成分为()。

A)数据流图和数据结构图B)数据流图和程序流程图

C)程序流程图和数据结构图D)数据流图和数据词典

(3)模块内聚用于衡量模块内部各成分之间彼此结合的紧密程度。

若一组语句在程序的多处出现,为了节省空间把这些语句放在一个模块中,则该模块的内聚类型是()。

A)功能内聚B)通信内聚C)偶然内聚D)逻辑内聚

(5)结构化分析方法(SA)是在软件开发过程中常用的方法,这个方法采用的基本手段是()。

A)分解与抽象B)分解与综合C)归纳与推导D)试探与回溯

(6)原型化方法是用户和设计者之间执行的一种交互过程,适用于()系统。

A)需求不确定性高的B)需求确定的C)管理信息D)决策支持

(7)软件测试的目的是()。

A)评价软件的质量B)发现软件的错误

C)找出软件中的所有错误D)证明软件是正确的

(8)在软件生存周期中,()阶段所占的工作量最大,约70%。

A)分析B)设计C)编码D)测试E)维护

(二)软件需求分析

1.软件需求分析是软件过程中交换意见最频繁的步骤。

为什么交换意见的途径会经常阻塞?

软件需求分析过程中,由于最初分析员对要解决的问题了解很少,用户对问题的描述、对目标软件的要求也很凌乱、模糊,再加上分析员和用户共同的知识领域不多,导致相互间通信的需求。

首先,由于分析员和用户之间需要通信的内容相当多,业务知识上的不足,表达方式的不足,可能对某些需求存在错误解释或误解的可能性,造成需求的模糊性。

其次,用户和分析员之间经常存在无意识的“我们和他们”的界限,不是按工作需要组成统一的精干的队伍,而是各自定义自己的“版图”,并通过一系列备忘录、正式的意见书、文档,以及提问和回答来相互通信。

历史已经证明,这样会产生大量误解。

忽略重要信息,无法建立成功的工作关系。

2.数据流图的作用是什么?

它有哪些基本成分?

数据流图可以用来抽象地表示系统或软件。

它从信息传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程,同时可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能细节。

因此,数据流图既提供了功能建模的机制,也提供了信息流建模的机制,从而可以建立起系统或软件的功能模型。

3.数据字典的作用是什么?

它有哪些基本条目?

数据字典(简称DD)是用来定义数据流图中的各个成分的具体含义的,它以一种准确的、无二义性的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。

他和数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分。

数据字典是为分析人员查找数据流图中有关名字的详细定义而服务的,因此也像普通字典一样,要把所有条目按一定的次序排列起来,以便查阅。

数据字典有以下四类条目:

数据流、数据项、数据存储、基本加工。

数据项是组成数据流和数据存储的最小元素。

源点、终点不在系统之内,故一般不在字典中说明。

4.从供选择的答案中选出正确答案填入下列叙述中的()内。

原型化方法是用户和设计者之间执行的一种交互过程,适用于(A)系统。

它从用户界面设计开始,首先形成(B),用户(C)并就(D)提出意见。

它是一种(E)型的设计过程。

A:

 ①需求不确定性高的 ②需求确定的 ③管理信息 ④决策支持

B:

 ①用户界面使用手册    ②界面需求分析说明书 

③系统界面原型      ④完善的用户界面

C:

 ①改进界面的设计     ②使用和不使用哪种编程语言

③程序的结构       ④运行界面原型

D:

 ①同意什么和不同意什么  ②使用和不使用哪种编程语言

③程序的结构       ④执行速度是否满足要求

E:

 ①自外向内   ②自顶向下   ③自内向外   ④自底向上

(三)软件设计

1.模块独立性与信息隐蔽有何关系?

2.模块的内聚程度与模块在分层结构中的位置有关系吗?

说明你的论据。

答案:

模块的内聚性与该模块在分层模块结构中的位置无关。

事实上,一个好的模块化的程序系统,它所有的模块可以都是功能内聚的,即每一个模块就只干了一件事。

用结构化设计方法建立起来的模块结构中的每一个模块都符合这个要求。

把讨论范围再拓宽点,在纯面向对象范型的软件系统中,整个系统看作是一个类,它的子类可以看作是系统的子系统或高层模块,它们还可以有子类,……,这就形成一个类的层次结构。

类的构造可以看成是一个抽象数据类型,实际上是信息内聚的。

所以整个系统中从上到下,所有模块(对象类)都是信息内聚的模块。

3.耦合的概念和软件的可移植性有什么关系?

请举例说明你的论述。

耦合是对一个软件结构内不同模块之间互联程度的度量。

耦合强弱取决于模块之间接口的复杂程度。

在软件设计的时候应该追求尽可能松散耦合系统。

由于模块之间联系简单,发生在一处的错误传播到整个系统的可能性很小,因此,模块之间的耦合程度对系统的可理解性,可测试性,可靠性和可维护性有很重要的影响。

内聚是对模块内各元素彼此结合的紧密程度的度量。

4.从供选择的答案中选出正确答案填入下列关于软件设计叙述中的()内。

在众多的设计方法中,SD方法是最受人注意的,也是应用最广泛的。

这种方法可以同分析阶段的(A)方法及编程阶段的(B)方法前后衔接。

SD方法是考虑如何建立一个结构良好的程序,提出了评价模块质量的两个具体标准——块间联系和块内联系。

SD方法的最终目标是(C)。

A,B:

 ①Jackson(B) ②SA(A) ③SC ④Parnas

C:

 ①块间联系大,块内联系小   ②块间联系大,块内联系大

③块间联系小,块内联系小   ④块间联系小,块内联系大

5.从下列关于模块化程序设计的叙述中选出5条正确的叙述。

(1)程序设计比较方便,但比较难以维护。

(2)便于由多个人分工编制大型程序。

(3)软件的功能便于扩充。

(4)程序易于理解,也便于排错。

(5)在主存储器能够容纳得下的前提下,应使模块尽可能大,以便减少模块的个数。

(6)模块之间的接口叫数据文件。

(7)只要模块之间的接口关系不变,各模块内部实现细节的修改将不会影响别的模块。

(8)模块间的单向调用关系叫做模块的层次结构。

(9)模块越小,模块化的优点越明显。

一般来说,模块的大小都在10行以下。

6.从供选择的答案中选出正确答案填入下列关于详细设计叙述中的()内。

软件详细设计工具可分为三类,即图示工具、表格工具和伪码语言。

图示工具中,(A)简单且应用广泛,(B)表示法中,每个处理过程用一个盒子表示,盒子可以嵌套。

(C)可以纵横延伸,图形的空间效果好。

(D)是一种设计语言,它是一种面向(E)的语言。

A,B,C:

 ①NS图(B) ②流程图(A) ③HIPO图 ④PAD图(C)

D:

   ①C  ②PDL ③Prolog   ④Pascal

E:

   ①人   ②机器  ③数据结构  ④对象

(四)编码

1.结构化程序设计有时被错误地称为“无GOTO语句”的程序设计。

请说明为什么会出现这样的说法,并讨论围绕着这个问题的一些争论。

严格控制GOTO语句,仅在用一个非结构化的程序设计语言去实现一个结构化的构造,或者在某种可以改善而不是损害程序可读性的情况下才可以使用GOTO语句。

大量采用GOTO语句实现控制路径,会使程序路径变得复杂而混乱,因此要控制GOTO语句的使用。

但有时完全不用GOTO语句进行程序编码,比用GOTO语句编出的程序可读性差。

例如,在查找结束时,文件访问结束时,出现错误情况要从循环中转出时,使用布尔变量和条件结构来实现就不如用GOTO语句来得简单易懂。

2.从下列关于程序编制的叙述中选出3条正确的叙述。

(1)在编制程序之前,首先必须仔细阅读给定的程序说明书。

然后,必须如实地依照说明书编写程序。

说明书中常会有含糊不清或难以理解的地方,程序员在作业时应该对这些地方作出适当的解释。

(2)在着手编制程序时,重要的是采用既能使程序正确地按设计流程进行处理,又易于出错的编写方法。

(3)在编制程序时,首先应该对程序的结构充分考虑,不要急于开始编程,而要象写软件文档那样,很好地琢磨程序具有什么样的功能,这些功能任何安排,等等。

(4)考虑到以后的程序变更,为程序编写完整的说明书是一项很重要的工作。

只要有了完整的程序说明书,即使程序的编写形式难以让他人看懂也没有什么关系。

(5)编制程序时不可缺少的条件是,程序的输入和输出数据的格式都应确定。

其它各项规定都是附带的,无足轻重。

(6)作为一个好的程序,不仅处理速度要快,而且易读易修改等也都是重要的条件。

为了能得到这样的程序,不仅要熟悉程序设计语言的语法,还要注意采用适当的规程和单纯的表现方法,注意使整个程序的结构简洁。

3.从下列叙述中选出5条符合程序设计风格指导原则的叙述。

(1)嵌套的重数应加以限制。

(2)尽量多使用临时变量。

(3)不滥用语言特色。

(4)不用可以省略的括号。

(5)应尽可能把程序编得短些。

(6)使用有意义的变量名。

(7)把常见的局部优化工作留给编译程序去做。

(8)注解越少越好。

(9)程序的格式应有助于读者理解程序。

(10)应尽可能多用GOTO语句。

(五)软件测试

1.从供选择的答案中选出应填入下列()中的字句。

软件测试的目的是(A)。

为了提高测试的效率,应该(B)。

使用白盒测试方法时,确定测试数据应根据(C)和指定的覆盖标准。

与设计测试数据无关的文档是(D)。

软件的集成测试工作最好由(E)承担,以提高集成测试的效果。

A:

 ①评价软件的质量    ②发现软件的错误 

③找出软件中的所有错误 ④证明软件是正确的

B:

 ①随机地选取测试数据    ②取一切可能的输入数据作为测试数据 

③在完成编码以后制定软件的测试计划      

④选择发现错误的可能性大的数据作为测试数据

C:

 ①程序的内部逻辑      ②程序的复杂程度

③使用说明书        ④程序的功能

D:

 ①该软件的设计文档     ②程序的复杂程度

③源程序          ④项目开发计划

E:

 ①该软件的设计人员     ②该软件开发组的负责人   

③该软件的编程人员     ④不属于该软件开发组的设计人员

2.从供选择的答案中选出同下列关于软件测试的各条叙述关系最密切的字句。

A.在意识到被测试模块的内部结构或算法的情况下进行测试。

(⑨白盒测试)

B.为了确认用户的需求,先作出系统的主要部分,提交给用户试用。

⑧原型

C.在测试具有层次结构的大型软件时,有一种方法是从上层模块开始,由上到下进行测试。

此时,有必要用一些模块替代尚未测试过的下层模块。

④桩(即存根模块)

A,B,C,D,E:

 ①仿真器 ②代码审查③模拟器 ④桩⑤驱动器

⑥域测试⑦黑盒测试⑧原型⑨白盒测试⑩退化测试

7.下面是一段求最大值的程序,其中datalist是数据表,n是datalist的长度。

       intGetMax(intn,intdatalist[])

       {

               intk=0;

               for(intj=1;j

                        if(datalist[j]>datalist[k])k=j;

                returnk;

       }

       

(1)画出该程序的控制流图,并计算其McCabe环路复杂性。

控制图

McCabe环路复杂性:

3

       

(2)用基本路径覆盖法给出测试路径。

Pathl:

①→③

Path2:

①→②→④→⑥→…

Path3:

①→②→⑤→⑥→…

       (3)为各测试路径设计测试用例。

Path1:

取n=1,datalist[0]=1,预期结果:

k=0

Path2:

取:

n=2,datalist[0]=1,datalist[1]=0,预期结果:

k=0

Path3:

取n=2,datalist[0]=0,datalist[1]=1,预期结果:

k=1

【解析】本题考查对软件测试概念和过程的理解,结合具体实例运用各种测试技术,学会测试用例设计、软件测试与程序调试的方法。

软件测试是为了发现错误而执行程序的过程,其目的在于以最少的时间和人力系统地找出软件中潜在的各种错误和缺陷。

根据2004新大纲和最近两次软件设计师考试的真题,不难发现各类系统分析理论的实例化考核比例逐渐升温,只要读者平时对这部分知识的实例多分析、多思考,这部分分数其实不难拿到。

答:

1.控制流图如下,McCabe环路复杂性为3。

    2.测试路径:

       Path1:

①→③

       Path2:

①→②→④→⑥→…

       Path3:

①→②→⑤→⑥→…

    3.测试用例:

       Path1:

取n=1,datalist[0]=1,

               预期结果:

k=0

       Path2:

取n=2,datalist[0]=1,datalist[1]=0,

               预期结果:

k=0

       Path3:

取n=2,datalist[0]=0,datalist[1]=1,

               预期结果:

k=1

8、对程序进行基本路径的测试

voidFunc(intnPosX,intnPosY){

while(nPosX>0){

intnSum=nPosX+nPosY;

if(nSum>1){

nPosX--;

nPosY--;

}

else{

if(nSum<-1)nPosX-=2;

elsenPosX-=4;

}

}//endofwhile

}

步骤1:

根据程序逻辑画出流程图

 

 

步骤2:

将流程图转换为流图(1/2)

 

步骤3:

确定基本路径的集合

基本路径

流图Cyclomatic复杂度正好是基本路径的数目

V(G)=E–N+2

V(G)=11-9+2=4

1-11

1-2,3-6-7-9-10-1-11

1-2,3-4,5-10-1-11

1-2,3-6-8-9-10-1-11

步骤4:

针对测试路径设计测试用例

1-11

nPosX取-1,nPosY取任意值

1-2,3-4,5-10-1-11

nPosX取1,nPosY取1

1-2,3-6-7-9-10-1–11

nPosX取1,nPosY取-1

1-2,3-6-8-9-10-1-11

nPosX取1,nPosY取-3

9、某模块的源程序如下:

Procedureexample(A,B:

real;varx:

real);

Begin

If(A>1)and(B=0)

Thenx:

=X/A;

If(A=2)or(X>1)

Thenx:

=x+1

END

对程序进行逻辑覆盖的测试

逻辑覆盖法适用于白盒测试。

有选择地执行程序中某些最有代表性的通路是对穷尽测试的唯一可行的替代办法。

所谓逻辑覆盖是对一系列测试过程的总称,这组测试过程逐渐进行越来越完整的通路测试。

测试数据执行(或叫覆盖)程序逻辑的标准大致有以下一些。

条件覆盖

条件覆盖的含义是,不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果。

上例中只需要使用下面两组测试数据就可以达到上述覆盖标准:

I.A=2,B=0,X=4

(满足A>1,B=0,A=2和X>1的条件,执行路径sacbed)

Ⅱ.A=1,B=1,X=1

(满足A≤1,B≠0,A≠2和X≤1的条件,执行路径sabd)

条件覆盖通常比判定覆盖强,因为它使判定表达式中每个条件都取到了两个不同的结果,判定覆盖却只关心整个判定表达式的值。

但是,也可能有相反的情况:

虽然每个条件都取到了两个不同的结果,判定表达式却始终只取一个值。

例如,如果使用下面两组测试数据,则只满足条件覆盖标准并不满足判定覆盖标准(第二个判定表达式的值总为真):

I.A=2,B=0,X=1

(满足A>1,B=0,A=2和X≤1的条件,执行路径sacbed)

Ⅱ.A=1,B=1,X=2

(满足:

A≤1,B≠0,A≠2和X>1的条件,执行路径sabed)

(六)面向对象软件工程

由RumBaugh等人提出的一种面向对象方法叫做模型化技术,即三视点技术,它要求把分析时收集的信息建立在三个模型中。

第一个模型是(A),其作用是描述系统的静态结构,包括构成系统的对象和类,它们的属性和操作,以及它们之间的联系。

第二个模型是(B),描述系统的控制逻辑,主要涉及系统中各个对象和类的时序及变化状况。

(B)包括两种图,即(C)和(D)。

(C)描述每一类对象的行为,(D)描述发生于系统执行过程中的某一特定脚本。

第三个模型是(E),着重于描述系统内部数据的传送与处理,它由多个数据流图组成。

A,B,E:

 ①数据模型 ②功能模型(E)③行为模型 ④信息模型

⑤原型⑥动态模型(B)⑦对象模型(A)⑧逻辑模型

⑨控制模型⑩仿真模型

C,D:

 ①对象图 ②概念模型图③状态迁移图(C) ④数据流图⑤时序图⑥事件追踪图(D)⑦控制流程图⑧逻辑模拟图⑨仿真图⑩行为图

2.从供选择的答案中选出正确答案填入下列叙述的()内。

面向对象型的程序设计语言具有数据抽象、信息隐蔽、(A)等特征。

作为运算单位的对象应具有下列特性:

(B)、(C)、(D)。

(E)是面向对象型的语言。

A:

 ①对象调用 ②对象变换③非过程性 ④信息继承⑤并发性

B,C,D:

 ①对象把数据和处理数据的操作结合为一体

②在程序运行时对象都处于活动状态

③对象在计算中可向其它对象发送消息

④接受消息的对象必须给消息发送者以回答

⑤对象的内部服务只根据外部送来的消息才操作

E:

 ①C++,Smalltalk,ObjectC ②C,Ada,Modula2

③Pascal,C++,APL ④Ada,ObjectC,C

(七)软件管理

1.什么是软件项目管理?

软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员(People)、产品(Product)、过程(Process)和项目(Project)进行分析和管理的活动.

2.什么是配置管理?

它的四项基本功能是什么?

配置管理(ConfigurationManagement,CM)是通过技术或行政手段对软件产品及其开发过程和生命周期进行控制、规范的一系列措施

并行开发支持修订版管理版本控制产品发布管理建立管理 过程控制 变更请求管理 代码共享

3.什么是基线?

它在配置管理中有什么作用?

4.简述配置管理的五项主要任务。

5.从供选择的答案中选出正确答案填入下列叙述的()内。

任何软件项目都必须作好项目管理工作,最常使用的计划管理工具是(A)。

当某一软件项目的进度有可能拖延时,应该(B)。

对于一个典型的开发项目,各开发阶段需投入的工作量的百分比大致是(C)。

各阶段所需不同层次的技术人员大致是(D),而管理人员在各阶段所需数量也不同,相对而言大致是(E)。

A:

①数据流图 ②程序结构图③因果图 ④PERT图

B:

①增加新的开发人员 ②分析拖期原因加以补救

③从别的小组抽调人员临时帮忙④推迟预定完成时间(A/D/P/T)

C:

①25/25/25/25 ②10/20/30/40③15/30/15/40④5/10/65/30

D:

①初/高/高/高②中/中/高/中③高/中高/初/中高④中/中高/中/初

E:

①多/中/少/中 ②中/中/中/中③多/少/多/多④少/多/少/多

6.从下列关于文档编制的叙述中选出正确的叙述。

(1)可行性研究报告应评述为了合理地达到开发目标而困难选择的各种方案,以便用户抉择。

因此,编写者不必提出结论。

(2)操作手册的编写工作应该在软件测试阶段之前完成。

(3)软件的开发单位应该建立本单位文档的标识方法,使文档的每一页都具有明确的标识。

(4)为了使得文档便于修改,保持一致性,各文档的内容不应有相互重复的地方。

(5)用户手册要使用专门的术语,并充分地描述该软件系统的结构及使用方法。

(6)详细设计说明书中可以使用判定表及必要的说明来表示程序的逻辑。

(7)概要设计说明书中可以IPO图来说明接口设计。

(8)测试分析报告应把每个模块实际测试的结果,与软件需求规格说明书和概要设计说明书中规定的要求进行对照并作出结论。

(9)软件需求规格说明书中可以对软件的操作人员和维护人员的教育水平和技术专长提出要求。

(10)项目开发计划除去规定项目开发所需的资源、开发的进度等以外,还可以包括用户培训计划。

(11)软件过程能力成熟度的5个等级是:

初始级、可重复级、_____、_____和_____。

CMM(软件过程能力成熟度模型)是英文_____的缩写。

(12)在软件测试中,如果一个软件是给许多客户使用的,那么让每一个用户都进行正式的接收测试是不切实际的。

因此软件厂商常常进行这样的测试:

一种测试是由软件的最终用户在一个或多个用户场所进行,开发者通常不会在场,用户记录错误和问题并报告给开发者,这种测试叫_____;另一种测试由一个用户在开发场所,用户在开发者的“指导”下进行,开发者负责记录错误和问题,这种测试叫____。

(13)是指计算机软件的开发和维护过程中所遇到的一系列严重问题。

(14)从理论上说,只用顺序结构、、三种基本控制结构就可以实现任何单入口单出口的程序。

(15)通常,把一个软件从

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1