南京信息工程大学软件工程模拟试题出题人:软件工程一班一.选择题(每题一分,15题,共15分)1. 是最低程度的耦合。
A.数据耦合B.控制耦合C.内容耦合D.离散耦合2. 是影响软件可维护性的决定因素。
A. 需求性分析B. 程序员C. 文档D.详细设计3. 模型能在较短的时间内向用户提交可完成部分工作的产品。
A.快速原型模型B.增量模型C.螺旋模型D.喷泉模型4.软件生命周期中所花费用最多的阶段是()A.详细设计B.软件编码C.软件测试D.软件维护5.详细设计的结果基本决定了最终程序的()A.代码的规模B.运行速度C.质量D.可维护性6..经济可行性研究的范围包括()A.资源有效性B.管理制度C.效益分析D.开发风险7.ISO的软件质量评价模型由3层组成,其中用于评价设计质量的准则是()A.SQIC B.SQMC C.SQRC D.SQDC8.瀑布模型的本质是一种()A.顺序迭代模型B.线性顺序模型C.现行迭代模型D.非线性模型9.一个软件的宽度是指其控制的()。
A. 模块数B. 层数C. 跨度D. 厚度10.以下哪一项不是面向对象的特征().A.多态性B.继承性C.封装性D.过程调用11.软件生命周期终止的最典型的原因().A.错误太多B.利润过低C.可维护性差D.效率不高12.结构化程序设计主要强调程序的()A效率.B.速度 C.可读性 D.大小13.下列哪一项不是为处理命名的要求()A、先为数据流命名再为与之相关的处理命名;B、名字应该反映内容;C、可以用经常用“加工”、“处理”等笼统的动词命名;D、尽量分解为简单的处理;14.若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0, 1.0],现从输入的角度考虑一组测试用例:-1.001, -1.0, 1.0, 1.001.设计这组测试用例的方法是()A.条件覆盖法B.等价分类法C.边界值分析法D.错误推测法15.使用程序流程图作为工具设计软件时,常常通过研究流程图确定模块的划分,这样得到的往往是( )的模块。
A.时间内聚B.逻辑内聚C.过程内聚D.功能内聚二.填空题(每空一分,15空,共15分)1.通常和统称为实现。
2.耦合方式有、、特征耦合、公共环境耦合、。
3.软件是和以及相关文档的完整集合。
4.结构程序设计中3中基本的控制结构:、。
5.白盒测试技术中逻辑覆盖包括:、判定覆盖、、、、点覆盖、、路径覆盖。
三、判断题(每题1分,共10分。
正确用√,错误用×)1.()开发软件就是编写程序。
2.()系统测试的主要方法是白盒法,主要进行功能测试、性能测试、安全性测试及可靠性测试等测试。
3.()编程时应尽可能利用硬件特点以提高程序效率。
4.()软件需求分析的任务是建立软件模块结构图。
5.()尽可能使用高级语言编写程序。
6.()以结构化分析方法建立的系统模型就是数据流图。
7.()进行总体设计时应加强模块间的联系。
8.()编码时应尽量多用全局变量。
9.()用CASE环境或程序自动生成工具来自动生成一部分程序。
10.()软件测试是要发现软件中的所有错误。
四、论述题(每题10分,2题,共20分)1.软件的可维护性与哪些因素有关?在软件开发过程过程中应该采取哪些措施来提高软件产品的可维护性?2.试陈述软件测试的基本任务和方法.五、简答题(每小题5分,共20分)1.列举软件设计过程中应该遵循的基本原理。
2.列举出5个详细设计阶段的常用工具。
3.简述面向对象方法学的4个要点。
4.简述软件工程的概念六、计算题(每题5分,两道题,10分)1.已知有一个国外典型的软件项目的记录,开发人员M=6人,其代码行数=20.2KLOC,工作量E=43PM,成本S=314000美元,错误数N=64,文档页数Pd=1050页。
试计算开发该软件项目的生产率P、平均成本C、代码出错率EQR和文档率D。
2.甲乙两名程序测试员同时对一个程序进行独立测试一个月,甲发现并改正了24个错误;乙发现并改正了20个错误,其中有10个错误甲也发现了。
试估算该程序经过甲乙两人这一个月测试后,还残留多少个错误?七、分析设计题(共10分)1.请指出下面功能需求描述存在的问题,并进行适当的修改。
(1)系统用户界面友好。
(2)即使在系统崩溃的情况下,用户数据也不能受到破坏。
(3)A TM系统应该快速响应用户的请求。
(4)A TM系统需要检验用户存取的合法性。
(5)软件应该用JA V A语言实现。
答案:一、选择题1-5 ACBDC 6-10CDBCD 11-15CCCCC二、填空题1编码测试2数据耦合控制耦合内容耦合3程序数据4顺序结构选择结构循环结构5语句覆盖条件覆盖判定/条件覆盖条件组合边覆盖三、判断题1——5:××××√6——10:×××√×四、论述题1.软件的可维护性与哪些因素有关?在软件开发过程过程中应该采取哪些措施来提高软件产品的可维护性?维护就是在软件交付使用后进行的修改,修改之前必须理解待修改的对象,修改之后应该进行必要的测试,以保证所做的修改是正确的。
如果是改正性维护,还必须预先进行调试以确定错误的具体的位置。
因此决定软件可维护性的因素主要有下述5个。
(1)可理解性:表现为外来读者理解软件结构,功能,接口和内部处理过程的难易程度。
(2)可测试性:诊断和测试的容易程度决定了可测试性。
(3)可修改性:耦合,内聚,信息隐藏,局部化,控制域,作用域都影响软件的可修改性。
(4)可移植性:即把程序从一种计算机环境转移到另一种计算环境的难易程度。
(5)可重用性:即同一事物不做修改或者稍加修改就会在不同的环境中多次使用。
软件开发的每一个阶段的工作都和软件可维护性有密切的联系。
因此,要做到在每一次的步骤中做到精准的良好的设计,并且完成完整准确易读的理解的文档资料。
以及一系列的严格的复审和测试。
文档是影响软件可维护性的决定因素,因此文档甚至比可执行的程序代码更重要。
文档可分为用户文档和系统文档,不管是哪一类的文档都必须和程序代码同时维护,只有和程序代码完全一致的文档才是具有价值的文档。
预防性维护在全部的维护中占有很少的比例但是我们补课忽视它,可以投提高整体的可维护性。
3.试陈述软件测试的基本任务和方法。
(1)软件测试是软件开发过程中的重要阶段,是软件质量保证的重要手段。
其任务可归纳为三个方面:1)预防软件发生错误2)发现改正程序错误3)提供错误诊断信息(2)目前,软件测试的方法有三种:动态测试,静态测试和正确性证明。
动态测试:通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能,这种方法由三部分组成:构造测试实例、执行程序、分析程序的输出结果.所谓软件的动态测试,就是通过运行软件来检验软件的动态行为和运行结果的正确性。
目前,动态测试也是公司的测试工作的主要方式。
静态测试:静态方法是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。
对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。
在实际使用中,代码检查比动态测试更有效率,能快速找到缺陷,发现30%~70%的逻辑设计和编码缺陷;代码检查看到的是问题本身而非征兆。
但是代码检查非常耗费时间,而且代码检查需要知识和经验的积累。
正确性证明: 正确性证明是通过数学技术来确定软件是否正确,也就是说,是否符合其规格说明。
程序正确性证明方法认为:一段程序的正确性是指给定一个输入断言以及程序的程序函数,能够导出程序的输出断言。
严格意义上的程序正确性定义分为:部分正确性、终止性和完全正确性。
五、简答题1:模块化,抽象,逐步求精,信息隐藏和局部化,模块独立。
2:程序流程图,盒图,PAD图(问题分析图),判定表,判定树,过程设计语言。
3.(1)认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以有比较简单的对象以某种方式组合而成。
(2)把所有对象都划分成各种对象类,每个对象类都定义了一组数据和一组方法。
(3)按照子类与父类的关系,把若干个对象类组成一个层次结构的系统。
(4)对象彼此之间仅能通过传递消息相互联系。
4:采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
六、计算题1.解:根据给出的已知数据,可得:P = L / E =20.2 KLOC /43 PM = 0.47 KLOC / PM = 470 LOC / PMC = S / L = 314000美元/ 20.2 KLOC = 15.54 美元/ LOCEQR = N / L = 64个/ 20.2KLOC = 3.17 个/ KLOCD = Pd / L = 1050 页/ 20.2 KLOC = 51.98 页/ KLOC2.解:由题意知,E 1 = 24, E 2 = 20,E 0 = 10,该程序所含错误总数可估算如下:ET = E1×E 2 / E 0 = 24×20 / 10 = 48(个)经过一个月的测试,该程序还残留的错误数为:E r = ET –EC(1)= ET –(E 1 + E 2 –E 0 )= 48 –(24+20-10)=14(个)答:还残留14个错误。
七、分析设计题1. (1)问题:“友好”是不可验证的。
改正:具有一年计算机使用经验的用户经过3小时的培训就可以学会使用该系统。
(2)问题:“不能受到破坏”是不可验证的。
改正:如果系统发生崩溃,那么该系统重新正常启动后,可以将用户数据恢复到最后未完成操作执行前的状态。
(3)问题:“快速”是不可验证的。
改正:A TM系统将在1秒钟之内响应用户的请求。
(4)问题:“如何验证合法性”是存在歧义的。
改正:A TM系统将通过用户名和口令验证其存取的合法性。
(5)问题:该描述不是功能需求或非功能需求,应该是对设计实现的一个约束条件。