首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事
您的当前位置:首页正文

软件工程(第五版)--习题与答案

2020-09-23 来源:画鸵萌宠网
《软件工程》 (第五版)习题参考答案

第 1 章

一、判断题

1、(× )软件的维护与硬件维护本质上是相同的。 2、(√) 软件在运行和使用中也存在退化问题。 3(、× )软件危机的产生主要是因为程序设计人员使用了不适当的程序设计语言。 4、(√) 软件同其他事物一样,有孕育、诞生、成长、成熟和衰亡的生存过程。 5、(× ) 文字处理软件 Word属于系统软件。 应用软件

6(、√)原型是软件的一个早期可运行的版本, 它反映最终系统的部分重要特性。 7、(√)软件开发过程中, 一个错误发现得越晚, 为改正它所付出的代价就越大。 8、(× )快速原型模型对软件开发人员的水平要求不高。 9、(√) 喷泉模型适合于面向对象的软件开发。

10、(× )面向对象开发方法的主要缺点是在适应需求变化方面不够灵活。 二、选择题

1、软件是一种( C)。 A、程序 B、数据 C、逻辑产品 D、物理产品 2、软件开发方法是( A)。

A、指导软件开发的一系列规则和约定 B、软件开发的步骤 C、软件开发的技术 D、软件开发的思想 3、软件生存周期中花费最多的阶段是( D)。 A、详细设计 B、软件编码 (最少) C、软件测试 D、软件维护 4、软件工程的三要素不包括( D)。 A、工具 B、过程 C、方法 D、环境

5、在软件生存周期中,能准确地确定“软件系统必须做什么”的阶段是( D)。 A、总体设计 B、详细设计 (怎么做) C、可行性研究 (能不能做) D、需求分析 6、瀑布模型本质上是一种( A)模型。 A、线性顺序 B、顺序迭代 C、线性迭代 D、能及早见到产品的 7、瀑布模型突出的缺点是不适应( D)的变动。 A、算法 B、程序语言 C、平台 D、用户需求 8、在软件开发模型中,提出最早、应用最广泛的模型是( A)。 A、瀑布模型 B、喷泉模型 C、快速原型模型 D、螺旋模型 9、瀑布模型不适合用于( A)的软件开发。 A、需求模糊不清 B、用户不能参与开发 C、用户对计算机不了解 D、开发人员对业务知识不熟悉 10、快速原型的主要优点不包括( D)。 A、能让用户参与开发、给出反馈

B、尽早把需求分析清楚,以降低风险

1

C、尽早地发现问题、纠正错误

D、对软件分析设计人员的素质要求不高 11、快速原型的主要问题在于( A)。 A、缺乏支持原型开发的工具 B、要严格控制原型构造的迭代 C、终端用户对原型不能理解 D、软件的测试和文档更新困难 12、螺旋模型是一种将瀑布模型和( A)结合起来的软件开发模型。 A、增量模型 B、专家系统 C、喷泉模型 D、变换模型

13、在软件生产的程序系统时代由于软件规模扩大和和软件复杂性提高等原因导 致了(A)。 A、软件危机 B、软件工程 C、程序设计革命 D、结构化程序设计 14、集成化开发环境中的环境集成机制不包括( D)。 A、数据集成 B、控制集成 C、界面集成 D、服务集成 15、软件工程的出现是由于( A)。 A、软件危机的出现 B、计算机硬件技术的发展 C、软件社会化的需要 D、计算机软件技术的发展 三、简答题

1、软件通过你自己使用计算机的经历和对计算机的认识分辨软件和程序的差别,指出区别

的关键点。

答:软件包括程序、数据及其相关文档的完整集合。其中,程序是按事先设计的功能和性

能要求执行的指令序列; 数据是使程序能够正确地处理信息的数据结构; 维护和使用有关的图文资料。软件包括程序

,程序只是软件的一部分。

文档是与程序开发、

2、简述软件危机产生的原因以及避免的方法。

答:软件危机的产生有两方面因素,一方面与软件本身的抽象性和复杂性有关;另一方面

则与软件开发和维护过程中使用的技术和方法有关,这是主观原因。

为了解决软件危机,既要有技术措施(好的方法和工具) 的组织、严密的管理,各方面人员相互配合共同完成任务。

,也要有组织管理措施。 (1)

(3)有良好

使用好的软件开发技术和方法。 (2)使用好的软件开发工具,提高软件生产率。

3、简述软件工程在软件开发中的作用和意义。

答:软件工程的主要思想是强调软件开发过程中应用工程化原则的重要性。软件工程的目

标是实现软件的优质高产。 软件工程的目的是在经费的预算范围内, 质量合格的软件产品。

按期交付出用户满意的、

4、软件生命周期概念对软件的开发有哪些指导作用。

2

答:软件生命周期是软件工程的一个重要的概念。把整个软件生命周期划分为若干个较小

的阶段, 每个阶段都有相对独立的任务和完成任务的步骤和方法, 任务, 这有利于软件开发过程的组织和管理,

然后逐步完成各个阶段的

从而降低了整个软件开发过程的困难程度,

而使规模庞大、结构复杂和管理复杂的软件开发变得容易控制和管理。

5、分析瀑布模型和螺旋模型的异同,比较它们的适用场合。

答:瀑布模型是线性模型,是整体开发模型,文档驱动的模型,每一阶段必须完成指定的

文档,需求明确的中、小型软件开发,

不适宜需求模糊或多变的应用软件开发;螺旋模型

是典型迭代模型,是风险驱动模型,可用于面向对象开发,适宜风险较大的大型软件开发。

第 2 章

一、选择题

1、系统流程图是一种传统工具,用于描绘( D)。 A、逻辑模型 B、程序结构 C、体系结构 D、物理系统 2、软件可行性研究的目的是( C)。 A、证明软件开发项目可行 B、证明软件开发项目不可行

C、阐述软件开发项目值得或不值得做 D、为了确定软件开发项目要不要做

3、技术可行性研究要解决的问题是( A)。 A、从技术方面说明项目是否可行 B、从技术上定义项目要解决的问题 C、给出项目开发可行的技术路线 D、给出精简的项目需求设计报告 4、可行性研究的步骤首先是( A)。

A、确定项目目标,即对要解决的问题进行定义 B、研究项目要求

C、对项目目标进行可行性分析 D、给出可行的解决方案

5、可行性研究的任务不包括( D)。 A、技术可行性 B、经济可行性 C、法律可行性 D、政治可行性 6、系统流程图是描述( A)的工具。 A、物理系统 B、逻辑系统 C、体系系统 D、程序系统

7、可行性研究实质上是要进行一次( A)需求分析,设计过程。 A、简化、压缩的 B、详细的 C、彻底的 D、深入的 8、系统流程图的符号不包括( D)。 A、 B、 C、 D、

3

二、简答题

1、软件开发的早期,为什么要进行可行性研究?目标的可行性研究有几个方面?

答:许多软件开发问题都不能在预期的时间范围内或资源限制下得到解决。如果开发人员

没有尽早停止没有可行解决方案的开发项目,就会造成时间、资金、人力、物力的浪费。为 了降低软件开发失败的可能性,

需要进行软件可行性研究。 可行性研究要从经济可行性、 技

术可行性、运行可行性和法律可行性四方面进行。

2、简述可行性研究的步骤。

答:(1)审核系统的规模和目标; (2)分析研究现行系统; (3)设计新系统的高层逻辑模

型;(4)获得并比较可行的方案; (5)撰写可行性研究报告。

3、某航空公司为了方便旅客,拟开发一个机票预订系统。将旅客的信息(姓名、性别、工

作单位、身份证号、旅行时间、旅行目的地等)输入该系统后,系统自动为旅客安排航班。 打印出取票通知和票务账单。 旅客可在航班的前一天凭取票通知和票务账单交款取票。 校对无误后即打印出机票给旅客。要求: (1)提出问题定义; (2)分析此系统的可行性; (3)画出系统流程图。

系统

答:(1)问题定义:航运公司机票预订系统问题定义

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - -

系统目标和范围说明书

1. 项目名称 :X航运公司机票预订系统。

2. 背景 : 目前,由旅客人工到航运公司排队购票,费时、费力、管理工作量大、手续 繁琐效率低,制约了公司业务的发展。

3. 项目目标 :建立一个网络化的机票预订系统。 4. 项目范围 : 软件开发费用不超过 X 万元。

5. 初步设想 :建议在系统中完成安排航班、打印取票通知、打印票务账单、打印机票 等主要功能。

6. 可行性研究 :建议进行大约 X 周的可行性研究,研究费用不超过 (2)可行性分析

