软件工程简答题答案 第五版 下载本文

软件工程简答题 第一章 绪论

1. 什么是软件危机?软件危机有什么表现?软件危机产生的原因是什么?

答:所谓软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。主要是指如何开发软件,怎样满足对软件日益增长的需求,如何维护数量不断膨胀的先有软件。 表现:(1)对于软件开发的成本和进度的估计很不准确。(2)开发的软件产品不能完全满足用户要求,用户对已完成的软件系统不满意的现象常常发生。(3)开发的软件可靠性差。(4)软件通常没有适当的文档资料。(5)软件的可维护性差。(6)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。

原因:软件开发中遇到的问题因找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,导致了软件危机。

2. 简述软件的发展过程。

答:软件生产的发展划分为三个年代:(1)程序设计时代:这一时期,软件的生产主要是个体手工劳动的生产方式。(2)程序系统时代:由于计算机的应用领域不断扩大,软件的需求也不断增长,软件由于处理的问题域扩大而使程序变得复杂,设计者不得不由个体手工劳动组成小集团合作,形成作坊式生产方式小集团合作生产的程序系统时代。(3)软件工程时代:软件工程时代的生产方式是采用工程的概念、原理、技术和方法,使用数据库、开发工具、开发环境、网络、分布式、面向对象技术来开发软件。

3. 什么叫软件工程?软件工程是如何克服软件危机的?

答:软件工程是将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程及上述方法的研究。为了克服软件危机,人们从其他产业的工程化生产得到启示,采用工程的概念、原理、技术和方法来开发和维护软件。

4. 软件工程的目标是什么?软件工程有哪些原则?

答:软件工程的目标是:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足用户需求的软件产品。原则如下:抽象、模块化、信息隐藏、局部化、完整性、一致性和可验证性。

5. 为什么说软件工程是一门综合性的交叉学科?

答:因为软件工程涉及哲学、计算机科学、工程科学、管理科学、数学和应用领域知识。

6. 软件工程方法学的基本内容包括哪些?

答:基本内容包括:(1)结构化理论和方法。(2)模块技术与数据抽象。(3)软件测试与程序正确性证明。(4)软件分析与设计方法、工具和环境。(5)软件工程管理与质量评价。

7. 软件产品具有哪些特殊性质? 答:Not found.

8. 软件工程学研究的对象是什么?

答:软件工程研究的主要内容包括软件开发技术和软件开发管理两个方面。在软件开发技术中,它主要研究软件开发方法、软件开发过程、软件开发工具和环境。在软件开发管理中,它主要研究软件管理学、软件经济学和软件心理学等。

第二章 基本理论

1. 什么是软件的生命周期模型?它主要有那些模型?

答:软件生命周期模型是描述软件开发过程中各种活动如何执行的模型。主要有:瀑布模型、原型模型、增量模型、螺旋模型、喷泉模型、基于知识的模型和变换模型。

2. 什么是软件开发方法?有那些主要开发方法?

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

3. 开发软件为什么首先要确定软件生命周期模型?

答:一个强有力的软件生命周期模型对软件开发提供了强有力的支持,为软件开发过程中所有活动提供了统一的政策保证,为参与软件开发的所有成员提供了帮助和指导。它提示了如何演绎软件过程的思想,是软件生命周期模型化技术的基础,也是建立软件开发环境的核心。

4. 软件工程过程包括那些过程?

答:包括如下7个过程:(1)开发过程(2)管理过程(3)供应过程(4)获取过程(5)操作过程(6)维护过程(7)支持过程

5. 软件生命周期内阶段的划分为什么要受软件的规模、性质、种类、开发方法等影响? 答:因为软件在其生存期内的每个阶段都有较明显的特征,有相对独立的任务,有其专门的方法和工具。

6. 软件定义与分析时期主要解决什么问题?

答:通俗地讲,主要解决以下问题:(1)要做的是什么软件?(2)没有有可行性?(3)软件的具体需求是什么?(4)验收标准是什么?

7. 瀑布模型的主要开发过程和优缺点有哪些?

答:开发过程有6个阶段:系统需求分析、软件需求分析、系统设计、软件编码、系统测试和软件维护。优缺点:

8. 简述原型模型的特点,它与瀑布模型的关键区别是什么?

答:原型模型的最大特点是:利用原型法技术能够快速实现系统的初步模型,供开发人员和用户进行交流,以便较准确地获得用户的需求;采用逐步求精的方法使原型逐步完善,这是一种在新的层次上不断反复推进的过程。它与瀑布模型的关键区别是它可以大大避免在瀑布模型冗长的开发过程中看不见产品雏形的现象。

9. 简述喷泉模型的基本思想。

答:喷泉模型以面向对象的软件开发方法为基础,以用户需求为动力,以对象作为驱动的模型。它适合面向对象的开发方法。

第三章 可行性研究

1. 可行性研究论证主要集中在那些领域? 答:Not found.

2. 如何进行软件的成本估算?

答:首先可以用代码行定量估算方法,把开发软件中实现每一个功能所需要的源代码行数与成本联系起来。其次可以用任务分解技术估算成本。

3. 可行性研究的任务是什么?

答:一般从以下四个方面研究系统方案的可行性。(1)技术可行性研究(2)经济可行性研究(3)法律可行性研究(4)开发方案的选择性研究

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

答:研究步骤:(1)系统定义(2)对于现行系统进行分析研究(3)导出新系统的逻辑模型(4)设计方案(5)推荐可行的方案(6)编写可行性研究报告

5. 在软件的系统分析之前,为什么要制订一个系统的标准? 答:Not found.

6. 可行性研究报告的主要内容有哪些?

