软件工程教材习题答案

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

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

对可复用组件一般有以下的要求:具有功能上的独立性与完整性;具有较高的通用性;具有较高的灵活性;具有严格的质量保证;具有较高的标准化程度。面向对象的方法对复用的支持主要反映在:

⑴面向对象方法可以保护在整个软件生存周期概念、原则、术语及表示法达到高度一致。这使面向对象方法不但能在各个级别支持软件复用,而且能对各个级别的复用形成统一、高效的支持,达到良好的全局效果。

⑵OOA基本模型体现了更高的抽象,更容易成为一个可复用的系统构架。

⑶所有的对象都用类作为其抽象描述。类作为一种可复用构件,在运用于不同系统时,不会出现因该类对象实例不同而使系统模型有所不同的情况。

所以面向对象方法的主要概念及原则与软件复用的要求十分吻合。OO方法中的对象和类是系统的基本构成单位,它符合可复用构件所应具备的那些特性,如完整性、独立性、可标识性、一般性、抽象、封装等。尤其是面向对象方法的对象封装性,为软件复用技术提供了良好的条件。而继承机制本质上就是一种复用机制,因此面向对象方法为软件复用提供了一个良好的环境。

习题五答案

一、选择题

1. 下列不是模型元素的是(D)。

A) 关联 B) 聚合 C) 依赖 D) 笔记 2. UML具有扩展性,常见的扩展机制有(BCD)。

A) 修饰 B) 版类 C) 加标签值 D) 约束 3. UML语言支持的建模方式有(ABD)。

A) 静态建模 B) 动态建模 C) 模块化建模 D) 功能建模 4. 下列各种图可用于动态建模的有(ACD)。

A) 状态图 B) 类图 C) 序列图 D) 活动图 5. 下列属于状态的组成部分的有(AB)。

A) 名称 B) 活动 C) 条件 D) 事件 6. UML中包括的事件有(ABCD)。

A) 条件为真 B) 收到另一对象的信号 C) 收到操作调用 D) 时间表达式 7. 属性的可见性有(ABD)。

A) 公有的 B) 私有的 C) 私有保护的 D) 保护的 8. 用例之间的关系有(BCD)。

A) 友元 B) 扩展 C) 使用 D) 组合 9. 应用于通用化约束的方式有(ABCD)。

A) 完整 B) 不相交 C) 不完整 D) 覆盖 10. 消息的类型有(ABC)

A) 同步 B) 异步 C) 简单 D) 复杂

二、 判断题

1. UML建模语言是由视图、图、模型元素和通用机制构成的层次关系来描述的。 (√) 2. UML是一种建模语言,是一种标准的表示,是一种方法。 (×)

13

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

3. 泳道是一种分组机制,它描述了状态图中对象所执行的活动。 (×)

4. 同步消息和异步消息的主要区别是:同步消息的发送对象在消息发送后,不必等待消息处理,可立即继续执行,而异步消息则发送对象必须等待接收对象完成消息处理后,才能继续执行。(×) 5. 类图中的角色是用于描述该类在关联中所扮演的角色和职责的。 (√)

6. 类图用来表示系统中类和类与类之间的关系,它是对系统动态结构的描述。 (×) 7. 用例模型的基本组成部件是用例、角色和用例之间的联系。 (√) 8. 用例之间有扩展、使用、组合等几种关系。 (√)

9. 顺序图描述对象之间的交互关系,重点描述对象间消息传递的时间顺序。 (√)

10. 活动图显示动作及其结果,着重描述操作实现中所完成的工作以及用例实例或类中的活动。

(×) 三、 简答题

1. 以图1(一个在学校首次报名的 UML 活动图)为例,说明如何绘制活动图。

图1 学校首次报名的UML活动图

答:要创建一个UML活动图,需要反复执行下列步骤。

(1) 定义活动图的范围。首先应该确定建模的范围,是对整个系统建模,还是一个子系统。一旦定义了作图的范围,应该在其顶部,用一个注释指明该图的标题和惟一的标识符,还可标注该图的时间及作者姓名。本题的建模范围是一个学校管理系统中的“报名”部分。

(2) 添加活动。活动是活动图的核心,活动是完成系统任务所必须执行的处理步骤。可从用例模型出发,对每个角色(actor)所驱动的主要用例引入一个活动,如果是对整个系统建模,应对每个主要流程引入一个活动。在“报名”的活动图中确定了“Fill out enrollment ”(填写报名表)、“Enroll in university”(登记入学)、“Obtain help to fill out forms”(帮助填写报名表)、“Attend university overview presentation”(参加介绍学校会议)等6个活动。