技术可行性: 使用现有的技术能够实现此系统, 在现有资源 (包括硬件资源、 软件资源、 技术人员的技术水平和已有的工作基础)条件下,技术风险不大,项目可以实现。

经济可行性:此系统能够方便旅客订票,具有一定的经济效益和社会效益。 法律可行性:此项目开发要符合航运系统相关要求。 操作可行性:现有制度、人员素质、操作方式可行。 (3)系统流程图

X 元。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - -

4

旅客

A

航班要求

通知单 账单

查看航班舱位

客机舱位表

寄发、交付取

票通知

旅客信息

取票通知 航空公司登记 旅客信息表

旅客 安排航班

客机舱位表

打印取票通 知、票务账单

取票通知

旅客交款取票

票务账

A

机票

第 3 章 一、判断题

1、(√)软件需求分析阶段要确定软件系统要

“做什么 ”。

2、(× )软件需求规格说明书可作为可行性研究的依据。 3、(√)需求分析员可以参加最后的需求评审工作。

4、(× )画数据流图时可以加少量的控制流,使加工之间有时序的关系。 5、(√)结构化分析模型的核心是数据词典。

6、(× )在数据流图中,带有箭头的线段表示的是控制流。 7、(× )在软件生产过程中,需求信息的来源是项目经理。 8 、(√)需求分析阶段的任务是确定软件的功能。 二、选择题

1、需求分析最终结果是产生

(B)。

数据流 用户

做什么

5

A、项目开发计划 C、设计说明书

B、需求规格说明书 D、可行性分析报告

2、数据流图( DFD)是(A)方法中用于表示系统的逻辑模型的一种图形工具 A、SA

B、SD

C、SP

(C)。

D、SC

3、需求规格说明书的作用不包括 A、软件验收的依据

B、用户与开发人员对软件要做什么的共同理解 C、软件可行性研究的依据 D、软件设计的依据

4、数据词典是用来定义 (D)中的各个成分的具体含义。 A、流程图 C、结构图

B、功能结构图 D、数据流图

5、结构化分析方法( SA)是一种面向( B)的分析方法。 A、数据结构 C、结构化数据系统

B、数据流 D、对象

0 至任意次(A) 。

6、在数据词典中,以下哪一项表示允许重复 A、{ }

B、0{ }

C 、0{ }n

D 、{ }n

(B)。

7、以下数据流图符号中哪一个表示加工 A、

B、

C、

D、

8、软件开发的需求活动,其主要任务是( A、给出软件解决方案

D) 。

B、给出系统模块结构

6

C、定义模块算法

9、结构化分析的核心是 (A) 。A、自顶向下的分解 C、用 DD描述数据需求 10、需求分析的任务是 (A) 。A、正确说明让软件“做什么” C、用 DD建立数学模型

D、定义需求并建立系统模型

B、用 DFD建模 D、自底向上的抽象

B、用 DFD建模 D、给出需求规格说明书

11、对于分层的 DFD,父图与子图的平衡是指 (B) 。A、父图与子图的输入输出数据流必须相同 B、子图必须继承父图的输入与输出流

C、父图与子图相应的输入输出数据流名字保持一致 D、子图可以自己的输入输出数据流 12、DFD的每个加工都必须有 (A) 。A、一个输入和输出数据流 C、一个输出数据流

B、一个输入数据流 D、一个输入或输出数据流

13、需求分析是分析员经了解用户的要求,认真细致地调研、分析,最终建立目 标系统的逻辑模型并写出 A、模块说明书 C、项目开发计划

(B)的过程。

B、软件规格说明书 D、合同文档

14、结构化分析方法是以数据流图、 (D)和加工说明等描述工具 ,即用直观的图和简

洁的语言来描述软件系统模型。

A、DFD图 B、PAD图 C、IPO图 D、DD

7

15、软件需求分析阶段的工作 ,可以分为四个方面:需求获取、需求分析、编写需 求规格说明书以及 (B) 。A、阶段性报告 C、总结

B、需求评估 D、都不正确

16、数据流图用于抽象描述一个软件的逻辑模型, 数据流图由一些特定的图符构 成。下面图符名称标识的图符不属于数据流图合法图符的是 A、控制流 C、数据存储

17、DFD用于描述系统的 (D )。A、数据结构 C、基本加工

B、控制流程 D、软件功能 B、加工 D、源点和终点

(A)。

18、数据词典不包括的条目是 (C) 。A、数据项 C、数据类型

B、数据流 D、数据加工

(D)。

19、软件需求分析一般应确定的是用户对软件的 A、功能需求 C、性能需求

B、非功能需求

D、功能需求和非功能需求

(B)。

20、在数据流图中,有名字和方向的成分是 A、信息流 C、控制流

B、数据流 D、信号流

三、简答题

1、需求分析的任务是什么?怎样理解“做什么”和“怎么做”?

答:需求分析的基本任务是要准确地理解旧系统、 定义新系统的目标, 为了满足用户需要,

回答“系统必须做什么” 的问题,即确定系统必须完成哪些工作, 对新系统提出完整、 准确、 清晰、具体的要求。

8

具体任务是 : 明确问题定义、导出软件的逻辑模型、编写软件需求规格说明书。 “做什么”,即深入描述软件的功能和性能,确定软件设计的限制和软件与其他系统元 素的接口细节,定义软件的其他有效性需求。

“怎么做”,即着手软件需求的实现:用比较抽象概括的方式确定目标系统如何完成预定的 任务,确定系统的物理模型。

2、怎样建立目标系统的逻辑模型?

答:建立目标系统逻辑模型的一般过程:

(1)由当前物理系统导出当前系统物理模型

;

;

(2)由当前系统物理模型,导出当前系统逻辑模型 (3)参考当前系统逻辑模型,设想出新系统逻辑模型。

3、数据流图的作用是什么?它有哪些基本成分?

答:数据流图是用于表示系统逻辑模型的一种工具。它从数据传递和加工的角度,以图形

的方式描述数据在系统中流动和处理过程。 理功能。

数据流图的主要成分有四种:数据流、数据存储、加工、数据流的源点和终点。

它表示了系统内部信息的流向以及系统的逻辑处

4、数据词典的作用是什么?它包括哪些内容?

答:数据词典是数据的集合,它对数据流图中的各个元素作完整的定义和说明,是数据流

图的补充工具。数据流图和数据词典共同构成系统的逻辑模型,两者缺一不可。

其内容包括:数据流、数据项、数据结构、数据存储、加工逻辑、外部实体

6 类元素。

四、应用题

1、用 SA 方法对“学生档案管理系统”进行分析,画出

词典。

解:“学生管理系统”的顶层图和 顶层图:

课程表 学生信息

学 生

成绩表

课程表

学生管理系统 0 层图。

DFD 图,并建立相应的数据

考试成绩

0 层图:

学生信息

课程表

1

学籍管理

2

排课管理

学生档案

考试成绩

3 成绩

登统

课程库

成绩表

成绩库

9

部分数据词典:

学生档案 ={ 学号+姓名+性别 +年龄+专业+班级} 成绩库 =学号+课程号 +分数 课程库 =课程号 +课程名 +学分

学生信息 =学号+姓名+性别+年龄+专业+班级 考试成绩 =学号+课程号 +分数 学号=”00001”... ”99999” 姓名=2{ 汉字}4

专业=”01”... ”9注9”:专业代号 2 位数字 班级=”01”... ”9注9”:班级代号 2 位数字 学分=0..99

2、某录取统分子系统有如下功能:

(1)计算标准分:根据考生原始分计算出标准分,并将其存入考生分数文件。 (2)计算录取线分:根据标准分、招生计划文件中的招生人数,计算录取线分数,并 存入录取线文件。试根据要求画出该子系统的数据流程图。

解: 数据流图如下:

考生分数 招生计划文件

原始分

计算

标准分

招生人数 考

计算录 取线分

标准分

标准分

录取线文件

3、某考务中心准备开发一个考务管理系统,其需求如下:

(1)考生填写考试报名表,经检查合格后在系统中登记注册,并发给学生准考证。 (2)学生按照准考证要求进入考场考试。考试完后将试卷交给阅卷站。

(3)阅卷站阅卷后把成绩表(包括每个考试科目、每个考生的分项分数)交给本系统 并输入计算机。

(4)考试中心负责管理成绩评定标准,并将其交给阅卷站。

(5)系统把考试成绩通知考生,把考试成绩的统计结果交给考试中心。

(6)系统向考生提供按准考证号、考生姓名的考生成绩查询,将按科目的历年考试成 绩统计分析和评分标准提供给考试中心。

(7)考生对考试成绩质疑时,系统根据准考证号、姓名可以查询考生某科目的各分项 成绩,必要时可查阅阅卷站的试卷。

