# 一、单选择

1.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做
A.软件工程
B.软件周期
C.软件危机
D.软件产生

2.研究开发所需要的成本和资源是属于可行性研究中的研究的一方面。
A.技术可行性
B.经济可行性
C.社会可行性
D.法律可行性

3.模块的内聚性最高的是
A.逻辑内聚
B.时间内聚
C.偶然内聚
D.功能内聚

4.在SD方法中全面指导模块划分的最重要的原则是
A.程序模块化
B.模块高内聚
C.模块低耦合
D.模块独立性

5.软件详细设计主要采用的方法是
A.模块设计
B.结构化设计
C.PDL语言
D.结构化程序设计

6.黑盒测试在设计测试用例时,主要需要研究
A.需求规格说明与概要设计说明
B.详细设计说明
C.项目开发计划
D.概要设计说明与详细设计说明

7.若有一个计算类型的程序,它的输入量只有一个,其范围是现从输入的角度考虑一组测试用例:设计这组测试用例的方法是
A.条件覆盖法
B.等价分类法
C.边界值分析法
D.错误推测法

8.下列属于维护阶段的文档是
A.软件规格说明
B.用户操作手册
C.软件问题报告
D.软件测试分析报告

9.快速原型模型的主要特点之一是
A.开发完毕才见到产品
B.及早提供全部完整的软件产品
C.开发完毕后才见到工作软件;
D.及早提供工作软件

10.因计算机硬件和软件环境的变化而作出的修改软件的过程称为
A.教正性维护
B.适应性维护
C.完善性维护
D.预防性维护

11.下列文档与维护人员有关的有
A.软件需求说明书
B.项目开发计划
C.概要设计说明书
D.操作手册

12.下列模型属于成本估算方法的有
A.COCOMO模型
B.McCall模型
C.McCabe度量法
D.时间估算法

13.是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是隐蔽的,外界只能通过有限的接口与对象发生联系。
A.多态性
B.继承
C.封装
D.消息

14.美国卡内基—梅隆大学SEI提出的CMM模型将软件过程的成熟度分为5个等级,以下选项中,属于可管理级的特征是。
A.工作无序,项目进行过程中经常放弃当初的计划
B.建立了项目级的管理制度
C.建立了企业级的管理制度
D.软件过程中活动的生产率和质量是可度量的

15.在McCall软件质量度量模型中,属于面向软件产品修改。
A.可靠性
B.可重用性
C.适应性
D.可移植性

16.汽车有一个发动机。汽车和发动机之间的关系是关系。
A.一般具体
B.整体部分
C.分类关系
D.主从关系

17.对象是OO方法的核心,对象的类型有多种,通常把例如飞行、事故、演出、开会等等,称之为
A.有形实体
B.作用
C.事件
D.性能说明

18.为软件的运行增加监控设施,这种维护的维护类型是
A.纠正性维护
B.适应性维护
C.完善性维护
D.预防性维护

19.软件按照设计的要求,在规定时间和条件下达到不出故障,持续运行的要求的质量特性称为
A.可用性
B.可靠性
C.正确性
D.完整性

20.数据流图(DFD)是方法中用于表示系统的逻辑模型的一种图形工具。
A.SA
B.SD
C.SP
D.SC

# 二、判断

1、文档是软件产品的一部分,没有文档的软件就不称其为软件。
T F

2、在需求分析过程中,分析员要从用户那里解决的最重要的问题是给该软件提供哪些信息。
T F

3、需求规格说明书在软件开发中具有重要的作用,它也可以作为软件可行性分析的依据。
T F

4、数据流图建立系统的功能模型,它由数据流、加工和数据存贮组成。
T F

5、好的测试是用少量的测试用例运行程序,发现被测程序尽可能多的错误。
T F

6、面向对象的分析是面向计算机系统建立软件系统的对象模型。
T F

7、不完善的系统定义往往是导致软件项目失败的主要原因。
T F