答:(1)引言(2)可行性研究前提(3)对现行系统的分析(4)所建议系统的技术可行性分析(5)所建议系统的经济可行性分析(6)社会因素可行性分析(7)其他可供选择方案(8)结论意见

7. 你认为在成本估算中,货币的时间价值在可行性中的作用是什么?

答:由于经济效益与软件的生命周期的长度有关,货币的时间价值就直接影响软件的开发和维护成本,从而直接影响软件的经济效益。

8. 经过可行性研究后,一个项目如果值得开发,为什么要制定项目开发计划?

答:因为软件开发项目的计划涉及实施项目的各个环节,带有全局的性质。计划的合理性和准确性往往关系着项目的成败。

第四章 需求分析与系统结构

1. 需求分析的目的是什么?

答:需求分析是软件定义时期的最后一个阶段,其基本任务是回答“系统必须做什么”这个问题,确定系统必须完成哪些工作。对目标系统提出完整、准确的要求。

2. 怎样建立目标系统的逻辑模型?要经过哪些步骤?

答:分析人员根据前面获取的需求资料,要进行一致性的分析检查,在分析、综合种逐步细化软件功能,划分成各个子功能。同时对数据域进行分解,并分配到各个之功能上,以确定系统的构成及主要成分。最后要用图文结合的形式,建立起系统的逻辑模型。

3. 什么是结构化分析?

答:结构化方法是分析、设计到实现都使用结构化思想的软件开发方法,实际上它由三部分组成:结构化分析、结构化设计和结构化程序设计。它也是一种实用的软件开发方法。

4. 需求分析由哪些部分组成?

答:(1)问题明确定义(2)导出软件的逻辑模型(3)编写文档

5. 需求分析为什么要研究问题域? 答:Not found.

6. 良好的软件体系结构设计有什么好处?

答:体系结构的设计对于一个大型系统的设计、开发的成败起着至关重要的作用。体系结构对于系统的非功能属性如系统性能、可扩展性、可靠性、安全性、精确度、可复用性、互操作性等的影响尤为深刻。因而一个良好的软件体系结构设计保证了软件系统的性能和生命周期。

7. 消除包之间的循环依赖性有哪两种主要方法?

答:(1) PackageA将PackageA中的循环依赖元素提取到PackageC中PackageA PackageB

PackageB PackageC(2) PackageA PackageA 将PackageC中的循环依赖元素提取到 PackageD 中 PackageB PackageB PackageC PackageC PackageD

8. 简述UML和Z结合的求精方法。

答:和目前工程界的常规方法相比,基于UML和Z的软件体系结构求精方法有明显的不同。首先,开发原则不同,基于UML和Z的软件体系结构求精方法通常希望能够直接构造出尽可能正确的系统。其次,开发模式也不同,在使用基于UML和Z的软件系统结构求精方法开发过程中,需求分析和设计阶段需求投入大量的工作通常占到全部工作量的60% ~ 70%,而编码和测试工作只占30% ~ 40%。

第五章 总体设计

1. 结构化设计方法的基本思想是什么?它怎样与结构化分析衔接?

答:结构化设计是以结构化分析产生的数据流图为基础,将数据流图按一定的步骤映射成软件结构。与结构化分析衔接,构成了完整的结构化分析与设计技术,是目前最广泛的软件设计方法之一。

2. 简述软件总体设计阶段的基本任务。

答:软件总体设计阶段的任务是概要地回答系统应该如何实现,因此要把握与详细设计的区别。要完成如下任务:(1)软件系统结构设计(2)数据结构及数据库设计(3)网络系统设计(4)软件总体设计文档(5)评审

3. 举例说明各种类型的模块耦合。

答:(1)数据耦合:两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据。(2)

控制耦合:传递的信息中有控制信息。(3)公共环境耦合:两个或多个模块通过一个公共数据环境相互作用的耦合。(4)内容耦合:最高程度的耦合,如P121图。

4. 简述模块、模块化及模块化设计的概念。

答:模块在程序中是数据说明、可执行语句等程序对象的集合,或者是单独命名和编址的元素,如高级语言中的过程、函数和子程序等。在软件的体系结构中,模块是可组合、可分解和更换的单元。模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。

5. 什么是模块的独立性?设计中为什么模块要独立?对于独立性怎样度量?

答:划分模块时,尽量做到高内聚,低耦合,保持模块相对对立性,并以此原则又话初始的软件结构。(1)如果若干模块之间耦合强度过高,每个模块内功能不复杂,可将它们合并,以减少信息的传递和公共区的引用。(2)若有多个相关模块,应该对它们的功能进行分析,校区重复功能。

6. 试论“一个模块,一个功能”的优点。 答:Not found.

7. 简述变换流的设计步骤。

答:(1)确定数据流图中的变换中心、逻辑输入和逻辑输出(2)设计软件结构的顶层和第一层(3)设计中、下层模块(4)设计的优化

8. 简述事务流的设计步骤。

答:(1)确定数据流图中的事务中心和加工路径(2)设计软件结构的顶层和第一层(3)进行事务结构中、下层模块的设计、优化等工作。

9. 试论软件设计与软件质量的关系。 答:

10.什么是模块的影响范围?什么是模块的控制范围?它们之间应该建立什么样的关系? 答:在软件结构中,由于存在着不同事务处理的需要,某一层上的模块会存在着判断处理,这样可能影响其它层的模块处理。一个模块的作用范围应在其控制范围之内,且条件判定所在的模块应与受影响的模块在层次上尽量靠近。

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