10

(8)系统保存并可查询历年每门科目的评分标准。

(9)根据考试成绩统计系统可以向考试中心提供试题难度分析。 请画出系统的数据流程图(顶层图和

0 层图)。

解:顶层图:

统计分析表

考务管理系统

合格标准

考 试 中

报名表 不合格报名表

心 准考证

考 生

考试通知单

考 生 名 单

成 绩 清 单

错 误 成 绩 单

阅卷站

顶层图

0 层图:

报名表

考生通知单

不合格报名表

1

2

统计分析表

登记 报名单

统计 成绩

准考证

错 误

考 生 名 单

考生名册

成 绩 清

格 标 准

0 层图

11

4、某单位人事部门拟对职工工作进行调整,细则如下:

年龄满 40 岁以上人员,初中或高中文化,若是男性当修理工,若是女性当清洁工;大 专文化当技术员。

年龄 25 岁至 40 岁,初中或高中文化,若是男性钳工,若是女性当车工;大专文化当技 术员。

年龄不满 25 岁,初中文化脱产学习,高中文化当电工;大专文化当技术员。 请根据以上叙述运用三种加工逻辑说明写出它们的逻辑组合的关系。

解:判定表如下:

设:性别 :

学历:

1

性别 学历 年龄 脱产学习 电工 技术员 修理工 钳工 车工 清洁工

X

X

X

X

X

X

X

X

M A C X

X

X

X

X

2 M A Y

男:M 女:F

大专:C

40 以上:L

8 M C Y

9 M C L

10 F A C X

X

X

X

X

11 F A Y

12 F A L

13 F B C

14 F B Y

15 F B L

16 F C C

17 F C Y

18 F C L

7 M C C

初中:A 高中 B

3 M A L

4 M B C

5 M B Y

6 M B L

年龄:小于 25: C 25 至 40:Y

化简后的判定表 :

1

性别 学历 年龄 脱产学习 电工 技术员 修理工 钳工 车工 清洁工

X

X

X

X

X

X

X

X

M A C X

X

X

2 M A Y

3 M A L

4 M B C

5 M B Y

6 M B L

7-9 M C --

10 F A C X

X

X

11 F A Y

12 F A L

13 F B C

14 F B Y

15 F B L

16-18 F C --

最简化 :

1,10

性别 学历 年龄 脱产学习 电工

-- A C X

X

2 M A Y

3 M A L

4,13 -- B C

5 M B Y

6 M B L

7-9,16-18

-- C --

11 F A Y

12 F A L

14 F B Y

15 F B L

12

技术员 修理工 钳工 车工 清洁工

X

X

X

X

X

X

X

X

X

判定树 :

年龄

学历

性别

男------ 修理工

初中

女----- 清洁工

>40

高中

男 --- 修理工 女 –--清洁工

大专------------------------ 技术员

男------ 钳工

初中

女----- 车工

25-40

高中

男 ---钳工 女 –--车工

大专------------------------ 技术员

初中----------------- 脱产学习 25-40

高中------------------- 电工 大专------------------ 技术员

