您的当前位置:首页正文

第8章 软件工程 习题与答案

2020-01-17 来源:步旅网


本章习题

(1) 复习题 1.简述软件的特点

答:

软件相对硬件而言有许多不同特点。了解这些特别之处能够帮助我们全面、正确地理解计算机软件。

(1)软件是一种逻辑实体,而不是具体的物理实体,具有很强的抽象性。我们只能把它记录在介质上,或在系统上运行,但却无法直接通过我们的眼睛看到软件的形态。

(2)软件是一个逻辑上复杂而规模上庞大的系统,涉及技术、管理等多方面的问题。如果将代码比作零件,则一个软件是由成百上千万个零件组成的复合体,而且其结构远较机械装置复杂。应该说软件的复杂程度高于同等规模的硬件产品。

(3)软件是智力产品,其价值体现在解决问题的知识和能力,而并不体现在软件载体本身。软件的生产方式与硬件明显不同,设计方法和制造阶段不同;软件的生成成本主要在研发设计上,而大量复制几乎没有成本。

(4)在软件的运行和使用期间,没有硬件的磨损、老化问题。但软件维护比硬件维护要复杂得多,软件的故障主是由于对软件的改变和使用环境的变化引起的。

(5)软件的开发和运行对硬件有较强依赖关系。在软件开发有可移植性的问题,现在

通常把软件的可移植性作为衡量软件质量的重要因素之一。

(6)软件工作涉及许多社会因素。软件与人的关系密切,涉及到语言、文化等多方面,甚至关系到的道德领域。

{P175}

2.什么是软件危机?主要有哪些表现?其产生的原因是什么?

答:

软件危机是软件开发领域,特别是在大型软件开发和维护过程中遇到的一系列严重问题的统称。

软件危机主要表现为费用高、开发过程不易控制、工作量估计困难、软件质量低、软件项目失败率高、无法判断大型系统能否正常工作以及软件维护任务重等现象。

产生软件危机的主要原因,一方面是软件本身所固有的抽象性、复杂性等特性;另一方面是人们当时对软件和软件开发过程的不正确认识。

{P175}

3.简述什么是软件工程

答:

软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。它借鉴系统工程的原则、方法,以提高质量,降低成本为目的。软件工程是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门学科。采用工程化方法和途径来开发与维护软件。

{P175-176}

4.简述软件工程研究的基本内容与目标

答:

软件工程研究的内容包括与软件开发相关的理论,结构,过程,方法,工具,环境,管理,规范等。理论与结构是软件开发的技术基础,包括程序正确性证明理论,软件可靠性理论,软件成本估算模型,软件开发过程模型,模块划分原理等。软件开发技术包括软件开发方法学,软件工具和软件开发环境。良好的软件工具可促进方法的研制,而先进的软件开发方法能改进工具。软件工具的集成构成软件开发环境。管理技术是提高开发质量的保证,软件工程管理包括软件开发管理和软件经济管理,前者包括人员分配,制定计划,确定标准与配置,而后者的主要内容有成本估算和质量评价。

软件工程的基本目标是提高软件质量,降低软件开发成本为。

{ P175-176 }

5.软件生存周期一般可分为哪几个阶段?

答:

软件生存周期一般可分为:市场分析,可行性研究,以及项目定义阶段;需求分析阶段;设计(总体设计和详细设计)阶段;编码实现阶段;测试阶段;使用与维护阶段等。

{P177}

6.试比较各种软件开发模型的优点和缺点

答:

常用的软件开发模型包括瀑布模型、原型模型和螺旋模型。

瀑布模型是软件工程的基础模型。该模型简单直观,但缺乏灵活性,无法解决软件需求不明确或不准确的问题。不适合大规模软件项目的开发。

原型模型的优点是支持软件需求开发,该模型提高了开发人员的效率,降低开发费用,缩短开发时间。原型模型的缺点是容易给人错觉,用户不一定能理解原型与正式系统之间的差别。管理开销大,并且资源管理也很困难。

螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。螺旋模型需要多次迭代,会增加开发成本,延迟提交时间。

{P178-180}

7.简述需求分析的任务和过程

答:

需求分析的根本任务就是要明确项目的目标,也就是准确地回答“系统要做什么”这个问题。需求本身与系统如何实现是无关的。对系统的综合需求主要有:系统功能需求、系统性能需求、运行环境需求、将来可能提出的需求。

需求分析过程包括需求的获取、需求分析、需求文档编写、需求管理等一系列活动。

{P180-182}

8.简述面向对象的软件工程方法

答:

面向对象方法在软件工程领域能够全面运用。它包括面向对象的分析、面向对象的设计、面向对象的编程、面向对象的测试和面向对象的软件维护等主要内容。

面向对象的分析直接针对问题域中客观存在的各项事物建立模型中的对象。用对象的属性和服务分别描述事物的静态特征和行为。面向对象的分析主要用于需求分析阶段。