答:软件结构是软件系统的模块层次结构,反映了整个系统的功能实现,即将来程序的控制层次体系。对于一个问题,可用不同的软件结构来解决,不同的设计方法和不同的划分与组织,得出不同的软件结构。为了提高设计的质量,必须根据软件设计的原理改进软件设计,优化准则如下:(1)模块独立性准则(2)控制与作用范围之间的准则(3)结构特征准则(4)模块的接口准则

第六章 软件详细设计

1. 简述详细设计的基本原则与主要任务。

答:详细设计要完成所有设计的细节。主要任务有:(1)数据结构设计(2)物理设计(3)算法设计(4)界面设计(5)其他设计(6)编写设计说明书

2. 任意选择一种排序算法,分别用流程图和PDL语言描述其详细过程。

答:PDL语言全称是过程设计语言(Process Design Language),它是在伪代码的基础上,扩充了模块的定义与调用、数据定义和输入输出而形成的。它的控制结构与伪代码相同。PDL是一种用于描述模块算法设计和细节处理的语言。

3. 假设只有SEQUENCE和DO-WHILE两种结构,如何用它们来完成IF-THEN-ELSE的操作? 答:Not found.

4. 概要设计与详细设计有什么区别?

答:在软件的总体设计中,完成了数据和系统结构的设计。已将系统划分成为多个模块,并将它们按照一定的原则组装起来,也确定了每个模块的功能及模块与模块之间的外部接口。在理想情况下,详细设计是软件设计的第二阶段。在这个极端,由于开发系统内外的人员理论上都使用一种自然语言,因此设计说明最好是用自然语言。很清楚,这个阶段必须定义过程的细节。

第七章 面向对象方法概论

1. 什么是面向对象?

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

2. 面向对象的发展经历了哪几个阶段?

答:面向对象方法的某些概念,可以追溯到20世纪50年代人工智能的早期研究。但是人们一般把20世纪60年代由挪威计算中心开发的Simula-67语言看做面向对象语言发展史上的第一个里程碑。但是直到20世纪80年代后期,第二种语言SmallTalk的应用尚不够广泛。20世纪80年代中期到90年代,是面向对象语言走向繁荣的阶段。

3. 面向对象方法有什么特点? 答:主要有以下特点:

(1)从问题域中客观存在的事物出发来构造软件系统,用对象作为对这些事物的抽象表示,并以此作为系统的基本构成单位。

(2)事物的静态特征(即可能用一些数据来表达的特征)用对象的属性表示,事物的动态特征(即事物的行为)用对象的服务表示。

(3)对象的属性与服务结合为一体,成为一个独立的实体,对外屏蔽其内部细节,即封装。(4)对事物进行分类。把具有相同属性和服务的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个示例。

(5)通过在不同程度上运用抽象的原则,可以得到较一般的类和较特殊的类。特殊类继承一般类的属性与服务,面向对象方法支持对这种继承关系的描述与实现,从而简化系统的构造过程及其文档。

(6)复杂的对象可以用简单的对象作为其构成部分,称作聚合。 (7)对象之间通过消息进行通信,以实现对象之间的动态联系。 (8)通过关联表达对象之间的静态关系。

4. 传统的软件工程和面向对象软件工程有何异同点? 答:Not found.

5. 什么是继承?

答:定义:特殊类的独享拥有其一般类的全部属性与服务,就是称作特殊类对一般类的继承。

6. 什么是消息?

答:定义:消息就是向对象发出的服务请求,它应该含有下述信息:提供服务的对象标识、服务标识、输入信息和回答信息。

7. 什么是多态性?

答:对象的多态性是指在一般类中定义的属性或服务被特殊类继承之后,可以具有不同的书类型或表现出不同的行为。这使得一个属性或服务名在一般类及其各个特殊类中具有不同的

语义。

第八章 模型

1. 什么是状态?

答:状态是对象的属性值和链接的一种抽象。根据影响对象总的行为的性质,一系列组合在一起是一个状态。

2. 什么是事件?

答:事件是发生在某一个时间点的一件事。

3. 简述构成动态模型的几个要素。

答:(1)时间和状态(2)操作(3)嵌套状态图(4)实践技巧

4. 怎样用状态图描述事件?

答:状态图是这样一种图,其结点表示状态,用方向弧和标明事件名表示变迁。一个状态化成矩形圆角框并含有可选的名字,变迁用从接受状态到目标状态的尖头表示,在箭头上标明产生变迁的事件名,所有脱离某一状态的变迁必对应不同的事件。状态图详细说明了由事件序列引起的状态序列。如果一个对象处于某一状态并且表示它的变迁之一的事件发生的话,则对象进入变迁的目标终止状态,这个变迁称为“激发”。如果多余一个变迁脱离一个状态,则第一个发生的事件引起相应的变迁的激发。如果一个事件发生但没有脱离当前状态,即没有变迁,那么该时间被忽略。事件的一个序列对应图中走过的一条路径。

5. 简述事件如何触发操作?

答:动作是一种瞬间的操作。动作与事件有关,动作表示相对于状态图的变迁来说时间延续不重要的操作。动作也能表示内部控制操作,诸如设定属性或产生另一个事件。

6. 试述动态模型的并发性。 答:Not found.

7. 用例子说明并发活动是如何同步的 答:Not found.

第九章 对象分析

1. 用图示表示对象类及主动对象类的表示法。 答: 普通类 主动对象类

classname attributes operations()

@classname attributes operations() 2. 研究问题域应包括哪些工作要点?

答:(1)认真听取问题域专家的见解(2)亲临现场(3)阅读领域相关资料(4)借鉴他人经验

3. 发现对象有哪些原则?