结构化语言: IF 年龄>40 THEN SWITCH (学历) {CASE :“初中”

IF 性别为“男”

做修理工 ELSE

做清洁工

CASE:“高中”

IF 性别为“男” THEN

做修理工 ELSE

做清洁工

做技术员

CASE:“大专” SWITCH (学历)

13

THEN

ELSE IF 年龄>=25 且 年龄<40 THEN

{ CASE :“初中”

IF 性别为“男”

做钳工 ELSE

做车工

THEN

CASE :“高中” IF 性别为“男”

做钳工 ELSE

做车工

CASE :“大专”

做技术员 } ELSE

SWITCH (学历) { CASE : “初中” CASE :“高中” CASE: “大专” }

脱产学习 做电工 做技术员 THEN

5、下面是一项货运收费政策:

“航空运费” ,重量小于或等于 20kg 的货物,每千克 6 元,若重量大于 20kg,超重部 分每千克 6.5 元,航空运费的最低起价是 线,运费加倍。请用判定树、判定表表达。

12 元。这项标准适用于国内航线,如果是国际航

解:判定表

国内 重量

Y L

Y M 6W

Y H

6.5(W-20)+120

N L 24

N M 12W

N H

13(W-20)+240

运费(元) 12

注:设重量为 W(单位为 Kg)

重量<=2Kg ,重量 >2Kg 且重量 <=20Kg ,重量 >20Kg ,分别用 L、M 、H 表示 判定树 :

重量<=2Kg

重量>2Kg 且<=20Kg

国内

重量>20Kg

—— 6.5(W-20)+120 —— ——

12 元 6W 元

重量<=2Kg

重量>2Kg 且<=20Kg

国际

重量>20Kg

—— ——

24 元 12W 元

—— 13(W-20)+240

6、下面是中国邮政电子汇兑系统中汇兑资费计算加工中资费计算的方法:

无论是本埠(县)还是外埠资费计算方法相同。每汇款 元,每笔汇款最低汇费为

汇额

1 元(以元为单位计算)收费

0.01

2 元,最高汇费为 50 元。请用判定树、判定表表达。

汇费

14

解:设汇款金额为 W 元。判定树如下:

本埠 /外埠

<=200 >5000

-----------------------

-----------

---------------------

2 元 W*0.01 元 50 元

L、M 、H 表示,汇款额用 W 表示。

M Y W*0.01 L -- 2

M -- W*0.01 M N W*0.01

H -- 50 H Y 50

H N 50

>200 且<=5000 元

判定表如下:三种汇额分别用符号 汇额(元) 本埠 汇费(元) 可简化为:

汇额(元) 本埠 汇费(元) L Y 2

L N 2

第 4 章

一、判断题

1、(√)如果在需求分析阶段采用了结构化分析方法, 则软件设计阶段就应采用 结构化设计方法 。 2、(√) 概要设计与详细设计之间的关系是全局和局部的关系 。 3、(× )一个模块的作用范围应该大于该模块的控制范围 。 4、(√) 模块间的耦合性越强,则模块的独立性越弱 。

5、(× )在设计模块时,应使一个模块尽量包括多个功能 。 6、(√) 软件结构图可以利用数据流图映射出来 。

7、(× )结构化设计是一种面向数据结构的设计方法 。 8、(√) 在结构化设计过程中首先要确认 DFD。 二、选择题

1、软件结构图的形态特征能反映程序重用率的是( A、深度

B、宽度

C、扇入

C)。

D、扇出

2、概要设计的目的是确定整个系统的( B)。 A、规模 C、费用

B、功能及模块结构 D、测试方案

3、耦合是对软件不同模块之间互连程度的度量。 各种耦合从强到弱的排列为 (C)。 A、内容耦合,控制耦合,数据耦合,公共环境耦合

15

B、内容耦合,控制耦合,公共环境耦合,数据耦合 C、内容耦合,公共环境耦合,控制耦合,数据耦合 D、控制耦合,内容耦合,数据耦合,公共环境耦合 4、当一个模块直接使用另一个模块的内部数据时 , 这种模块之间的耦合为( D)。

A、数据耦合 B、公共耦合 C、标记耦合

D、内容耦合

5、数据耦合和控制耦合相比 , 则(B)成立。 A、数据耦合的耦合性强 B、控制耦合的耦合性强 C、两者的耦合性相当

D、两者的耦合性需要根据具体情况分析 6、衡量模块独立性的标准是( D)。 A、耦合的类型 B、内聚的类型 C、模块信息的隐藏性

D、耦合性和内聚性

7、如果某种内聚要求一个模块中包含的任务必须在同一段时间内执行聚为(A)。 A、时间内聚 B、逻辑内聚 C、通信内聚

D、信息内聚

8、为了提高模块的独立性 , 模块内部最好是( C)。 A、逻辑内聚 B、时间内聚 C、功能内聚

D、通信内聚

9、在结构化设计方法中 , 下面哪种内聚的内聚性最弱( C)。

16

则这种内

, A、逻辑内聚 C、偶然内聚

B、时间内聚 D、过程内聚

10、软件设计是把( A)转换为软件表示的过程。 A、软件需要 C、数据库

11、概要设计的主要成果是( C)。 A、用户的界面需求 C、概要设计说明书

B、用户的分析方案 D、系统总体方案 B、系统分析 D、软件代码

12、数据结构设计也是概要设计的重要内容 , 主要是进行数据的( A)设计。 A、逻辑

B、存取

C、用户视图

D、索引

13、概要设计与详细设计衔接的图形工具是( B)。 A、DFD图

C、程序流程图 PFD

B、SC图 D、PAD图

14、在软件开发中 , 下面任务不属于设计阶段的是( D)。 A、数据结构设计 C、定义模块算法

B、给出系统模块结构 D、定义需求并建立系统模型

15、下面不属于软件设计原则的是( C)。 A、抽象 C、自底向下

B、模块化 D、信息隐藏

三、简答题

1、软件设计应遵循的原则是什么 ?

答: 软件设计中一般应遵循以下原则:模块化、抽象、信息隐蔽与局部化、一致 性、完整性和可验证性。

2、什么是软件的概要设计 ?概要设计阶段完成的主要任务是什么 ?

17

答: 总体设计又称概要设计,是将软件需求转化为软件体系结构、确定系统级接 口、全局数据结构和数据库模式。 3、启发设计规则有哪些 ?

答:(1)模块功能的完善化;(2)消除重复功能,改善软件结构; (3)模块规模 应该适中;(4)模块的深度、宽度、扇出和扇入都应适当; (5)模块的作用范围 应该在控制范围之内; (6)力争降低模块接口的复杂程度; (7)设计单入口、单 出口的模块;(8)模块功能应该可以预测。

四、应用题

根据以下的 C语言程序段判断模块 A和 B之间属于哪一种耦合,内聚。 1、

模块 A “开发票”: ,,

water_fee= calc_waterfee (12.5,3.0); 模块 B“计算水费” :

float calc_waterfee (float mount ,float price ); {

float fee; ,,

feturn fee; }

答:模块 A 和 B 是数据耦合,模块 B 是功能内聚。 2、

模块 A : ,, flag=1 ;

max=max_avg(flag); ,,

模块 B:

int max_avg (int flag ) {

,,

if (flag= =1 ) ,,

else if(flag= =0 ) ,, }

答:模块 A 和 B 是控制耦合,模块 B 是逻辑内聚。 第 5 章 一、判断题

18

模块 B 是哪一种 1、(√)详细设计也称模块设计。

2、(× )在数据代码设计时,应尽量让一条代码代表多个信息。 3、(× )在数据代码设计时,应可能设计字母和数字混合代码。 4、(× )在输出界面设计时,要尽可能使用代码或缩写,以求简洁。 5、(× )详细设计评审应尽可能和概要设计评审一同进行。 二、选择题

1、软件详细设计的主要任务是确定每个模块的( A)。 A、算法和使用的数据结构 B、外部接口 C、功能 D、程序 2、借助于软件工具,可将( C)容易地转换为高级语言源程序。 A、程序流程图 B、N-S图 C、PAD图 D、判定表

3、不属于详细设计工具的是( A)。 A、DFD图 B、PAD图 C、PDl D、N-S图 4、程序的三种基本结构是( C)。 A、过程、子过程和子程序 B、递归、堆栈和队列 C、顺序、选择和重复 D、调用、返回和转移 5、下面描述中,符合结构化程序设计风格的是( A)。

A、使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B、模块只有一个入口,可以有多个出口 C、注重提高程序的执行效率 D、不使用 goto 语句 三、简答题

1、软件的详细设计阶段完成的主要任务是什么?

答:(1)算法设计;(2)数据结构设计; (3)模块接口细节设计; (4)测试用例设计; (5)

数据库物理设计; (6)数据代码设计;(7)其他设计;(8)编写详细设计说明书并进行评审。

2、数据输入界面设计的主要原则有哪些?

答:在设计数据输入界面时应做到:尽量简化用户的工作、减少输入的出错率;减轻用户

的记忆负担、 尽可能减少输入量并实现自动输入; 缩写; 自动填入已输入过的内容;列表式输入

对共同的输入设置默认值; ; 数据分组输入。

使用代码或

3、代码设计的原则有哪些?

答:代码设计的原则是标准化、唯一性、可扩充性、简单性、规范性和适应性。 四、应用题

1、请分别使用程序流程图、 程序流程图如下

PAD 图和 N-S 图描述下列程序的算法。

答:(1)求整数 1-n 的累加和 SUM ,其中 n 的值由键盘输入。

19

Sum=0,i=1

输入数n

N

n>=i

Y Sum=Sum+ i

i=i+1

输出数Sum

PAD 图如下

输入 N

I=1 Sum=0 当 I<=N

Sum=Sum+I I=I+1

打印 Sum

N-S 图如下

20

Sum=0 ,i=1

输入数n

DO ─WHILE

n>=i

Sum=Sum+ i i++

输出数 Sum

(2)求整型数组 K[50] 中的最大值和次大值。

答:N-S 图如下:

定义数组 k[50]

fst = k[0] , sed =k[1] I=3

当 i<=50 时

k[i]>fst

T

T

scd = fst fst=k[i]

I=i+1

21

F

k[i]>scd

F

Scd=k[i]

输出fst,scd

(3)求 s=1- 1/2!+1/3!- 1/4! +

⋯ . +1/n! ,其中 n 的值由键盘输入。

答: PAD 图如下:

输入N I=1 S=0

S=s-jc(i) T

当 I<=N

I%2=0

S=s+jc(i)

F

打印 S

I=I+1

P=1 DEF

K=1

JC(i)

当 K<=I

P=P*K

K=k+1

返回 P

2.根据以下伪码,画出 PAD 图

if (x30 if (xs=z goto 70 50 s=y

goto 70 60 s=x 70 ,,

答:

22

F

yF

T

S=Z

S=y

XT

XF

S=Z T

S=x

⋯ ⋯

3.将程序流程图转化为PAD 图 (1)

F

P

T

结束 A

B

F

O

T

答:

当 P A

直到 O

结束

B

(2)

23

F

P

T

A

结束

B

答:

当 P A B

结束

(3)

A

P

F

T

B 结束

答:

A

直到 P 为假

T

P

结束

B

F

24

(4)

F

A

T

F

B C

T

D

E

F

G

答:

T

当 A 为假

C 为假

D

F

break

F

A 为真

直到 E 为假

B

T

G

(5)只使用顺序结构和循环结构,构造分支结构。请画出 答:对于分支结构 if(f) a; else b;

PAD 图如下:

当 F A break

当!F B

break

25

图。只使用顺序和循环结构的PAD

第 6 章

一、选择题

1、UML 的主要特点不正确的是( C)。

A、面对对象,表达能力强 C、面对过程,表达能力强

2、 静态建模图不包括( B)。

B、可视化建模

D、统一标准

C、类图

D)。

A、用例图 A、用例 A、类名称 A、执行者 A、状态图 A、用例 A、关联 A、圆角的矩形

C、实心圆环 A、状态图 A、对象图 A、对象

B、协作图 B、系统 B、操作 B、对象 B、数据流图 B、对象 B、聚合

D 、对象图 D 、软件开发者 D 、对象 D、消息 D、结构图 D 、消息

D)。

3、 用例图的模型元素不包括( 4、 类图的要素不包括( D)。

C、行为者 C、属性 C、对象生命线

C、对象图 C、链

C、泛化 B、实心圆点

D、椭圆

5、 时序图中的要素不包括( A)。 6、 对象模型的描述工具是( C)。 7、 协作图的要素不包括( A)。

8、类图反映了系统中对象之间的抽象关系,不包括( 9、 下面( D)不是状态图的图符。

D 、内聚

10、 描述类中某个对象的行为,反映了状态与事件关系的是( A)。

B、数据流图 B、设计图 B、动态

C、对象图 C、状态图

A)模型。

D 、结构图 D 、结构图 D 、静态

11、 动态模型的描述工具( C)。 12、 表示对象的相互行为的模型是(

C 、结构

A)。

13、 有关类和对象的描述中,错误的是(

A、一个类只能有一个对象

B、对象是类的具体实例 C、类是某一类对象的抽象

D、类和对象的关系是一种数据类型和变量的关系

14、 用例图中用例之间的关系通常有关联关系、依赖关系和(

C)关系。

A、协作 A、对象图

二、简答题

B、聚合 B、设计图

C 、泛化 C 、活动图

D 、内聚

C)图。

15、 动态模型图包括:时序图、协作图、状态图和(

D 、结构图

1.简要介绍用例图的三个要素。 答: 用例图主要包括以下三个元素:

①用例( Use Case):用例是系统的使用过程或要执行的动作序列,用来描述某个参与 者使用系统所完成的功能。在图中用椭圆来表示,用例名称可写在椭圆中或椭圆下面。

26

②参与者( Actor )。或称角色或执行者,它是系统外部的一个实体(可以是任何的事物 或人所扮演的角色等) 。在图中用一个小人图形表示。

③关联。表示角色与用例之间的驱动和反馈关系, 在图中用线段或带箭头的线段表示。

2.分别写出 UML 对象图中对象的三种表示方式。

答:在 UML 中,对象图和类图一样采用矩形图示,不过对象名称下方有下划线(类名称下 方没有下划线) ,通常对象名采用:对象名:类名、 形式是尚未给对象命名,最后一种形式是省略了类名。 3.举例说明类图和对象图之间的关系。

答: 对象图展示了一组对象和它们之间的关系。对象图是类图的实例,对象之间的连 接是类之间关联的实例。类图和对象图的不同点在于对象图显示类的多个对象实例, 而不是实际的类。

4.活动图的主要作用是什么,状态图的主要作用是什么? 答:状态图和活动图都属于行为图,

主要用于分析、设计阶段描述对象的行为。状态图适于

描述单个对象状态的变化情况,活动图适于描述一个工作过程、多个对象之间的合作。

状态图描述一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态间的 转移。

活动图 (Activity Diagram) 是状态图的变种。状态图适于描述单个对象状态的变化情况, 而活动图的目的是描述动作(执行的工作和活动) 件触发, 当动作状态中的活动完成时就触发迁移, 一个活动。

,以及对象状态改变的结果,适于描述一 活动图中的一个活动结束后将立即进行下

个工作过程、 多个对象之间的合作。 与状态图不同的是, 活动图中动作状态的迁移不是靠事

:类名 或 对象名三种格式表示,中间 也可以表示用例间的包含与扩展关系。

三、应用题

1、某教务管理系统主要完成以下功能:教师使用该系统完成某班级学生某门课 程成绩的录入、修改、计算和打印,学生使用该系统查询所学课程的成绩,系统 管理员使用该系统进行学生信息、教师信息、课程信息和班级信息的管理。 请对该系统分析,找出系统中的参与者、用例,确定它们之间的关系,并对 每个用例进行详细描述。

略。

2、某教务管理系统中, 教师的主要信息包括: 工号、姓名、 性别、 职称、系部; 学生的主要信息包括:学号、姓名、性别、班级;课程的主要信息包括:课程编 号、课程名称、任课教师。请列出本系统中所涉及的主要的类,给出类的主要属 性及类间关系,画出该系统的类图。

略。

27

3、请画出某教务管理系统中某一学期中课程对象的状态图。

略。

4、请画出某教务管理系统中学生选课的活动图。

略。 第 7 章 一、选择题

1、汽车有一个发动机,汽车和发动机之间的关系是( B)关系。 A、一般具体

B、整体部分

C、分类关系

D、is a

2、火车是一种陆上交通工具,火车和陆上交通工具之间的关系是( A、组装

B、整体部分

C、has a

D、一般具体3、面向对象程序设计语言不同于其他语言的最主要特点是( C)。

A、模块

B、抽象性

C、继承性

D、共享性

4、软件部件的内部实现与外部可访问性分离,这是指软件的( A)。A、封装性

B、抽象性

C、继承性

D、共享性 5、面向对象分析阶段建立的三个模型中,核心模型是( C)模型。 A、功能

B、动态

C、对象

D、分析

6、 对象模型的描述工具是( C)。 A、状态图

B、数据流图

C、对象图

D、结构图

7、 动态模型的描述工具是( A)。 A、状态图

B、结构图

C、对象图

D、流程图 8、在只有单重继承的类层次结构中,类层次结构是( A)层次结构。A、树型

B、网状型

C、星型

D、环型

28

)关系。D

9、(C)模型表示了对象的互相行为。 A、功能

B、动态

C、对象

D、分析

10、 在确定类时,所有( A)是候选的类。 A、名词

B、形容词

C、动词 C)。 C、依赖 C)。 C、关联

D、属性 D、继承 D、代词

11、 面向对象分析的原则不包括( A、抽象

B、封装

12、 常用动词和动词词组来表示( A、对象

B、类

13、 在确定属性时,所有( B)是候选的属性。 A、名词

B、修饰性名词词组

C、动词

D、词组 A)来实现的。

D、共享性

14、 在面向对象方法中,信息隐藏是通过对象的( A、封装性

B、分类性

C、继承性 D)。

C、信息隐藏

15、 面向对象设计的准则不包括( A、模块化

B、抽象

D、强耦合

二、 简答题

1、面向对象分析通常要建立哪三种模型?它们分别描述系统的哪些方面?

答: 面向对象分析通常要建立三种模型,分别是对象模型、动态模型和功能模型。其中:

对象模型描述系统的数据结构,它是用来描述系统包含的对象及对象之间关系的模型; 动态模型描述系统的控制结构, 它是用来确定各个对象之间交互及整体的控制结构的模 型;

功能模型描述系统的功能,它是用来描述系统要实现的功能的模型。 2、对象模型有哪五种层次?

答: 复杂问题 ( 大型系统 ) 的对象模型由 5 个层次组成,即主题层、类 属性层和服务层。

- &- 对象层、结构层、

29

(1)类-&- 对象层: 定义类和属性。 在这个层次将分析与待开发软件对应的各个现实世 界的实体,并从中抽象出类和对象。

(2)结构层:定义对象和类之间的层次结构关系,如一般 整体- 部分结构(即组合结构) 。

(3)属性层:定义属性。为类和对象层中抽取出来的各个类和对象设计静态属性和它 们之间的关系。

(4)服务层:定义对象和类的动态属性以及对象之间的消息通信。

(5)主题层:主题是指导读者理解大型、复杂模型的一种机制。定义若干个主题,把 有关的对象分别划归不同的主题,每个主题构成一个子系统。

-特殊结构(即继承结构) 、

3、建立对象模型的基本过程是什么? 答: 建立对象模型的基本过程如下:

确定对象和类

确定结构

确定主题

确定服务和消息

三、应用题

1、写出图书管理系统中“办理还书”用例的用例描述。

略。

2、分析图书管理系统中“查询个人借阅”用例相关的实体类、控制类和边界类,绘制出该 用例的相关类图,并设计该模块的用户界面。

略。

第 8 章 一、判断题

1、(√)使用括号改善表达式的清晰性。

2、(× )对递归定义的数据结构不要使用递归定义的过程。 3、(× )尽可能对程序代码进行优化。 可读性第一,清晰性第二 4、(√)不要修改不好的程序,要重新编写。 5、(√)不要进行浮点数的相等比较。 6、(× )应尽可能多地使用临时变量。 7、(√)利用数据类型对数据值进行防范。 8、(× )用计数方法 (少量) 而不是用文件结束符 (大量) 判别批量数据输入 的结束。

9、(× )程序中的注释是可有可无的。 40%~60% 10、(√)使用有意义的标识符。

11、(× )应尽量把程序编写的短一些。 12、(× )应尽量使用 goto 语句。 二、选择题

30

1、在编码中首先要考虑的是( B)。 A、程序的执行效率 B、程序的可读性 C、程序的一致性 D、程序的安全性 2、(D)。不属于序言性注释内容的是 A、模块设计者 B、修改日期 C、程序的整体说明 D、语句功能 3、序言性注释应置于文件或模块的( A)位置。 A、起始 B、结束 C、中间 D、起始和中间 4、如果编写系统软件,可选用的语言是( C)。

A、FoxPro B、COBOL C、C D、FORTRAN 5、选择程序设计语言不应该考虑的是( B)。 A、应用领域 B、语言的功能 C、用户的要求 D、用户的使用水平 6、与编程风格有关的因素不包括( D)。 A、源程序文档化 B、语句构造 C、输入输出 D、程序的编译效率 7、最早用于科学计算的程序设计语言是( C)。 A、PROLOG B、Smalltalk C、FORTRAN D、COBOL 8、功能性注释的主要内容不包括( B)。 A、程序段的功能 B、模块的功能 C、数据的状态 D、语句的功能

9、对建立良好的编程风格,下面描述正确的是( A)。 A、程序应简单、清晰、可读性好 B、符号名的命名只要符合语法即可 C、充分考虑程序的执行效率 D、程序的注释可有可无

10、源程序中应包含一些内部文档,以帮助阅读和理解程序,源程序的内部文 档通常包括合适的标识符、注释和( A)。 A、程序的布局组织

B、尽量不使用或少用 goto 语句 C、检查输入数据的有效性 D、设计良好的输出报表

11、编制一个好的程序应强调良好的编程风格,例如,选择标识符的名字时应 考虑(C)。

A、名字长度越短越好,以减少源程序的输入量 B、多个变量共用一个名字,以减少变量名的数目 C、选择含义明确的名字,以正确提示所代表的实体 D、尽量用关键字作名字,以使名字标准化

12、以下关于编程风格的叙述中,不应提倡的是( B)。 A、使用括号以改善表达式的清晰性

B、用计数方法而不是用文件结束符判断输入的结束

31

C、一般情况下,不要直接进行浮点数的相等比较 D、使用有清晰含义的标识符

13、在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率,现在 人们更重视程序的( D)性。 A、技巧性 B、保密性 C、一致性 D、可理解性

14、为了提高易读性,源程序内部应加功能性注释,用于说明( B)。 A、模块总的功能 B、程序段或语句的功能 C、模块参数的用途 D、数据的用途

15、适合在互联网上编写程序可供不同平台上运行的面向对象的程序设计语言 是(B)。 A、ALGOL B、Java C、Smalltalk D 、Lisp 16、使用(C)语言开发的软件具有较好的可移植性。 A、COBOL B、BASIC C、C D 、C++ 17、用低级语言开发的程序,具有( C)特点。 A、运行效率低,开发效率低 B、运行效率低,开发效率高

C、运行效率高,开发效率低 D、运行效率高,开发效率高 三、简答题

1、程序设计语言发展至今已经历了哪几个时代?

答: 第一代语言(机器语言) 、第二代语言(汇编语言) 、第三代语言(高级语言) 。高级语 言种类繁多,又可分为传统的基础语言、结构化语言和专用语言三类。

2、良好的编码风格包括哪几方面?

答:1)源程序文档化 2)数据说明 3)语句构造 4)输入与输出 5)效率。

