软件工程基础(汇总资料-本科课程) 下载本文

一、填空题

1.软件是一种产品,同时又是开发和运行产品的载体。

2.软件危机指的是软件开发和维护过程中遇到的一系列严重问题。

3.软件危机包括下面两方面的问题:如何开发软件,满足对软件的日益增长的需求和如何维护数量不断膨胀的已有软件。

4.软件工程学的内容可包括:理论、结构、方法、工具、环境、管理、规范等。(全部加下划线表示考查其中某1-2个空,下同)

5.软件生存周期一般可分为以下阶段:问题定义、可行性研究、需求分析、设计、编码、测试、运行与维护。

6.软件生存周期也可分为三个大阶段:计划阶段、开发阶段、维护阶段。

7.可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。 8.可行性研究的目的不是解决问题,而是确定问题是否值得去解决。

9.一般说来,应从经济可行性、技术可行性、运行可行性、法律可行性、开发可行性等方面研究可行性。

10.只有通过软件需求分析,才能把软件功能和性能的总体概念描述为具体的软件需求规格说明。

11.需求分析的基本任务是准确的回答系统必须做什么这个问题。 12.需求分析所要做的工作是深入描述软件的功能和性能。 13.需求分析阶段研究的对象是软件项目的用户要求。

14.需求分析结束时交出的文档中应该包括详细的数据流图DFD,数据字典DD,一组简明的算法描述。

15.对系统的综合需求主要有:系统功能需求、系统性能需求、运行需求、将来可能提出的需求。

16.任何信息处理系统的基本功能都是把输入数据变成需要的输出信息。 17.结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法。 18.数据域具有三种属性:数据流、数据内容和数据结构。 19.数据流图是描述数据处理过程的工具。

20.数据流图从数据传递和加工的角度,以图形的方式描述数据流从输入到输出的传输变换过程。

21.数据流图的特性有:抽象性、概括性、层次性。

22.数据字典的作用是在软件分析和设计的过程中提供关于数据的描述信息。 23.数据流图和数据字典共同构成系统的逻辑模型。

24.必须从一致性、完整性、现实性、有效性等四个不同角度验证软件需求的正确性。 25.信息隐蔽原理是指每一个模块的实现细节对其它模块来说是隐蔽的。 26.耦合是对一个软件结构内各个模块之间互连程度的度量。

27.模块间耦合程度强弱的种类有:非直接耦合、数据耦合、控制耦合、公共环境耦合、内容耦合、标记耦合、外部耦合。

28.内聚标志着一个模块内各个元素彼此结合的紧密程度。

29. Jackson图有三种逻辑数据结构:顺序结构、选择结构、重复结构。 30. Warnier程序设计方法是一种面向数据结构的设计方法。 31.详细设计又称过程设计。

32.面向对象方法是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系统的软件开发方法。

33.面向对象方法的基本思想是从现实世界中客观存在的事物出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式。

34.面向对象的软件工程学方法是面向对象方法在软件工程领域的全面运用。

35.面向对象的软件工程学方法包括:面向对象的分析、面向对象的设计、面向对象的编程、面向对象的测试和面向对象的软件维护等主要内容。

36. OO方法中把组成客观世界的实体称为问题空间的对象。 37.所谓的方法,它们实际上是类对象上的各种操作。

38.类有方法和数据集成,它是关于对象性质的描述,包括外部特性和内部实现两个方面。

39. UML即:标准建模语言。

40. UML包括:UML语义和UML表示法两个部分。

41.标准UML的重要内容可以由五类图来定义:用例图、静态图、行为图、交互图、实现图。

42.所谓编码就是把软件设计的结果翻译成计算机可以理解的形式,即用某种程序设计语言书写的程序。

43.从应用特点看,高级语言可以分为基础语言、现代语言、专用语言三类。 44.程序的注释一般分为:序言性注释和功能性注释。 45.程序效率是指程序的执行速度及程序占用的存储空间。

46.源程序的效率与详细设计阶段确定的(算法)的效率直接有关。 47.冗余是改善系统(可靠性)的一种重要技术。 48.防错程序设计可以分为主动式和被动式两种

49.按照测试过程是否在实际应用环境中来分,有静态分析和动态测试。

50.大型软件系统的测试基本上由下述四个步骤组成:单元测试、集成测试、确认测试、系统测试。

51.在软件运行维护阶段对软件产品所进行的修改就是维护。 二、判断题

52.在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题,软件维护比硬件维护要复杂得多。(对)

53.软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。(对)

54.软件的开发至今尚未完全摆脱手工的开发方式。(对) 55.软件的开发费用越来越高,成本相当昂贵。(对) 56.软件的开发费用越来越低,但成本仍然相当昂贵。(错) 57.在需求分析阶段,所有的用户要求都是合理的,必须满足。(错)

58.在需求分析阶段,不是所有的用户要求都是合理的,没有必要全部满足。(对) 59.任何一个软件系统本质上都是信息处理系统。(对) 60.数据流图中可以带有控制流。(错) 61.数据流图中不可以带有控制流。(对)

62.模块是数据说明、可执行语句等程序对象的集合。(对)

63. Jackson系统开发方法是一种典型的面向数据结构的分析设计方法。(对) 64. Jackson系统开发方法是一种典型的面向对象的分析设计方法。(错) 65. Warnier程序设计方法是一种面向数据结构的设计方法。(对) 66. Warnier程序设计方法是一种面向对象的设计方法。(错) 67.详细设计是编码的前奏。(对)

68.详细设计的目的是为软件结构图中的每一个模块确定使用的算法和块内的数据结构。(对)

69.良好的编码风格有助于编写可靠而有容易维护的程序,编码风格在很大程度上决定程序的质量和机器执行的速度。(错)

70.良好的编码风格有助于编写可靠而有容易维护的程序,编码风格在很大程度上决定程序的质量,但不影响机器执行程序的速度。(对)

71.源程序的效率与详细设计阶段确定的算法的效率直接有关。(对) 72.冗余是改善系统可靠性的一种重要技术。(对) 73.冗余是改善系统速度的一种重要技术。(错) 74.判定覆盖比语句覆盖强有效。(对) 75.语句覆盖比判定覆盖强有效。(错)

76.软件开发所需的资源可以画成一个金字塔,塔的最基本的资源是人。(对) 三、简答分析题

77.软件的发展经过哪几个阶段?

程序设计阶段、程序系统阶段、软件工程阶段、第四阶段。

78.软件的定义是什么?

在运行中能够提供所希望的功能和性能的指令集(程序);使程序能够正确运行的数据结构;描述程序研制过程、方法所用的文档。

79.基于软件的功能,软件分为哪几种? 系统软件、支撑软件、应用软件。

80.基于软件的工作方式分,软件分为哪几种?

实时处理软件、分时软件、交互式软件、批处理软件。 81.基于软件的规模分,软件分为哪几种?

微型软件、小型软件、中型软件、大型软件、甚大型软件、极大型软件。 82.基于软件的服务对象的范围分,软件分为哪几种? 定制软件、产品软件。

83.软件危机包括哪两方面的问题?

(1)如何开发软件,满足对软件的日益增长的需求。(2)如何维护数量不断膨胀的已有软件。

84.产生软件危机的原因是什么?

(1)软件是计算机系统中的逻辑部件而不是物理部件。(2)软件本身独有的特点确实给开发和维护带来一些客观困难。(3)开发和管理人员只重视开发而轻视问题的定义,使软件产品无法满足用户的需求。(4)软件管理技术不能满足现代软件开发的需要,没有统一的软件质量规范。(5)在软件的开发与维护关系问题上存在错误的概念。

85.软件工程的原则是什么? (1)分解。(2)独立性。(3)一致性。(4)确定性。 86.软件开发模型有哪些? (1)瀑布模型。(2)螺旋模型。(3)第四代技术模型。(4)原型模型。

87.某图书馆闭架借书流程如下:读者须先被验明证件后才能进入查询室。读者在查询室内通过检书卡来查找自己所需的图书。找到所需图书并填好索书单到服务台借书。如果所借图书还有剩余,管理员将填好借书单,从库房中取出图书交于读者,否则读者借不了图书。下图是上述系统的系统流程图,请填写空缺。

1:验证 2:图书查询 3:检书卡 4:借书 5:取书 88.需求分析的原则是什么?

(1)必须能够表达和理解问题的数据域和功能域。(2)自顶向下、逐层分解问题。(3)要给出系统的逻辑视图和物理视图。

89.一家计算机公司的全部软件产品有系统软件和应用软件,其中系统软件有操作系统、编译程序和包括编辑程序、测试驱动程序、设计辅助工具等的软件工具三类。请画出系统的Warnier图和层次方框图。

操作系

系统软编译程 编译程

软件工软 件产

测试驱动

应用软

设计辅助工

90.在概要设计中两个主要任务是什么?

(1)将系统划分成物理元素,即程序、文件、数据库、文档等等。(2)设计软件结构,即将需求规格转换为体系结构,划分出程序的模块组成,模块间的相互关系。

91.概要设计的过程是怎样的? (1)设计系统方案。(2)选取一组合理的方案。(3)推荐最佳实施方案。(4)功能分解。(5)软件结构设计。(6)数据库设计、文件结构设计。(7)制定测试计划。(8)编写概要设计文档。(9)审查与复审概要设计文档。

92.为何要强调模块的独立性?

(1)由于能够分割功能而且接口可以简化,具有独立的模块软件比较容易开发出来。(2)修改设计和程序需要的工作量比较小,错误传播范围小,需要扩充功能时能够插入模块,使得独立的模块比较容易测试和维护。

93.如何改进软件设计、提高软件质量? (1)提高模块的独立性。(2)模块规模应该适中。(3)适当选择深度、宽度、扇出和扇入。(4)模块的作用域应该在控制域之内。(5)力争降低模块接口的复杂程度。(6)设计单入口单出口的模块。(7)模块功能应该可以预测。

94.用Jackson 图表示下面二维表格:

工人工资单

表头 工号 姓名 性别 工龄 月工资

. . 表体 .

95.详细设计的原则是什么?

(1)模块的逻辑描述要清晰易读、正确可靠。(2)采用结构化设计方法,改善控制结构,降低程序的复杂程度,从而提高程序的可读性、可测试性、可维护性。(3)选择恰当描

述工具来描述各模块算法。

96.写出下面伪码程序的程序流程图和N-S图 BEGIN A

If x1 then

Repeat until x2 If x3 then C Else D

End if

End repeat Else E H End if I END

