admin 管理员组

文章数量: 1086019


2024年12月31日发(作者:toolset)

填空题

1. 基于计算机系统的软件要素中的软部件由 程序 、数据 和 文档 组成。

(程序、数据、文档)

2. 软件工程方法学分两类:结构化 方法学和 面向对象 方法学。

(传统or结构化or软件生命周期、面向对象)

3. 软件工程的目标是在给定成本、开发进度 的前提下开发出高质量的、

满足用户要求 的软件产品。

(开发进度、满足用户要求)

4. 软件过程 是软件生存期中的一系列相关软件工程活动的集合,它由软件

规格说明、软件设计与开发、软件确认、软件改进等活动组成。

(软件过程)

5. 软件工程釆用层次化的方法,每个层次都包括 工具 、方法、 过程 三要

素。

(工具、过程)

6. 使用 快速原型 这一软件过程模型可以让用户更多、更早地参与需求分析

过程。

(快速原型)

7. 描绘物理系统的传统工具是 系统流程图 。

(系统流程图)

8. 需求分析阶段产生的文档是 软件需求规格说明书 ,它的主要组成部分是

数据流图, 数据字典 。

(软件需求规格说明书、数据流图、数据字典)

9. 数据流图用图形符号表示 数据元素 、 处理过程 、数据源及数据

存储。

(数据源、加工/处理)

10. 实体—关系图是数据模型 的基础,它描述 数据对象、属性及其关系。

(数据模型、数据对象)

11. 软件设计的主要任务是根据 软件需求规格说明书 导出系统的实现方案。

(软件需求规格说明书)

12. 一个模块拥有的直属下级模块的个数称为 模块的扇出 ,一个模块的直接上

级模块的个数称为 模块的扇入 。

(模块的扇出、模块的扇入)

13. 将数据流图映射为软件结构时, 所用映射方法涉及信息流的类型。其信息流

分为 变换型数据流图 和 事务型数据流图 两种类型。

(变换型、事务型)

14. 耦合的强弱取决于 模块接口 的复杂性、进入或调用模块的位置以及通过

界面传送数据的多少等。

(模块间接口)

15. 总体设计确定模块的 外部结构,而详细设计确定模块的 内部结构。

(外部结构、内部结构)

16. 软件结构是以 模块 为基础而组成的一种控制层次结构。

(模块)

17. 详细设计的工具可分为 图形类 、 表格类 和 语言类 三大

类。

(图形类、表格类、语言类)

18. 软件过程设计中最常用的技术和工具主要为程序流程图、 判定表 、

判定树 、盒图、 PAD图 和PDL语言。

(判定表、判定树、PAD图)

19. 详细设计通常以 结构化程序设计 技术为逻辑基础,因为从软件工程观点

看, 可理解性 是软件最重要的质量标准之一。

(结构化程序设计、可理解性 or 可读性)

20. 对于复杂数据中的数据元素的组成方式有 顺序 、 选择 、循环

和可选等四种基本类型。

(顺序、选择、重复)

21. 影响编码质量的因素包括 编程语言 、编程准则和 编码风格 。

(编程语言、编码风格)

22. 软件维护的副作用副作用大致可分为三类:代码 副作用、 数据 副作用、

文档 的副作用。

(数据、文档)

23. 软件测试的目的是 发现并改正错误 ,通常把测试方法分为 黑盒法 和

白盒法 两大类。因为通常不可能做到 穷举测试 ,所以精心设计 测

试用例 是保证达到测试目的所必需的。

(发现并改正错误、黑盒法、白盒法、穷举测试、测试用例)

24. 进行软件测试的关键是设计出 高效 的测试用例,测试用例应由

输入数据 和 预期的输出结果 两部分组成。

(高效、输入数据、预期的输出结果)

25. 单元测试过程应为测试模块开发一个 驱动模块 和(或)若干个 桩模块 。

(驱动模块、存根模块)

26. 进行单元测试的依据是 详细设计 描述,单元测试应对模块内所有重要

的 执行通路 设计测试用例,以便发现模块内部的错误。

(详细设计、执行通路)

27. 确认测试应检查软件能否按合同要求进行工作,即是否满足 软件需求规

格说明书 的确认标准。

(软件需求规格说明书)

28. UML的类包含三个部分:类的名称、 类的属性 、 类的操作 。