3、在软件开发时,应根据哪些因素选择程序设计语言?

答:(1)项目的应用领域。 (2)用户的要求。 (3)软件开发工具。 (4)算法和数据结构的复 杂性。(5) 软件开发人员的知识。 (6) 系统的可移植性要求。

四、应用题

1.指出下面的程序段在风格上的问题并改正。

答: 一方面尽量不使用“非”条件;另一方面语句格式不规范。改为:

if( x <= 0) {

x = -x;

}

2.请将语句 printf((i+1) % 10 = = 0) ?”%5dn”: ”%5d”, *(a+i) ) ;改写为更为清晰的格式。

答:

if ( (i+1) % 10 = = 0) {

printf(

”%n 5”d, *(a+i) );

}

32

else {

printf(

”%5d”, *(a;+i) )

}

3.王永涛同学于 2008 年 4 月 22 日编写了下面的 C程序, 其名称为 sumint.c 。请阅读该程

序,并根据程序设计风格的一般要求改写下面的程序。 答: 按编码风格优化后的代码为

/**************************************************************

程序名称: sumint.c 设计者: 王永涛 日期:

2008

年 4 月 22 日

程序功能:由键盘输入若干个整数,计算它们之和,并打印整数个数及其和 ***************************************************************/ # include void main() {