(3) 添加起点和结束点。每个活动图只能有一个起始点和多个结束点,结束点可以是所有活动的结束,也可以是对执行过程的终止。

(4) 添加活动间的转变。当一个活动结束时将进入下一个活动,称为活动转移。可标明活动转移的条件、引起活动转移的事件。如活动“填写报名表”有两个活动转移,当填写报名表不正确时,则转移到活动“帮助填写报名表”;当填写正确时,则转移到活动“登记入学 ”。

(5) 添加判断点。当对建模的逻辑需要做出一个判断时,需要添加判断点。例如,在图1中 ,在“Enroll in university”活动之后,还必须按照入学条件进行判断,满足条件的继续执行入学报到的活动,而不满足入学条件的则结束。

(6) 找出并行活动。若两个活动间没有直接的联系,而且它们都必须在第三个活动开始前结束,则它们是可以并行运行的。在图1中,用同步线描述系统任务中的并发活动,活动“Attend university

14

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

overview presentation”(参加介绍学校会议)和“Enroll in seminars” (注册研讨班)及“Make initial tuition payment”(交付初始的学费)可并行执行,使用同 步线表示它们都要在结束整个流程前完成。 2. 简述扩展、包含和细化三种UML依赖关系的异同。

答:扩展、包含和细化都是描述了元素之间的依赖关系,但具体含义不同。

扩展(extend)关系是对基本用例在对某些“扩展点”的功能的增加。通过向被扩展的用例添加动作来扩展用例。

包含(include)关系表示一个元素为了实现或完成其全部的功能,需要用到已存在的另一个模型元素,本质上是一种使用关系。

细化关系是不同语义层(如分析和设计)之间模型元素的依赖关系,表示一个元素对另一个因此细化关系可描述的语义范围较广,包括模型的逐步细化、优化、变换、模板、模型合成、框架组成等。

3. 软件开发为什么要使用UML建模?它有何特点?

答:软件开发的过程犹如雕琢一件工艺品,由无形到有形,由粗到细。鉴于软件系统的复杂性和规模的不断增大,项目失败的可能性也相应增加。需要建立不同的模型对系统的各个层次进行描述。

在长期的研究与实践中,人们越来越深刻地认识到,建立简明准确的表示模型是把握复杂系统的关键。模型是对事物的一种抽象,在软件开发过程中,建立各种模型,以便更透彻地了解系统的本质。由于UML以图形模型为主,模型的直观性及丰富的信息描述便于开发人员与用户的交流。建立的模型也为以后的系统维护和升级提供了文档。

总的来说,使用模型可以使人们从全局上把握系统的全貌及其相关部件之间的关系,可以防止过早地陷入各个模块的细节。因此,面向对象的分析与设计应该从建模开始。

UML是一种标准的图形化、可视化的建模型语言,UML的核心是建立系统的各类模型。其主要特点是:

⑴统一标准。UML统一了面向对象的主要流派Booch、OMT和OOSE等方法中的基本概念,已成为对象组织OMG的正式标准,并提供了标准的面向对象的模型元素的定义和表示。

⑵面向对象。UML集面向对象技术的众家之长。吸取了面向对象技术领域中其他流派的长处。 ⑶可视化、表示能力强。系统的各种模型都能用UML的可视化模型清晰地表示,对系统描述能力强,模型蕴涵的信息丰富,可用于复杂软件系统的建模。

⑷独立于过程。UML是系统建模语言,独立于开发过程。

⑸易掌握、易用。UML的概念明确,建模表示法简洁明了,图形结构清晰,易于掌握使用。 正是由于UML具有上述优点,所以对于大型复杂系统的建模,UML是最合适的选择。 4. 简述UML实际建模过程。

答:UML建模过程是一个迭代过程。每次迭代都建立相应的模型。分为以下几个阶段:

① 分析阶段。建模的目的是捕捉系统的功能需求,分析、提取所开发系统的“客观世界”领域的类以及描述它们的合作关系。常以用例图为首选模型。

② 设计阶段。建模的目的是通过考虑实现环境,将分析阶段的模型扩展和转化为可行的技术实现方案。常建立以类图为主的静态模型,及包括状态模型、顺序模型、活动模型和合作模型等 动态模型。

③ 实现阶段。主要工作就是进行编码,同时对已构造的模型作相应的修正。 ④ 配置阶段。通过模型描述所开发系统的软硬件配置情况建立配置模型。 ⑤ 测试阶段。使用前几个阶段所构造的模型来指导和协助测试工作。 5. 在UML中,状态图、协作图、活动图、顺序图在系统分析中各起到了什么作用?

