大学软件工程基础知识测试题 下载本文

内容发布更新时间 : 2024/12/24 8:59:26星期一 下面是文章的全部内容请认真阅读。

五、简答题

1. 层次图和层次方框图之间区别何在? P92

①层次图描绘软件的层次结构,层次方框图描绘数据结构

②层次图中方框代表一个功能模块,层次方框图方框代表数据的子集或数据元素 ③层次图中连线表示模块间调用关系,层次方框图连线表示组成关系。 2. 2、软件设计过程中为什么要采用模块化设计方法?P85 参考答案:

(1)、采用模块化原理可以使软件结构清晰,不仅容易设计,也容易阅读和理解; (2)、模块化使软件容易测试和调试,因而有助于提高软件的可靠性; (3)、模块化可以提高软件的可修改性; (4)、模块化有助于开发过程的组织和管理;

3. 用某种软件复杂性度量算法来度量不同类型的程序时。得出的度量值是否真正反映了它们的复杂性?

如果对同类型的程序进行度量,其结果是否就比较有价值? 参考答案:

开发规模相同,但复杂性不同的软件,花费的成本和时间会有很大的差异。因此到目前为止,还没有一个软件复杂性度量的方法能够全面、系统地度量任一软件的复杂性,某一种度量方法只偏重于某一方面。所以,用某种软件复杂性来度量不同类型的程序,所得到的度量值不一定真正反映它们的复杂性。但对同一类里的程序,按某种视点来度量它们的复杂性,其结果还是比较有价值的。 4. 数据流图的作用是什么?它有哪些基本成分? 参考答案:

数据流图可以用来抽象地表示系统或软件。它从信息传递和加工的角度.以图形的方式刻画数据流从输入到输出的移动变换过程,同时可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能细节。因此,数据流图既提供了功能建模的机制.也提供了信息流建模的机制,从而可以建立起系统或软件的功能模型。

基本成分有:数据原点/终点 数据处理 数据流 数据存储

5. 常用的估算软件规模的方法有哪些?试比较这些方法的优缺点。

代码行技术的优点,容易计算,缺点是太片面,因为源程序只是软件配置的很少一部分,不同语言实现同一个软件所需的代码行数不同;

功能点数的特点:与编程语言无关,但是判断信息域复杂性级别和技术因素的影响程度时,存在着相当大的主观因素。

6. CMM的全称是什么?其基本思想是什么?为什么要对CMM进行分级?P321

其基本思想是:软件开发和维护过程中的问题是由于管理软件过程的方法不当引起的,即使是应用新的软件技术,也不会自动提高软件的生产率和质量。能力成熟度模型有助于软件开发机构建立一个有规律的、成熟的软件过程。改进后的软件过程将有利于开发出高质量的软件,使更多的软件项目免受时间和费用超支之苦。 ······························································································· 3分 对于任何软件开发机构的软件过程的改进都是在完成一个又一个小的改进的基础之上不断进行的渐进过程,而不是一蹴而就的彻底革命。CMM将软件过程从无序到有序的进化过程分为5个等级,用于测量软件机构的软件过程成熟度和评价其软件过程能力 什么是软件配置管理?

答:软件配置管理,简称SCM(Software Configuration Management),是在软件的整个生命周期内管理变化的一组活动。具体地讲,这组活动包括:①标志变化, ②控制辩化, ③确保适当地实现变化, ④向需要指导这类信息的人报告变化。软件配置管理技术可以使软件变更所产生的错误达到最小并最有效地提高生产率。

7. 什么是基线?你是如何理解基线的?P319

基线:已经通过正式复审的规格说明或中间产品,它可以作为进一步开发的基础,并且只有通过正式的变化控制过程才能改变它。

基线是通过了正式复审的软件配置项。一旦软件配置变成基线,那么,对于软件配置的改变,必须使用特定的、正式的过程来评估、实现和验证每个变化。 基线除了包含软件配置之外,还有可能包含软件工具。 8. 什么是面向对象的方法学?它有哪些优点?P193

面向对象的方法就是模拟人类认识世界解决问题的思维习惯开发软件的方法,这种方法认为:OO=对象+类+继承+对象之间的通讯。 ······································································· 1分 OO方法有如下四个方面的要点:①客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以有比较简单的对象以某种方式组合而成。②把所有对象都划分成各种对象类,每个类定义一组数据(静态属性,状态信息,类实例专有数据)和一组方法(施加于对象上的操作,类实例所共有的)。③按照子类与父类的关系,把若干个类组成一个层次结构的系统。子类继承父类的方法和属性,同时可以重载某些方法。④对象之间仅能通过传递消息相互联系 ·················································· 2分 优点:①与人类习惯的思维方法一致,②稳定性好,③可重用性好,④较易开发大型软件产品,⑤可维护性好。 ·································································································· 2分

六、分析题

1. 试说明下面的两个程序段的功能是什么?可否用另一些等效的程序段来代替它,以提高其可读性。 (1)

A=A+B

B=A-B A=A-B (2)

for(i=0;j

for(j=0;j

V[i][j]=(i/j)*(j*i)

2. 已知被测试模块流程图如下,按照“条件覆盖”法,在表格中填入满足测试要求的数据。 a start T F 假设几种可能的条件是: (A>3)AND(B=1) c T3: A=1 F3:A≠1 T4:M>1 F4:M<=1 T1: A>3 F1:A<=3 T2: B=1 F2: B≠1 b M=M/2 填写下表(注意:本题答案不唯一) 数据 F d A=4,B=1,M=2 M=M+5 A=1,B=2,M=4 f end 覆盖路径 (A=1)OR(M>1) cd be T 覆盖条件 e T1,T2,F3,F4 M=M-5 F1,F2,T3,T4 M值 6 -1 请设计路径覆盖用例,并写出各种测试用例下程序的执行路径。

3. 下面是一段用Seidel迭代法求解线性方程组的程序。其中A[n,n]是方程组的系数矩阵。B[n]是方程组

的右端项,X[n]是方程组的解向量。eps是控制迭代精度的较小实数。imax是控制迭代的最大次数。flag是标志,值为0时表示迭代不收敛,值为l时表示迭代收敛。 for(k=0;k

X[k]=0.0;

X[n-1]=1.0; for(i=1;i

for(j=0;j

s=B[j];