97.将下面的程序流程图转换为N-S图。

98.什么是面向对象技术?

一整套关于如何看待软件系统与现实世界的关系,以什么观点来研究问题并进行求解,以及如何进行系统构造的软件方法学。

99.面向对象方法的基本思想是什么?

从现实世界中客观存在的事物出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式。

100.面向对象的软件工程学方法包括哪些内容?

面向对象的分析、面向对象的设计、面向对象的编程、面向对象的测试和面向对象的软件维护等主要内容。

101.什么是对象?

对象是问题域或实现域中某些事物的一个抽象,它反映该事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组服务的封装体。

102.什么是封装? 封装定义为:

(1)一个清楚的边界,所有的对象的内部软件的范围被限定在这个边界内。(2)一个接口,这个接口描述这个对象和其他的对象之间相互的作用。(3)受保护的内部实现。

103.栈是一种常见的数据结构,它的状态和服务如下:

请画出它的状态转换图。 状 态 空 半满 满 服务 压入 弹出 可执行 不可执行 可执行 可执行 不可执行 可执行

104.标准UML的重要内容可以哪五类图来定义? 用例图、静态图、行为图、交互图、实现图。 105.什么是编码?

所谓编码就是把软件设计的结果翻译成计算机可以理解的形式,即用某种程序设计语言书写的程序。

106.要求进行软件维护的原因有哪些?

(1)改正在特定的使用条件下暴露出来的一些潜在程序错误或设计缺陷。(2)因在软件使用过程中数据环境发生变化或处理环境发生变化,需要修改软件加以适应这种变化。(3)用户和数据处理人员在使用时常提出改进现有功能,增加新的功能,以及改善总体性能的要求。

107.软件维护的步骤有哪些? (1)分析和理解程序。(2)修改程序。(3)重新验证程序。(4)维护组织。 108.软件管理的主要功能有哪些? (1)制定计划。(2)建立项目组织。(3)配备人员。(4)指导。

软件工程基础 一.选择题

1。软件需求分析阶段的工作,可以分为4个方面:需求获取,需求分析,编写需求规格说明书以及(B)

A).用户B).需求审评C).总结D).都不正确

2。在原型法中称(A)为用户/设计者,开发人员根据用户需求不断修改原型,直到满足用户要求为止。

A).用户B).开发人员C).系统分析员D).程序员 3。下面不属于软件工程的3个要素是(D)

A).工具B).过程C).方法D).环境

4检查软件产品是否符合需求定义的过程称为(A) A).确认测试B).集成测试C).验证测试D).验收测试 5.数据存储和数据流都是(D),仅仅是所处的状态不同。 A).分析结果B).事件C).动作D).数据 6。数据流图和(C)共同组成系统的逻辑模型。 A).HIPO图B).PD)LC).数据字典D).层次图 7。数据元素组成数据的方式的基本类型(D) A).顺序B).选择C).循环D).以上全部

8。数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是(A)。 A).控制流B).加工C).数据存储D).源和潭

9。结构化分析方法就是面向(B)的自顶向下逐步求精进行需求分析的方法。 A).目标B).数据流C).功能D).对象 10。通过(B)可以完成数据流图的细化。

A).结构分解B).功能分解C).数据分解D).系统分解 11。下面不属于软件工程原则的是(C) A).抽象B).模块化C).自底向上D).信息隐蔽

12。(D)是数据说明、可执行语句等程序对象的集合,它是单独命名的而且可以通过名字来访问。

A).模块化B).抽象C).精化D).模块

13。(C)是指让一些关系密切的软件元素在物理上彼此靠近。 A).信息隐蔽B).内聚C).局部化D).模块独立 14。面向数据流的设计方法把(D)映射成软件结构。 A).数据流B).系统结构C).控制结构D).信息流 15。程序流程图(PDF)中的箭头代表的是(B)。 A).数据流B).控制流C).调用关系D).组成关系

16。在进行软件结构设计时应该遵循的最主要的原理是(C) A).抽象B).模块化C).模块独立D).信息隐蔽

17。在结构化方法中,软件功能分解属于软件开发中的(C)阶段。 A).详细设计B).需求分析C).总体设计D).编程调试 18。在测试中,下列说法错误的是(B)

A).测试是为了发现程序中的错误而执行程序的过程 B).测试是为了表明程序的正确性

C).好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案 D).成功的测试是发现了至今为止尚未发现的错误的测试 19。下列工具中为需求分析常用工具是(D) A).PA)D)B).PFD)C).N-SD).D)FD) 20软件调试的目的是(B)

A).发现错误B).改正错误C).改善软件的性能D).挖掘软件的潜能 21。软件工程师一种(B)分阶段实现的软件程序开发的方法。 A).自底向上B).自顶向下C).逐步求精D).面向数据流

22。通过(B)机制,各种软件工具用统一的数据接口规范存取环境信息库的的信息。 A).软件工具箱B).环境集成C).软件管理和软件支持工具D).软件开发环境 23。在软件生命周期法中,用户的参与主要在(A)。

A)。软件定义期B).软件开发期C).软件维护期D).整个软件生命周期过程中 24。软件定义期问题定义阶段涉及的人员有(D)。

A).用户、使用部门负责人B).软件开发人员、用户、使用部门负责人 C).系统分析员、软件开发人员

D).系统分析员、软件开发人员、用户、使用部门负责人 25。软件详细设计主要采用的方法是(A)。

A).结构化程序设计B).模型设计C).结构化设计D).流程图设计 26。(C)应考虑对模块相联和资源共享问题进行描述和制约。 A).系统设计B).详细设计C).接口控制D).结构化编辑工具 27。(A)是程序中一个能逻辑分开的部分,也就是离散的程序单位。 A).模块B).复合语句C).循环结构D).数据块

28。软件开发的原型化方法是一种动态定义软件需求的方法,下述条件中,(A)是实施原型化方法所必需的。 Ⅰ成熟的原型化人员 Ⅱ快速的成型工具 Ⅲ需求了解的正确性

A).Ⅰ和ⅡB).Ⅱ和ⅢC).Ⅰ、Ⅱ和ⅢD).Ⅲ

29。判定树和判定表示用于描述结构化分析方法中的(B)环节的工具。 A).功能说明B).数据加工C).流程描述D).性能说明 30。概要设计的结果是提供一份(A)。 A).模块说明书B).框图C).程序D).数据流图

31。模块本身的内聚是模块独立性的重要性度量因素之一。在7类内聚中,具有最强内聚的一类是(D)。

A).顺序性内聚B).过程性内聚C).逻辑性内聚D).功能性内聚 32。计算机软件(A)。

A).计算机系统的组成部分B).不能作为商品参与交易 C).是在计算机硬件设备生产过程中生产出来的 D).只存在于计算机系统工作时

33。数据字典是对数据定义信息的集合,它所定义的对象都包含在(A)。 A).数据流图vB).程序框图C).软件结构D).方框图

34.程序流程图是一种传统的程序设计表示工具,有其优点和缺点,使用该工具是应注意(C)。 A).支持逐步求精B).考虑控制流程 C).遵守结构化设计原则D).数据结构表示

35。软件设计中设计复审是和设计本身一样重要的环节,其主要目的和作用是(B)。 A).减少测试工作量B).减免后期付出高代价C).保证软件质量 D).缩短软件开发周期

36。软件开发的结构化分析方法,常用的描述软件功能需求的工具是(C)。 A).业务流程图、处理说明B).软件流程图、模块说明 C).数据流程图、数据字典D).系统流程图、程序编码

37。软件开发的结构化设计方法,全面指导模块化分的最重要的原则应该是(C)。 A).模块高内聚B).模块低耦合 C).模块独立性D).程序模块化

38。面向数据流的软件设计方法,一般是把数据流图中得数据流化分为(B)两种流,再将数据流图映射为软件结构。 A).数据流与事务流 B).交换流和事务流 C).信息流与控制流 D).交换流和数据流

39。软件设计中,可应用于详细设计的工具有(A)。 A).程序流程图、PA)D)、方框图和伪码 B).数据流程图、PA)D)、结构图和伪码 C).业务流程图、N-S图和伪码 D).数据流程图、PA)D)、N-S图和伪码

40。软件工程方法的提出起源于软件危机,而其目的应该是最终解决软件的(D)问题。 A).产生危机B).质量保证C).开发效率D).生产工程化

41。软件开发的结构生命周期法的基本假定是认为软件需求能做到(C). A).严格定义B).初步定义C).早期冻结D).动态改变

42。软件工程的结构化分析方法强调的是分析开发对象的(C)。 A).数据流B).控制流C).时间限制D).进程通信

43。瀑布模型将软件生命周期归纳为个时期,即计划期、开发期和运行期。下列(D)不属于开发期内的工作。

A).总体设计B).详细设计C).程序设计D).维护

44。软件开发的可行性研究,一般涉及经济、技术和操作的可能性,而进行可行性研究的基本依据则是用户提出的软件(B)。

A).系统质量B).系统目标C).系统功能D).系统性能

45。软件可行性分析是着重确定系统的目标和规模。对功能、性能以及约束条件的分析应属于下列之中的(B)任务。

A).分析B).估价C).制定制度D).进度分配

46。软件可行性分析是着重确定系统的目标和规模。对功能、性能以及约束条件的分析应属于下列之中的(A)。

A).经济可行性分析B).技术可行性分析 C).操作可行性分析D).开发可行性分析

47。结构化方法将软件生命周期分为计划、开发和运行3个时期,下列任务中(B)属于计划时期的任务。

A).需求分析B).问题定义 C).总体设计D)编码

48。耦合是软件各个模块间连接的一种度量。一组模块都访问同一数据结构应属于(B)方式。 A).内容耦合B).公共耦合 C).外部耦合D).控制耦合

49。内聚是从功能角度来度量模块内的联系,按照特定次序执行元素的模块属于(C)方式。 A).逻辑内聚B).时间内聚 C).过程内聚D).顺序内聚

50。软件测试基本方法中,下列(D)不用测试实例。 A).白盒测试法B).动态测试法 C).黑盒测试法D).静态测试法

51。软件管理中,需要对软件进行配置,各阶段文档的管理属于(D)。 A).组织管理B).资源管理 C).计划管理D).版本管理

52。软件开发的结构化方法中,常用数据字典技术,其中数据加工是其组成内容之一,下述方法(D)是常采用编写加工说明的方法。 Ⅰ结构化语言

Ⅱ判定树 Ⅲ判定表

A).ⅠB).ⅡC).Ⅱ、ⅢD)..都是