答:(1)正确地运用抽象原则(2)策略与启发:①考虑问题域 ②考虑系统边界 ③考虑系统责任 (3)对象的发现和标识:①动机 ②方法 ③三视图模型 (4)审查和筛选:①舍弃无用的对象 ②对象的精简 ③推迟到OOD考虑的对象 (5)识别主动对象

4. 试说明主动服务与被动服务的区别。

答:主动服务是不需要接收消息就能主动执行的服务,它在程序实现中是一个主动地程序成分,例如用于定义进程或线程的程序单位。被动服务是只有接受到消息才执行的服务,它在编程实现中是一个被动的程序成分,例如函数、过程、例程等。

5. 对系统中的对象进行哪些步骤以发现对象的属性?

答:对象的属性是描述对象静态特征的一个数据项。通过一下步骤:(1)从厂里判断这个对象应该具有哪些属性。(2)根据当前问题域分析这个对象应该有哪些属性。(3)从系统责任要求的角度分析这个对象应具有哪些属性。(4)建立这个对象涉及到系统中所需的信息,包括要保存和管理的信息。(5)对象有哪些需要区别的状态,是否需增加一个属性来区别这些状态。(6)对象为了在服务中实现其功能,需要增设哪些属性。(7)表示整体-部分结构和示例连接需要用什么属性。

6. 画出“栈”对象的状态转换图。 答:

第十章 关系分析

1. 什么叫整体-部分关系?

答:整体-部分关系反映了对象之间的构成关系,它也称为聚集关系,用于描述系统中各类对象之间的组成关系。通过它可以看出某个类的对象以另外一些类的对象作为其组成部分。

2. 用图示表示整体-部分结构。 答:

3. 列举出几种情况下运用整体-部分结构而实现或支持复用。

答:在以下两种情况下都可以运用整体-部分结构而实现或支持复用:一种情况是在两个或更多的对象类中都有一组属性和服务描述这些对象的一个相同的组成部分。把它们分离出来作为部分对象,建立整体-部分结构,这些属性和服务就被多个类复用,从而简化了它们的描述。另一种情况是系统中已经定义了某类对象,在定义其他对象时,发现其中一组属性和服务与这个已定义的对象是相通的,那就不必再重复地定义这些属性与服务,只需建立它与前一类对象之间的整体-部分结构。

4. 画出一般类和特殊类的关系图。 答:

5. 画图说明一般-特殊结构的表示法。 答:

部分对象 整体 对象 部分对象 第十一章 控制驱动的设计

1. 系统总体方案的内容包括哪些方面?

答:系统的总体方案内容如下:(1)项目的背景、目标与意义。(2)系统的应用范围。(3)对需求的简要描述,采用的主要技术。(4)使用的硬件设备、网络设施和商品软件。(5)选择的软件体系结构风格。(6)规划中的网络拓扑结构。(7)子系统划分。(8)系统分布方案。(9)经费预算、工期预计、风险分析。(10)售后服务措施,对用户的培训计划。

2. 列举出几种典型的软件体系结构风格。 答:(1)管道与过滤器风格。 (2)客户 – 服务器风格。 (3)面向对象风格。 (4)隐式调用风格。 (5)仓库风格。 (6)进程控制风格。 (7)解释器模型。 (8)黑板风格。 (9)层次风格。 (10)数据抽象风格。

3. 列举用主动对象表示控制流时应遵循的应用规则。

答:(1)在一个表示进程的主动对象中,有且仅有一个表示进程的主动服务。

(2)如果要把一个进程和隶属于它的现成分散到不同的对象中去表示,则尽可能使每个对象中只含有一个表示线程的服务。

(3)如果要把进程和隶属于它的线程放在一个对象中表示,就应该把这个进程的全部线程都放在同一个对象中,避免一部分集中,一部分分散。

第十二章 问题域的设计

1. 对象设计必须遵循的步骤有哪些? 答:(1)组合三种模型以获取类上的操作。 (2)实现操作的设计算法。 (3)优化数据的访问路径。 (4)实现外部交互式的控制。 (5)调整类结构,提高继承性。 (6)设计关联。

(7)确定对象表示。 (8)把类和关联封装成模块。

2. 对象模型与动态模型和功能模型之间的关系如何?

答:与功能模型的关系:对象模型表示在功能模型中的施动者、数据存储和流的结构,而动态模型表示了执行这一处理的序列。

与对象模型的关系:功能模型表示在类上的操作和每个操作的参数,因此它表示了在类之间的供应者与客户的关系。同台模型表示了每个对象的状态,以及接受事件和改变状态时执行的操作。

与动态模型的关系:功能模型表示了底层动作和动态模型未定义的底层动作以及在动态模型中未定义的活动的定义。对象模型表示改变了什么状态和经历了什么操作。

3. 如何确定在操作中起主导作用的对象?

答:在确定哪个对象在操作中起主导作用时,必须对自己提下列问题:

(1)当其他对象执行动作时,是否有一个对象在起作用?通常,最好是把操作与操作的目标联系起来,而不是与初始化程序联系起来。

(2)当其他对象只查询所包含的信息时,操作是否修改另一个对象?被改动对象是操作目标。

(3)检查设计操作的类和关联,看哪个类是这个对象模型的子网中最集中的,如果类和关联都围绕一个中心类形成星型,那么它就是操作的目标。

(4)如果对象不是软件,而是在内部表示的实际对象,应推、移动、激活什么正式对象,或操纵其他什么真实对象去初始化一个操作?

4. 实现动态模型有哪几种方法? 答:Not Found.

5. 怎样安排类以增加继承的机会?

答:(1)重新安排和调整类及操作以增强继承性。 (2)从类组合中抽象出共同特性。

