软件工程复习题

2026/1/20 6:52:49

软件工程复习题

1.动态测试是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能,这种方法由三部分组成:构造测试实例、执行程序、分析程序的输出结果。就是通过运行软件来检验软件的动态行为和运行结果的正确性

2.静态测试是指无须执行被测代码而是借助专用的软件测试工具评审软件文档或程序度量程序静态复杂度检查软件是否符合编程标准借以发现编写的程序的不足之处减少错误出现的概率

静态包括代码检查静态结构分析代码质量度量等 3.可行性研究分为:经济可行性,技术可行性

4.软件生命周期阶段是指:软件从被提出到最终被淘汰的这段过程

软件生命周期由软件定义、软件开发、运行维护(也称软件维护)3个时期组成 软件定义时期分为3个阶段:问题定义、可行性研究、需求分析

软件开发时期分为4个阶段:总体设计、详细设计、编码和单元测试、综合测试 运行维护(也称软件维护)时期的主要任务:使软件持久的满足用户需求

5.数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。

6.数据模型中包括3种相互关联的信息:数据对象、数据对象的属性、数据对象彼此间相互连接的关系。

7.模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,吧这些模块集成起来构成一个整体,可以完成一个指定的功能满足用户的需求。 8.信息隐藏原理指出:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。 9.模块独立的衡量标准分为:1内聚、2耦合。

10.模块规则包括:1改进软件结构提高模块独立性2模块规模应该适中3深度、宽度、扇入

和扇出都应适当4模块的作用域应该在控制域之内5力争降低模块接口的复杂程度6设计单入口单出口的模块7模块功能应该可以预测

11.判定表能清晰的表示复杂的条件组合与应做的动作之间的对应关系,简洁又无歧的描述处理规则。

12.一张判定表由4部分组成,左上部列出所有条件,左下部是所有可能做的动作,右上部是表示各种条件组合的一个矩阵,右下部是和每种条件组合相对应的动作。

13.判定树是判定表的变种,它也能清晰的表示复杂的条件组合与应做的动作之间的对应关系。判定树的优点在于,它的形式简单到不需任何说明,一眼就可以看出其含义,因此易于掌握和使用。

14.逻辑覆盖是对一系列测试过程的总称,逻辑覆盖的覆盖标准分为:1语句覆盖2判定覆盖

3条件覆盖4判定/条件覆盖5条件组合覆盖6点覆盖7边覆盖8路径覆盖

15.黑盒测试着重测试软件功能,力图发现下述错误:1功能不正确或遗漏了功能2界面错误

3数据结构错误或外部数据库访问错误4性能错误5初始化和终止错误

16.软件再工程过程的6类活动:1库存目录分析2文档重构3逆向工程

4代码重构5数据重构6正向工程

17.数据字典的内容:1数据流2数据流分量3数据存储4处理

18.基线是一个软件配置管理概念,简而言之基线就是通过了正式复审的软件配置项。它有助于人们在不严重妨碍合理变化的前提下来控制变化。

二.简答题

1.为什么说喷泉模型较好的体现了面向对象软件开发过程无缝和迭代的特性?

由于各阶段都使用统一的概念和表示符号,因此整个开发过程都是吻合一致的,或者说是“无缝”连接的,这自然就很容易实现各个开发步骤的多次反复迭代,达到认识的逐步深化。每次反复都会增加或明确一些目标系统的性质,但却不是对先前工作结果的本质性改动,这样就减少了不一致性,降低了出错的可能性。 2.为什么要进行需求分析?

为了开发出真正满足用户需求的软件产品,首先必须知道用户的需求。对软件需求的深入理解是软件开发工作获得成功的前提条件,不论人们把设计和 编码工作做得如何出色,不能真正满足用户需求的程序只会令用户失望,并给开发者带来麻烦。 3.通常对软件系统有哪些需求?

1功能需求2性能需求3可靠性和可用性需求4出错处理需求

5接口需求 6约束7逆向需求8将来可能提出的要求 4.黑盒测试和白盒测试的名词解释?

1黑盒测试指如果已经知道产品应该具有的功能,可以通过测试来检验是否每个功能

都能正常使用。黑盒测试法把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程。也就是说黑盒测试是在程序接口进行的测试,它只检查程序功能是否按照规格说明书的规定正常使用,程序是否能适当的接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息的完整性。

2白盒测试又称为结构测试,是指如果知道产品的内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行。白盒测试与黑盒测试法相反,它的前提是可以把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。

5.为什么要做回归测试?怎么做回归测试?

1在集成测试过程中每当一个新模块结合进来时,程序就发生了变化:建立了新的数据流路径,可能出现了新的I/O操作,激活了新的控制逻辑。这些变化有可能使原来工作正常的功能出现问题。在集成测试的范畴中,回归测试是指重新执行已经做过的测试的某个子集,以保证上述这些变化没有带来非预期的副作用。 2回归测试可以通过重新执行全部测试用例的一个子集人工的进行,也可以使用自动化的捕捉回放工具自动进行。利用捕捉回放工具,软件工程师能够捕捉测试用例和实际运行结果,然后可以回放并比较软件变化前后所得到的结果。

6.调试途径分为哪三种?

1蛮干法,蛮干法可能是寻找软件错误原因的最低效的方法,仅当所有其他方法都

失败的情况下才使用。

2回溯法,回溯法是一种相当常用的调试方法,当调试小程序时很有效。从发现症

状的地方开始,人工沿程序的控制流往回追踪分析源程序代码,知道找出错误原因为止。