(类的属性、类的操作)

29. 类之间的继承关系是现实世界中遗传关系的模拟,它表示类之间的内在联系

以及对 属性和操作 的共享。

(属性和操作)

30. UML类之间的关系主要有 关联 、聚集、 泛化 和依赖。

(关联、泛化)

31. 类A的一个操作调用类B的一个操作,且这两个类之间不存在其他关系,

那么类A和类B之间是 依赖 关系。

(依赖)

32. 在面向对象的软件中, 类 是对具有相同数据和相同操作的一组相似对象的

定义; 实例 是由某个特定的类所描述的一个具体对象。

(类、实例)

33. 面向对象方法用 对象 分解取代了传统方法的 功能 分解。

(对象、功能)

判断题

1. 计算机软件由文档和数据组成。 ( F )

2. 软件开发采用了软件工程之后,就不会发生软件危机了。 ( F )

3. 软件工程使用的软件工具能够自动或半自动地支持软件的开发、管理和文档

的生成。 ( T )

4. 一个好的开发人员应具备的素质和能力包括善于与周围人员团结协作,建立

良好的人际关系,善于听取别人的意见。 ( T )

5. 缺乏处理大型软件项目的经验。是产生软件危机的唯一原因。 ( F )

6. 软件开发小组人数越多越好。 ( F )

7. 难以控制开发进度和工作量估计困难是软件危机的主要表现之一。 ( T )

8. 面对日益增长的软件需求,人们显得力不从心。往往是产生软件危机的原因

之一。 ( T )

9. 软件需求是指用户对目标软件系统在功能、性能、行为、设计约束等方面的

期望。 ( T )

10. 系统规格说明是系统分析和定义阶段生成的一种文档。 ( T )

11. 需求分析阶段所生成的文档主要是进度计划和可行性研究报告。 ( F )

12. 软件就是完成特定功能的程序的集合。 ( F )

13. 瀑布模型在实际的的项目中严格顺序执行就基本可以成功。 ( T )

14. 快速原型技术的适用于软件产品要求大量的用户交互、或产生大量的可视输

出、或设计一些复杂的算法等场合。 ( T )

15. 只要实行严格的产品控制就不用担心用户随意改需求。 ( T )

16. 在可行性研究中最难决断和最关键的问题是技术可行性。 ( T )

17. 流程图用三个基本的控制构件“分支”,“循环”,“重复”来表示。 ( F )

18. 数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的

定义的集合。 ( T )

19. 系统分析阶段和系统设计阶段一般不考虑测试。 ( F )

20. 改造程序结构,要降低耦合度,提高内聚度。 ( T )

21. 一个软件系统中可能会出现所有模块之间没有任何联系的情况。 ( F )

22. 采用信息隐藏原理指导模块设计可以支持模块的并行开发,减少软件测试和

软件维护的工作量。 ( T )

23. 数据流图的分解速度应保持较高。通常一个加工每次可分解为10~20个子加

工。 ( F )

24. 概要设计也称总体设计,其过程由确定设计方案和结构设计两个阶段组成。

( T )

25. 只有了解用户、了解任务,才能设计出好的用户界面。 ( T )

26. 一般单元测试不可以并行进行。 ( F )

27. 测试最终是为了证明程序无错误。 ( F )

28. 通常用数据流图、数据字典和简明算法描述表示系统的逻辑模型。 ( T )

29. 数据流图就是用来刻画数据流和转换的信息系统建模技术。 ( T )

30. 软件过程设计不用遵循“自上而下,逐步求精”的原则和单入口单出口的结构

化设计思想。 ( F )

31. 判定表不适合做通用的设计工具,不能表示顺序结构、循环结构。 ( T )

32. 面向数据结构设计方法一般都包括下列任务:确定数据结构特征;用顺序、

选择和重复三种基本形式表示数据等步骤。 ( T )

33. 结构化程序设计SP强调模块采用自上而下逐步求精设计方法,单入口、单

出口标准结构。 ( T )

34. 盒图的主要优点之一是强制设计人员采用结构化设计方法。 ( T )

35. 通常紧致性好的语言一致性就好。 ( F )

36. 编程风格是在提高性能的前提下,有效地编排和组织程序以提高可读性和可

维护性。 ( F )