53.软件工程方法的产生源于软件危机,下列(A)是产生软件危机的内在原因。 Ⅰ软件的复杂性 Ⅱ软件维护困难 Ⅲ软件成本太高 Ⅳ软件质量难保证 A).ⅠB).ⅢC).Ⅰ、ⅣD).Ⅲ、Ⅳ

54。在软件工程实施中,产生软件生命周期的概念是由(A)。 A).方法论所决定的B).开发技术划分 C).软件开发规律D).软件工程管理

55。结构化软件开发期将软件开发划分为3个阶段,其中关键的是(B)。 A).编码的正确性B).需求的准确性 C).测试的严格性D).设计的科学性

56。在结构化方法的软件需求定义中,可采用分析工具来辅助完成。下列工具中,(D)是常用的工具。

Ⅰ数据流图 Ⅱ结构图 Ⅲ数据字典 Ⅳ判定表 A).Ⅰ、ⅢB).Ⅱ、Ⅲ C).Ⅰ、Ⅱ、ⅣD).Ⅰ、Ⅲ、Ⅳ

57。软件工程的结构化分析方法具有自身的特征,下列可选内容中,(B)不具有其特征。 A).书写大量文档B).详细的界面表示 C).对数据流进行分析D).冻结应用需求

58.详细设计是软件总体设计滞后的工作。下列可选内容中,(C)不属于详细设计内容。 A).算法设计B).模块设计C).屏幕设计D).功能设计

59。软件评审时保证软件质量的重要措施,它是对软件开发阶段成果的复审。下列(A)是复审的必须内容。

Ⅰ需求复审 Ⅱ总体设计复审 Ⅲ详细设计复审 Ⅳ程序复审 A).Ⅰ、Ⅱ、ⅢB).Ⅱ、Ⅲ、ⅣC).Ⅰ、Ⅲ、ⅣD)全部

60。提高软件的可维护性可采取很多措施,下列(A)不在措施之列。 A).提供没有错误的程序B).建立质量保证制度 C).改进程序文档质量D).明确软件质量标准 61。在软件开发过程中,软件结构设计是描述(B). A).数据存储结构B).软件模块体系

C).软件结构测试D).软件控制过程 二.填空题

1软件质量与产品运行特性为,健壮性,效率,安全性,可用性,风险性和可靠性.

2软件工程的目的是成功地建造大型的软件系统,主要内容是软件开发技术和软件工程管理两方面

3软件开发方法的主要目的是克服软件手工生产,使软件开发能进入工程化和规范化的环境 4软件工程学中除重视软件开发技术的研究外,另一重要组成内容是软件的工程管理. 5瀑布模型把软件生命周期划分为软件定义,软件开发,与运行与维修3个阶段,而没个阶段又可分为若干个小更小的阶段.

6软件文档是软件工程实施中的重要成分,它不仅是软件开发的各阶段的重要依据,而且也是影响软件的可维护性.

7文档是软件开发人员,维护人员,用户,以及计算机之间的桥梁.

8在软件生命周期的各个阶段都会产生一系列的文件,如手册,数据和程序等,他们总称为软件配置

9软件工程开发的可行性研究是决定软件项目是否继续开发的关键,而可行性研究的结论主要是关于软件系统目标

10.软件计划是软件开发的早期和重要阶段,此阶段要求交互和配合的是分析人员和用户人员 11.可行性研究的目的是要用最小的代价,在尽可能段的时间内确定软件项目的可行性 12.从可行性研究从技术可行性经济可行性,和社会可行性3各方面进行论证. 13软件成本—效益分析的目的是从经济的角度评价软件项目的开发是否可行.

14.在可行性研究中,要用软件的描述工具画出现行系统流程图,它反映了现行系统的基本功能和处理流程.

15.流程系统图表达了系统中各个元素之间信息的流动情况.

16需求分析阶段需要编写的文档有:需求规格说明书,初步用户使用手册和确认测试计划. 17.软件计划包括总体设计(或概要设计)和详细设计两个阶段. 18.软件概要设计的成果是软件设计说明书.

19.软件的详细设计,也称模块设计.它要求设计人员为每一个程序模块确定所使用的算法,数据结构,接口细节和输入,输出数据等.

20.结构化分析方法是面向数据流进行分析的方法.

21.在软件开发的结构化方法中,构成系统逻辑模型的是数据流和数据字典.

22.数据流图是描述数据在软件中流动和被处理的过程,是软件模型的一种图示,它一般包括4种图形符号:变换/加工,外部实体,数据流向和数据储存.

23.判定表是一种用以描述软件加工时组合条件的一种图示方法,一般它由条件和条件项目以及操作部和操作组成.

24.数据字典有4类条目,它们是数据项,数据流,数据储存和基本加工.

25.数据流图采用4种符号表示数据储存,数据源点和终点,数据流向和数据加工. 26.面向数据流的软件设计中,一般是把数据流图的数据流划分为变换流和事物流 27.结构化分析方法用于加工逻辑的工具有结构化语言、判定表、判定树共三种工具。 28.在软件研制过程中,CASE是指计算机辅助软件工程。

29.计算机辅助软件工程(CASE)的目标是实现软件开发各个阶段的自动化。 30.PAD是一种详细设计工具。

31.模块的独立性可以通过软件的耦合性和内聚性这两个指标来衡量。 32.软件模块独立性的两个定性度量标准是内聚性和耦合性。 33.为了便于软件模块的维护和测试,模块的接口应当简单。

34.在白盒法测试中,对程序的语句逻辑有6种覆盖技术,其中发现错误能力最强的技术是 路径覆盖技术。

35.若有一个计算类型程序,它的输入量只有一个X,其范围是[-1.0,1.0]。现在输入的 角度考虑设计一组测试该程序的测试用例为-1.001,-1.0,1.0,1.001,设计这组测 试的方法是边界值分析法。

36.软件测试中路径覆盖测试是整个测试的基础,它是对软件的结构进行测试。 37.软件工程的提出起源于软件危机,其目的是最终解决软件的生产工程化。 38.回归测试是校正性维护中最常运用的方法。 39.软件复审时,其主要的复审对象是软件文档。 40.软件项目开发计划属于管理文档。

《软件工程》期末试卷(A卷) 题号 得分

一 二 三 四 五 总分

一.单项选择题(每小题1分,共22分)

1.对象实现了数据和操作的结合,使数据和操作( C )于对象的统一体中。 A.结合

B.隐藏

C.封装

D.抽象

2.软件生命周期中所花费用最多的阶段是( D )。 A.详细设计

B.软件编码

C.软件测试

D.软件维护

3.需求分析中开发人员要从用户那里了解( A )。 A.软件做什么

B.用户使用界面 C.输入的信息

D.软件的规模

4.测试的关键问题是( D )。 A.如何组织对软件的评审 C.如何采用综合策略

B.如何验证程序的正确性 D.如何选择测试用例

5.( D )是将系统化的、规范的、可定量的方法应用于软件的开发、运行和维护的过程,它包括方法、工具和过程三个要素。 A.软件过程

B.软件测试 D.软件工程方法学

C.软件生命周期

6.( A )意味着一个操作在不同的类中可以有不同的实现方式。 A.多态性

B.多继承

C.类的可复用

D.信息隐藏

7.单元测试的测试用例主要根据( D )的结果来设计。 A.需求分析

B.源程序

C.概要设计

D.详细设计

8.随着软硬件环境变化而修改软件的过程是( B )。 A.校正性维护 C.完善性维护

B.适应性维护 D.预防性维护

9.在白盒测试技术测试用例的设计中,( A )是最弱的覆盖标准。 A.语句覆盖

B.路径覆盖 D.判定覆盖

C.条件组合覆盖

10.结构化程序设计的一种基本方法是( C )。 A.筛选法

B.迭代法 D.递归法

C.逐步求精法

11.不适合作为科学工程计算的程序设计语言是( D )。 A.Pascal C.Fortran

B.C

D.Prolog

12.只有单重继承的类层次结构是( C )层次结构。 A.网状型 C.树型

B.星型 D.环型

13.面向对象的开发方法中,( C )将是面向对象技术领域内占主导地位的标准建模语言。 A.Booch方法

B.Coad方法

C.UML语言

D.OMT方法

14.瀑布模型本质上是一种( A )。 A.线性顺序模型 C.线性迭代模型

B.顺序迭代模型 D.及早见产品模型

15.软件维护产生的副作用,是指( C )。 A.开发时的错误

B.隐含的错误 D.运行时误操作

C.因修改软件而造成的错误

16.软件详细设计的主要任务是确定每个模块的( A )。 A.算法和使用的数据结构 C.功能

B.外部接口

D.编程

17.软件结构图的形态特征能反映程序重用率的是( C )。 A.深度

B.宽度

C.扇入

D.扇出

18.为了提高模块的独立性,模块内部最好是( C )。 A.逻辑内聚 C.功能内聚

B.时间内聚 D.通信内聚

19.软件结构图中,模块框之间若有直线连接,表示它们之间存在( A )。 A.调用关系 C.链接关系

B.组成关系 D.顺序执行关系

20.“软件危机”是指( C )。

计算机病毒的出现 B.利用计算机进行经济犯罪活动 C.软件开发和维护中出现的一系列问题 D.人们过分迷恋计算机系统 21.具有风险分析的软件生命周期模型是( C )。 A.瀑布模型 C.螺旋模型

B.喷泉模型 D.增量模型

22.数据流图(DFD)中的每个数据处理至少需要( D )。 A.一个输入数据流

B.一个输出数据流

D.一个输入数据流和一个输出流

C.一个输入或者输出数据流

二.判断题(每小题2分,共24分)

1.文档是软件产品的一部分,没有文档的软件就不称其为软件。( Y )

2.需求规格说明书在软件开发中具有重要的作用,它也可以作为软件可行性分析的依据。( N )

3.数据流图建立系统的功能模型,它由数据流、数据处理和数据存贮组成。(N ) 4.在结构化分析建模中要建立的是对象模型、功能模型和行为模型,它们以数据字典为核心。( N )

5.好的测试是用少量的测试用例运行程序,发现被测程序尽可能多的错误。(Y ) 6.边界值分析方法是取输入/输出等价类的边界值来构成测试用例的测试方法。(Y ) 7.在软件开发的过程中,若能推迟暴露其中的错误,则为修复和改正错误所花费的代价就会降低。( N )

8.在需求分析中,分析员要从用户那里解决的最重要的问题是明确软件做什么。 ( Y )