int count, j=1 ,sum=0, x; printf( 请“输入整数个数 n”); scanf(\"%d\while (j<=count) //求 count 个整数之和

{

printf( 请“输入第 %d 个整数: n”, j ); scanf(\"%d\sum=sum+x; //累加整数 j++; //整数个数计数

}

printf(\"%d 个整数的和为 %d\\n\" , j, sum);}

}

4、请对以下代码的布局进行改进,使其符合良好的编码风格。

答:

for(i=0;it=i;

for(j=i+1;jif(a[j]t=j; if(t!=i) {

temp=a[t]; a[t]=a[i];

33

a[i]=temp; } }

}

5、求整数 1~n 的累加和 sum,其中 n 的值由键盘输入。使用您熟悉的语言编写程序,注

意编码风格。 答:

/***************************** 程序名: sumints.c

程序功能: 求整数 1~n 的累加和 sum,其中 n 的值由键盘输入 *****************************/ void main( ) {

int i,n,sum=0; printf( “请输入整数个数 n\\n ”); for(i=1;i<=n;i+++) {

scanf( “%d”); /* 输入整数,使用空格、回车或 TAB键分隔*/ sum=sum+i; /* 计算累加*/ }

printf( “1~%d的累加和 sum=%d\\n ”,n,sum); }

第 9 章 一、判断题

1、(× )测试是为了验证该软件以正确地实现了用户的需求。 2、( √ )发现错误多的程序模块,残留在模块中的错误也多。 3、(× )白盒测试法是根据程序的功能来设计测试用例的。 4、(× )黑盒法是根据程序的内部逻辑来设计测试用例的。 5、( √ )确定测试计划是在需求分析阶段制定的。 6、( √ )集成测试计划是在概要设计阶段制定的。 7、( √ )单元测试是在编码阶段完成的。 8、( √ )集成测试工作最好由不属于该软件开发组的软件设计人员承担。 9、( √ )为了提高软件的测试效率,测试工作需要有测试工具的支持。 10、(× )在做程序的单元测试时,桩模块比驱动模块容易编写。 二、选择题

1、测试用例是专门为了发现软件错误而设计的一组或多组数据,它由( 成。

A、测试输入数据

B、预期的测试输出数据

C、测试输入与预期的输出数据

D、按照测试用例设计方法设计出的数据 2、测试和调试最大的不同在于( A)。 A、操作者的心理状态不同 B、它们的行为取向不同

34

C)组

C、使用的工具不同 D、运用的方法不同 3、一个成功的测试是( B)。 A、发现错误 B、发现至今尚未发现的错误 C、没有发现错误 D、证明发现不了错误 4、白盒法和黑盒法最大的不同在于( A)。 A、测试用例设计方法不同 B、测试的任务不同 C、应用的测试阶段不同 D、基于的知识集不同 5、单元测试阶段主要涉及( D)的文档。 A、需求设计 B、编码和详细设计 C、详细设计 D、概要设计

6、检查软件产品是否符合需求定义的过程称为( A)。 A、确认测试 B、集成测试 C、验证测试 D、验收测试 7、软件调试的目的是( B)。 A、发现错误 B、改正错误 C、改善软件的性能 D、挖掘软件的潜能 8、进行软件测试的目的是( A)。 A、尽可能多地找出软件中的错误 B、缩短软件的开发时间 C、减少软件的维护成本 D、证明程序没有缺陷

9、选择一个适当的测试用例, 用于测试下面的程序, 能达到判定覆盖的是A、

B、

A B A B False True

False True

True False C、 D 、 A B A B False False False True

True True

True False True

True

A OR B

False True 语句

10、在进行单元测试时,常用的方法是( A)。

A、采用白盒测试,辅之以黑盒测试 B、采用黑盒测试,辅之以白盒测试 C、只使用白盒测试 D、只使用黑盒测试

35

C)。 ( 11、白盒测试方法一般适合于( A)测试。 A、单元 B、系统 C、集成 12、为了提高测试的效率,应该( D)。 A、随机地选取测试数据

B、取一切可能的输入数据作为测试数据 C、在完成编码以后制定软件的测试计划

D、选择发现错误可能性大的数据作为测试数据 13、不属于白盒测试的技术是( D)。 A、语句覆盖 B、判定覆盖 C、条件覆盖 D、边界值分析

14、下列逻辑覆盖标准中,差错能力最强的是( D)。 A、语句覆盖 B、判定覆盖 C、条件覆盖 D、条件组合覆盖

15、在黑盒法中,着重检查输入条件组合的测试方法是( A、等价类划分法 B、边界值分析法 C、错误推测法 D、因果图法 三、简答题

1、 为什么要进行软件测试?软件测试要以什么目标和原则?

答:软件测试的目的是为了发现软件产品中存在的软件缺陷, 软件测试是软件开发过程中的一个重要阶段, 设计规格说明和编码的最终复审, 件可靠性的重要依据。

在软件测试中,应注意以下指导原则: (1)所有测试都应追溯到需求

(2)坚持“尽早地和不断地进行软件测试” (4)程序员应避免测试自己的程序。

(3)测试用例应由输入数据和预期的输出结果两部分组成。

D、确认

D)。

进而保证软件产品的质量。

是软件产品正式投入运行前, 对软件需求分析、

是软件质量保证的关键步骤。 软件测试的结果也是分析软

(5)在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。 (6)充分注意测试中的群集现象。

(7)严格执行测试计划,排除测试的随意性。 (8)应当对每个测试结果做全面检查。

(9)在测试程序时,不仅要检验程序是否做了该做的事,还要检验程序是否做了不该 做的事。

(10)应长期保留所有测试用例。保留测试用例有助于以后修改程序后的回归测试。

2、软件测试包括哪几个过程?测试过程中包括哪些数据源?

答: 测试过程分为 4 个步骤,即单元测试、组装测试、确认测试和系统测试。 数据源有:

(1)软件配置:包括软件需求规格说明、软件设计规格说明、源代码等。 (2)测试配置:包括测试计划、测试用例、测试驱动程序等。 (3)测试工具: 测试工具为测试的实施提供某种服务, 提高测试效率。

以减轻测试过程中的手工劳动,

3、黑盒测试法与白盒测试法的本质区别是什么?它们的使用场合有何不同。

答:黑盒测试法与白盒测试法的根本区别是设计测试用例的方法不同。

36

前者是测试产品

的功能,后者是测试产品的内部结构和处理过程。

通过黑盒测试主要发现以下错误: (1)是否有不正确或遗漏了的功能。

(2)界面是否有错,能否正确地接受输入数据,能否产生正确的输出信息。 (3)是否有数据结构或外部数据库访问错误。 (4)性能是否满足要求。 (5)是否有初始化或终止性错误。 白盒测试法是一种程序级的微观上的测试,

不适合于大单元、 大系统的测试, 主要用于

很小单元的测试,以及从事软件底层工作、生产构件的测试人员使用。

4、试比较测试与调试的异同。

答:软件测试的目的是尽可能多地发现程序中的错误,而调试的目的是根据测试时发现 的错误,找出错误的原因和具体位置,并改正错误。测试与调试的不同如下表所示。

测试与调试的不同

测试 (test)

目的是发现错误 有计划

以已知条件开始 , 使用预先定义的程序 , 有预知的结 果

由独立的测试组,在不了解软件设计的条件下完成

调试 (debug)

目的是找出错误位置并排除 被动的

以不可知内部条件开始 , 结果一般不可预见 由程序作者进行, 谁开发的程序就由谁来调 试

5 、试叙述面向对象的单元测试、组装测试、确定测试的内涵。

(1)面向对象的单元测试

面向对象的单元测试是进行面向对象集成测试的基础。面向对象的单元测试以类或对 象为单位。 由于类包含一组不同的操作,

(2)面向对象的集成测试

因为在面向对象的软件中没有层次的控制结构,并且构成类的成分彼此之间存在着直 接或间接的交互作用,所以,传统意义上的自顶向下和自底向上的集成策略将不再适用。

(3)面向对象的确认测试

在确认测试层次,不需要再考虑类的实现和交互的具体细节,只要验证交互过程及功 能,包括提供的用户界面,用户可见的操作,

软件的反应和输出的结果等情况,其中测试用

例的选择主要是依据动态模型和系统的脚本描述。

并且某些特殊的操作可能被多个类共享,

因此,单

元测试不能孤立地测试某个操作,而是将操作作为类的一部分来测试。

四、应用题

1、使用等价类划分方法,为一元二次方程求解程序设计足够的测试用例。该程 序要求分别打印出:不是一元二次方程,有实数根和有复数根三种信息。

测试用例表

测试内容

是一元二次方程且有实根 是一元二次方程且有复根

不是一元二次方程

测试数据 a=1 b=-5 c=6 a=1 b=1 c=2.5 a=0 b=1 c=1

期望结果 x1=2 x2=3 x1=-0.5+1.5i x2=-0.5-1.5i

x=-1

2、早期 DOS操作系统对文件名的命名要求如下:文件名由基本文件名和扩展名 组成,扩展名可以省略,两部分文件名以小数点分隔。基本文件名至少为 1 位,

37

至多为 8 位长度,且首字符必须为非数字字符 (如字母或部分特殊符号, 文件名 中不能包括空格、 +号、?号、 *号、圆点符号。大小写字母无区别) ;扩展名最 多为 3 位长度。

请用等价类划分法设计对文件名命名要求的测试用例。

等价类划分表

输入条件 基 本 文 件 名

(1)1-8 个字符

长度

(6)多于 8 个字符

基 本 文 件 名

(2)字母或部分特殊字符

首字符 其他字符 扩展名长度

(3)字母、数字、部分特殊字符 (4)0-3 个字符

测试用例表

测试数据

abcd1234.123 .abc

abcd12345.123 1234abcd.123 a b a*b a?b a+b abc.1234

无效 无效 有效 无效 无效 无效 无效

期望结果

测试范围

(1)(2)(3) (4) (5) (6) (7) (8) (8) (8) (8) (9)

(8)包含空格, +,?, * ,. (9)多于 3 个字符

(7)不是字母也不是部分特殊字符 (5)少于 1 个字符

合理等价类

不合理等价类

3、对于例 9-2,仿照表 9-5,请重新设计六种逻辑覆盖的测试用例,并重新填写 表格内容,要求测试数据要尽量少。

逻辑覆盖测试用例

覆盖类型

输入数据

预期 结果 测试

判定 判定 条件 条件 条件 条件 A>1 且 B=0

A=2 或 X>1

语句覆盖 判定覆盖 条件覆盖 判定 /条件 覆盖

3 3 3 0 2 2 1 2

条件 组合 2 覆盖 1

1 2

路径覆盖

3 0

0

0 1 0 2 0 2 0 2 0 1 0 1 1

3 0 3 3 1 3 0 3 0 2 1 2 2 1

2 0 4 0 2 4 1 2 1 3 1 3 3 1

①②④ ①②⑤ ①③④ ① ④ ①③④ ①②④ ①③⑤ ① ④ ① ④ ① ④ ① ⑤

T T F F F T F T F F F

T F T F T T F T T T F T T F

F T T F T T F F

T F T F T F T F

F T T F T T F F

T F T F T F T F

A>1

B=0

A=2

X>1

A B X X

① ② ③ T

④⑤ ①③④ ①③⑤

F F

4 0 1 0 ①②⑤ T

38

F

第 10 章 一、判断题 1、( √ )在需求分析阶段,就应该考虑软件可维护性问题。

2、(× )在完成软件测试工作后, 可删除源程序中的注释, 以缩短程序的长度。 3、( √ )尽可能在软件生产过程中保证各阶段文档的正确性。 4、(× )编码时要尽可能使用全局变量。

5、(× )应选择时间效率和空间效率尽可能高的算法。 6、(× )应尽可能利用计算机硬件的特点。 7、(× )应使用软件维护工具或支撑环境。 8、(× )在概要设计时应加强模块间的联系。 9、(× )应尽可能使用低级语言编写程序。

10、(× )为加快维护作业的进程,应尽可能增加维护人员。

二、选择题

1、(A)。由于在开发过程中测试的不彻底、不完全而造成的维护是( A、改正性维护 B、完善性维护 C、适应性维护 D、预防性维护

2、为适应软硬件环境变化而修改软件的过程是( C)。 A、改正性维护 B、完善性维护 C、适应性维护 D、预防性维护

3、为增加软件功能和性能而进行的软件维护过程是( B)。 A、改正性维护 B、完善性维护 C、适应性维护 D、预防性维护 4、软件维护的困难主要原因是( D)。 A、人员少 B、费用低 C、开发方法的缺陷 D、维护难 5、维护阶段需由用户填写的维护文档是( C)。 A、软件需求说明 B、软件修改报告 C、软件问题报告 D、测试分析报告 6、软件的可维护性是指( A)。 A、软件能被修改的难易程度 B、软件可理解的难易程度 C、软件可移植性和可使用性 D、软件维护文档的完整性 7、软件维护工作中最主要部分是( A)。 A、完善性维护 B、改正性维护 C、适应性维护 D、预防性维护

8、维护中,因误删除一个标识符而引起的错误是( C)副作用。 A、文档 B、数据 C、编码

D、设计 9、维护中,因修改全局变量或公用数据而引起的错误是( B)副作用。A、文档 B、数据 C、编码 D、设计

10、软件维护工作过程中,第一步是先确定( B)。

39

A)。

A、环境维护 B、维护类型 C、维护要求 D、维护者

11、在软件生存周期中,工作量所占比例最大的阶段是( D)阶段。 A、需求分析 B、设计 C、测试 D、维护

12、软件工程对维护工作的主要目标是提高( C),降低维护的代价。 A、软件的生产率 B、软件的可靠性 C、软件的可维护性 D、维护的效率 13、软件维护的副作用是指( C)。 A、开发时的错误 B、隐含的错误 C、因修改软件而造成的错误 D、运行时的误操作

14、一般来说,在软件维护过程中,大部分工作是由( C)引起的。 A、适应新的软件环境 B、适应新的硬件环境 C、用户的需求改变 D、程序的可靠性 三、简答题

2.为什么要进行软件维护?软件维护通常有几种类型?

对软件进行维护的根本目的是为了延长软件的生存期。软件维护的原因除了软件在开 发过程中的错误需要修改外,根本的原因是变化,使用软件的机构的工作流程、组织机构、 软件工作的软硬件环境等都在变化, 要求使用的软件也跟着变化, 所以必须对软件进行维护。

维护的类型有四种( 1)改正性维护( 2)适应性维护( 3)完善性维护( 4)预防性维护 3. 请说明软件维护组织中各种人员及其职责。

答:维护组织机构内一般设修改负责人、维护管理员、系统监督员、配置管理员、维护人员 等。各自的职责是:

修改负责人是维护的行政领导,管理维护的人事工作。

维护管理员负责接受维护申请, 他把申请转交给系统监督员 (或称系统管理员) 去评价。 并负责向上级报告维护工作。

系统监督员对维护任务做出评价。

配置管理员严格把关程序修改过程,控制修改的范围,对软件配置进行审计。 维护人员负责分析程序的维护要求并进行程序的修改工作。 4.请说明软件维护的流程。

答:(1)确定维护的类型及维护要求( 施维护任务。 (4)维护复审。 5.什么是软件的可维护性。

答: 软件可维护性是指维护人员理解、改正和改进这个软件的难易程度。 6. 简述决定软件可维护性的因素。

答:1)可理解性 2)可测试性 3)可修改性 4)可靠性 5)可移植性 6)可使用性 7)效率 7.简述提高软件可维护性的方法。