37. 数据输入的一般准则中包括保证信息显示方式与数据输入方式的协调一致;

允许用户定做输入格式等内容。 ( T )

38. 编码时应尽可能使用全局变量。 ( F )

39. 用户本身的技能,个性上的差异,行为方式的不同,不会对人机界面使用造

成影响。 ( F )

40. 为提高可交互性一般应提高用户对话、移动和思考的效率,即最大可能地减

少击键次数,缩短鼠标移动的距离,避免使用户产生无所适从的感觉。( T )

41. 过程式程序设计语言的基本机制包括:消息传送、数据类型的定义、多态、

子程序、控制结构。 ( F )

42. 只要完成了软件的测试工作,将软件产品交给用户,软件生命周期就结束了。

( F )

43. 模块的扇入是指该模块被其它模块调用的个数,扇入应尽可能的小。 ( F )

44. 系统测试是把软件、硬件和环境连在一起的全面测试。 ( T )

45. 软件测试是对软件规格说明、软件设计和编码的最全面、最后的审查。( T )

46. 软件生命周期中,测试的工作量最大。 ( F )

47. 软件测试的目的是为了证明一个软件的设计没有错误,只有没有任何错误的

软件才能使用。 ( F )

48. 测试计划、测试用例、出错统计和有关的分析报告一般不用长期保存。( F )

49. 软件测试中,应该尽量穷尽所有的数据,以便保证测试的质量。 ( F )

50. 黑盒测试法可有效的检查模块的内部逻辑结构的正确性。 ( T )

51. 测试一般情况下是以白盒法为主黑盒法作为补充。 ( F )

52. 文档记录软件开发活动和阶段成果,具有永久性,可供人或机器阅读。( T )

53. 结构化维护用于待维护的软件的配置是完整的维护。 ( T )

54. 非结构化维护用于软件的配置中只有源代码维护。 ( T )

55. 完善性维护是提高或完善软件的性能。 ( T )

56. 定软件项目进度表的途径之一是软件开发小组根据提供软件产品的最后期

限从后往前安排时间。 ( T )

57. 重构工程也称修复和改造工程,它是在逆向工程所获信息的基础上修改或重

构已有的系统,产生系统的一个新版本。 ( T )

58. 对象是属性和相关操作的封装。 ( T )

59. 面向对象中的继承是指子类能够直接获得父类已有的性质和特征,而无需重

新定义。 ( T )

60. 面向对象设计是将面向对象分析所创建的分析模型进一步细化形成软件设

计模型的过程。 ( T )

名词解释——传统方法学部分

1. 软件工程

2. 软件过程

3. 软件生命周期

4. 软件危机

5. 结构化分析

6. 实体-联系图

7. 数据字典

8. 结构化设计

9. 模块化

10. 逐步求精

11. 信息隐藏

12. 耦合

13. 内聚

14. 作用域

15. 控制域

16. 扇出

17. 扇入

18. 模块独立性

19. 结构化程序设计

20. 编码风格

21. 白盒测试

22. 黑盒测试

23. 单元测试

24. 集成测试

25. 系统测试

26. Alpha测试

27. Beta测试

28. 回归测试

29. 软件维护

30. 改正性维护

31. 完善性维护

32. 适应性维护

33. 预防性维护

34. 软件可维护性

35. 软件维护副作用

36. 可重用性

37. 可靠性

38. 可用性

名词解释——面向对象方法学部分

1. 对象

2. 类

3. 继承

4. 多态性

5. 消息

简答题

1. 简述软件危机发生的原因。

答案:

(1)软件危机产生的客观原因

a. 软件与硬件产品不同,软件是“开发的”而非“制造的”。软件的开发过程难以管理

和控制,产品质量也不好准确把握;

b. 软件没有“磨损”,但是它会不断“退化”;

c. 现代的软件都规模庞大,而程序的复杂性是随其规模的扩大呈指数增加。

软件自身的特点,也使其不同于其它硬件产品的标准化,造成了开发和维护的困难。

(2)软件危机产生的主观原因

a. 对用户的要求没有完整和准确的认识就匆忙编写程序是软件开发失败的主要原因;

b. 对软件的开发过程的认识不准确也是造成软件危机的原因之一;

c. 对软件质量的重视不够是造成软件开发成本激增的主要原因。

2. 简述软件危机的几种常见表现形式。