9.软件需求规格说明书在软件开发中具有重要的作用,是软件可行性分析的依据。( N ) 10.面向对象方法学的四要素是对象、类、继承和消息通信。( Y ) 11.详细设计的结果基本最终决定了软件的质量。( Y )

12.在详细设计中常采用的工具有层次图、PAD(问题分析图)、程序流程图、盒图等。

( N )

三.填空题(每空2分,共24分)

1.为了便于对照检查,测试用例应由输入数据和预期的 输出结果 两部分组成。 2.软件结构是以 模块 为基础而组成的一种控制层次结构。

3.如果知道软件的规格说明书描述的程序功能,那么就可以采用 黑盒 进行

测试。

4.当A模块调用B模块时,若两个模块之间传递的是数值型参数,则这两个模块的耦合方式是 数值耦合 。

5.软件概要设计关键的一步是 确定软件体系结构 _____,它直接影响下一阶段详细设计和编码的工作。

6.数据流图中的箭头表示 数据流 ,椭圆或圆形表示 数据处理 ,矩形表示 数据源点或终点 。

7.软件开发是一个自顶向下逐步细化和求精过程,而软件测试是一个___自底向上或相反____________集成的过程。

8.按数据流的类型,面向数据流的设计方法有两种设计策略,它们是变换分析设计和 事务分析设计 。

9.数据流图仅反映系统必须完成的逻辑功能,所以它是一种 功能 模型。 10.软件结构中的 深度 表示的软件的控制层数,它往往能够粗略地标志一个系统的大小和复杂程度。

四.简答题(每小题5分,共10分)

1.衡量模块独立性的两个定性标准是什么(2分)?这两个标准的定义分别是什么(2分)?在我们的软件设计中,关于模块独立性我们追求的目标是什么(1分)? 2.简述结构化程序设计方法的基本特点。(5分) 五.应用题(第一小题8分,第二小题12分,共20分) 1.某旅馆的电话服务如下:(8分)

可以拨分机号码和外线号码。分机号是从7201至7299。外线号码先拨9,然后是市话号码或长话号码。长话号码是以区号和市话号码组成。区号是从100到300中任意的数字串。市话号码是以局号和分局号组成,局号可以是455、466、888、552中任意一个号码。分局号是任意长度为4的数字串。

要求:写出在数据字典中,电话号码的数据条目的定义(即组成)。 2.下图是一个被测程序的流程图,请按照要求完成下列问题。(共12分) (1)根据该程序流程图画出该程序的流图;(3分) (2)计算该流图的环形复杂度;(3分) (3)确定独立路径的集合;(3分)

(4)设计测试用例以满足逻辑覆盖的判定覆盖标准。(3分) 附录:答案及评分标准

一.单项选择题(每小题1分,共22分) 1.(C)2.(D)3.(A)4.(D)5.(D) 6.(A)7、(D)8.(B)9.(A)10.(C) 11.(D)12.(C)13.(C)14.(A)15.(C) 16.(A)17.(C)18.(C)19.(A)20.(C) 21.(C)22.(D)

二.判断题(每小题2分,共24分) 1.对2.错3.错4.错5.对6.对 7.错8.对9.错10.对11.对12.错

三.填空题(每小题2分,共24分) 1.输出结果 2.模块 3.黑盒测试方法 4.数值耦合

5.确定软件的体系结构

6.数据流,数据处理,数据的源点/终点 7.自底向上或相反 8.事务分析设计 9.功能 10.深度

四.简答题(每小题5分,共10分)

1.衡量模块独立性的两个定性标准是什么(2分)?这两个标准的定义分别是什么(2分)?在我们的软件设计中,关于模块独立性我们追求的目标是什么(1分)? 答:衡量模块独立性的两个定性标准是内聚和耦合(2分)。

耦合是指对一个软件结构内不同模块彼此之间互相依赖(连接)的紧密程度;而内聚则标志一个模块内部各个元素彼此结合的紧密程度。(2分)。

在我们的软件设计中,关于模块独立性我们追求的目标是紧密内聚松散耦合(1分)。 2.简述结构化程序设计方法的基本特点。(5分) 答:

1).是尽可能少用goto语句的程序设计方法;

2).每个代码块都单入单出;

3).使用控制结构:顺序、选择和循环+Do_UNTIL和Do_CASE; 4).自顶向下逐步求精。

五.应用题(每小题10分,共20分) 1.某旅馆的电话服务如下:(8分)

可以拨分机号码和外线号码。分机号是从7201至7299。外线号码先拨9,然后是市话号码或长话号码。长话号码是以区号和市话号码组成。区号是从100到300中任意的数字串。市话号码是以局号和分局号组成,局号可以是455、466、888、552中任意一个号码。分局号是任意长度为4的数字串。

要求:写出在数据字典中,电话号码的数据条目的定义(即组成)。 答:

电话号码=[分机号|外线号码] 分机号=7201..7299

外线号码=9+[市话号码|长话号码] 长话号码=区号+市话号码 区号=100..300

市话号码=局号+分局号 局号=[455|466|888|552] 分局号=4{0..9}4 2.略

一、判断题(每题2分,共30分)

1.螺旋模型是在瀑布模型和增量模型的基础上增加了风险分析活动。(对)

2.数据字典是对数据流图中的数据流,加工、数据存储、数据的源和终点进行详细定义。

(错)

3.JAVA语言编译器是一个CASE工具。(对)。

4.软件是指用程序设计语言(如PASCAL ,C,VISUAL BASIC 等)编写的程序,软件开

发实际上就是编写程序代码。(错)

5.软件模块之间的耦合性越弱越发。(对) 6.数据库设计说明书是一个软件配置项(对)

7.在面向对象的软件开发方法中,每个类都存在其相应的对象,类是对象的实例,对象

是生成类的模板。(错)

8.过程描述语言可以用于描述软件的系统结构。(错)

9.如果通过软件测试没有发现错误,则说明软件是正确的。(错) 10.快速原型模型可以有效地适应用户需求的动态变化。(对)

11.模块化,信息隐藏,抽象和逐步求精的软件设计原则有助于得到高内聚,低耦合度

的软件产品。(对) 审

2.在面向对象软件开发方法中,类与类之间主要有以下结构关系(1) (1)继承和聚集(2)继承和一般(3)聚集和消息传递(4)继承和方法调用 3.以下哪一项不是软件危机的表现形式(3)

(1)成本高(2)生产率低(3)技术发展快(4)质量得不到保证 4.以下哪一项不是面向对象的特征(4)

(1)多态性(2)继承性(3)封装性(4)过程调用 5.面向对象模型主要由以下哪些模型组成(1)

(1)对象模型、动态模型、功能模型(2)对象模型、数据模型、功能模型(3)数据模12.集成测试主要由用户来完成。(错)

13.确认测试计划应该在可行性研究阶段制定(错)

14.白盒测试无需考虑模块内部的执行过程和程序结构,只要了解模块的功能即可。(错) 15.软件概要设计包括软件系统结构设计以及数据结构和数据库设计。(对) 二。单选题(每题2分,共20分) 1.瀑布模型的关键不足在于(2)

(1)过于简单(2)不能适应需求的动态变更(3)过于灵活(4)各个阶段需要进行评

型、动态模型、功能模型(4)对象模型、动态模型、数据模型

6.软件可行性研究一般不考虑(4)

(1)是否有足够的人员和相关的技术来支持系统开发(2)是否有足够的工具和相关的

技术来支持系统开发(3)待开发软件是否有市场、经济上是否合算(4)待开发的软件是否会有质量问题

7.软件维护的副作用主要有以下哪几种(3)

(1)编码副作用、数据副作用、测试副作用(2)编码副作用、数据副作用、调试副作

用(3)编码副作用、数据副作用、文档副作用(4)编码副作用、文档副作用、测试副作用

8.软件项目计划一般不包括以下哪项内容(4)

(1)培训计划(2)人员安排(3)进度安排(4)软件开发标准的选择和制定 9.以下哪一项不属于面向对象的软件开发方法(3) (1)coad方法(2)booch方法(3)jackson方法(4)omt方法 10.以下哪种测试方法不属于白盒测试技术(2)

(1)基本路径测试(2)边界值分析测试(3)循环覆盖测试(4)逻辑覆盖测试 三。简答题(每题5分,共25分) 1.分析软件危机产生的主要原因有哪些? 答:导致软件危机的主要原因有:

(1)软件日益复杂和庞大(2)软件开发管理困难和复杂(3)软件开发技术落后(4)

生产方式落后(5)开发工具落后(6)软件开发费用不断增加

1 个要点1分,只要答上5个要点得5分! 2.说明结构化程序设计的主要思想是什么?

答:(1)自顶向下、逐步求精的程序设计方法(2分)(2)使用3种基本控制结构、单

入口、单出口来构造程序。(3分)

3.软件测试包括哪些步骤?说明这些步骤的测试对象是什么?

答:(1)单元测试,测试对象对单元模块(2分)(2)集成测试,测试对象为组装后的

程序模块(2分)(3)确认测试,测试对象为可运行的目标软件系统(1分)

4.需求 分析与软件设计二个阶段任务的主要区别是什么?

答:需求分析定义软件的用户需求,即定义待开发软件能做什么(2.5分) 软件设计定义软件的实现细节以满足用户需求,即研究如何实现软件。(2.5分) 5.说明软件测试和调试的目的有何区别?

答:测试的目的是判断和发现软件是否有错误(2。5分)调试的目的是定位软件错误

并纠正错误。(2.5分)

软件工程期末复习试题

一、填空题

1. 软件工程学的内容可包括( )、结构、( )、( )、环境、管理、规范等。 2. 软件生存周期一般可分为问题定义、( )、( )、设计、( )、测试、运行与维护阶段。

3. 系统流程图是( )的传统工具。

4. 需求分析的基本任务是准确的回答( )。

5. 数据字典的内容包括六项:( )、( )、( )、数据存储、处理逻辑、外部实体。

6. 在需求分析阶段常用的图形工具有( )、( )、( )。 7. 模块独立的概念是( )、( )、( )和局部化概念的直接结果。 8. HIPO图是由一组( )图和一张( )图组成。 9. UML的定义包括( )和( )两个部分。 10. 软件测试的方法有( )和( )。 11. 软件=( )+( )。

二、单项选择题

1. 下列关于瀑布模型的描述正确的是( )。

A. 瀑布模型的核心是按照软件开发的时间顺序将问题简化。 B. 瀑布模型具有良好的灵活性。