面向对象的设计针对系统的实现运用面向对象方法。包括把面向对象的分析模型直接搬到面向对象的设计;二是针对具体实现中的人机界面、数据存储、任务管理等因素实现采用与面向对象的分析相同的表示法和模型结构。

面向对象的编程又称作面向对象的实现。是用一种面向对象的编程语言把面向对象设计模型中的每个成分书写出来。

面向对象的测试是对于用面向对象技术开发的软件,在测试过程中继续运用面向对象技术,进行以对象概念为中心的软件测试。

面向对象的软件工程方法为改进软件维护提供了有效的途径。程序与问题域一致,各个阶段的表示一致,大大降低了理解的难度。可提高软件维护效率。

{P186-187}

9.什么是软件质量?如何保证软件质量?

答:

软件质量是指所有描述计算机软件优秀程度的特性的组合。通俗地说就是,软件满足各功能、性能需求,符合标准的程度,程度高则质量。IEEE定义软件质量为“与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体”。

软件质量是各种特性的复杂组合。它随着应用的不同而不同,随着用户提出的质量要求不同而不同。用户满意度是衡量软件质量的总体标准。

在软件项目的开发过程中,首先应强调软件总体质量,包括软件正确性、可维护性、健壮性、可用性与效率等多方面。应在软件工程化生产的整个周期的各个阶段都注意软件的质量。应制定软件质量标准,定量地评价软件质量。主要采取的技术措施是审查和测试。在软件开发的各个阶段都可以分别组织审查和测试,以实现全程的质量管理。

{P189-190}

10、简述软件项目管理的内容

答:

项目管理是指把各种资源组合在一起,在规定的时间、预算和质量目标范围内完成项目的各项工作。管理工作强调协调各方面的因素,达到整体的最优。

软件项目管理的主要内容包括项目的组织计划、资源管理、质量管理。其中资源管理包括对项目开发所需的技术、人员、资金等方面的管理。软件项目管理的手段主要是一系列制度、规范文档和专业管理工具。

{P192-195}

(2) 练习题

1、一个完整的软件包括:____________________________________等几个组成部分。

程序、数据和文档 (P175)

2、软件工程的根本目的是_____________________________________。

提高软件质量、降低开发成本 (P176)

3、原形模型的突出优点是_______________。

支持需求开发,帮助用户和开发人员理解需求 (P178)

4、为了便于对照检查,测试用例应由输入数据和预期的_________两部分组成。

结果(P191)

5、在结构化方法包括___________________________________________________。

结构化分析、结构化设计、结构化编程3个方面(P183)

6、需求变更控制中最主要的两点是对需要变更进行________和________。

影响评估、 记录 (P182)

7、在软件开发中,下面任务不属于设计阶段的是______。

A、数据结构设计 B、给出系统模块结构

C、定义模块算法 D、定义需求并建立系统模型

D (P177)

8、软件需求分析阶段的工作,可以分为四个方面:需求获取、需求分析、编写需求规格说明书以及_________。

A、阶段性报告 B、需求评审 C、总结 D、都不正确

B (P181)

9、检查软件产品是否符合需求定义的过程称为______。

A、确认测试 B、集成测试 C、验证测试 D、验收测试

A (P192)

10、螺旋型模型特有的阶段是_______。

A.需求分析 B.原型建造 C.风险分析 D.集成测试

C (P179)

11、耦合程度最高的是_______。

A.数据耦合 B.控制耦合 C.外部耦合 D.内容耦合

D (P184)

12、内聚强度最低的是_________。

A.偶然内聚 B.功能内聚 C.过程内聚 D.时间内聚

A (P185)

13、软件维护产生的副作用,是指_____。

A.开发时的错误 B.隐含的错误

C.因修改软件而造成的错误 D.运行时误操作

C (P183)

14、面向对象的特性中_______降低系统的复杂性。

A.封装性 B.继承性 C.唯一性 D.多态性

B (P187)

15、提高软件质量和可靠的技术大致可分为两大类:其中一类就是避开错误技术,但避开错误技术无法做到完美无缺和绝无错误,这就需要_____。

A.消除错误 B.检测错误 C.避开错误 D.容错

B (P191)

16、_____是以提高软件质量为目的的技术活动。

A.技术创新 B.测试 C.技术创造 D.技术评审

D (P190)

17、面向对象方法学的出发点和基本原则是尽可能模拟人类习惯的思维方式,分析、

设计和实现一个软件系统的方法和过程,尽可能接近于人类认识世界解决问题的方法和过程。因此面向对象方法有许多特征,如软件系统是由对象组成的;________;对象彼此之间仅能通过传递消息互相联系;层次结构的继承。

A.开发过程基于功能分析和功能分解 B.强调需求分析重要性

C.把对象划分成类,每个对象类都定义一组数据和方法 D.对既存类进行调整

