2015年软件工程期末考试试题及答案(机密)解析

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

班级姓名学号

一.简要回答下列各问题(共40分,每个小题5分)

(1) 阐述软件工程的定义。

答:

●是指导计算机软件开发和维护的一门工程学科;

●采用工程的概念、原理、技术和方法来开发和维护软件;

●把证明正确的管理技术和最好技术综合运用到软件开发中;

●研究经济地开发出高质量的软件方法和技术;

●研究有效维护软件的方法和技术。

(2) 简述软件危机的原因。

答:

●缺乏软件开发的经验和有关软件开发数据的积累,使得开发计划很难制定。

●软件人员与用户的交流存在障碍,使得获取的需求不充分或存在错误。

●软件开发过程不规范。如,没有真正了解用户的需求就开始编程序。

●随着软件规模的增大,其复杂性往往会呈指数级升高。需要很多人分工协作,

不仅涉及技术问题,更重要的是必须有科学严格的管理。

●缺少有效的软件评测手段,提交用户的软件质量不能完全保证。

(3) 画出软件生存周期的瀑布模型的示意图,并简单评述其优缺点。

(4) 画出软件生存周期的增量模型的示意图,并简述其优点。

优点:

●可强迫开发人员采用规范化的方法。

●严格地规定了每个阶段必须提交的文档。

●要求每个阶段交出的所有产品都必须是经过验证

的。

缺点

●由于瀑布模型几乎完全依赖于书面的规格说明,很

可能导致最终开发出的软件产品不能真正满足用户

的需要。如果需求规格说明与用户需求之间有差异,

就会发生这种情况。

●瀑布模型只适用于项目开始时需求已确定的情况。

1-2 瀑布模型示意图

●能在较短时间内向用户提交可完成一些有用的工作产

品,即从第1个构件交付之日起,用户就能做一些有用

的工作。

●逐步增加产品的功能可以使用户有较充裕的时间学习和

适应新产品,从而减少一个全新的软件可能给用户组织

带来的冲击。

●项目失败的风险较低,虽然在某些增量构件中可能遇到

一些问题,但其他增量构件将能够成功地交付给客户。

●优先级最高的服务首先交付,然后再将其他增量构件逐

次集成进来。因此,最重要的系统服务将接受最多的测

试。

(5) 画出D.Ross 提出的软件工程结构化分析方法的框架示意图,并解释数据字典和数据流的含义。

答:

(6) 举例说明变换型和事务型流图的特点。 答:

变换型流图由输入、中心变换和输出3部分组成,而且逐层展开。如:

事务型流图通常接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。

(7) 给出下面变换型数据流图对应的模块结构图。

答:

(8) 给出下面交易型数据流图对应的模块结构图。

答:

(9) 举例说明模块结构图优化方法中的不同模块相似部分调整的原则。 答:

● 完全相似的模块可以归并;

● 两个模块部分相似的代码可以通过建立公共新模块,并设立对公共模块调用进

行调整。 例如:

(10) 举例说明模块结构图优化方法中作用域与控制域调整的原则。

答:

作用域是指判断语句所在模块和他判断调用的下属模块,而控制域是指他本身以及他的下属模块;一般要求作用域在控制域内。

例如: D 通过B 判断调用C ,故D 的作用范围不在它的控制范围内,调整为右图。

(11) 试将下面的代码段进行局部调整,使其更容易理解。

1)要进行适当的缩排;

2)增加必要的注释;

3)增加必要的语句,以免产生错误;

For(i=1;i<=n-1,i++){t=i;for(j=i+1,j<=n,j++)if(a[j]

int i=0;/*实现***功能

int t=0;

int tm=0;

For(i=1;i<=n-1,i++) /*实现***功能

{

t=i;

for(j=i+1,j<=n,j++) /*实现***功能

if(a[j]

t=j;

if(t!=i)

{

tm=a[t]; /*实现***功能

a[t]=a[i];

a[i]=tm

}

}

(12)试按照规范编写一个求3个数中最小值的程序。程序规范如下:

1)禁止使用GOTO语句;

2)使用缩排编写程序;

3)变量命名明晰

答:

main() // a c code about finding out the small one in tree input number

{int num1,num2,num3,min;

printf("Please input three numbers:");

scanf("%d,%d,%d",&num1,&num2,&num3);

if (num1

MIN=num1;

else

MIN=num2;

if (num3

MIN=num3;

printf("The small one is:%d",small);

(13)举例说明软件测试的不完备性。 答:

就目前的软件测试方法而言,还无法做到对代码的完全覆盖测试,所以说软件测试是不完备的。例如,下面的代码是无法完全测试的。

(14)试解释单元测试中“驱动模块”、“桩模块”与“被测模块”含义以及它们之间的关系。 答:

● 驱动模块相当于被测模块的主程序,它接收测试数据,并把这些数据传送给被测模

块,最后再输出实测结果。

● 桩模块也叫做存根模块,用以代替被测模块调用的子模块。

● 被测模块是单元测试要测试的模块,他与驱动模块和桩模块有被调用和调用的关

系。

(15)简述软件改正性、适应性维护的含义。 答:

改正性是为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应进行的诊断和改正错误的过程。

适应性维护是指,随着信息技术的飞速发展,软件运行的外部环境(新的硬、软件配置)或数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化,为了使软件适应这种变化,而修改软件的过程叫做适应性维护

包含的不同执行路径数达520条,对每一条路径进行测试需要1毫秒,假定一年工作365 × 24小时,要想把所有路径测试完,需3170年。

相关文档
最新文档