C. 瀑布模型采用结构化的分析与设计方法,将逻辑实现与物理实现分开。 D. 利用瀑布模型,如果发现问题修改的代价很低。 2. 下列哪个图不是N-S图的构件( )。

A. B. A A

B B

C. D. C WHILE X UNTIL Y B

3. 对于下图,有关描述中错误的是( )。

A

B

D

C

A.A表示数据输入的源点 B.B表示数据存储文件 C.C表示加工 D.D表示数据存储文件

4. 下列各方法中( )不是软件测试方法。

A. 白盒法 B. 黑盒法 C. 动态测试 D. 盒法

5. UML的基本建筑块不包括( )。

A. 框架 B. 事物 C. 关系 D. 图 三、多项选择题

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. 软件价格

四、判断题

1.在可行性研究中最难决断和最关键的问题是经济可行性。( ) 2.耦合是指一个模块内各个元素彼此结合的紧密程度。( )

3.一笔交易、一个动作、甚至操作人员按一个按钮都可以看做是一次事物。( )

4.概要设计阶段完成的主要文档是概要设计说明书。( ) 5.过大的模块可能是由于分解不充分造成的,即使降低模块独立性也必须继续分解。( ) 6.程序设计语言中应绝对禁止使用GOTO语句。( ) 7.类是关于对象性质的描述,由方法和数据组成。( )

8.随着软件技术的发展,人们逐渐认识到阅读程序的重要性,编码不仅要强调效率还要强调清晰。( )

9.为保证程序的安全,必须做到程序中没有任何错误存在,即容错。( ) 10. 如果把软件开发所需的资源画成一个金字塔,人是最基本的资源。( ) 五、问答题

1.什么是软件危机,软件危机有哪几种表现? 2.什么是模块、模块化、模块独立性?

3.什么是编码风格?为什么要强调编码风格? 4. 什么是黑盒测试法?什么是白盒测试法? 六、 分析题

1. 已知被测试模块流程图如下,按照“判定覆盖”法,在表格中填入满足测试要求的数据。 begin

(A>2)AND(B F T =1) c

b Y=Y/3

(A=3)AND(Y> F T e 1) d

Y=Y-10 Y=Y+10

Return

填写下表 数据 覆盖路径 覆盖分支 Y值 TT FF

2. 比较下列两段语句,从编码风格的角度分析哪一段好些,并说明好在哪些方面。 程序段一: if a>b then if x>y then b=y else a=x end if else a=b end if 程序段二:

/ position_x is the position x of object; position_y is the position y of object; /

if a>b then a=b else

if position_x>position_y then b=position_y else

a=position_x end if

end if

参考答案

一、填空题

1. 理论、方法、工具

2. 可行性研究、需求分析、编码 3. 描述物理系统 4. 系统必须做什么

5. 数据流、数据项、数据结构

6. 层次方框图、Warnier图、IPO图 7. 模块化、抽象、信息隐蔽

8. IPO、HC

9. UML语义、UML表示法 10. 分析方法、非分析方法 11. 程序、文档 二、单项选择题 1. C 2. B 3. B 4. D 5. A

三、多项选择题 1. A、B、C、D 2. A、B、C、D 3. A、B、C 4. A、B、C、D 5. A、B、C

四、判断题 1. ╳ 2. ╳ 3. √ 4. √ 5. ╳ 6. ╳ 7. √ 8. √ 9. ╳ 10. √

五、问答题 1.

答:软件危机指的是软件开发和维护过程中遇到的一系列严重问题。

概括地说,软件危机包含下述两方面的问题:如何开发软件,怎样满足对软件的日益增长的需求;如何维护数量不断膨胀的已有软件。具体地说,软件危机主要有下列表现:

产品不符合用户的实际需要。

软件开发生产率提高的速度远远不能满足客观需要,软件的生产率远远低于硬件生产率和计算机应用的增长,使人们不能充分利用现代计算机硬件提供的巨大潜力。

软件产品的质量差。

对软件开发成本和进度的估计常常不准确。 软件的可维护性差。

软件文档资料通常既不完整也不合格。

软件的价格昂贵,软件成本在计算机系统总成本中所占的比例逐年上升。 2.

答:模块是数据说明、可执行语句等程序对象的集合,模块可以单独被命名的而且可通

过名字来访问,例如,过程、函数、子程序、宏等等都可作为模块。

模块化就是把程序划分成若干个模块,每个模块具有一个子功能,把这些模块集总起来组成一个整体,可以完成指定的功能,实现问题的要求。

模块独立性是软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中其他的模块接口是简单的。

模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。 3.

答:编码风格又称程序设计风格或编程风格。编码风格实际上指编程的基本原则。 程序实际上也是一种供人阅读的文章。

编写程序时讲求程序的风格,将大量地减少人们读程序的时间。 良好的编码风格有助于编写出可靠而又容易维护的程序,编码的风格在很大程度上决定着程序的质量。

4.

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

白盒测试法的前提是可以把程序看成装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作,白盒测试又称为结构测试。

六、 分析题

1、 答

数据 A=3 B=1 Y=6 A=1 B=2 Y=0

注意:本题答案不唯一,学生给出的数字正确就应该算对。 2、

答:第二段程序优于第一段。

注释起到提示的作用,利于程序阅读者对程序段全貌的理解 缩进格式清晰的显示程序中逻辑判断的结构。 变量命名方式表明变量的含义。

软件工程习题解答 第一章 概述

1.软件产品的特性是什么? a.软件产品是一种逻辑产品。

b.软件产品的生产主是研制,软件产品的成本主要体现在软件的开发和研制上,软件开发完成后,复制就产生了大量软件产品。

c.软件产品不会用坏,不存在磨损、消耗问题。

覆盖路径 ce bd 覆盖分支 TT FF Y值 12 -10 d.软件产品的生产主要是脑力劳动,还未完全摆脱手工开发方式,而且碰分是\定做\的。 e.软件费用不断增加,成本相当昂贵。

2.软件产品有几个阶段?各有何特征? 阶段 生产方式 工具 开发方法 硬件特征 软件特征 A.程序设计时代(1946-1956) B.程序系统时代(1956-1968) 个体手工劳动 机器语言、汇编 追求编和技巧,追求程序运行效率 价格贵、存储容量小、运行可靠性差 只有程序、程序设计概念,不重视程序设计方法 小集团合作生产 高级语言 个人技巧,开始提出结构化方法 C.软件工程时代(1968-今) 工程化的生产 数据库、开发工具、开发环境网络、 分布式、面向对象技术 速度、容量、工作可靠性有明显提向超高速、大容量、微型化以高,价格降低,销售有爆炸性增长 及网络化方 程序员数量猛增,已意识到软件开发的重要性,开发技术没有新的突破,大量软件开发的需求已提出,开发人员的素质和工程兵的开发技术不适应规模大、结构复杂的软件开发,产生了尖锐矛盾,导致软件危机的产生 开发技术有很大进步,但未能获得突破性进展,软件价格不断上升,没有完全摆脱软件危机

3.什么是软件危机?其产生的原因是什么?

软件危机:软件发展第二阶段的末期,由于计算机硬件技术的进步。一些复杂的、大型的软件开发项目提出来了,但,软件开发技术的进步一直未能满足发展的要求。

在软件开发中遇到的问题找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。主要表现在以下几个方面:

a.经费预算经常突破,完成时间一再拖延。 b.开发的软件不通满足用户要求。 c.开发的软件可维护性差。 d. 开发的软件可靠性差。

软件危机产生的原因是由于软件产品本身的特点以及开发软件的方式、方法、技术和人员引起的:

a.软件的规模越来越大,结构越来越复杂。 b.软件开发管理困难而复杂。 c.软件开发费用不断增加。 d.软件开发技术落后。 e.生产方式落后。

f.开发工具落后,生产率提高缓慢。

4.什么是软件工程?它的目标和内容是什么?

软件工程:用科学知识和技术原理来定义、开发、维护软件的一门学科。

软件工程的目标是成功的建造一个大型软件系统,所谓成功是要达到以下几个目标: a.付出较低的开发成本; b.面到要求的软件功能;

c.取得较好的软件性能; d.开发的软件易于移植; e.需要较低的维护费用;

f.能按时完成开发任务,及时交付使用; g.开发的软件可靠性高; 软件工程的内容:

1) 软件开发技术:软件开发方法、软件开发过程、软件开发工具和环境。 2) 软件开发管理:软件管理学、软件经济学、软件心理学。

5.软件工程面临的问题是什么? 软件工程面临的问题:

a.软件费用。b.软件可靠性。c.软件维护。d.软件生产率。e.软件重用。

6.什么是软件生存周期?它有哪几个活动?

软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。

软件生存周期包括:可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等.

7.什么是软件生存周期模型?有哪些主要模型?

软件生存周期模型:是描述软件开发过程中各种活动如何执行的模型。(模型:是为了理解事物而对事物做出一种抽象,它忽略不必要的细节,它也是事物的一种抽象形式、一个规划、一个程式。)

软件生存周期主要模型:瀑布模型、增量模型、螺旋模型、喷泉模型、变换模型和基于知识的模型等

9.什么是软件开发的方法?有哪些主要方法?

软件开发的方法:是一种使用早已定义好的技术集及符号表示习惯来组织软件生产的过程。 主要方法:结构方法、Jackson方法、维也纳开发方法(VDM)、面向对象的开发方法。

第二章 可行性研究

1.可行性研究的任务是什么? a.技术可行性:

考虑的因素(1).开发的风险(2)资源的有效性(3)技术(4)开发人员在主段技术可行性时,一旦估计错误,将会出现灾难性后果。 b.经济可行性。 c.社会可行性。

2、可行性研究有哪些步骤? a.确定项目规模和目标 b.研究正在运行的系统

c.建立新系统的高层逻辑模型 d.导出和评价各种方案 e.推荐可行的方案

f.编写可行性研究报告

3、可行性研究报告有哪些就要内容? a.引言

b.可行性研究前提 c.对现有系统的分析

d.所建议系统的技术可行性分析 e.所建议系统的经济可行性分析 f.社会因素可行性分析 g.其他可供选择方案 h.结论意见

4.成本---效益分析可用哪些指标进行度量? 有形效益度量: a.货币的时间价值 b.投资回收期 c.纯收入

无形效益:主要从性质上、心理上进行衡量,很难直接进行量的比较。

通常以有形效益度量作为成本---效益分析的度量。

5.项目开发计划有哪些内容?

a.项目概述 b.实施计划c.人员组织及分工d.交付期限

第三章 需求分析