3原因排除法,对分查找法、归纳法、演绎法都属于原因排除法。对分查找法的基

本思路是如果已经知道美国变量在程序内若干个关键点的正确值,则可以用赋值语句或输入语句在程序中点附近注入这些变量的正确值,然后运行程序并检查所得到的输出。如果输出结果正确,则错误原因在程序的前半部分;反之,错误原因在程序的后半部分。对错误原因所在部分再重复使用这个方法,直到把出错范围缩小到容易诊断为止。归纳法是从个别现象推断出一般性结论的思维方法。演

绎法从一般原理或前提出发,经过排除和精化的过程推导出结论。

7.面向对象设计应遵循哪些准则?简述每条准则的内容和遵循它的必要性?

1模块化,面向对象软件开发模式,很自然的支持了把系统分解成模块的设计原理:

对象就是模块。它是把数据结构和操作这些数据的方法紧密的结合在一起所构成的模块。

2 抽象 ,面向对象方法不仅支持过程抽象,而且支持数据抽象。使用者无需知道这些

操作符的实现算法和类中数据元素的具体表示方法,就可以通过这些操作符使用类中定义的数据。

3信息隐藏,信息隐藏通过对象的封装性实现:类结构分离了接口与实现,从而支持

了信息隐藏。对于类的用户来说,属性的表示方法和操作的实现算法都应该是隐藏的。

4弱耦合,对象间的耦合主要分交互耦合和继承耦合两种。耦合主要指不同对象之间

相互关联的紧密程度。弱耦合是优秀设计的一个重要标准,因为这有助于使得系统中某一部分的变化对其他部分的影响降到最低程度。

5强内聚,面向对象设计中存在3种内聚:服务内聚、类内聚、一般-特殊内聚。内聚

衡量一个模块内各个元素彼此结合的紧密程度。

6可重用,软件重用分3个层次:知识重用、方法和标准重用、软件成分重用。软件

重用是提高软件开发生产率和目标系统质量的重要途径。

8.能力成熟度(CMM)5个级别的特点?

1初始级,处于1级成熟度的软件机构,其过程能力是不可预测的,其软件过程是不

稳定的产品质量只能根据相关人员的个人工作能力而不是软件机构的过程能力来预测。

2可重复级,处于2级成熟度的软件机构的过程能力可以概括为,软件项目的策划和

跟踪是稳定的,已经为一个有纪律的管理过程提供了可重复以前成功实践的项目环境。软件项目工程活动处于项目管理体系的有效控制之下,执行着基于以前项目的准则且合乎现实的计划。

3已定义级,处于3级成熟度的软件机构的过程能力可以概括为,无论是管理活动还

是工程活动都是稳定的。软件开发的成本和进度以及产品的功能和质量都受到控制,而且软件产品的质量具有可追溯性。这种能力是基于在软件机构中对已定义的过程模型的活动、人员和职责都有共同的理解。

4已管理级,处于4级成熟度的软件机构的过程能力可以概括为,软件过程是可度量

的,软件过程在可度量的范围内运行。这一级的过程能力允许软件机构在定量的范围内预测过程和产品质量趋势,在发生偏离时可以及时采取措施予以纠正,并且可以预期软件产品是高质量的。

5优化级,处于5级成熟度的软件机构的过程能力可以概括为,软件过程是可优化的。

这一级的软件机构能够持续不断的改进其过程能力,既对现行的过程实例不断的改进和优化,又借助于所采用的新技术和新方法来实现未来的过程改进

9.软件开发早期阶段为什么要进行可行性研究? 并非任何问题都有简单明显的解决办法,事实上许多问题不可能在预定的系统规模或时间期限之内解决。如果问题没有可行的解,那么花费在这项工程上的任何时间、人力、软硬件资源和经费,都是无谓的浪费。可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。

10.应该从哪些方面研究目标系统的可行性?

1技术可行性,使用现有的技术能实现这个系统吗?

2经济可行性,这个系统的经济效益能超过它的开发成本吗? 3操作可行性,系统的操作方式在这个用户组织内行得通吗?

必要时还应该从法律、社会效益等更广泛的方面研究每种解法的可行性。 11.软件的可维护性与哪些因素有关?

1可理解性2可测试性3可修改性4可移植性5可重用性 12.软件开发过程中应采取哪些措施提高软件可维护性?

软件生命周期每个阶段的工作都和软件可维护性有密切关系。良好的设计,完整准确易读易理解的文档资料,以及一系列严格的复审和测试,使得一旦发现错误时比较容易诊断和纠正,当用户有新要求或外部环境变化时软件能较容易的适应,并且能够减少维护引入的错误。因此,在软件生命周期的每个阶段都必须充分考虑维护问题,并且为软件维护预做准备。

第七章7.4集成测试

集成测试是测试和组装软件的系统化技术,例如子系统测试即是在把模块按照设计要求组装起来的同时进行测试,主要目标是发现与接口有关的问题(系统测试与此类似)。例如,数据穿过接口时可能丢失;一个模块对另一个模块可能由于疏忽而造成有害影响;把子功能组合起来可能不产生预期的主功能;个别看来是可以接受的误差可能积累到不能接受的程度;全程数据结构可能有问题等。不幸的是,可能发生的接口问题多得不胜枚举。

由模块组装成程序时有两种方法。一种方法是先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,这种方法称为非渐增式测试方法;另一种方法是把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试。这种每次增加一个模块的方法称为渐增式测试,这种方法实际上同时完成单元测试和集成测试。


软件工程复习题.doc 将本文的Word文档下载到电脑
搜索更多关于: 软件工程复习题 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219