8、一个成功的项目唯一提交的就是运行程序。
T F

9、只有质量差的软件产品才需要维护。
T F

10、一个好的测试用例在于能发现至今未发现的错误。
T F

11、软件工作的考虑范围主要是程序设计和实现。
T F

12、在项目计划发生延迟的情况下,增加更多的程序员一定会加快进度。
T F

13、软件错误可能出现在开发过程的早期,越早修改越好。
T F

14、在软件开发的过程中,若能推迟暴露其中的错误,则为修复和改正错误所花费的代价就会降低。
T F

15、模型是对现实的简化,建模是为了更好地理解所开发的系统。
T F

16、好的测试用例应能证明软件是正确的。
T F

17、白盒测试仅与程序的内部结构有关,完全可以不考虑程序的功能要求。
T F

18.开发软件就是编写程序。
T F

19.以结构化分析方法建立的系统模型就是数据流图。
T F

20.在用户需求分析时观察用户手工操作过程不是为了模拟手工操作过程,而是为了获取第一手资料,并从中提取出有价值的需求。
T F

21.穷举测试是较现实的测试方法。
T F

22.缺乏有力的方法学的指导和有效的开发工具的支持,往往是产生软件危机的原因之一。
T F

23.面向对象设计是将面向对象分析所创建的分析模型进一步细化形成软件设计模型的过程。
T F

24.程序文档一般指以注释的形式嵌入程序中的代码描述。
T F

25.一般单元测试不可以并行进行。
T F

26.如果测试过程没有发现任何错误,则说明软件没有错误。
T F

27.生产高质量的软件产品是软件工程的首要目标。
T F

28.类是对具有共同特征的对象的进一步抽象。
T F

29.一个类中的每个对象都是这个类的一个实例。
T F

30.可行性研究需要的时间长短和所研究系统的规模关系不大。
T F

31.可行性研究工作要在初步的需求定义之前进行。
T F

32.设计阶段的输出是编码阶段的输入。
T F

33.在用户需求分析时观察用户手工操作过程不是为了模拟手工操作过程,而是为了获取第一手资料,并从中提取出有价值的需求。
T F

34.穷举测试是较现实的测试方法。
T F

35.穷举测试是较现实的测试方法。
T F

36.为了快速完成集成测试,采用一次性集成方式是适宜的。
T F

37.一般单元测试不可以并行进行。
T F

38.可行性研究工作要在初步的需求定义之前进行。
T F

39.软件模块间的耦合性越强越好。
T F

40.缺乏有力的方法学的指导和有效的开发工具的支持,这往往是产生软件危机的原因之一。
T F

41.程序文档一般指以注释的形式嵌入程序中的代码描述。
T F

42.在设计测试用例时,应包括合理的输入条件和不合理的输入条件。
T F

43.模块越多,开发的成本越小。
T F

44.如果测试过程没有发现任何错误,则说明软件没有错误。
T F

45.开发软件就是编写程序。
T F

46.开发一个软件项目总存在某些不确定性,即存在风险。有些风险如果控制得不好,可能导致灾难性的后果。
T F

47.生产高质量的软件产品是软件工程的首要目标。
T F

48.可行性研究工作要在初步的需求定义之前进行。
T F

49.开发软件就是编写程序。
T F

50.设计阶段的输出是编码阶段的输入。
T F

51.生产高质量的软件产品是软件工程的首要目标。
T F

52.穷举测试是较现实的测试方法。
T F

53.抽象和求精是一对互补的概念,也是人类解决复杂问题时最常用、最有效的方法。
T F

54.面向对象需求过程的本质是在问题空间与求解空间之间架设桥梁。
T F

55.为了快速完成集成测试,采用一次性集成方式是适宜的。
T F

56.在设计测试用例时,应包括合理的输入条件和不合理的输入条件。
T F

57.穷举测试是较现实的测试方法。
T F

58.软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大。
T F