1.什么是需求分析?需求分析阶段的基本任务是什么?

需求分析是指:开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式主义功能规约(需求规格说明)的过程。

需求分析阶段的基本任务是:

(1) 问题识别:双方对问题的综合需求:a.功能需求b.性能需求c.环境需求d.用户界面需求.

(2) 分析与综合,导出软件的逻辑模型. (3) 编写文档

2.什么是结构化分析方法?该方法使用什么描述工具?

结构化分析方法:是面向数据汉进行需求分析的方法。

描述工具:a、数据流图b、数据字典c、描述加工逻辑的结构化语言、判定表、判定树。

3.结构化分析方法通过哪些步骤来实现? 结构化分析方法步骤:

a.了解当前系统的工作流程,获得当前系统的物理模型. b.抽象出当前系统的逻辑模型. c.建立上标系统的逻辑模型.

d.作进一步补充和优化.

4.什么是数据流图?其作用是什么?其中的基本符号各表示什么含义?

数据流图:简称DFD,是SA(结构化分析)方法中用于表示系统逻辑模型的一种工具,是一种功能模型。

作 用:它以图形的方式描绘数据在系统中流动和处理的过程,反映系统必须完成的逻辑功能.

基本符号有四种:

→,箭头,表示数据流; ○,圆或椭圆,表示加工; =,双杠,表示数据存储;□,方框,表示数据的源点或终点.

5.画数据流图应该注意什么事项? 画数据流图注意事项:

a.命名.不论是数据流\数据存储还是加工,合适的命名使人们易于理解基含义. b.画数据流而不是控制流. c.一般不画物质流.

d.每个加工到少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果. e.编号.

f.父图与子图的平衡. g.局部数据存储.

h.提高数据流图的易理解性.

6.什么是字据字典?其作用是什么?它有哪些条目?

字据字典:简称DD,就是用来定义数据流图中的各个成分具体含义的,它以一种准确的\无二义 性的说明方式为系统的分析\\设计及维护提供了有关元素的一致的定义和详细的描述.

作 用:1)为系统的分析\\设计及维护提供了有关元素的一致的定义和详细的描述. 2)为分析人员查找数据流图中有关名字的详细定义而服务的.

3)它和数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分. 条 目:数据流、数据项、数据存储、基本加工。

7.描述加工逻辑有哪些工具? a,结构化语言b,判定表c.判定树

8.什么是IDEF方法?IDEF0方法有什么特点?

IDEF方法:是美国空军在1981年针对集成化计算机辅助制造(Integrated Computer Aided Manufacturing,简称ICAM)工程项目中用于进行复杂系统分析和设计的方法,是在结构化分析与设计技术的基础上提出来的。 IDEF是ICAM Definition的缩写。 IDEF0方法特点:

a.采用方框和箭头等简单的图形符号描述系统的活动和数据流,描述活动所受到的约束及实现机制。

b.采用严格的自顶向下、逐层分解的方式建立系统功能模型。

9、简述SA方法的优缺点。 优点:

1)公认的、有成效的、技术成熟、使用广泛的一种方法,比较适合于开发数据处理类型软件的需求分析。 2)该方法利用图形等半形式化工具表达需求,简明、易读,也易于使用,为后一阶段的设计、测试、 评价提供了有利条件。 缺点:

1)传统的SA方法主要用于数据处理方面的问题,主要工具DFD体现了系统\做什么\的功能,但它仅是一个静态模型,没有反映处理的顺序,即控制流程。因此,不适合描述实时控制系统。

2)SA方法在使用DFD在分析与描述\数据要求\方面是有局限的。 3) DFD不适合描述人机界面系统的要求。

4)为了更精确地描述软件包需求,提高软件系统的可靠性、安全性,也便于实现自动化,SA方法可与形式方法结合起来。

10.某银行的计算机储蓄系统功能是:将储户填写的存款单或取款单输入系统,如果是存款,系统记录存款人姓名、住址、存款类型、存款日期、利率等信息,并打印出存款单给储户;如果是取款,系统计算清单储户。请用DFD和IDEF0描绘该功能的需求,并建立相应的数据字典。

(1)数据流条目: 数据流名称:存款单 别 名:无

简 述:储户存款时填写的项目 来 源:储户 去 向:记帐

数据 流 量:未知

组 成:姓名+住址+存款类型+存款日期+利率 数据流名称:取款单 别 名:无

简 述:储户取款时填写的项目 来 源:储户 去 向:统计

数据 流 量:未知

组 成:姓名+住址+取款类型+取款日期+利率

数据流名称:清单 别 名:无

简 述:储户取款后得到的项目 来 源:记录 去 向:储户

数据 流 量:未知

组 成:姓名+住址+取款类型+取款日期+利率+余额 (2)数据存储条目:

数据存储名称:账单 别 名:无

简 述:存放储户信息及其账目

组 成:姓名+住址+余额+存款类型+最后修改日期+利率 组 织 方 式:未知

查 询 要 求:能立即查询 (3)数据项条目: 未知 (4)加工条目: 加工 名:分类检查 编 号:无

激发条件:接收到存/取款单 优 先 级:优先

输 入:存/取款单 输 出:存/取款单

加工逻辑:IF 存款单 THEN 把存款单输出到统计 ELSE

把取款单输出到统计 ENDIF

加工 名:统计 编 号:无 激发条件:取款单 优 先 级:无 输 入:取款单 输 出:清单

加工逻辑:根据账单检查此储户是否存在,不存在输出错误{ IF 取款数<余额 THEN 余额=余额-取款数 输出清单到储户,输出现金到储户 ELSE

输出错误清单到储户 ENDIF }

加工 名:记录 编 号:无 激发条件:存款单 优 先 级:无 输 入:存款单 输 出:存款单

加工逻辑:根据账单检查此储户是否存在,不存在则建立此储户{ 余额=余额+存款数 输出存款单到储户 }

储户存款单取款单存款单记录存单储户表单表单处理1存款单处理存款2取款单分类并检查取款单统计帐单清单处理取款储户3

11.某图书管理系统工程有以下功能:

(1)借书:输入读者借书证。系统首先检查借书证是否有效,对于第一次借书的读者,在借书文件建立档案。否则,查阅借书文件,检查该读者所借图书是否超过10本,若已达10本,拒借,未达10本,办理借书(检查库存、修改库存目录并将读者借书情况登入借书文件).

(2)还书:从借书文件中读出与读者有关的记录,查阅所借日期,如果超期(3个月)作罚款处理。否则,修改库存目录与借书文件。

(3)查询:可通过借书文件、库存目录文件查询读者情况、图书借阅情况及库存情况,打印各种统计表。请就以上系统功能画出分层的DFD图,并建立重要条目的数据字典。

12.某厂对部分职工重新分配工作的政策是:

年龄在伙岁以下者,初中文化程度脱产学习。高中文化程度当电工;年龄在20岁到40岁之间者,中学中学文化程度男性当钳工,女性当车工,大学文化程度都当技术员。年龄在40岁以上者,中学文化程度当材料员,大学文化程序当技术员。请用结构化语言、判定表或判定树描述上述问题的加工逻辑。 (1)结构化语言:

根据职工年龄和文化程序: REPEAT

If 年龄<=20 If 初中文化 Then 脱产学习 endif

else if 高中文化 Then 电工 endif endif

If 20<年龄<40

If 中学文化

If 男性 Then 钳工

Else

车工 Endif

else if 大学文化 Then 技术员 endif endif endif

If 年龄>=40

If 中学文化 Then 材料员

else if 大学文化 Then 技术员 endif endif endif

Until 没有剩余未分配员工

判定表 年龄 文化 性别 脱产学习 电工 钳工 车工 技术员 材料员 条件名 年龄 1 C G -- √ 2 C H -- √ 3 D H M √ 取值 <=20 >20,<40 >=40 中学 文化程度 高中 大学 性别

附加题: 1、自学考试报名过程中

有个“记录报名单”的加工。该加工主要是根据报名表(姓名、 性别、身份证号、课程名)和开考课程(课程名、开考时间)、经校核,编号、填写、输出准考证给报名者,同时记录到考生名册中(准考证号、姓名、课程)。请绘制该加工的DFD图,并写出数据词典中的数据流条目。

男 女 4 D G M √ 5 D G F √ 6 D H F √ 7 符号 C D E G H I M F M3=2 M2=3 M1=3 8 D I -- √ 9 E G -- √ 10 E H -- √ 11 E I -- √ 条件取值表 取值数 答:

数据流词典 数据流条目: 报名单 = 姓名 + 性别 + 身份证号 + 课程名 开考课程 = 课程名 + 开考时间 考生名册 = 准考证号 + 姓名 + 课程

2、“决定比赛名单”这个加工,根据“运动员名单”和“比赛项目”产生 “项目参加者”,如下图所示,运动员名单要包括所在队名,运动员编号号,运动员姓名,及参加的所有项目。请写出这三个数据流条目。

答:

运动员名单=队名+运动员号+姓名+{项目} 项目=项目名

项目参加者=项目名+{运动员号}

3、某旅馆的电话服务如下:

可以拨分机号和外线号码。分机号是从7201至7299。外线号码先拨9,然后是市话号码或长话号码。长话号码是以区号和市话号码组成。区号是从100到300中任意的数字串。市话号码是以局号和分局号组成。局号可以是455,466,888,552中任意一个号码。分局号是任意长度为4的数字串。

要求:写出在数据字典中,电话号码的数据条目的定义(即组成)。 答:

电话号码=分机号|外线号码 分机号=7201...7299

外线号码=9+[市话号码|长话号码] 长话号码=区号+市话号码 区号=100...300

市话号码=局号+分局号

局号=[455|466|888|552] 分局号=4{数字}4

第四章 概要设计

1.什么是软件概要设计?该阶段的基本任务是什么? 软件概要设计:在需求分析的基础上通过抽象和分解将系统分解成模块,确定系统功能是实现,即把软件需求转换为软件包表示的过程。 基本任务:

(1)设计软件系统结构(简称软件结构)

a.采用某种设计方法,将一个复杂的系统按功能划分成模块(划分) b.确定模块的功能。 (功能)

c.确定模块之间的调用关系。 (调用)

d.确定模块之间的接口,即模块之间传递的信息。 (接口) e.评价模块结构的质量。 (质量) (2)数据结构及数据库设计 a.数据结构设计 b.数据库设计:(概念设计、逻辑设计、物理设计)

(3)编写概要设计文档(文档主要有:概要设计说明书、数据库设计说明书、用户手册、修订测试计划) (4)评审