答案:

第一,软件开发成本和进度估计极不准确。实际成本和开发进度往往超过预期。

第二,软件产品质量较差,可靠性低。

第三,用户对开发出来的软件产品不满意。其原因一般是开发人员与用户之间的交流不

充分,仅对用户需求有了一个模糊的认识就匆忙开始写程序。这样的结果就是用户对于所谓

已经完成的软件很不满意。

第四,开发出来的软件几乎是不可维护的。实际项目中的错误往往难以修改,而且不能

适应软硬件环境的变化,也无法添加用户需要的一些新功能。

第五,软件产品缺少应有的文档资料。这就导致了软件开发、管理、审查、用户交流及

后期维护等方面存在一系列的问题。

第六,软件开发的生产率远远低于计算机硬件发展速度和用户的需求,造成了软件产品

的供不应求。

3. 可将软件生存周期划分为哪3个过程和哪9个阶段。

答案:

(1)3个过程是:软件定义过程、软件开发过程、软件使用与维护过程。

(2)9个阶段有:可行性研究、需求分析、概要设计、详细设计、实现、组装测试、验收

测试、使用与维护、退役。

4. 试述瀑布模型的优点和缺点?

答案:

优点:(1)各阶段之间有依赖性和严格的顺序性。在瀑布模型中,每个阶段的工作都依

赖前一阶段的输出文档,前一阶段没有完成就不能开始后一阶段工作。(2)推迟实现。正是

由于严格的顺序性,使用瀑布模型开发的软件产品“面世”都相对较晚,瀑布模型要求在分

析和设计阶段清楚地区分逻辑设计和物理设计,尽量将程序的物理实现推迟。(3)严格的阶

段质保。为了避免最后的灾难性后果,瀑布模型要求在每个阶段都必须完成规定的文档,并

通过阶段评审。这样可以尽可能地发现早期分析和设计的问题,保证软件产品质量、减低开

发和维护成本。(4)文档驱动。瀑布模型几乎完全依赖于书面的文档,可以迫使开发人员采

用规范的方法,认真提交各个阶段的文档,为以后的维护工作打下良好的基础。

缺点:(1)瀑布模型导致了开发人员“阻塞”严重,开发小组中的很多人员需要等待其

他人员完成相关的任务;(2)实际项目很少严格遵守瀑布模型的顺序,这样会造成很多混乱;

(3)用户在开始阶段往往不能准确描述自己的需求,从而使项目在开始阶段就存在不确定

性,而且可能在项目接近尾声时发生重大缺陷,这些都是用户无法承受的。

5. 简述可行性研究的步骤。

答案:

进行可行性研究首先需要进一步分析和澄清问题定义,初步确定项目的规模和目标,确

定项目的约束和限制,并将它们清楚的列出来。然后分析员进行简要的需求分析抽象出该项

目的逻辑结构,建立逻辑模型。再从逻辑模型出发,经过压缩的设计,探索出若干种可供选

择的主要解决方案,对于每一种解决方案都要分析它的可行性。并为每个可行的解法制定一

个粗略的实现进度。

6. 简述采用信息隐藏原理指导模块设计优点。

答案:

信息隐蔽是指在设计中确定模块时,使得一个模块内包含的信息(过程或数据),对于

不需要这些信息的其它模块来说,是不能访问的。

通过信息隐蔽,可以定义和实施对模块的过程细节和局部数据结构的存取限制。信息隐

蔽为软件系统的修改、测试及以后的维护都带来好处。信息隐蔽可以有效地防止错误的扩大

与传播。

7. 用SD方法将数据流图转换为软件结构,简述其过程。

答案:确定信息流的类型;划定流界;

将数据流图映射为程序结构;提取层次控制结构;

通过设计复审和启发式策略精化结构。

8. 简述启发式设计策略最常用的几条。

答案:

(1)模块独立性准则。设计出软件的初步结构后,应该审查分析这个结构,通过模块

分解或合并,力求做到降低耦合提高内聚,保持模块相对独立性。

(2)模块的作用域应该在控制域内。一个模块的影响范围应在其控制范围之内,且条

件判定所在的模块应与受其影响的模块在层次上尽量接近。

(3)软件结构的形态特征准则。深度和宽度能粗略地反映系统的规模和复杂程度。从