答:1)建立明确的软件质量目标 2)使用先进的软件开发技术和工具 证审查 4)选择可维护的程序设计语言 8.软件维护的副作用有哪些?

答: 代码的副作用,数据的副作用,文档的副作用。

5)改进程序文档。

3)进行明确的质量保

2)根据不同维护类型确定维护的时机和策略(

3)实

第 11 章

40

一、判断题 1、(× )CMM 可用于评估软件开发机构的软件开发能力, 软件开发机构的 CMM 级别越低越好。

2、(√)在软件开发过程中,盲目增加人员可能会造成事半功倍的效果。 3、(× )甘特图是项目成本估算的工具之一。 4、(√)IEEE 是一个国际标准化组织。

5 、(√)用户手册应从软件工程的需求分析阶段开始编写。 二、选择题

1、软件项目管理是( D)一切活动的管理。 A、需求分析 B、软件设计过程 C、,模块设计 D、软件生存周期

2、在软件工程项目中, 不随参与人数增加而使生产率增加的主要问题是 (D)。 A、工作阶段的等待 B、产生原型的复杂性

C、参与人员所需的计算机数目 D、参与人员之间的通信困难

3、COCOCO 估算模型是( B)模型。 A、模块性成本 B、结构性成本 C、动态单变量 D、动态多变量