2.软件设计的基本原理包括哪些内容? 软件设计的基本原理:

(1)模块化(四个属性:接口、功能、逻辑、状态) (2)抽象 (3)信息隐蔽

(4)模块独立性(两个定性的度量标准:耦合性与内聚性)

3.衡量模块独立性的两个标准是什么?它们各表示什么含义? 两个定性的度量标准:耦合与内聚性

耦合性:也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。

内聚性:也称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。模块内元素联系越紧密,内聚性越高。

4.模块间的耦合性有哪几种?它们各表示什么含义?

耦合性有六种:无直接耦合、数据耦合、标记耦合、控制耦合、公共耦合、内容耦合 无直接耦合:两个模块之间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息。 (无直接关系)

数据耦合:指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言中的值传递。 (数据值 )

标记耦合:指两个模块之间传递的是数据结构。 (数据结构 )

控制耦合:指控制模块调用另一个模块时,传递的是控制变量,被调用块通过该控制变量的值有选择地执行块内某一功能(控制变量 )

公共耦合:指通过一个公共数据环境相互作用的那些模块间的耦合。 (一个公式数据环境)

内容耦合:一个模块直接使用另一个模块的内部数据,或通过非正常入口而转入另一个模块内部 (内部数据 )

5.模块的内聚性有哪几种?各表示什么含义?

模块间的内聚性有6种:偶然内聚、逻辑内聚、时间内聚、通信内聚、顺序内聚、功能内聚。 偶然内聚:一个模块内的各处理元素之间没有任何联系。

逻辑内聚:模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。 时间内聚:把需要同时执行的动作组合在一起。 通信内聚:指模块内所有处理元素都在同一个数据结构上操作,或者指各处理使用相同的输入数据或产生相同的输出数据。 顺序内聚:一个模块中各处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出是下一功能元素的输入。

功能内聚:最强的内聚,指模块内所有元素共同完成一个功能,缺一不可。

6.什么是软件结构?简述软件结构设计优化准则。

软件结构:软件系统的模块层次结构,反映了整个系统的功能实现,即将来程序的控制体系。

软件结构设计优化准则:

a.划分模块时,尽量做到高内聚,低耦合,保持模块相对独立性,以此为原则优化初始的软件结构。

b.一个模块的作用范围应在其控制范围之内,且判定所在的模块应与受其影响的模块在层次上尽量靠近

c.软件的深度、宽度、扇入、扇出应适当。 D.模块的大小要适中。

E.模块的控制范围模块的接口要简单、清晰、含义明确,便于理解,易于实现、测试与维护。

7.什么是模块的影响范围?什么是模块的控制范围?它们之间应该建立什么关系? 模块的影响范围:受该模块内的一个判定影响的所有模块的集合。

模块的控制范围:模块本身及其所有下属模块(直接或间接从属于它的模块)的集合。 一个模块的影响范围应在其控制范围之内,且判定所在的模块应与受其影响的模块在层次上尽量靠近。

8.什么是\变换流\?什么是\事务流\?试将相应形式的数据流图转换成软件结构图。 变换流由输入、变换(或处理)、输出三部分组成。某个加工将它的输入流分离成许多发散 的数据流,形成许多加工路径,并根据输入选择其中一个路径来执行这种特征的DFD称为事物流。

9.试述\变换分析\,\事务分析\的设计步骤。 变换分析:

a.确定DFD中的变换中心。

b.设计软件结构的顶层和第一层-------变换结构。

c.设计中下层模块。(输入模块下属模块的设计,输出模块下属模块的设计,变换模块下属模

块的设计,设计的优化) 事务分析:

a.确定DFD中的事务中心和加工路径。

b.设计软件结构的顶层和第一层------事务结构。(接收、发送给支) c.事务结构中、下层模块的设计、优化工作同变换结构。

附加:

2、已知模块C中的一个判定影响到模块B,如图所示,它违反了SD的设计原则。试问: 可以采用哪些手段对结构图作改进,请说明改进办法并画出改进的结构图。

3、已知有一抽象的DFD图如下所示,请用SD方法画出相应的结构图。

A2T1B1EBAAABBBDDA1T2B2CCFFGC答:

4、高考录取统分子系统有如下功能:

(1) 计算标准分:根据考生原始分计算,得到标准分,存入考生分数文件;

(2) 计算录取线分:根据标准分、招生计划文件中的招生人数,计算录取线,存入录取线文件。

试根据要求画出该系统的数据流程图,并将其转换为软件结构图。 答:

(1) 数据流图:

(2) 软件结构图:

① 原始分 ② 标准分 ③ 招生计划 ④ 录取线

5、图书馆的预定图书子系统有如下功能: (1) 由供书部门提供书目给订购组。 (2) 订书组从各单位取得要订的书目。

(3) 根据供书目录和订书书目产生订书文档留底。 (4) 将订书信息(包括数目,数量等)反馈给供书单位。 (5) 将未订书目通知订书者。

(6) 对于重复订购的书目由系统自动检查,并把结果反馈给订书者。 试根据要求画出该问题的数据流程图,并把其转换为软件结构图。 答:

(1) 数据流图:

(2) 软件结构图:

6、在结构化设计过程中,要将数据流图(DFD)映射成系统结构图(SC),分别画出变换型数据流和事物型数据流的映射方式。 答:

变换型 事务型

第五章 详细设计

1.详细设计的基本任务是什么?有哪几种描述方法? 详细设计的基本任务:

(1)为每个模块进行详细的算法设计。 (2)为每个模块内的数据结构进行设计。

(3)对数据库进行设计,即确定数据库的物理结构。 (4)其他设计: a.代码设计

b.输入/输出格式设计。 c.人机对话设计。

(5)编写详细设计说明书。 (6)评审。

描述方法(三种): a.程序流程图 b.PAD图

C.过程设计语言

2.结构化程序设计基本要求要点是什么? a.采用自顶向下、逐步求精的程序设计方法 b.使用三种基本程序控制结构构造程序

1).用顺序方式对过程分解,确定各部分的执行顺序。 2).用选择方式对过程分解,确定某个部分的执行条件。

3).用循环方式对过程分解,确定某个部分重复的开始和结束的条件。 c.主程序员组的组织形式。

3.简述Jackson 方法的设计步骤。

Jsp 方法一般通过以下5个步骤来完成设计:

a.分析并确定输入/出数据的逻辑结构,并用Jackson 结构图表示这些数据结构。 b.找出输入数据结构和输出数据结构中有对应关系的数据单元。 c.按一定的规则由输入、输出的数据结构导出程序结构。

d.列出基本操作与条件,并把它们分配到程序结构图的适当位置。 e.用伪码写出程序。

4.请使用流程图、PAD图各PDL语言描述下列程序的算法。 (1)在数据A(1)-A(10)中求最大数和次大数。

(2)输入三个正整数作为边长、判断该三条边构成的三角形是等边、等腰或一般三角形。 答: (1)

1)流程图:

2)PAD图

3)PDL语言 定义 n1=n2=0

输入A(1).......A(10) n1=n2=A(1) while i>10 if A(i)>=n1 n2=n1 n1=A(i) end while

5.用PAD图描述下面问题的控制结构。

有一个表A(1)、A(2)、........A(n),按递增顺序排列。给定一个Keyw值,在表中用折半查找。若找到将表位置i送入x,否则将零送到x,同时将Key值插入表中。 算法: 1)置初值H=1(表头),T=N(表尾)。 2)置i=[(H+T)/2](取整).

3)若Key=A(i),则找到,i送到x;若Key>A(i),则Key在表的后半部分,i+1送入H; 若KeyT为止。

4)查不到时,将A(i),....,A(N)移到A(i+1),.....A(N+1),Key 值送入A(i)中。

6.一个正文文件由若干记录组成,每个记录是一个字符串,要求统计每个记录中空格字符的个数及文件中空格字符的总个数。要求输出数据格式是每复制一行这符串后,另起一行打印出这个字符中的空格数,最后打印出文件空格的总个数,用Jackson方法设计该程序结构。

附加题:

1、假设对顾客的订货单按如下原则处理: 将顾客的信用度分三个档次: 欠款时间不超过30天;

欠款时间超过30天但不超过100天;

欠款时间超过100天。

对于上述三种情况,分别根据库存情况来决定对顾客订货的态度。

情况之一(欠款时间≤30天),如果需求数≤库存量,则立即发货,如果需求数>库存量,则只发现有库存,不足部分待进货后补发。

情况之二(30天<欠款时间≤100天),如果需求数≤库存量,则要求先付款再发货,如果需求数>库存量,则不发货。

情况之三(欠款时间>100天),则通知先付欠款,再考虑是否发货。 试用判定树的形式予以描述(设欠款时间D,需求数N,库存量Q)。 答:

2、用Jackson图表示下图所示的二维表格:

学生名册 表头 表体

表名 字段名 行* 答:

姓名 3、有一过程,其流程如下图所示。

其中b1 、b2、 b3为判定的逻辑条件,s1、 s2为加工处理。试用判定表给予描述。

性别 年龄 学号

答:

4、1、有一过程如下图所示的流程,试用判定表予以描述。

条件 b1 b2 b3 结果

第六章 实现

1、程序语言有哪些共同特征?

答:程序语言的共同特征(似为特性更符合题意)是指程序设计语言的语言特性,包括心理特性、工程特性和技术特性三个方面。语言的心理特性对人机通信的质量有主要的影响;语言的工程特性对软件开发成功一否有重要的影响,此外,语言的技术特性也会影响软件设计的质量。

2、在项目开发时选择程序设计语言通常考虑哪些因素? 答:通常要考虑的因素有:

项目的应用领域、软件开发的方法、软件执行的环境、算法和数据结构的复杂性以及软件开发人员的知识等。

3、第4代语言(4GL)有哪些主要特征? 答:4GL的主要特征是: (1)友好的用户界面

(2)兼有过程性和非过程性双重特性 (3)高效的程序代码 (4)完备的数据库 (5)应用程序生成器

4、举例说明各种程序设计语言的特点及适用范围? 答:以常见的一些编程语言为例:

FORTRAN语言,它不仅面向科学计算,数据处理能力也极强。适用于科学工程计算 Pascal语言,具有很强的数据和过程结构化能力,它语言简明,数据类型丰富,程序结构严谨。它是第一个体现结构化编程思想的语言。用于描述结构化算法和科学计算,操作系统的编写