(3)当集成的语义不正确时,使用授权的共享行为。

6. 比较关联遍历的三种方法。 答:书P338。

7. 简述限制操作范围的设计原则。 答:Not Found.

第十三章 用户界面设计

1. 窗口系统的定义是什么?它所管理的资源有哪些?

答:窗口系统是控制位映像显示器与输入设备的系统软件。它所管理的资源有屏幕、窗口、像素映像、色彩表、字体、图形资源及输入设备。

2. 从命令输入到命令处理所发生的消息有哪4种情况? 答:Not Found.

3. 设计人 - 机交互子系统要对用户进行哪几种分析?

答:设计出让用户满意的人 - 机交互界面应遵循如下准则:一致性、操作简便、及时提供反馈信息、提供撤销命令、无需记忆、易学,富有吸引力。

4. 人 - 机交互子系统的设计形式有哪些?

答:用户的界面设计形式包括问答式、菜单、图符、表格、命令语言和自然语言等。

5. 虚拟现实与多媒体技术有什么区别?

答:虚拟现实又称灵境技术,它是一种先进的计算机用户接口,它通过给用户同时提供诸如视觉、听觉、触觉等各种只管而又自然地实时感知交互手段,最大限度地方便用户操作,从而减轻用户的负担,提高整个系统的工作效率。灵境技术具有4个重要特征:(1)多感知性(2)存在感(3)交互性(4)自主性。

6. 如果要直接操作界面,请问应该采用哪一种模型?试描述一下。 答:Not Found.

7. 什么叫做多通道技术?

答:多通道是人类日常处理事件的常用方式,人与计算机多通道交互技术的发展虽然收到软硬件的限制,但至少要满足以下两个条件。

(1) 多通道整合,不同通道的结合对用户的体验是十分重要的。 (2) 在交互中允许用户产生含糊和不精确的输入。

8. 新一代界面的主要特征是什么? 答:(1)以用户为中心。

(2)多通道。 (3)非精确。 (4)高带宽。 (5)不限制地点。 (6)可视化编程。 (7)三维交互技术的研究。

第十四章 数据库及其接口设计

1. 什么是文件系统?

答:文件系统通常被作为操作系统的一部分。它采用统一、标准的方法对辅助存储器上的用户文件和系统文件的数据进行管理,提供存储、检索、更新、共享和保护等功能。在文件系统的支持下,应用程序不必直接使用辅助存储器的物理地址和操作指令来实现数据的存取,而是把需要永久存储的数据定义为文件,利用文件系统提供的操作命令实现上述各种功能。

2. 分析文件系统和数据库管理系统之间的差异。

答:与数据库管理系统相比,文件系统的特点是廉价,容易学习和掌握,对被存储的数据没有特别的类型限制。但它提供的数据存取与管理功能远不如数据库管理系统丰富。例如它只适合存储各种类型的数据而不容易体现数据之间的管理;只能按地址或者按记录进行数据读写,不能直接按属性进行数据检索与更新;缺少数据完整性支持,数据共享支持也比较弱。

3. 简述DBMS的功能。

答:DBMS中文全称为数据库管理系统(Database Management System),它是用于建立、使用、维护数据库的软件。其提供的功能如下: (1) 模式翻译:提供数据定义语言(DDL)。

(2) 应用程序的编译:把含有访问数据库语句的应用程序,编译成在DBMS支持下可

运行的目标程序。

(3) 交互式查询:提供易实用的交互式查询语言,如SQL。

(4) 数据的组织与存取:提供数据在外围储存设别上的物理组织与存取方法。 (5) 事物运行管理:提供事物运行管理及运行日志、实物运行的安全性监控和数据完

整性检查、事物的并发控制及系统恢复等功能。

(6) 数据库的维护:为数据库管理员提供软件支持,包括数据安全控制、完整性保障、

数据库备份、数据库重组以及性能监控等维护工具。

4. 比较关系数据库和面向对象数据库。 答:采用关系模型的数据库称作关系数据库。

采用面向对象数据模型的数据库称作面向对象数据库。

5. 如何选择合适的数据管理系统。

答:决定采用何种数据管理系统,要综合考虑技术和非技术两方面的因素。

1) 非技术因素

(1) 数据管理系统的成熟成都和先进性 (2) 价格

(3) 开发队伍的技术背景 (4) 与其他系统的关系 2) 技术因素 (1) 文件系统

(2) 关系数据库管理系统 (3) 面向对象数据库管理系统

6. 数据库与数据库管理系统有什么区别?

答:数据库(Database)是长期存储在计算机内,有组织、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和储存,具有 较小的冗余,较高的数据独立性和易扩展性,并可为各种用户共享。而数据库管理系统(Database Management System)是用于建立、使用、维护数据库的软件。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。

7. 面向对象和数据库技术是如何进行整合的? 答:书P380。

8. 对象如何在数据库中存放?

答:用关系数据库存放对象的基本策略是:把由每个类直接定义并需要永久存储的全部对象实例存放在一个数据库表中。每个这样的类对应一个数据库表,经过规范化之后的类的每个属性对应数据库表的一个属性,类的每个对象实例对应数据库中的一个元组。

第十五章 形式化方法

3.Petri网适合于分析与设计哪些系统?它是通过什么方式来反应系统动态行为的? 答:Petri网在软件分析中,是一种系统的数学和图形的描述与分析方法。对于具有并发、

异步、分布、并行、不确定性或随机性的信息处理系统,都可以利用Petri网构造出要开发的Petri网模型。它通过使用标记去模拟系统的动态行为和并发活动。

4.Petri网可以奉行系统的哪些行为特征?这些特征的含义各是什么? 答:行为特征及其含义如下:

(1) 可达性:可达性是研究任何系统动态特征的基础。 (2) 有界性。

(3) 活性:在操作系统中,活性的概念与安全无死锁紧密相关。 (4) 可逆性。 (5) 可覆盖性。 (6) 持久性。

(7) 同步距离:同步距离是条件/事件系统中与两个事件间相互独立成都紧密相关的

一种量度。

(8) 公平性:包括有界公平性和无条件公平性。

5.Petri网的性能分析方法有哪几种?其原理各是什么? 答:分析方法可分为三类。

(1) 可覆盖性树。这种方法实质上包含了所有可达标识或它们的可覆盖标识的枚举,

适用于所有类型的网。

(2) 矩阵方程求解。这种方法求解能力强,但在许多情况下,它仅适用于Petri网的

一些特殊之类或特殊情况。

(3) 分层或化简。这种方法实在保证网系统要分析的性质不变的情况下进行分层或化

简,它设计一些变换的方法的研究。

第十六章 软件实现

1. 软件实现完成什么任务?

答:软件实现就是在详细设计的基础上,用一种程序设计语言来讲设计转换为程序,得到的结果是源程序代码。

2. 你了解当前流行的编程语言吗?(列举两种以上)它们的特点是什么?适合设计什么样

的系统?

答:(1)C语言:具有很强功能的语言,支持复杂的数据结构,可大量运用指针,具有丰富灵活的操作运算符及数据处理操作符。还可以直接对位进行操作,程序运行效率高。适合科学工程计算。

(2)JAVA语言:是由Sun公司开发的一种面向对象的、分布式的、安全的程序设计语言。因为它运行在JAVA虚拟机上,因此它与硬件无关,也体现了它的易移植性。

3. 良好的编程风格带来的好处是什么?请举例说出有哪些公认的良好的编程风格? 答:一个公认的、良好的编程风格可以减少编码的错误,减少读程序的时间,从而提高软件的开发效率。

4. 在代码上提高程序的效率,可以做哪些方面的工作?

答:(1)在进行编码以前,应建华算法中的算术表达式和逻辑表达式,使之显得简洁。 (2)对嵌套循环仔细审查,在循环内部的语句和表达式越少越好。 (3)应尽量避免使用多维数组。 (4)应尽量避免使用指针和复杂的列表。 (5)采用效率高的算术运算。 (6)要避免采用混合数据类型。

(7)只要有可能,就应当采用占用内存少的数据类型。

5. 冗余编程的目的是什么?

答:冗余是改善系统可靠性的一种重要技术。冗余编程目的在于保证一个软件在出现错误时能有另一个软件能提高相同的功能以保证工作继续进行。

6. 硬件冗余和软件冗余的区别是什么?

答:硬件冗余仅使用两个或两个以上的硬件保持系统运行。软件冗余这是两个功能相同但源程序不同的两个软件。

7. 举例说明冗余可以提高系统可靠性的原因。 答:书P430。

8. 发展软件容错技术的目的是什么?

答:提高软件质量和可靠性的技术大致可分为两类,一类是避开错误技术,即在开发的过程中不让差错潜入软件的技术;另一种是容错技术,即对某些无法避开的差错,使其影响减至最少的技术。但是,无论使用多么高明的避开错误技术,在理论上都无法证明程序的正确性,无法做到完美无缺和绝无错误,这就需要采用容错技术以使错误发生时不影响系统的特性,或使错误发生时对用户的影响限制在某些允许的范围内。

9. 你认为容错软件应该具有什么样的功能? 答:(1)在一定程度上对自身错误具有屏蔽能力。 (2)在一定程度上能从错误状态自动恢复到正常状态。

(3)程序存在错误而且发生时,仍然能在一定程度上完成预期的功能。 (4)在一定程度上具有容错的能力。 10.

请简单叙述容错软件的设计过程。

答:其设计步骤如下:

(1) 首先要按设计任务要求进行常规设计,尽量保证设计的正确。 (2) 根据系统的工作环境,对可能出现的错误分类,确定实现容错的范围。 (3) 按照“成本-效益”最优的原则,选用某种冗余手段(结构、信息、时间)来实

现对各类错误的屏蔽。

(4) 分析或验证上述冗余结构的容错效果。

第十七章 软件质量

1. 软件质量的定义是什么?

答:(1)软件产品具备满足给定需求的特性及特征的总体的能力。 (2)软件拥有所期望的各种属性组合的程度。 (3)用户认为软件满足他们综合期望的程度。 (4)软件组合特性可以满足用户预期需求的程度。

2. McCall提出的软件质量特性有哪些?

答:McCall认为软件质量由12个特性组成,分别面向软件产品的运行、修正、转移。 (1) 产品运行:正确性、可靠性、可使用性、效率、完整性、安全性。 (2) 产品修正:可维护性、可测试性、灵活性。 (3) 产品转移:互连性、可移植性、复用性。

3. 请分析成立软件管理小组的利弊? 答:书P452。

4. 软件质量度量存在哪些质量标准? 答:(1)客观性。 (2)可靠性。 (3)适用性。

(4)标准化。 (5)可比较性。 (6)经济性。 (7)有效性。

5. 什么叫做软件质量保证?其工作原则是什么?

答:软件质量保证是一个复杂的系统,它采用一定的技术、方法和工具,来处理和调整软件产品满足需求时的相互关系,以确保软件产品满足或超过在该产品的开发过程中所规定的标准。其工作原则如下:

(1) 尽可能做到质量特征的具体化及量化。 (2) 要找出每个阶段的具体质量特征。 (3) 针对具体产品和相应项目制定质量计划。 (4) 检查质量测试结果。 (5) 进行各种质量评审。 (6) 优化的建设性的质量保证。 (7) 尽早发现并改正错误和缺陷。 (8) 集中进行质量保证。 (9) 独立的质量测试。

(10) 对所应用的软件质量保证措施的评价。

6. 如何选择参加评审的成员?

答:首先要寻找一个主席,合适的主席的标准是能够识别和评价错误的专家,有威信和信服力。选择了主席后,由主席和测试对象的主持人共同选择其他参加成员。选择的成员应当包括具有转么知识,及在数据库和应用领域有长期经验的专家,被评审系统的可能用户及有能力并擅长用系统分析的方法发现逻辑矛盾的人。

7. 走查与审查有什么区别?

答:走查是审评过程中采用的一种方法。走查时,软件设计者或程序开发人员指导一名或多名其他参加评审的成员,通读已书写的设计文档或编码,其他成员负责提出问题,并对有关技术、风格、可能的错误、是否有违背评审标准的地方进行评论。

审查是一种正式的评定技术。由除被审查对象的作者之外的某人或某一小组自习检查软件需求、设计或编码,以找出故障和其他一些问题。

8. 评审有什么优点?还有什么需要改进? 答:优点:

(1) 评审复杂情况时的分析、识别、评价和测试等方面充分发挥人们的思维能力。 (2) 评审不仅适用于检验正式的文档,如程序清单,也适用于检验非正式的文档,如

口头的设计说明等。

(3) 用评审方式检查程序具有很高的成功率。 缺点:

(1) 评审的成功与否完全依赖于参加评审的人员,他们的原则性是至关重要的。 (2) 交流的气氛对于发挥人们的思考和分析能力是很重要的。

(3) 解决问题可能占用有价值的评审时间,以至于不能发现更多的错误。 (4) 存在着评价工作人员的可能,这将使检查过程的有效性降低。 (5) 评审对开发过程的重要性往往被低估了。

9. 软件可靠性的定义是什么? 答:IEEE把软件可靠新定义如下:

(1) 在规定的条件下,在规定的时间内,软件不引起系统失败的概率,该概率是系统

输入和系统使用的函数,也是软件中存在错误的函数。系统输入将确定是否会遇到已存在的错误。

(2) 在规定的时间周期内,在所述条件下程序执行所要求的功能的能力。 10.

软件可靠性定义中,规定的条件指什么?规定的时间又指什么?

答:规定的时间:在软件测试和运行中,有三种时间度量。第一种是日历时间,第二种是时钟时间,第三种是执行时间。

规定的条件:是指环境条件。环境条件包括了与程序存储、运行有关的计算机及其操作系统。

第十八章 软件测试

1. 软件测试的目的是什么?

答:软件测试要求认定刚开发的软件是错误的,它的目的是找出错误所在,而不是“说明程序能正确地执行它应有的功能”,也不是“表明程序没有错误”。

2. 软件测试中应遵循哪些原则?

答:(1)测试用例由输出数据和预期的输出数据两部分组成。需要将程序运行后的结果和预

期的输出相比较来测试程序。

(2)在输入数据的选择上,不仅要选择合理的输入数据,还要选择不合理的输入数据。

这样可提高程序运行的可靠性。程序应该对不合理的输入数据给出相应提示。

(3)用穷举测试是不可能的。可以通过设计测试用例,充分覆盖所有的条件。 (4)应该在真正的测试工作开始之前很长时间内,就根据软件的需求和设计来制定测试

计划,在测试工作开始后,要严格执行,排除随意性。

(5)长期保留测试用例。

(6)对发现错误较多的程序段,应进行更深入的测试。 (7)为了打到最佳测试效果,应该有第三方来构造测试用例。

3. 说说曾经做过的测试经历。 答:无。

4. 试从时间、手段和目的上比较静态测试和动态测试的区别。

答:静态测试是采用人工检测和计算机辅助静态分析的手段对程序进行检测。

动态测试与静态测试相反,主要是设计一组输入数据,然后通过运行程序来发现错误。

5. 白盒测试的原理是什么?

答:该方法吧测试对象看做一个透明的盒子,测试人员能了解程序的内容结构和处理过程,以检查处理过程为目的,对程序中尽可能多的逻辑路径进行测试,在所有的点检验内部控制结构和数据结构是否和预期的相同。

6. 举例说明白盒测试不能穷举测试的原因。

答:如测试一个循环20次嵌套的IF语句,循环体中有5个路径。测试这个程序的执行路径未5的20次方,如果每毫秒完成一个路径的测试,完成此程序的测试需3170年。

7. 黑盒测试的原理是什么?测试的目的是什么?

答:该方法把被测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的界面上进行测试,用来证实软件功能的可操作性,检查程序是否满足功能要求,是否能很好地接受数据,并产生正确的输出。

测试的目的在于发现以下错误:(1)是否有不正确或遗漏了的功能。

(2)在界面上,能否正确地处理合理和不合理的输入数

据,并产生正确的输出信息。

(3)访问外部信息是否有错。 (4)性能上是否满足要求等。 (5)初始化和终止错误。

8. 在白盒测试中,有哪些设计测试用例的技术?

答:白盒测试是结构测试,所以一般都是以程序的内部逻辑结构为基础来设计测试用例。 (1) 逻辑覆盖:①语句覆盖 ②判定覆盖 ③条件覆盖 ④判定/条件覆盖 ⑤条件组合

覆盖 ⑥路径覆盖

(2) 循环覆盖:①单循环 ②嵌套循环 (3) 基本路径测试

9. 逻辑覆盖的含义是什么?

答:当程序中有循环时,覆盖每条路径是不可能的,需要设计使覆盖程度较高的或覆盖最有代表性的路径的测试用例。 10.

如果你负责对一个软件进行测试,你将如何安排你的工作计划?

答:书P472 图18-4。 11.

确认测试的作用是什么?

答:确认测试又称有效性测试。它的任务是检查软件的功能与性能是否与需求说明书中规定的指标相符合。因而需求说明是确认测试的基础。

第十九章 软件维护

1. 软件的可维护性和哪些因素有关?

答:(1)系统大小 (2)系统的开发文档 (3)其他因素

2. 软件的维护包括哪些维护活动?

答:(1)改正性维护 (2)适应性维护 (3)完善性维护 (4)预防性维护

3. 软件维护在这个软件生命周期中处于哪一种生命位置? 答:Not Found.

4. 如何对软件的可维护性进行度量? 答:使用如下七个特性进行度量: (1) 可理解性 (2) 可靠性 (3) 可测试性 (4) 可修改性

(5) 可移植性 (6) 可使用性 (7) 效率

5. 比较非结构化维护和结构化维护流程。它们对维护工作的影响是什么?

答:软件的开发过程中的质量控制、文档的完整对软件的维护有较大的影响。非机构化的维护的极端例子是要维护的软件只有程序而无文档,维护工作非常困难。若严格按照软件工程的方法开发软件,并进行严格的质量控制,则各阶段都有规范的文档,维护时对软件的理解就容易很多,维护工作也容易进行,这是一种结构化的维护。

6. 软件维护的费用是一个什么样的发展趋势?

答:软件维护的费用在总费用中的比重是在不断增加的,据统计数字分析,它在1970年占35%~40%,1980年上升到40%~50%,1990年上升到70%~80%。

7. 你认为如果在软件维护中没有专门的组织,会造成什么困难?

答:若没有专门的组织,软件维护的质量就无法得到保证,这将直接影响软件的生命周期。

8. 现在你是软件维护小组的负责人,得到一个维护申请报告,你应该如何处理这份报告?

如何实施维护活动?

答:在得到维护申请报告后,第二步我们需要审查申请报告并批准,第三部需要进行维护并做详细记录,最后做复审。

9. 软件维护后,软件的质量肯定会提高吗?可靠性肯定提高吗?为什么?

答:不一定。软件经过维护后,错误被修正了,功能增强了,但同时因为修改而引入的潜伏的错误也增加了。这种因修改软件而造成的错误或其他不希望出现的情况称为维护的副作用。维护的副作用有编码副作用、数据副作用和文档副作用。 10.

逆向工程和再工程的含义是什么?

答:逆向工程是从源代码中抽取出来的设计信息。作为逆向工程的评价,要求抽取出来的信息的抽象程度越高越好。再工程,它不仅能从已存在的程序中重新获得设计信息,而且还能使用这些信息来改建或重构现有的系统,以改进它的综合质量。 11.

维护技术分成哪两种?各自的特点是什么?

答:(1)面向维护的技术,涉及软件开发的所有阶段。

(2)维护支援技术。

第二十章 软件项目管理与计划

1. 在一个信息系统组织中,你被指派为项目管理者。你曾经做过类似的项目,但规模要小

些。需求分析已经完成。你会选择哪种小组结构?为什么? 答:Not Found.

2. 现在有一个项目,要求管理学生的成绩,分析学生的成绩情况。如果你是项目管理者,

请写出该问题的范围描述。 答:

3. 在估算开发成本时,都将代码行作为生产率的重要依据。你有反对它的证据吗? 答:没有。IBM模型、Putnam模型和COCOMO模型均使用代码行作为计算依据。

4. 在软件开发中有哪些资源?有哪些特性来描述资源? 答:(1)人力资源 (2)硬件/软件资源 (3)可复用构件资源

对于每一种资源都有4个特性:资源的描述、资源的有效性说明、资源在何时开始需要、使用资源的持续时间。

5. 说明在软件开发的各个阶段中,对高级技术人员、初级技术人员和管理人员的需求情况。 答:书P498 图20-2。

6. 简单叙述本书中描述软件开发成本的几个模型的内容,总结它们的共同特征。 答:(1)IBM模型:IBM模型是一个静态单变量模型,它利用已估算的特征,例如源代码行

数,来估算各种资源的需要量。

(2)Putnam模型:这是1978年Putnam提出的模型,是一种动态多变量的模型。该模

型的基础是假定在软件开发的整个生存期中工作量有特定的分布。

(3)COCOMO模型:是一种软件估算模型的层次体系,称为结构性成本估算模型,比

较精确、易于使用的综合成本估算方法。

7. 你认为在软件开发中,如果没有风险分析,会有哪些严重的后果? 答:如果没有风险分析,风险可能会导致软件项目失败,没法满足用户需求。

8. 风险分析的主要内容有哪些?请列举几种书中没介绍过的风险情况。

答:风险分析主要有4个不同的活动:风险识别、风险估算、风险评价和风险驾驭。

9. 风险估算和软件开发是否继续进行的评判标准是什么? 答:Not Found. 10.

软件开发小组的组织有哪些类型?

答:通常有三种组织的模式可供选择。 (1) 按课题划分的模式 (2) 按职能划分的模式 (3) 矩阵型模式 11.

在软件开发过程中,应如何配备人力资源?

答:书P515 图20-13。 12.

软件项目管理的特点是什么?

答:(1)智力密集,可见性差 (2)单件生产

(3)劳动密集,自动化程度低 (4)软件工作渗透了人的因素