4、自底向上估算方法的缺点是估算往往缺少系统级工作量,所以估算( A)。 A、往往偏低 B、往往偏高 C、不太准确 D、较为准确

5、软件管理比其他工程管理更为( B)。 A、容易 B、困难 C、迅速 D、迟缓 6、CMM 模型中属于可管理级的特征( D)。 A、工作无序,项目进行过程中经常放弃当初的计划 B、建立了项目级的管理制度 C、建立了企业级的管理制度

D、软件过程中活动的生产率与质量是可度量的 7、由(B)组织制定的标准是国际标准。 A、GJB B、IEEE C、ANSI D、ISO 8、GB/T 8567-2006 《计算机软件文档编制规范》是( D)标准。 A、强制性国家 B、推荐性国家 C、强制性行业 D、推荐性行业

9、以下说法错误的是( B)。

A、IEEE是指美国电气与电子工程师协会 B、GB是指中华人民共和国军用标准 GJB C、DOD-STD是指美国国防部标准 D、MIL-S 是指美国军用标准

10、测试计划文档应从软件工程的( B)阶段开始编写。 A、可行性研究 C、软件设计 三、简答题

1、为什么要进行软件项目管理?

B、需求分析 D、编码

41

答:软件项目管理的根本目的是为了让软件项目尤其是大型项目的整个软件生存周期都能

在管理者的控制下,以预定的成本按时、保质地完成软件并交付用户使用。

2、软件项目管理的职能包括哪些? 答:软件项目管理的职能包括:

(1)制定计划:规定要完成的任务和要求,安排资源、人员和进度等。 (2)建立组织:建立分工明确的为实施计划的责任制机构,以保证任务的完成。 (3)配备人员:根据任务要求,任用各种层次的技术人员和管理人员。

(4)协调或追踪与指导:跟踪项目的进展情况,协调、指导、鼓励和动员各种人员完 成所分配的任务。

(5)控制或检验:对照计划和标准,监督和检验项目实施的情况。

3、程序设计小组的组织形式有哪几种?

答:(1)主程序员制小组。 该小组的核心有 3 个人。 主程序员、 辅助程序员和程序管理员。

如果大多数开发人员比较缺乏经验, 织方法。

(2)民主制程序员小组。在民主制小组中,组内成员之间可以平等地交换意见。适合 于研制时间长、开发难度大的项目。

(3)层次式小组

这种组织中, 组内人员分为 3 级。 组长负责全组工作, 直接领导 2~3 名高级程序员, 每 位高级程序员管理若干名程序员。这种组织比较适合于层次结构的课题。

而程序设计过程中又有许多事务性工作,

则采取该种组

4、软件开发成本估算方法主要有哪几种? 答:常用的成本估算策略有以下 4 种:

(1)参考已经完成的类似项目,估计待开发项目的工作量和成本。

(2)将大的项目分解成若干个小项目,分别对每个子项目的工作量和成本进行估算, 再估算整个项目的工作量和成本。

(3)根据软件生存周期,分别估算出软件开发各阶段的工作量和成本,然后再把这些 工作量和成本汇总,估算出整个项目的工作量和成本。

(4)根据实验或历史数据给出软件项目工作量或成本的经验估算公式。 成本估算方法有自顶向下估算法、自底向上估算法和差别估算方法。

5、软件质量的六个要素是什么? 答:软件质量的 6 个要素是:

(1)功能性:软件所实现的功能满足用户需求的程度。

(2)可靠性:在规定的时间或条件下,软件所维持其性能水平的程度。

(3)易使用性: 对于一个软件, 用户学习、 操作、准备输入和理解输出时所做努力的程度。 (4)效率:在指定的条件下,用软件实现某种功能所需的计算机资源(包括时间)的有效 程度 。

(5)可维护性:在一个可运行的软件中,为了满足用户需求、环境改变或软件错误发生时 进行相应修改所做的努力的程度。

(6)可移植性:把程序从一个计算机系统或环境转移到另一个计算机系统或环境的容易程 度。

6、CMM 的五个级别各有哪些特征? 答:CMM 的 5 个级别及其特征如下:

(1)初始级:软件过程未加定义,工作无序,无步骤可循。

(2)可重复级:已建立了基本的项目管理过程,可以重复以前类似项目所取得的成功案

42

例。

(3)已定义级:用于管理和工程的两个方面的过程均已文档化、标准化,并形成了整个 软件组织的标准软件过程。

(4)已管理级:制定了软件过程和产品质量的详细的度量标准,收集了软件过程和产品 质量的详细度量数据,使用这些度量数据,能够定量地理解和控制软件过程和产品。

(5)优化级:通过定量的反馈能够实现持续的过程改进,这些反馈是从过程以及对新想 法和新技术的测试中获得的。

7、什么是软件配置管理?它有什么作用?

答:软件配置管理( Software Configure Management ,SCM )用于整个软件工程过程,其任

务是标识和确定系统中的配置项,

在系统整个生命期内控制这些配置项的发布和变更,

记录

并报告配置的状态和变更要求,验证配置项的完整性和正确性。

SCM 活动的目标是为了:①标识变更;②控制变更;③确保变更正确地实现;④向其他 有关人员报告变更。

8、软件工程标准化的意义有哪些?

答: 软件工程标准化会给软件开发工作带来以下好处:

(1)提高软件的可靠性、可维护性和可移植性,从而提高软件产品的质量。 (2)提高软件的生产率,提高软件人员的技术水平。 (3)改善软件开发人员之间的通信效率、减少差错。 (4)有利于软件工程的管理。

(5)有利于降低软件成本、缩短软件开发周期,降低运行与维护成本。

9、软件文档的作用有哪些?

答: 软件文档也是软件产品的一部分,没有文档的软件不能称其为软件。

软件文档在软件开发人员、 软件管理人员、 软件维护人员、 用户以及计算机之间起着重 要的桥梁作用。 开发人员通过软件文档交流设计思想和设计软件; 文档掌握软件的使用和操作。

规范、齐全、有效的软件文档会使软件开发活动更科学、规范,更有成效。缺乏必要的 文档资料或者文档资料不合格,必然给软件开发和维护带来许多严重的困难。

管理人员通过文档了解软

用户通过

件开发项目安排、进度、 资源使用和成果等; 维护人员通过文档对项目进行维护;

43

因篇幅问题不能全部显示,请点此查看更多更全内容