形态上看,软件结构中各模块应满足顶层扇出数较高一些,中间层扇出数较低一些,底层扇

入数较高一些。

(4)模块大小准则。在考虑模块的独立性时,为了增加可理解性,模块的大小最好在

50-150条语句左右。

(5)模块的接口准则。a. 模块接口设计要简单,以便降低复杂程度和冗余度。b. 设计

功能可预测并能得到验证的模块。c. 适当划分模块规模,以保持其独立性。

9. 简述软件维护的困难主要体现在哪几个方面?

答案:

(1)理解别人编的程序通常非常困难,而且困难程度随着软件配置成份的减少而迅速

增加,如果仅有程序代码而没有程序注释,则会出现严重的问题;

(2)分析与理解软件文档是进行维护的第一步,但是需要维护的软件往往没有合格的

开发文档,或者文档资料明显不足;

(3)软件开发人员和软件维护人员在时间上的差异。在对软件进行维护时,不要指望

有开发人员对软件进行仔细说明。

(4)绝大多数软件在设计时没有考虑未来的修改。除非使用强调模块独立原理的设计

方法学,否则修改软件既困难又容易发生差错。

(5)软件维护工作容易遇到挫折,因而软件维护是一项大多数人都不愿意从事的工作。

10. 试述软件测试过程。

答案:

单元测试保证模块正确工作,多采用白盒测试;

综合测试保证模块集成到一起后正常工作,多为黑盒测试,并铺以白盒技术;

确认测试保证软件需求的满足,采用黑盒测试;

系统测试保证软件与其他系统元素合成后达到系统各项性能要求。

11. 黑盒测试完全不考虑程序的内部结构和处理过程,测试仅在程序界面上进

行。因此黑盒测试设计测试用例旨在说明什么?

答案:

黑盒测试完全不考虑程序的内部结构和处理过程,测试仅在程序界面上进行。因此黑

盒测试设计测试用例旨在说明:

①软件的功能是否可操作;

②程序能否适当地接收输入数据并产生正确的输出结果;

③能否保持外部信息( 如数据文件) 的完整性。

12. 简述在测试中采用自顶向下集成和自底向上集成的优缺点。

答案:

a. 自顶向下集成:优点在于能尽早地对程序的主要控制和决策机制进行检验,因此较

早地发现错误。缺点是在测试较高层模块时,低层处理采用桩模块替代,不能反映真实情况,

重要数据不能及时回送到上层模块,因此测试并不充分。

b. 自底向上集成方法不用桩模块,测试用例的设计亦相对简单,但缺点是程序最后一

个模块加入时才具有整体形象。它与自顶向下综合测试方法的优缺点正好相反。

13. 单元测试的测试重点主要有哪些?

答案:

单元测试的测试重点如下:

(1)模块接口测试。检查进出模块的数据是否正确,对模块接口数据流的测试必须在

任何其它测试之前进行,如果数据不能正确地输入/输出,所有其它测试都是不切实际的。

(2)模块局部数据结构测试。局部数据结构是常见的错误来源。检查局部数据结构在

程序执行过程中能否保持完整、正确是模块局部数据结构测试的重要任务。

(3)模块重要的执行路径测试。选择最有代表性、最可能发现错误的执行通路进行测

试是十分关键的。

(4)模块内部错误处理测试。认真测试程序中的出错处理通路,保证在真的出现错误

时执行相应的出错处理通路或干净地结束处理。

(5)模块边界条件测试。软件经常在边界处出现错误,模块边界条件测试就是要检查

程序对临界数据的处理是否正确。

14. 一般而言,衡量某种程序语言是否适合于特定的项目,应考虑哪些因素?

答案:

(1)待开发软件的应用领域。选择语言时应该充分考虑目标系统的应用范围。

(2)用户的要求。如果所开发的系统由用户负责维护,用户通常要求使用他们熟悉的

语言书写程序。

(3)软件的运行环境。运行目标系统的环境中可以提供的编译程序往往限制了可以选

用的语言范围。

(4)软件开发人员的知识。应该选择一种已经为程序员所熟悉的语言。

(5)软件的可移植性要求。如果目标系统将在几台不同的计算机上运行,或者预期的

使用寿命很长,那么选择一种标准化程度高、程序可移植性好的语言就非常重要。


本文标签: 软件 模块 设计 测试 数据