大学软件工程复习资料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
五、简答题
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) 假设几种可能的条件是: T1: A>3 F1:A<=3 T2: B=1 F2: B≠1 T3: A=1 F3:A≠1 T4:M>1 F4:M<=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 { flag=1; for(j=0;j { s=B[j]; for(k=0;k { if(j==k) s += X[k]; s=s-A[j,k]*X[k]; } if(abs(X[j]-s) > (abs(s) + 1.0)*eps flag=0; X[j]=s; } if(flag==1) break; } 画出该C伪码的程序流程图,N-S图,程序流图,并计算程序的McCabe环形复杂度。 4.阅读下列关于软件可靠性方面的叙述,回答问题1和问题2。 软件的可靠度可定义为:在假定输入和硬件不发生错误的前提下,对于给定的环境和给定的输入,在指定的时间内能完成规定任务的概率。 某软件中心的评测部为了评估已开发实现的应用软件ASP的可靠性,决定采用软件可靠性的错误播种模型来进行测试和评估。评测部在评估时,作了下列3个假设: (l)在测试前,单位长度的故障个数E T/I T为一常数,此常数基本上落在一个固定的范围内。其中I T为被测程序的长度(即机器指令条数),E T为被测程序中故障总数。 (2)失效率正比于软件中剩余的(潜伏的)故障数,平均无敌障时间MTTF(Mean Time To Failure)与单位长度的剩余故障个数成反比,即MTTF=1/(K·εr)。其中εr为单位长度剩余故障个数,K的典型值现