当前位置:问答库>考研试题

2018年重庆大学877C语言程序设计和数据库原理及应用[专硕]之软件工程导论考研仿真模拟五套题

  摘要

一、名词解释

1. 软件再工程

【答案】软件再工程是运用逆向工程、重构等技术,在充分理解原有软件的基础上,进行分解、综合、并重新构建软件,用于提高软件的可理解性、可维护性、可复用性。它指的是对既存对象系统进行调查,并将其重构为新 形式代码的开发过程,它的重要特点是能最大限度的重用既存系统的各种资源。

2. 边界值分析法

【答案】边界值分析是选取刚好等于、稍小于和稍大于等价类边界值的数据作为测试数据,而不是选取每个等价 类内的典型值或任意值作为测试数据,它是对等价类划分方法的补充。边界值分析法是一种重要的黑盒测试方法。

二、简答题

3. 应该由谁来进行确认测试?是软件开发者还是软件用户?为什么?

【答案】(1)在对照需求做有效性测试和软件配置审查时,是由软件开发者在开发环境下进

行的测试。而接下来做验收测试时则以用户为主。软件开发人员和

输出结果,一般使用生产中的实际数据进行测试。

(2)如果软件是为多个用户开发的,则需要进行a 测试和p 测试。a 测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。软件在应该自然设置状态下使用。开发者坐在用户旁边,随时记录错误情况和使用中的问题,这是在受控制的环境下进行的测试。

(3)测试是由软件的多个用户在一个用户或多个用户的实际使用环境下进行的测试。这些用户是与公司签订了支持产品预发行合同的外部用户,他们要求使用产品,并愿意返回有关错误信息给开发者。与a 测试不同的是,开发者通常不在测试现场。因此,测试是在开发者无法控制的环境下进行的软件现场应用。

4. 简述文档在软件工程中的作用。

【答案】文档是软件开发使用和维护中的必备资料,在软件工程中的作用如下:

(1)提高软件开发过程的能见度。

一一质量保证)人员也应参加。由用户参加设计测试用例,使用用户界面输入测试数据,并分析测试的

(2)提高软件开发的效率。

(3)作为开发人员阶段工作成果和结束标志。

(4)记录开发过程的有关信息,便于使用和维护。

(5)提供软件运行、维护和培训的相关说明性参考资料。

(6)便于用户了解软件功能、性能和相关配置信息。

5. 在软件测试中,应注意哪些原则?

【答案】(1)测试用例应由输入数据和预期的输出数据两部分组成。这样便于对照检查,做到“有的放矢”。

(2)测试用例不仅用合理的输入数据,还要选择不合理的输入数据。这样能更多地发现错误,提高程序的可靠性。对于不合理的输入数据,程序应拒绝接收,并给出相应提示。

(3)除了检查程序是否做了它应该做的事,还应该检查程序是否做了它不应该做的事。例如程序正确打印出用户并不需要的多余信息。

(4)应定制测试计划并严格执行,排除随意性。

(5)长期保留测试用例。测试用例的设计耗费很大的工作量,必须作为文档保存。因为修改后的程序可能有新的错误,需要进行回归测试。同时,为以后的维护提供方便。

(6)对发现错误较多的程序段,应进行更深入的测试。有统计数字表明,一段程序中已发现的错误越多,其中存在的错误概率也越大。因为发现错误数越多的程序段,其质量较差。同时在修改错误过程中又容易引入新 的错误。

(7)程序员避免测试自己的程序。测试是一种“挑剔性”的行为,心理状态是测试自己程序的障碍。另外,对需求规格说明的理解而引入的错误则更难发现。因此由别的人或另外的机构来测试程序员编写的程序会更客观、更有效。

6. 使用边界值分析方法设计测试用例的设计原则有哪些?

【答案】(1)如果输入条件规定了值的范围,可以选择正好等于边界值的数据作为合理的测试用例,还要选择刚好越过边界值的数据作为不合理的测试用例。

(2)如果输入条件指出了输入数据的个数,则按最大个数、最小个数、比最小个数少1、比最大个数多1等情况分别设计测试用例。

(3)对每个输出条件分别按照以上一组(1)和(2)确定输出值的边界情况。由于输出值的边界不与输入值的边界值相对应,所以要检查输出值的边界不一定可能,要产生超出输出值之外的结果也不一定能做到,但必要时还需试一试。

(4)如果程序的规格说明书给出的输入或输出域是个有序集合(如顺序文件、线性表、链表等),则应该选 取集合的第一个元素和最后一个元素作为测试用例。

三、综合应用题

7. 什么是软件危机? 它有哪些典型表现? 为什么会出现软件危机?

【答案】(1)软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。软件危机包含两方面的问题:

①如何开发软件,以满足对软件日益增长的需求;

②如何维护数量不断膨胀的已有软件。

(2)软件危机的典型表现:

①对软件开发成本和进度的估计不准确;

②用户对“已完成的”软件系统不满意的现象经常发生;

③软件产品的质量往往靠不住;

④软件常常是不可维护的;

⑤软件通常没有适当的文档资料;

⑥软件成本在计算机系统总成本中所占的比例逐年上升;

⑦软件开发跟不上计算机应用迅速普及深入的趋势。

(3)软件危机出现的原因:

①软件是计算机系统中的逻辑部件而不是物理部件;

②软件显著特点是规模庞大;

③对软件开发和维护还有不少糊涂观念,采用了错误的方法和技术;

④存在与软件开发和维护有关的许多错误认识和做法;

⑤对用户要求没有完整准确的认识就匆忙着手编写程序;

⑥一个软件从定义、开发、使用和维护,直到最终被废弃,要经历一个漫长的时期;

⑦一个软件产品必须由一个完整的配置组成,要包括程序、文档和数据等成分;

⑧在软件开发的不同阶段进行修改需要付出的代价是很不相同的;

⑨轻视维护。

8. 在软件开发的早期阶段为什么要进行可行性研究?应该从哪些方面研究目标系统的可行性?

【答案】(1)进行可行性研究的目的

可行性研究的目的是,用最小的代价在尽可能短的时间内研究并确定客户提出的问题是否有行得通的解决办 法。必须分析几种主要的候选解法的利弊,从而判断原定的系统目标和规模是否现实,系统完成后所能带来的效 益是否大到值得投资开发这个系统的程度。

(2)从下述三个方面研究每种解决方案的可行性

①技术可行性:使用现有的技术能否实现这个系统。

②经济可行性:这个系统的经济效益能否超过它的开发成本。

③操作可行性:这个系统的操作方式在该客户组织内是否行得通。