C (187)

18、软件开发过程中,抽取和整理用户需求并建立问题域模型的过程叫________。

A.可行性研究 B.需求分析 C.总体设计 D.编码实现

B (P180)

19、为了提高测试的效率,应该________。

A.随机地选取测试数据

B.取一切可能的输入数据作为测试数据

C.在完成编码以后制定软件的测试计划

D.选择发现错误可能性大的数据作为测试数据

D (P191-192)

20、软件工程技术框架中的基础是________。

A.工具 B.方法 C.过程 D.质量

D (P176)

21、对象实现了数据和操作的结合,使数据和操作________于对象的统一体中。

A.结合 B.隐藏 C.封装 D.抽象

C (187)

22、软件测试方法中的静态测试方法之一为________

A.计算机辅助静态分析 B.黑盒法

C.路径覆盖 D.边界值分析

B (191)

23、软件生命周期中所持续最久的阶段是________

A.详细设计 B.软件编码 C.软件测试 D.软件维护

D (P177)

24、软件项目工作量估算的单位通常使用________。

A.代码行数 B.人年 C.程序的KB数 D.算法的复杂度

B (P193)

25、结构化程序设计主要强调的是________

A、程序的规模 B、程序的效率

C、程序设计语言的先进性 D、程序易读性

D (P183)

26、需求分析阶段的任务是确定________

A、软件开发方法 B、软件开发工具

C、软件开发费 D、软件系统的功能

D (P180)

27、可行性分析是在系统开发的早期所做的一项重要的论证工作,它是决定该系统是否开发的决策依据,因必须给出________的回答。

A.确定 B.行或不行 C.正确 D.无二义

28、试分析软件何时变得无用?

提示:该题主要考虑对软件本质的分析和认识。

软件在运行和使用期间,没有硬件的磨损、老化问题。但软件维护比硬件维护要复杂得多,软件的故障主是由于对软件的改变和使用环境的变化引起的。

软件的开发和运行对硬件有较强依赖关系。

因此,对于某种具体软件而言,当软件的运行环境变化到一定程度,或对软件的需求变化到一定程度,或者能够运行该软件的硬件退出市场后,这时种软件就会变得无用了。

{P175}

29、试论软件结构化开发中,模块是大一些少一些好,还是小一点,多一些好?

提示:

模块的大小和多少直接相关,是模块化设计中一个重要问题,即模块划分的粒度。单个模块的规模较大,即粒度大时。每个模块需要处理的问题较为复杂,但模块总数较少,整体结构较为简单;如果粒度较小,每个模块相对简单,但是模块量较多,模块之间的关系复杂,整体结构较为复杂。模块划分的数量目前还没有统一的方法进行确定,从实际情况两方面因素折衷考虑比较可取,即不要将模块搞得很大,也不要划分过细。

{P183-184}

30、试比较白盒测试和黑盒测试

答:

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

白盒测试法的前提是可以把程序看成装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作,白盒测试又称为结构测试。白盒测试由程序员责任,只有他们准确地知道程序内部发生了什么。每个编写代码的程序员都必须确保每一条指令和每一种情况都已经被测试过。

{P191-192}

31、试分析内聚和耦合的异同点

答:

耦合是对一个软件结构内各个模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度,调用模块的方式,以及通过接口的信息。

根据模块独立性的原则,在软件设计中应该尽可能采用松散耦合。在松散耦合的系统中测试或维护任何一个模块,而不影响系统的其他模块。模块间联系简单,在某一处发生错误时,传播到整个系统中的可能性较小。模块间的耦合程度影响系统的可理解性、可测试性、可靠性和可维护性。

模块之间的耦合一般分为七种类型,由低到高包括:非直接耦合,数据耦合,标记耦合,控制耦合,外部耦合,公共环境耦合,内容耦合。

内聚表示一个模块内各个元素间结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。设计时应该力求做到高内聚,少用或尽量不要使用低内聚。

内聚按强度从低到高有以下几种类型:偶然内聚,逻辑内聚,时间内聚,过程内聚,通信内聚,顺序内聚,功能内聚。

内聚和耦合是密切相关的,模块内的高内聚往往意味着模块间的松耦合。通过修改设计提高模块的内聚程度,并降低模块间的耦合程度,从而获得较高的模块独立性。内聚和耦合都是进行模块化设计的有力工具,实践表明内聚更重要,应该把更多注意力集中到提高模块的内聚程度上。

{P184-185}

32、某函数要找出一组数中的最小值。该组数以数组形式传递给函数,最小值返回给主调函数。在调用和被调用函数之间使用的是什么类型的耦合?

提示:

根据耦合的定义和题义分析,由于调用和被调用函数之间有参数传递,且传递的参数是数组这种数据结构,不是仅仅是简单变量,最小值返回时是简单变量,综合分析这种情况属于标记耦合

{P184-185}

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