59.软件模块间的耦合性越强越好。
T F

60.传统方法学采用结构化技术自底向上地完成软件开发各项任务。
T F

61.模块越多,开发的成本越小。
T F

62.软件开发应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。
T F

63.软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大。
T F

64.数据流图和数据字典共同构成系统的物理模型。
T F

65.改正性维护是改正软件中原有的错误,所以对软件的修改一般不会导致文档的修改,而适应性和完善性维护将导致文档的修改。
T F

66.软件开发小组的规模与个人生产率成正比,向一个已经延期的软件项目中增加人力,会使它按期完工。
T F

67.层次图和结构图不仅表明一个模块调用哪些模块,而且对模块的其他成分也有明确的表示。
T F

# 三、名词解释

1、项目风险

指项目在预算、进度、人力、资源、顾客和需求等方面的原因对软件项目产生的不良影响。

2、α测试

是指软件开发公司组织内部人员模拟各类用户行为对即将面市的软件产品( 称为α版本) 进行测试,试图发现错误并修正。

3、技术风险

指软件在设计、实现、接口、验证和维护过程中可能发生的潜在问题,对软件项目带来的危害。

4、活动图

描述系统为完成某项功能而执行的操作序列,这些操作序列可以并发和同步。

5、状态图

描述类的对象的动态行为。它包含对象所有可能的状态、在每个状态下能够响应的事件以及事件发生时的状态迁移与响应动作。

6、白盒测试

是已知产品内部工作过程, 通过测试检验产品内部动作是否按照产品规格说明的规定正常进行。

7、黑盒测试

把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能需求。

8、单元测试

又称模块测试,它着重对软件设计的最小单元(软件构件或模块)进行验证。单元测试根据设计描述,对重要的控制路径进行测试,以发现构件或模块内部的错误。单元测试通常采用白盒测试,并且多个构件或模块可以并行进行测试。

9、集成测试

又称组装测试,经单元测试后的模块需集成为软件系统,集成测试是对集成后的软件系统进行测试,主要用来揭露设计阶段产生的错误。

10、确认测试

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

11、恢复测试

主要检查系统的容错能力。当系统出错时, 能否在指定的时间间隔内修正错误并重新启动系统。

12、软件项目的成本管理

估算软件项目的成本,作为立项和签合同的依据之一, 并在软件开发过程中按计划管理经费的使用。

13、软件质量

软件产品满足规定的和隐含的与需求能力有关的全部特征和特性。

14、软件生命周期

一个软件从定义,开发,使用和维护,直到最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长时期称为生命周期。

15、数据字典