C语言:功能强大,支持复杂的数据结构,可大量运用指针,具有丰富灵活的操作运算符及数据处理操作符,它还具有汇编语言的某些特征,使程序运行效率高。可用于许多领域,特别是在操作系统等方面有较大优势。

Coble语言,它具有极强的数据定义能力,程序说明与硬件环境说明分开、数据描述与算法描述分开。结构严谨层次分明,广泛用于商业数据处理。 SQL:结构化查询语言,用于对数据库进行存取管理。

s1 s2 1 F ? ? √ 2 T F F √ 3 T F T √ 4 T T ? √ 汇编语言和Ada语言,主要用于实时处理和编写系统软件。

Prolog、Lisp语言。Lisp是一种函数型语言,特别适用于组合问题中符号运算和表处理,用于定理证明、树的搜索和其他问题的求解。Prolog是一种逻辑型语言,它提供了支持知识表示的特性,每一个程序由一组表示事实、规则和推理的句子组成,比较接近与自然语言。这两种语言主要用于人工智能系统开发。

C++、Java语言,是面向对象的设计语言,用于面向对象的方开发软件。

5、什么是程序设计风格?为了具有良好的设计风格,应注意哪些方面的问题?

答:程序设计风格是指一个人编制程序时所表现出来的特点、习惯、逻辑思路等。

要形成良好的程序设计风格,应从源程序文档化、数据说明、语句构造、输入输出和追求效率几个方面加以注意。

第七章 软件测试

1、软件测试的目的是?测试中要注意那些原则? 软件测试 答:软件测试的目的是的发现软件中存在错误的活动。好的测试用例可以发现至今没有发现的错误、好的测试用例可以发现至今没有发现的错误测试。要提供输入数据还要提供输出数据、保留测试用例、检查它是否做了应该做的还要检查它是否做了不该做的、避免自己测试自己的程序、多错误多的地方要更严格的测试。

2、什么是白盒法?有那些覆盖标准?比较他们的检错能力。

答:将程序看成是白盒子,认真的分析程序的结构和功能制定测试用例来测试。有逻辑覆盖(语句覆盖、判断覆盖、条件覆盖、判断/条件覆盖、条件组合覆盖、路径覆盖)

3、什么是黑盒法?有那些测试方法?特点? 答:将程序当成是黑盒子以设计中的功能为标准在程序的接口出进行测试看它能否达到功能要求。等价类划分、边界值分析、因果图、错误推测。

4、软件测试要经过那些步骤?这些步骤和开发那些阶段对应?

答:单元测试对应详细设计和编码、集成测试对应概要设计、确认测试对应需求分析。

5、单元测试有那些内容?

答:测试模块的接口、数据结构、重要的执行路径、错误处理、边界条件。

6、什么是集成测试?非渐增式和渐增式有什么区别?渐增式如何组装模块? 答:将模块组合起来成为一个完整的系统对其进行测试。非渐增式是将模块先进行单元测试然后组装在一起进行测试。渐增式是逐个将未测试的模块组装到已经测试过的模块上去进行集成测试,每加入一个就测试一次。非渐增式需要桩模块和驱动模块、非渐增式开始可以并行测试、渐增式可以及时的发现接口错误,非渐增式很难发现接口发现错误、渐增式开始不能并行测试、渐增式测试比较彻底。

渐增式组装模块有自顶向下和自底向上两种组装方式。

7、什么是确认测试?该阶段有那些工作?

答:按照需求规格说明书中的确定指标对系统进行功能与性能的测试。进行确认测试(对照需求规格说明书用黑盒法进行测试)、软件配置检查。(文档的完整性、正确性,发现遗漏和错误及时补充和修改)

8、 调试的目的是什么?调试的技术有那些?

答:调试的目的是发现错误的位置并改正错误。简单调试、演绎调试、递归调试、回溯调试。

附加题:

1、对下列子程序进行调试:

procedure example(y,z: real; var x: real) begin if (y>1) and (z=0) then x:=x/y; if (y=2) or (x=l) then x:=x+l; end.

该子程序接受x, y, z的值,并将计算结果x的值返回给调用程序。答题要求: (1)画出流程图。

(2)用白盒法设计测试用例,并写出它所满足的是何种覆盖标准、预期结果以及路径。 答:(1)流程图

(2)用白盒法中条件组合覆盖设计测试用例: ① y=2, z=0, x=4; ② y=2, z=1, x=1; ③ y=1, z=0, x=2; ④ y=1, z=1, x=1.

2、某报表处理系统要求用户输入处理报表的日期,日期限制在2003年1月至2008年12月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息。系统日期规定由年、月的6位数字字符组成,前四位代表年,后两位代表月。现要求用黑盒测试法中的边界值法写出测试用例。 答: 输入条件 测试用例说明 测试数据

报表日期的 1个数字字符 5 类型及长度 5个数字字符 20035 7个数字字符 2003005 有1个非数字字符 2003.5 全部是非数字字符 MAY--- 6个数字字符 200305

日期范围 在有效范围 200301 边界上选取 200812 数据 200300 200813

月份范围 月份为1月 200301 月份为12月 200312 月份<1 200300 月份>12 200313

3、对以下程序进行测试:

PROCEDURE EX(A,B:REAL;VAR X:REAL); BEGIN

IF(A=3)OR(B> 1)THEN X:=A×B IF(A>2)AND(B=0)THEN X:=A-3 END

先画出程序流程图。 再按不同逻辑覆盖法设计一种(写出名称)测试数据。 答:

语句覆盖 A=3 B=0

4、程序功能说明书指出,某程序的输入条件为:每个学生可以选修1至3门课程,试用黑盒法设计测试用例。

(1)按等价分类法设计测试用例(要求列出设计过程) (2)按边缘值分析法设计测试用例。

答:

1)合理等价类 选修1门 选修2门 选修3门 不合理等价类 没选课 选3门以上 测试用例 选修=2 选修=0 选修>3 2) 边缘值法 0,1,3,4

5、设被测试的程序段为: begin s1 ;

if (x=0) and (y>2) then s2;

if (x<1) or (y=1) then s3 ; s4 ; end

可供选择的测试数据组为: x y Ⅰ 0 3 Ⅱ 1 2 Ⅲ -1 2 Ⅳ 3 1

找出实现(1)语句覆盖;(2)条件覆盖;(3)判定覆盖至少要选择的数据组。 答:(1)Ⅰ (2) Ⅰ,Ⅳ (3) Ⅰ,Ⅱ

第八章 软件维护

1、软件维护有哪些内容?

a、校正性维护b、适应性维护c、完善性维护d、预防性维护

2.软件维护的特点是什么? a、非结构化维护和结构化维护 b、维护的困难性 c、软件强维护的费用

3.软件维护的流程是什么?

a、制定申请维护报告b、审查申请报告并批准c、进行维护并作详细记录d、覆审

4.软件维护的副作用有哪些? 编码、数据、文档副作用

5.什么是软件的可维护性?可维护性的度量的特性是什么?

软件的可维护性:软件能够被理解、校正、适应及增强功能的容易程度。

可维护性的度量的特性是:可理解性、可测试性、可修改性、可靠性、可移植性、可使用性和效率。

6.提高可维护性的方法有哪些?

A、建立明确的软件质量目标。B、利用先进的软件开发技术和工具。 C、建立明确的质量保证工作。D、选择可维护的程序设计语言。 E、改进程序文档。

第九章

1、 渐增模型有那几种?特点? 答:增量构造和演化提交。增量构造是瀑布模型的基础上在一些的阶段中采用增量开发一些阶段整体开发。演化提交是在瀑布模型的基础上所有阶段都使用增量开发也就是不紧使用增量开发也使用增量提交。

2、 快速原形有那几种?特点?

答:探索型、试验型、演化型。探索型:在需求阶段帮助明确理解需求用完抛弃。试验型:在设计阶段考核现行方案是否合适用完抛弃。演化型:及早的向用户展示一个系统的原形包含主要的功能得到用户的认可后将原形不断的扩充直到系统完成。

3、 快速原形开发的步骤?

答:快速开发、需求、构造原形、原形、运行原形、评价原形、修改意见。

4、 评价快速原形的优缺点?

答:可以更清楚的理解用户的需求、开发阶段可以用原形解决局部的困难,通过原形的开发可以让用户看见系统的初步功能的实现有利与用户的开发人员更好的交流,及早的解决存在的问题减少开发的风险。

缺乏好的管理工具和开发环境、缺乏管理机制、对开发人员的技术要求高、更新文档比较困难。

5、 对比瀑布模型和增量模型,指出增量模型的新思路。

答:瀑布模型是一种整体的开发模型,开发的每一阶段必须按线性的顺序来进行,前一阶段的工作没有完成后一阶段的工作就不能开始。由于需求分析的易变性使的软件开发工作不顺利,同时瀑布模型的每个阶段有不可避免的错误出现,那么延伸到以下的各个阶段错误就会放大。增量模型是非整体开发的模型它采用渐增模型和原形模型,软件的开发是用增量开发和增量提交。

第十章 面向对象技术

1、 说明对象、类、类结构、消息的基本概念? 答:对象:是客观实体在问题域中的抽象。 类:具有相似或相同性质的对象的抽象就是类。

类结构:类的结构通常有一般----具体(分类结构)整体---抽象(组装结构) 消息:对象之间通信的构造。

2、 面向对象的特征和要素?

答:特征:一致性、多态性、分类性、继承性。要素:共享、封装、抽象。

3、 说明对象模型的特征?

答:对象模型表示了静态的、结构化的、系统数据性质,描述了系统的静态结构,表现了对象间的相互关系,模型主要关心系统中对象的结构、属性和操作使用对象图来描述。

4、 说明动态模型的特征。

答:动态模型描述了与时间和变化有关的系统性质,描述的是系统的控制结构,表示了瞬间的系统控制性质,它关心系统的控制,操作顺序,从对象的状态角度出发表现对象的相互行为。

5、 功能模型的特征。

答:功能模型描述了系统的所有计算。

6、 三种模型的关系?

答:功能模型描述发生了什么,动态模型确定什么时候发生,对象模型确定发生的客体。

7、 三种模型的建立过程?

答:对象模型:确定类、准备数据字典、确定联系、确定属性、完善对象模型。 动态模型:准备脚本、准备事件跟踪、构造状态图。 功能模型:确定输入输出值、建立DFD。

附加题:

1、 一本书有一个封面、一个目录、一个前言、若干章、每章有若干节、每节有若干段每段

有若干句子、每节有0个或多个插图,还有0个或多个表格,最后有一个附录。试建立该书的对象模型。 答: