软件工程教材习题答案

发布时间 : 星期日 文章软件工程教材习题答案更新完毕开始阅读

《软件工程——理论与实践》(第2版)习题答案

器能力,而分布式系统的性能则还会依赖于网络的带宽,这让情形变得更加复杂。

(2) 安全性:网络环境随时面临着各种威胁:病毒、恶意代码、非法访问等。如何保证安全性

是一个让人头疼的问题。

(3) 可管理性:分布式系统的开放性造成了系统的异构性。显而易见,管理异构的系统比管理

主机系统要困难得多。

(5) 不可预知性:这主要指系统的响应时间。网络环境本身的特点决定了网络负载会明显地影

响整个系统的响应时间。 3. 请举出一种集中式模型的实例,并图示它的结构。

答:请参考3.2.1“仓库模型”

4. 胖客户模型和瘦客户模型的区别是什么?它们分别被应用在什么样的场合?

答:在胖客户模型中,客户端应用负责用户界面和应用逻辑部分,因此它的工作比较繁重。一般的数据库应用都是属于这种结构。而与此相反,在瘦客户模型中,服务器负责了更多的工作,而客户端的工作就变得非常单纯。浏览器/Web服务器结构就属于瘦客户结构,而且常被称为B/S(Browser/Server)结构。 5.请举出一种分布式模型的实例,并图示它的结构。

答:请参考3.2.4“两层C/S模型” 6.请为一个公司的电子商务网站建设提出体系结构设计方案。

答:略。

7.分布式对象模型与客户-服务器模型有什么异同?

答:在C/S模型中,客户和服务器的“地位”是不“平等”的:客户只能向服务器提出服务请求,而服务器不能向客户提出服务请求,同时服务器之间可以互相提供服务。另外,客户一般要知道服务器在网络上的具体位置(服务器的域名或者IP地址),相反,服务器则不需要。这种差别在一定程度上限制了系统的灵活性和可扩展性。而在分布式对象结构中,服务的提供者是被称为“对象”(Object)的系统组件(System Component)。每个对象的地位在逻辑上是平等的,它们可以互相为对方提供所需的服务。在这种情况下,提供服务的对象就是服务器,而提出服务请求的对象就是客户。为了能够提供服务,每个对象都有一个服务接口。 8.请查阅相关的资料,写一篇对比CORBA和DCOM的报告。

答:略。

9.模块分解的最终目的是什么?

答:模块分解的目的是将系统“分而治之”,以降低问题的复杂性,使软件结构清晰,易阅读、易理解,易于测试和调试,因而也有助于提高软件的可靠性。 10. 模块分解应该遵循什么样的标准?

答:按照“降低块间联系,提高块内联系”的设计总则对模块进行分解。具体从以下方面考虑: (1) 尽可能建立功能模块; (2) 消除重复功能;

(3) 模块的作用范围与控制范围,即当作用范围为控制范围的子集时,才能获得较低的块间联系; (4) 模块的大小适当;

(5) 模块的扇入/扇出数不宜太多。

也可以用软件独立性的两个定性指标来度量模块分解的标准:

一是耦合性。用于描述模块之间联系的紧密程度。从三个方面衡量块间联系大小:①方式 (直接或间接)②类型(数据型、控制型、混合型)③数量(数量越大,块间联系越紧密。

二是内聚性。用于描述模块内部联系的紧密程度。它是从功能的角度来度量模块内的联系。

9

《软件工程——理论与实践》(第2版)习题答案

显然,块内联系愈紧,即内聚性愈强,模块独立性愈好。功能型模块独立性最好。

11~17题答案略。

习题四答案

一、选择题

1. 面向对象程序设计的基本机制是(ABC)。

A) 继承 B) 消息 C) 方法 D) 结构 2. 下列属于面向对象的要素有(BCD)。

A) 分类性 B) 抽象 C) 共享 D) 封装 3. 下列选项中属于面向对象开发方法的有(ACD)。

A) Booch B) CAD C) Coad D) OMT

4. 下列属于Coad/Yourdon方法中面向对象的分析模型的层次有(AB)。

A) 主题层 B) 对象层 C) 应用层 D) 接口层 5. 一个类属性依其特征划分,其类型有(ABCD)。

A) 描述型 B) 定义型 C) 派生型 D) 参考型 6. 在进行面向对象分析时,所采用的模型有(ABC)。

A) 对象模型 B) 动态模型 C) 静态模型 D) 功能模型 7. 状态是对象属性的值的一种抽象,它的性质有(AB)。

A) 时间性 B) 持续性 C) 有序性 D) 有穷性

8. 数据流图中的处理必须用对象中的操作来实现,常见的操作有(ABCD)。 A) 查询 B) 动作 C) 活动 D) 访问 9. 建立继承关系时所采用的方式有(AC)。

A) 自顶向下 B) 从内到外 C) 自底向上 D) 从复杂到简单 10. 对象是人们要研究的任何事物,主要的对象类型有(ABCD)。

A) 有形实体 B) 作用 C) 事件 D) 性能说明

二、判断题

1. 面向对象的的方法是以类作为最基本的元素,它是分析问题和解决问题的核心。(×) 2. 类是指具有相同或相似性质对象的抽象,对象是抽象的类,类的具体化就是对象。(×) 3. 继承性是父类和子类之间共享数据结构和消息的机制,这是类之间的一种关系(×)。

4. 多态性增强了软件的灵活性和重用性,允许用更为明确、易懂的方式去建立通用软件,多态性和继承性相结合使软件具有更广泛的重用性和可扩充性。(√)

5. 面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程。(√) 6. 面向对象设计的主要目标是提高生产效率,提高质量和提高可维护性。(√)

7. 对象模型表示了静态的、结构化的系统数据性质,描述了系统的静态结构,它是从客观世界实体的对象关系角度来描述,表现了对象的相互关系。(√)

8. 面向对象的分析是用面向对象的方法对目标系统的问题域空间进行理解、分析和反映。通过对象层次结构的组织确定解空间中应存在的对象和对象层次结构。(√)

9. 类的设计过程包括:确定类,确定关联类,确定属性,识别继承关系。(√)

10. 复用也叫重用或再用,面向对象技术中的“类”是比较理想的可重用软构件,它有三种重用方式:实例重用、继承重用、多态重用。(√)

11. 主题是一种关于模型的抽象机制,它是面向对象模型的概貌,也是关于某个模型要同时考虑和理解的内容,主题起一种控制作用。(√)

10

《软件工程——理论与实践》(第2版)习题答案

12. 面向对象的分析由对象、结构、继承性和基于消息的通信构成。(×)

13. 支持继承性是面向对象程序设计语言和传统程序设计语言在语言机制方面的根本区别。(√) 14. 面向对象的分析过程主要包括三项内容:理解、表达和验证。(√)

三、 简答题

1.消息传递机制与传统程序设计模式中的过程调用相比,有何本质区别? 答:(1) 消息传递必须给出信道的信息,通常要指出明确的接收方。

(2) 由于接收方是一通信实体,具有保持状态的能力,所以同一发送方在不同时刻向同一接收方发送同样的信息,可因接收方的当前状态不同而得到不同的结果。

(3) 消息传递可以是异步的,发送方可以不必等待接收方返回信息就可以继续执行后面的操作,因而支持程序的并发和分布执行,而过程调用只能是同步的,本质上是串行的。

2.比较面向对象方法与结构化方法的特点,说明为什么面向对象方法比结构化方法更加优越。 答:结构化方法是以数据流和数据封闭性为基础的,由SA、SD和 SP三部分构成。该方法: ①无法实现从问题空间到解空间的直接映射。开发方法求解过程是先对应用领域(问题空间)进行分析,建立起问题空间的逻辑模型,再通过一系列复杂的转换和算法,构造计算机系统,获得解空间。

②无法实现高效的软件复用。结构化方法是面向过程的,将数据和处理过程(操作)分离,不仅增加了软件开发的难度,也难于支持软件复用。

③开发方法难以实现从分析到设计的直接过渡,从SA到SD要经过一系列复杂的变换。

而面向对象的方法以对象为核心,强调模拟现实世界中的概念而不是算法,尽量用符合人类认识世界的思维方式来渐进地分析、解决问题。

①使问题空间与解空间具有一致性,便于对软件开发过程所有阶段进行综合考虑,能有效地降低软件开发的复杂度,提高软件质量。

②软件开发各个阶段有机集成,有利于系统的稳定性。

③具有良好的重用性。面向对象的技术在利用可重用的软件成分构造新软件系统上具有很大的灵活性,由于对象所具有的封装性和信息隐蔽,使得对象的内部实现与外界隔离,具有较强的独立性。继承性本身就是一种重用机制。

综上,显然面向对象方法比结构化方法更加优越。

3. Coad/Yourdon方法主要有面向对象分析(OOA)和面向对象设计(OOD)。OOA概念模型由5个层次组成,请简述这5个层次。

答:OOA概念模型的5个层次分别是:

(1) 发现类及对象。描述如何发现类及对象。从应用领域开始识别类及对象,形成整 个应用的基础,然后,据此分析系统的责任。

(2) 识别结构。该阶段分为两个步骤。第一,识别“一般-特殊”结构,该结构捕获了识别出的类的层次结构;第二,识别“整体-部分”结构,该结构用来表示一个对象如何成为另一个对象的一部分,以及多个对象如何组装成更大的对象。

(3) 定义属性。其中包括定义类的实例(对象)之间的实例连接。 (4) 定义服务。其中包括定义对象之间的消息连接。 (5) 定义主题。主题由一组类及对象组成,用于将类及对象模型划分为更大的单位,以便于理解。 4.面向对象的分析包括哪些主要活动?所建立的分析模型包括哪些类型的模型?

答:面向对象的分析过程分为论域分析和应用分析。论域分析过程是抽取和整理用户需求并建立问题域精确模型的过程。应用分析是将论域分析建立起来的问题论域模型,用某种基于计算机系统的语言来描述。面向对象的分析具体包括以下活动:

①获取用户基本需求。通常使用用例(User Case)来收集和描述。 ②标识类和对象。包括标识类及对象的属性和操作。

11

《软件工程——理论与实践》(第2版)习题答案

③定义类的结构和层次。通常有一般与特殊 ( Generalization—Specialization)结构,整体与部分(Whole—Part)结构。

④ 建立类(对象)之间的关系,用“对象-关系模型”描述系统的静态结构。 ⑤ 建立对象—行为模型,描述系统的动态行为。 所建立的分析模型包括:

①基本模型。是一个类图(class diagram),是以直观的方式表达系统最重要的信息。OOA基本模型的三个层次分别描述了:系统中应设哪几类对象,每类对象的内部构成,对象与外部的关系。

②主题图(subject)。又称为子系统(subsystem),是将一些联系密切的类组织在一起的类的集合。按照粒度控制原则,将系统组成几个主题,便于理解。

③交互图(interaction diagram) 是用例与系统成分之间的对照图。 主题图和交互图又称为补充模型。 5.面向对象设计的主要任务是什么?

答:面向对象的设计(Object-Oriented Design,OOD)是面向对象开发方法(OOSD)的核心阶段。是在OOA的基础上解决系统“如何做”的问题。主要任务包括:

⑴系统设计

系统设计的任务包括:将分析模型中紧密相关的类划分为若干子系统(也称为主题),子系统应该具有良好的接口,子系统中的类相互协作;标识问题本身的并发性,将各子系统分配给处理器,建立子系统之间的通信。

⑵对象设计

通过对象的认定和对象层次结构的组织,确定解空间中应存在的对象和对象层次结构,并确定外部接口和主要的数据结构。

⑶设计优化

对设计进行优化,主要涉及提高效率的技术和建立良好的继承结构的方法。 6.为什么面向对象的方法能够有效地解决软件需求中存在的问题?

需求过程中存在两大难题,一是需求的确定是困难的,二是需求是不断变动的。尤其是对于一些大型软件系统,开发周期长,系统规模大,复杂性高。

面向对象的方法中,由于对象所具有的封装性和信息隐蔽,使得对象的内部实现与外界隔离,具有较强的独立性。而且面向对象的方法是以对象为中心构造软件系统,而不是基于对系统功能进行分解来构造系统,当系统功能需求改变时不会引起系统结构的变化,使软件系统具有良好的稳定性和可适应性。

软件生存期各阶段所使用的方法、技术具有高度的连续性,对软件开发过程所有阶段进行综合考虑,能有效地降低软件开发的复杂度,提高软件质量,也便于需求的确定。

7. OMT方法明确提出了建模的概念,为什么在软件开发过程中需要进行建模?

答:OMT方法从不同而又相关的角度建立三类模型:对象模型、动态模型和函数模型,并为每一类模型提供了图形表示。

软件模型一般包括数学模型、描述模型和图形模型。在软件开发过程中进行建模,一是由于软件系统的复杂性和规模的不断增大,需要建立不同的模型对系统的各个层次更好地进行描述。模型具有的直观性及丰富的信息描述,便于开发人员与用户的交流。建立的模型为以后的系统维护和升级提供了文档。鉴于上述原因,在软件开发过程中建模,能够提高软件开发的效率和质量。 8.为什么说面向对象的方法为软件复用提供了良好的环境?

答:软件复用是将已有的软件成分用于构造新的软件系统,以达到提高软件系统的开发质量与效率,降低开发成本的目的。复用的软件成分也称为可复用构件(Reusable Component)。

12

联系合同范文客服:xxxxx#qq.com(#替换为@)