数据字典是描述数据流图中数据信息的集合(描述内容包括:数据流图、状态转换图、E-R 图中的数据信息 、控制信息等 。

16、数据流图

描述输入数据流到输出数据流的变换,用于对系统的功能建模。

# 四、简答

1.软件危机表现方面

  • 软件开发成本过高;
  • 软件质量得不到保证;
  • 软件开发效率低;
  • 难以控制开发进度,工作量估计困难;
  • 软件不能满足社会发展的需求,成为社会、经济发展的制约因素;
  • 程序规模、工作量与成本的关系。

2.软件项目管理任务

  • 制定软件项目的实施计划和方案;
  • 对人员进行组织和分工;
  • 按照计划进度,以及成本管理、风险管理、质量管理的要求进行软件开发,完成软件项目的各项要求和任务。

3.软件产品具有哪些特点?

  • 软件开发与传统的产品生产存在本质差别;
  • 软件是逻辑产品,而不是物理产品;
  • 软件不会磨损;

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

  • 自顶向下集成的优点在于能尽早地对程序的主要控制和决策机制进行检验, 因此较早地发现错误。
  • 缺点是在测试较高层模块时, 低层处理采用桩模块替代, 不能反映真实情况, 重要数据不能及时回送到上层模块, 因此测试并不充分。
  • 自底向上集成方法不用桩模块, 测试用例的设计亦相对简单, 但缺点是程序最后一个模块加入时才具有整体形象。
  • 它与自顶向下综合测试方法的优缺点正好相反。

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

  1. 算法和计算复杂性;
  2. 软件运行环境;
  3. 用户需求中关于性能方面的需要;
  4. 数据结构的复杂性;
  5. 软件开发人员的知识水平;
  6. 可用的编译器与交叉编译器。

6.简述软件维护及其过程。

  • 软件维护就是要针对用户使用软件产品过程提出的问题而对软件产品进行相应的修改或演化,从而修正错误,改善性能或其它特征,以及使软件适应变化的环境。
  • 软件维护的过程:
  1. 提出维护要求,
  2. 分析维护要求,
  3. 提出维护方案,
  4. 审批维护方案,
  5. 确定维护计划,
  6. 修改软件设计,
  7. 修改程序,
  8. 测试程序,
  9. 复查验收。

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

  • 需求分析指的是在建立一个新的或改变一个现存的电脑系统时描写新系统的目的、范围、定义和功能时所要做的所有的工作。
  • 需求分析阶段的基本任务是:要准确的定义新系统的目标,为了满足用户需要,回答系统必须“做什么”的问题。

8.什么叫维护?维护的类型有哪些?

  • 软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。
  • 软件维护类型有:
  1. 改正性维护:对程序使用期间发现的程序错误进行诊断和改正的过程;占维护工作量17-21% 。
  2. 适应性维护:配合变化了的环境进行修改软件的活动;占维护工作量18-25% 。
  3. 完善性维护:满足用户在使用过程中提出增加新的功能或修改已有功能的建议而进行的改进工作;占维护工作量50-66%。
  4. 预防性维护:为了改善未来的可维护性或可靠性而修改软件的工作;占维护工作量4% 左右。

9.用例图的作用是什么?

  • 用例图是外部参与者所能观察到的系统功能的模型图。由一组用例、参与者及它们之间的关系组成。主要用于对系统、子系统或类的功能行为进行建模。参与者是与系统交互的外部实体,可以是人,也可以是其它系统。用例是从用户的角度描述系统的行为(功能)它将系统的功能描述成一系列事件,这些事件最终对参与者产生可观察结果。

10.简要写出数据流图映射到结构图的步骤。

  1. 复审和精化数据流图
  2. 确定数据流图的类型:变换型、事务型
  3. 将数据流图映射成初始结构图
  4. 改进初始结构图。

11.简要写出软件生命周期各阶段及任务。

软件生命周期大致可分为6个阶段:

  1. 可行性研究:确定问题是否值得解,技术可行性、经济可行性、操作可行
  2. 需求分析:系统必须做什么
  3. 总体设计:系统如何实现,包括系统设计和结构设计
  4. 详细设计:具体实现设计的系统
  5. 实现:编码和测试
  6. 运行维护:保证软件正常运行。

12.简要写出软件设计工程的6个步骤。

  1. 制订规范;
  2. 体系结构和接口设计;
  3. 数据/类设计;
  4. 部件级设计;
  5. 编写设计文档;;
  6. 设计评审。

13.简要写出用况建模的步骤。

  1. 定义系统;
  2. 确定执行者;
  3. 确定用况;
  4. 描述用况;
  5. 定义用况间的关系;
  6. 确认模型。

14.结合所学知识写出面向对象分析的一般步骤。

  1. 获取客户对系统的需求:包括标识场景和用况,以及建造需求模型。
  2. 用基本的需求为指南,来选择类和对象(包括属性和操作)。
  3. 定义类的结构和层次。
  4. 建造对象——关系模型。
  5. 利用用况/场景来复审分析模型。

15.简要写出画分层数据流图的步骤。

  1. 画出系统的输入输出,
  2. 画出系统内部,
  3. 画出加工内部
  4. 重复第3步,直至每个尚未分解的加工都足够简单(即不必再分解)。