答:状态图(State Diagram)用来描述一个特定对象在其生存周期或在某段时间内的所有可能的状态及其引起状态转移的事件。一个状态图包括一系列的状态以及状态之间的改变。例如订单的状态

15

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

变化等,在实时系统中用得较多,还可以用于辅助设计用户界面。

顺序图(Sequence Diagram) 清晰地描述一组对象之间动态的交互关系、时间的约束关系,着重描述对象间消息传递的时间顺序,所以顺序图在实时系统中被大量使用。

当参与交互的对象数目增加,交互关系复杂时用顺序图描述会显得杂乱,协作图(Collaboration Diagram)从另一个角度来更好地描述相互协作的对象间的交互关系和链接(Link)关系。着重体现交互对象间的静态链接关系和协作关系。协作图也可以从顺序图生成。

活动图(Activity Diagram)是由状态图变化而来的,从系统任务的观点来看,系统的执行过程是由一系列有序活动组成的。活动图可以有效地描述整个系统的流程,描述了系统的全局的动态行为,且只有活动图是唯一能够描述并发活动的UML图。

6. 顺序图与协作图都是交互图,它们有何不同?所描述的主要系统特征是什么?

顺序图(Sequence Diagram) 重点描述某些对象间消息传递的时间顺序,对象间的通信和交互通过在对象的生命线之间传送的消息来表示。还常给出消息的说明信息及消息之间的时间限制及一些约束信息等。但当参与交互的对象数增加,交互关系复杂时难于表达清楚对象之间的交互关系。

协作图(Collaboration Diagram) 则着重体现交互对象间的静态链接关系和协作关系,不强调执行事件的顺序,而是强调为了完成某个任务,对象之间通过发送消息实现协同工作关系。可以有效地描述当参与对象数较多时的交互关系。

7. 状态图与活动图有何相同与不同之处?在建立系统模型时,应该如何使用这两类模型? 答:活动图(Activity Diagram)是由状态图变化而来的,它们各自用于不同的目的。状态图着重描述了对象的状态变化以及触发状态变化的事件。但是,从系统任务的观点看系统,它是由一系列有序活动组成的,活动图是从活动的角度描述系统任务,并且可以描述系统任务中的并发活动。活动图描述了系统中各种活动的执行顺序,刻画一个方法中所要进行的各项活动的执行流程。活动图显示动作及其结果,着重描述操作实现中完成的工作以及用例或对象内部的活动。

此外,在状态图中状态的变迁通常需要事件的触发,而活动图中一个活动结束后将立即进入下一个活动。

8. 什么是抽象类?在建模时有时使用抽象类有什么好处?

答:抽象类是指没有实例的类,定义一些抽象的操作,即不提供实现方法的操作,只提供操作的特征,并标注{abstract}。如在建立类模型时,常将一些属性与操作类似的类作为一个抽象类的子类,使系统结构更加清晰,增加系统的可读性。

9. 以例5-5中图5.22“资源管理用例图”为例,说明<>和<>的区别。

答:在图5.22中,用例“删除资源”和“更新资源”与用例“查找资源”之间是<>的关系,<>本质上是一种使用关系,当一个用例包含另一个用例时,这两个用例之间就构成了使用关系。说明“删除资源”和“更新资源”的操作都需要首先“查找资源”。

扩展<>是向一个用例中加入一些新的动作后构成了另外一个用例,后者是继承前者的一些行为得来的。图5.22中,对用例“更新资源”中增加动作“清除技能”,得到用例“从资源中清除技能”,增加动作“指定技能”,得到用例“把技能指定给资源”,因此,用例“更新资源”与“从资源中清除技能”和“把技能指定给资源”之间的关系是<>。

10. 在分析和设计阶段都需要建立类图,试说明分析类图与设计类图的主要区别是什么。

答:在软件开发的不同阶段都使用类图,但这些类图表示了不同层次的抽象。在需求分析阶段,类图是研究领域的概念;在设计阶段,类图重点描述类与类之间的接口。

由于分析类图主要描述应用领域中的概念,它们的类可以从这些概念中得出,或者说分析类图中的类是从需求中获取的。

设计类图描述软件的接口部分,而不是软件的实现部分。面向对象开发方法非常重视区别接口与实现之间的差异,可以用一个类型(Type)描述一个接口,这个接口可能因为实现环境、运行特性或

16

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