软件工程课后习题简答题_第1页
软件工程课后习题简答题_第2页
软件工程课后习题简答题_第3页
软件工程课后习题简答题_第4页
软件工程课后习题简答题_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一章:三、简答题1. 软件产品的特性是什么?答: 软件是一种逻辑产品,具有无形性; 软件产品的生产主要是研制;主要是脑力劳动; 软件不存在磨损和老化问题,但存在退化问题; 软件产品的成本非常昂贵,其开发方式目前尚未完全摆脱手工生产方式; 软件具有“复杂性”,其开发和运行常受到计算机系统的限制。2. 软件发展有几个阶段?各有何特征?答: 程序设计阶段。 硬件特征:价格贵、存储容量小、运行可靠性差。 软件特征:只有程序、程序设计概念,不重视程序设计方法。 程序系统阶段。 硬件特征:速度、容量及工作可靠性有明显提高,价格降低,销售有爆炸性增长。 软件特征:程序员数量猛增,开发人员素质低。 软件工程

2、阶段。硬件特征:向超高速、大容量、微型化及网络化方向发展。软件特征:开发技术有很大进步,但未获得突破性进展,软件价格不断上升,未完全摆脱软件危机。3. 什么是软件危机?其产生的原因是什么?答:“软件危机”(Software Crisis)的出现是由于软件的规模越来越大,复杂度不断增加,软件需求量增大。而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术不能适应软件发展的需要。致使大量质量低劣的软件涌向市场,有的花费大量人力、财力,而在开发过程中就夭折。软件危机主要表现在两个方面:(1) 软件产品质量低劣,甚至开发过程就夭折。(2) 软件生产率低,不能满足需要。4. 什么是软件过程?有哪

3、些主要的软件过程模型?它们各有哪些特点?答:软件过程是指在软件工具的支持下,所进行的一系列软件开发和进化的活动。软件过程模型是对软件开发实际过程的抽象和简化,是描述软件开发过程中各种活动如何执行的模型,因此又称为软件开发模型。主要的软件过程模型有:瀑布模型、增量模型、螺旋模型、喷泉模型和基于知识的模型等。瀑布模型是经典的软件开发模型,将软件开发活动中的各项活动规定为依线性顺序连接的若干阶段,它简单易用,在消除非结构化软件、降低软件的复杂性、促进软件开发工程化方面起了很大的作用。但在软件开发实践中也逐渐暴露出它的缺点。它将一个充满回溯的软件开发过程硬性分割为几个阶段,无法解决软件需求不明确或者变

4、动的问题。增量模型是一种非整体开发的模型。根据增量的方式和形式的不同,分为基于瀑布模型的渐增模型和基于原型的快速原型模型。该模型具有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。螺旋模型将瀑布模型和增量模型结合起来,并加入了风险分析。螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期可分为4个工作步骤:制定计划、风险分析、实施工程、客户评估。喷泉模型用于采用对象技术的软件开发项目。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。喷泉模型使开发过程具有迭代性和无间隙性。软件开发过程有4个阶段,即分析、系统设计、软件设计和实现。各阶段相互重叠,以分析为基础,资源消耗成塔

5、形,从高层返回低层无资源消耗。强调增量开发,是对象驱动的过程,反映了对象的开发和重用过程。基于知识的模型也称为智能模型。通过领域的专家系统,可使需求说明更加完整、准确和无二义性。通过软件工程知识和特定应用领域的知识和规则的应用来提供开发的帮助。5. 有哪些主要的软件开发方法?答:主要的软件开发方法有:结构化开发方法、原型化开发方法和面向对象的开发方法。6. 软件生存周期各阶段的主要任务是什么?答:软件生存周期按瀑布模型分为6个阶段: 可行性研究与计划(确定系统的目标和规模,分析项目的可行性); 需求分析与规格说明(明确系统的规格和要求); 设计(包括概要设计和详细设计,将系统分解为模块); 编

6、程(用程序语言实现每个模块,简单容易); 测试(发现并改正错误,分为模块测试、集成测试和系统联调三级); 运行维护(扩充功能、纠错等)。7. 原型化方法的核心是什么?它具有哪些特点?答:原型化方法的核心是,花费少量代价建立一个可运行的系统,使用户及早获得学习的机会。强调软件开发人员与用户的不断交互,通过原型的演进不断适应用户任务改变的需求。它是一个循环的模型。速成原型法按以下步骤循环执行: 快速分析。 构造原型。 运行和评价原型。 修改与改进。第二章:三、 简答题1. 需求工程包括哪些基本活动?各项基本活动的主要任务是什么?答:需求工程过程包括如下主要活动: 获取需求。深入实际,在充分理解用户

7、需求的基础上,获取足够多的问题领域的知识,积极与用户交流,捕捉、分析和修订用户对目标系统的需求,并提炼出符合解决领域问题的用户需求。需求获取的方法一般有问卷法、面谈法、数据采集法、用例法、情景实例法以及基于目标的方法等。 需求分析与建模。对已获取的需求进行分析和提炼,进行抽象描述,建立目标系统的概念模型,需求概念模型的要求包括实现的独立性:不模拟数据的表示和内部组织等;需求模拟技术又分为企业模拟、功能需求模拟和非功能需求模拟等。进一步对所建立的模型(原型)进行分析。需求模型的表现形式有自然语言、半形式化(如图、表、结构化英语等)和形式化表示等三种。 需求规格说明。对需求模型进行精确的、形式化的

8、描述,为计算机系统的实现提供基础。 确认需求。以需求规格说明为基础输入,通过符号执行、模拟或快速原型等方法,分析和验证需求规格说明的正确性和可行性,确保需求说明准确、完整地表达系统的主要特性,就是对需求规格说明与用户达成一致。其主要任务是冲突求解,包括定义冲突和冲突求解两方面。常用的冲突求解方法有:协商、竞争、仲裁、强制、教育等,其中有些只能用人的因素去控制。 需求管理。在整个需求工程过程中,贯穿了需求管理活动。需求管理主要包括跟踪和管理需求变化,支持系统的需求演进。由于客户的需要总是不断(连续)增长的,但一般的软件开发又总是落后于客户需求的增长,如何管理需求的进化(变化)就成为软件管理的首要

9、问题。对于传统的变化管理过程来说,其基本成分包括软件配置、软件基线和变化审查小组。当前的发展是软件家族法,即产品线方法。多视点方法也是管理需求变化的一种新方法,它可以用于管理不一致性,并进行关于变化的推理。进化需求是十分必要的。2简述抽取需求的主要方法,并比较它们的特点。面谈法。这是一种重要而直接简单,随时可使用的发现和获取需求的方法。面谈的对象主要有用户和领域专家:与用户面谈主要了解和提取需求,与领域专家面谈,是一个对领域知识的学习和转换过程。使用该方法时应注意面谈前要充分准备,面谈后认真分析总结,同时注意掌握面谈的人际交流技巧,才能取得好的效果。问卷法调查法。通过采用向用户发问卷调查表的方

10、式,达到彻底弄清项目需求的一种需求获取方法。这是一种从多个用户处收集需求信息的有效方式,是对面谈法的补充。会议讨论法。所谓会议讨论法,是指开发方和用户方召开若干次需求讨论会议,达到彻底弄清项目需求的一种需求获取方法。这种方法适合于开发方不清楚项目需求的情况。原型法。对于某些试验性、探索性的项目,更是难于得到一个准确、无二义性的需求。而原型化方法(Prototyping Method)是获取这一类项目需求的有效方法。面向用例的方法。分析建立“用例”的过程,也就是提取需求的过程。在实际应用中,常常将以上方法进行综合应用。3. 客户的需要总是不断地增长,但是一般的软件开发又总是落后于客户需求的增长,

11、如何管理需求的进化就成为软件进化的首要问题。请说明需求变更的管理过程。答:需求变更的管理是需求管理的核心内容。其主要任务是对系统需求变更进行跟踪和控制。对传统的变化管理过程来说,其基本内容包括软件配置、软件基线和变更审查等。目前推出的新的管理方法有软件家族法,即软件产品线方法及多视点方法等。下图描述了需求变更的管理过程。识别出的问题问题分析和变更描述变更分析和成本计算变更实现修正后的需求4. M公司的软件产品以实验型的新软件为主。用瀑布模型进行软件开发已经有近十年了,并取得了一些成功。若你作为一名管理人员刚加入M公司,你认为快速原型法对公司的软件开发更加优越,请向公司副总裁写一份报告阐明你的理

12、由。切记:副总裁不喜欢报告长度超过一页。参考答案提示:应先简述瀑布模型的缺点,它已不适宜开发实验型的软件。根据快速原型法的特点,说明它特别适合于开发探索型、实验型的软件。5. 如何画分层数据流图?有哪些基本原则?答:总的原则是:至顶而下,逐层分解(画分层数据流图)。逐层分解的画法可以控制每一层的复杂度。顶层:将整个系统作为一个加工,描述系统边界(输入与输出)。中间层:将某个加工分解为一组子加工,其中的子加工还需进一步分解。底层:由不再进行分解的基本加工组成。画分层数据流图的基本原则有: 数据守恒与数据封闭原则。 加工分解的原则。 子图与父图“平衡”的原则。 合理使用文件的原则。6. 加工小说明

13、有哪些描述方法?它们各有何优缺点?为什么不采用自然语言进行描述?答:主要的描述方法有三种;结构化语言、判定表和判定树。结构化语言:介于自然语言和形式语言(如谓词逻辑)之间的的一种半形式语言,它是自然语言的一个受限制的子集。是在自然语言的基础上加上一些约束,一般分为两层结构:外层语法较具体,为控制结构(顺序、选择、循环);内层较灵活,表达“做什么”。常用结构化英语或结构化汉语表示,精确、简明扼要、文体灵活。结构化语言特点:简单,易学,少二义性,但不好处理组合条件。判定表:适用于表述比较复杂的加工逻辑,如具有多项选择条件的操作。判定表是一种二维的表格,常用于较复杂的组合条件。通常由四部分组成,如教

14、材表2-2所示。对用结构化语言不易处理的较复杂的组合条件问题,可使用判定表。判定树:本质上与判定表相同,图形表示更易于理解。描述一般组合条件较清晰,但不易输入计算机。7. 考察下图中子图、父图的平衡关系。图1图2参考答案: 显然,图1中子图与父图不平衡。 图2中,如果有如下数据条目:订货单=客户+账号+数量则子、父图平衡。8. 画出银行取款过程的用例图。问题描述为:储户用存折取款,首先填写取款单,根据“ 银行卡”中的信息检验取款单与存折,如有问题,将问题反馈给储户,否则,登录“储户存款数据库”,修改相应数据,并更新“银行卡”,同时发出付款通知,出纳向储户付款。参考答案:分析所给出的需求,确定角

15、色为:储户、存款数据库、存折、出纳。用例为:填写取款单、验证取款单与存折、银行卡管理、数据库管理、付款。银行取款系统的高层用例图储户存折出纳存款数据库付款数据库管理填写取款单银行卡管理管理验证取款单与存折<<extend>><<include>><<include>><<include>>第三章:三、简答题1. 请解释为什么需要体系结构设计。答:软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、元素间的相互作用、指导元素集成的模式以及这些模式的约束组成。软件体系结构

16、不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。良好的体系结构是普遍适用的,它可以高效地处理各种各样的个体需求。2. 集中式模型和分布式模型相比各有什么优缺点?答:以集中式的仓库模型为例。其主要优点:(1) 数据由某个子系统产生,并且被存储到仓库中,以便为另外一些子系统共享;(2) 由于中央集中控制的缘故,共享数据能得到有效的管理,各子系统之间不需要通过复杂的机制来传递共享数据;(3) 一个子系统不必关心其他的子系统是怎么使用它产生的数据;(4) 所有的子系统都拥有一致的基于中央数据仓库的数据视图。如果新子系统也采用相同的规范

17、,则将它集成于系统中是容易的。但这种系统也有明显的缺陷:(1) 虽然共享数据得到了有效的管理,但随之而来的问题是各子系统必须有一致的数据视图以便能共享数据,换句话说,就是各子系统之间为了能共享数据必须走一条折中的路线,这不可避免地会影响整个系统的性能。(2) 一个子系统发生了改变,它产生的数据也可能发生结构上的改变。问题随之而来,其他的子系统如何能正确解析这些数据呢?所以为了达到共享的目的,数据翻译系统会被引入到整个系统当中。但这种翻译的代价是很高的,并且有时是不可能完成的。(3) 中央数据仓库和各子系统的私有数据库必须有相同的关于备份、安全、访问控制和恢复的策略,这可能会影响子系统的效率。(

18、4) 集中式的控制使数据和子系统的分布变得非常困难甚至成为不可能。这里分布指的是将数据或子系统分散到不同的机器上。分布式结构有这样的一些优势:(1) 资源共享:系统中每个服务节点上的资源都可以被系统中的其他节点访问;(2) 开放性高:系统可以方便地增删不同软硬结构的节点;(3) 可伸缩性好:系统可以方便地增删新的服务资源以满足需要;(4) 容错能力强:分布式系统中的信息冗余可以容忍一定程度的软硬故障;(5) 透明性高:系统中的节点一般只需知道服务的位置而不必清楚系统的结构。但分布式结构也存在着一些不足:(1) 复杂性:分布式系统比集中式系统要复杂得多。集中式系统的性能主要依赖于主机的处理器能力

19、,而分布式系统的性能则还会依赖于网络的带宽,这让情形变得更加复杂。(2) 安全性:网络环境随时面临着各种威胁:病毒、恶意代码、非法访问等。如何保证安全性是一个让人头疼的问题。(3) 可管理性:分布式系统的开放性造成了系统的异构性。显而易见,管理异构的系统比管理主机系统要困难得多。(5) 不可预知性:这主要指系统的响应时间。网络环境本身的特点决定了网络负载会明显地影响整个系统的响应时间。3. 请举出一种集中式模型的实例,并图示它的结构。答:请参考“仓库模型”4. 胖客户模型和瘦客户模型的区别是什么?它们分别被应用在什么样的场合?答:在胖客户模型中,客户端应用负责用户界面和应用逻辑部分,因此它的工

20、作比较繁重。一般的数据库应用都是属于这种结构。而与此相反,在瘦客户模型中,服务器负责了更多的工作,而客户端的工作就变得非常单纯。浏览器/Web服务器结构就属于瘦客户结构,而且常被称为B/S(Browser/Server)结构。5.请举出一种分布式模型的实例,并图示它的结构。答:请参考“两层C/S模型”6.请为一个公司的电子商务网站建设提出体系结构设计方案。答:略。7.分布式对象模型与客户服务器模型有什么异同?答:在C/S模型中,客户和服务器的“地位”是不“平等”的:客户只能向服务器提出服务请求,而服务器不能向客户提出服务请求,同时服务器之间可以互相提供服务。另外,客户一般要知道服务器在网络上的

21、具体位置(服务器的域名或者IP地址),相反,服务器则不需要。这种差别在一定程度上限制了系统的灵活性和可扩展性。而在分布式对象结构中,服务的提供者是被称为“对象”(Object)的系统组件(System Component)。每个对象的地位在逻辑上是平等的,它们可以互相为对方提供所需的服务。在这种情况下,提供服务的对象就是服务器,而提出服务请求的对象就是客户。为了能够提供服务,每个对象都有一个服务接口。8.请查阅相关的资料,写一篇对比CORBA和DCOM的报告。答:略。9.模块分解的最终目的是什么?答:模块分解的目的是将系统“分而治之”,以降低问题的复杂性,使软件结构清晰,易阅读、易理解,易于测

22、试和调试,因而也有助于提高软件的可靠性。10. 模块分解应该遵循什么样的标准? 答:按照“降低块间联系,提高块内联系”的设计总则对模块进行分解。具体从以下方面考虑:(1) 尽可能建立功能模块;(2) 消除重复功能;(3) 模块的作用范围与控制范围,即当作用范围为控制范围的子集时,才能获得较低的块间联系;(4) 模块的大小适当;(5) 模块的扇入/扇出数不宜太多。也可以用软件独立性的两个定性指标来度量模块分解的标准:一是耦合性。用于描述模块之间联系的紧密程度。从三个方面衡量块间联系大小:方式 (直接或间接)类型(数据型、控制型、混合型)数量(数量越大,块间联系越紧密。二是内聚性。用于描述模块内部

23、联系的紧密程度。它是从功能的角度来度量模块内的联系。显然,块内联系愈紧,即内聚性愈强,模块独立性愈好。功能型模块独立性最好。1117题答案略。第四章:三、 简答题1.消息传递机制与传统程序设计模式中的过程调用相比,有何本质区别?答:(1) 消息传递必须给出信道的信息,通常要指出明确的接收方。 (2) 由于接收方是一通信实体,具有保持状态的能力,所以同一发送方在不同时刻向同一接收方发送同样的信息,可因接收方的当前状态不同而得到不同的结果。 (3) 消息传递可以是异步的,发送方可以不必等待接收方返回信息就可以继续执行后面的操作,因而支持程序的并发和分布执行,而过程调用只能是同步的,本质上是串行的。

24、2比较面向对象方法与结构化方法的特点,说明为什么面向对象方法比结构化方法更加优越。答:结构化方法是以数据流和数据封闭性为基础的,由SA、SD和 SP三部分构成。该方法:无法实现从问题空间到解空间的直接映射。开发方法求解过程是先对应用领域(问题空间)进行分析,建立起问题空间的逻辑模型,再通过一系列复杂的转换和算法,构造计算机系统,获得解空间。无法实现高效的软件复用。结构化方法是面向过程的,将数据和处理过程(操作)分离,不仅增加了软件开发的难度,也难于支持软件复用。开发方法难以实现从分析到设计的直接过渡,从SA到SD要经过一系列复杂的变换。而面向对象的方法以对象为核心,强调模拟现实世界中的概念而不

25、是算法,尽量用符合人类认识世界的思维方式来渐进地分析、解决问题。使问题空间与解空间具有一致性,便于对软件开发过程所有阶段进行综合考虑,能有效地降低软件开发的复杂度,提高软件质量。软件开发各个阶段有机集成,有利于系统的稳定性。具有良好的重用性。面向对象的技术在利用可重用的软件成分构造新软件系统上具有很大的灵活性,由于对象所具有的封装性和信息隐蔽,使得对象的内部实现与外界隔离,具有较强的独立性。继承性本身就是一种重用机制。综上,显然面向对象方法比结构化方法更加优越。3 Coad/Yourdon方法主要有面向对象分析(OOA)和面向对象设计(OOD)。OOA概念模型由5个层次组成,请简述这5个层次。

26、答:OOA概念模型的5个层次分别是:(1) 发现类及对象。描述如何发现类及对象。从应用领域开始识别类及对象,形成整 个应用的基础,然后,据此分析系统的责任。(2) 识别结构。该阶段分为两个步骤。第一,识别“一般特殊”结构,该结构捕获了识别出的类的层次结构;第二,识别“整体部分”结构,该结构用来表示一个对象如何成为另一个对象的一部分,以及多个对象如何组装成更大的对象。(3) 定义属性。其中包括定义类的实例(对象)之间的实例连接。(4) 定义服务。其中包括定义对象之间的消息连接。(5) 定义主题。主题由一组类及对象组成,用于将类及对象模型划分为更大的单位,以便于理解。4面向对象的分析包括哪些主要活

27、动?所建立的分析模型包括哪些类型的模型?答:面向对象的分析过程分为论域分析和应用分析。论域分析过程是抽取和整理用户需求并建立问题域精确模型的过程。应用分析是将论域分析建立起来的问题论域模型,用某种基于计算机系统的语言来描述。面向对象的分析具体包括以下活动:获取用户基本需求。通常使用用例(User Case)来收集和描述。标识类和对象。包括标识类及对象的属性和操作。定义类的结构和层次。通常有一般与特殊 (GeneralizationSpecialization)结构,整体与部分(WholePart)结构。 建立类(对象)之间的关系,用“对象-关系模型”描述系统的静态结构。 建立对象行为模型,描述

28、系统的动态行为。所建立的分析模型包括:基本模型。是一个类图(class diagram),是以直观的方式表达系统最重要的信息。OOA基本模型的三个层次分别描述了:系统中应设哪几类对象,每类对象的内部构成,对象与外部的关系。主题图(subject)。又称为子系统(subsystem),是将一些联系密切的类组织在一起的类的集合。按照粒度控制原则,将系统组成几个主题,便于理解。交互图(interaction diagram) 是用例与系统成分之间的对照图。主题图和交互图又称为补充模型。5面向对象设计的主要任务是什么?答:面向对象的设计(Object-Oriented Design,OOD)是面向对象

29、开发方法(OOSD)的核心阶段。是在OOA的基础上解决系统“如何做”的问题。主要任务包括:系统设计 系统设计的任务包括:将分析模型中紧密相关的类划分为若干子系统(也称为主题),子系统应该具有良好的接口,子系统中的类相互协作;标识问题本身的并发性,将各子系统分配给处理器,建立子系统之间的通信。对象设计通过对象的认定和对象层次结构的组织,确定解空间中应存在的对象和对象层次结构,并确定外部接口和主要的数据结构。设计优化对设计进行优化,主要涉及提高效率的技术和建立良好的继承结构的方法。6为什么面向对象的方法能够有效地解决软件需求中存在的问题?需求过程中存在两大难题,一是需求的确定是困难的,二是需求是不

30、断变动的。尤其是对于一些大型软件系统,开发周期长,系统规模大,复杂性高。面向对象的方法中,由于对象所具有的封装性和信息隐蔽,使得对象的内部实现与外界隔离,具有较强的独立性。而且面向对象的方法是以对象为中心构造软件系统,而不是基于对系统功能进行分解来构造系统,当系统功能需求改变时不会引起系统结构的变化,使软件系统具有良好的稳定性和可适应性。软件生存期各阶段所使用的方法、技术具有高度的连续性,对软件开发过程所有阶段进行综合考虑,能有效地降低软件开发的复杂度,提高软件质量,也便于需求的确定。7. OMT方法明确提出了建模的概念,为什么在软件开发过程中需要进行建模?答:OMT方法从不同而又相关的角度建

31、立三类模型:对象模型、动态模型和函数模型,并为每一类模型提供了图形表示。软件模型一般包括数学模型、描述模型和图形模型。在软件开发过程中进行建模,一是由于软件系统的复杂性和规模的不断增大,需要建立不同的模型对系统的各个层次更好地进行描述。模型具有的直观性及丰富的信息描述,便于开发人员与用户的交流。建立的模型为以后的系统维护和升级提供了文档。鉴于上述原因,在软件开发过程中建模,能够提高软件开发的效率和质量。8为什么说面向对象的方法为软件复用提供了良好的环境?答:软件复用是将已有的软件成分用于构造新的软件系统,以达到提高软件系统的开发质量与效率,降低开发成本的目的。复用的软件成分也称为可复用构件(R

32、eusable Component)。对可复用组件一般有以下的要求:具有功能上的独立性与完整性;具有较高的通用性;具有较高的灵活性;具有严格的质量保证;具有较高的标准化程度。面向对象的方法对复用的支持主要反映在:面向对象方法可以保护在整个软件生存周期概念、原则、术语及表示法达到高度一致。这使面向对象方法不但能在各个级别支持软件复用,而且能对各个级别的复用形成统一、高效的支持,达到良好的全局效果。OOA基本模型体现了更高的抽象,更容易成为一个可复用的系统构架。所有的对象都用类作为其抽象描述。类作为一种可复用构件,在运用于不同系统时,不会出现因该类对象实例不同而使系统模型有所不同的情况。所以面向对

33、象方法的主要概念及原则与软件复用的要求十分吻合。OO方法中的对象和类是系统的基本构成单位,它符合可复用构件所应具备的那些特性,如完整性、独立性、可标识性、一般性、抽象、封装等。尤其是面向对象方法的对象封装性,为软件复用技术提供了良好的条件。而继承机制本质上就是一种复用机制,因此面向对象方法为软件复用提供了一个良好的环境。第五章:三、 简答题1. 以图1(一个在学校首次报名的 UML 活动图)为例,说明如何绘制活动图。图1 学校首次报名的UML活动图答:要创建一个UML活动图,需要反复执行下列步骤。(1) 定义活动图的范围。首先应该确定建模的范围,是对整个系统建模,还是一个子系统。一旦定义了作图

34、的范围,应该在其顶部,用一个注释指明该图的标题和惟一的标识符,还可标注该图的时间及作者姓名。本题的建模范围是一个学校管理系统中的“报名”部分。(2) 添加活动。活动是活动图的核心,活动是完成系统任务所必须执行的处理步骤。可从用例模型出发,对每个角色(actor)所驱动的主要用例引入一个活动,如果是对整个系统建模,应对每个主要流程引入一个活动。在“报名”的活动图中确定了“Fill out enrollment ”(填写报名表)、“Enroll in university”(登记入学)、“Obtain help to fill out forms”(帮助填写报名表)、“Attend univers

35、ity overview presentation”(参加介绍学校会议)等6个活动。(3) 添加起点和结束点。每个活动图只能有一个起始点和多个结束点,结束点可以是所有活动的结束,也可以是对执行过程的终止。(4) 添加活动间的转变。当一个活动结束时将进入下一个活动,称为活动转移。可标明活动转移的条件、引起活动转移的事件。如活动“填写报名表”有两个活动转移,当填写报名表不正确时,则转移到活动“帮助填写报名表”;当填写正确时,则转移到活动“登记入学 ”。(5) 添加判断点。当对建模的逻辑需要做出一个判断时,需要添加判断点。例如,在图1中 ,在“Enroll in university”活动之后,还必

36、须按照入学条件进行判断,满足条件的继续执行入学报到的活动,而不满足入学条件的则结束。(6) 找出并行活动。若两个活动间没有直接的联系,而且它们都必须在第三个活动开始前结束,则它们是可以并行运行的。在图1中,用同步线描述系统任务中的并发活动,活动“Attend university overview presentation”(参加介绍学校会议)和“Enroll in seminars” (注册研讨班)及“Make initial tuition payment”(交付初始的学费)可并行执行,使用同 步线表示它们都要在结束整个流程前完成。2. 简述扩展、包含和细化三种UML依赖关系的异同。答:扩

37、展、包含和细化都是描述了元素之间的依赖关系,但具体含义不同。扩展(extend)关系是对基本用例在对某些“扩展点”的功能的增加。通过向被扩展的用例添加动作来扩展用例。包含(include)关系表示一个元素为了实现或完成其全部的功能,需要用到已存在的另一个模型元素,本质上是一种使用关系。细化关系是不同语义层(如分析和设计)之间模型元素的依赖关系,表示一个元素对另一个因此细化关系可描述的语义范围较广,包括模型的逐步细化、优化、变换、模板、模型合成、框架组成等。3. 软件开发为什么要使用UML建模?它有何特点?答:软件开发的过程犹如雕琢一件工艺品,由无形到有形,由粗到细。鉴于软件系统的复杂性和规模的

38、不断增大,项目失败的可能性也相应增加。需要建立不同的模型对系统的各个层次进行描述。在长期的研究与实践中,人们越来越深刻地认识到,建立简明准确的表示模型是把握复杂系统的关键。模型是对事物的一种抽象,在软件开发过程中,建立各种模型,以便更透彻地了解系统的本质。由于UML以图形模型为主,模型的直观性及丰富的信息描述便于开发人员与用户的交流。建立的模型也为以后的系统维护和升级提供了文档。总的来说,使用模型可以使人们从全局上把握系统的全貌及其相关部件之间的关系,可以防止过早地陷入各个模块的细节。因此,面向对象的分析与设计应该从建模开始。UML是一种标准的图形化、可视化的建模型语言,UML的核心是建立系统

39、的各类模型。其主要特点是:统一标准。UML统一了面向对象的主要流派Booch、OMT和OOSE等方法中的基本概念,已成为对象组织OMG的正式标准,并提供了标准的面向对象的模型元素的定义和表示。面向对象。UML集面向对象技术的众家之长。吸取了面向对象技术领域中其他流派的长处。可视化、表示能力强。系统的各种模型都能用UML的可视化模型清晰地表示,对系统描述能力强,模型蕴涵的信息丰富,可用于复杂软件系统的建模。独立于过程。UML是系统建模语言,独立于开发过程。易掌握、易用。UML的概念明确,建模表示法简洁明了,图形结构清晰,易于掌握使用。正是由于UML具有上述优点,所以对于大型复杂系统的建模,UML

40、是最合适的选择。4. 简述UML实际建模过程。答:UML建模过程是一个迭代过程。每次迭代都建立相应的模型。分为以下几个阶段: 分析阶段。建模的目的是捕捉系统的功能需求,分析、提取所开发系统的“客观世界”领域的类以及描述它们的合作关系。常以用例图为首选模型。 设计阶段。建模的目的是通过考虑实现环境,将分析阶段的模型扩展和转化为可行的技术实现方案。常建立以类图为主的静态模型,及包括状态模型、顺序模型、活动模型和合作模型等动态模型。 实现阶段。主要工作就是进行编码,同时对已构造的模型作相应的修正。 配置阶段。通过模型描述所开发系统的软硬件配置情况建立配置模型。 测试阶段。使用前几个阶段所构造的模型来

41、指导和协助测试工作。5. 在UML中,状态图、协作图、活动图、顺序图在系统分析中各起到了什么作用?答:状态图(State Diagram)用来描述一个特定对象在其生存周期或在某段时间内的所有可能的状态及其引起状态转移的事件。一个状态图包括一系列的状态以及状态之间的改变。例如订单的状态变化等,在实时系统中用得较多,还可以用于辅助设计用户界面。顺序图(Sequence Diagram) 清晰地描述一组对象之间动态的交互关系、时间的约束关系,着重描述对象间消息传递的时间顺序,所以顺序图在实时系统中被大量使用。当参与交互的对象数目增加,交互关系复杂时用顺序图描述会显得杂乱,协作图(Collaborat

42、ion Diagram)从另一个角度来更好地描述相互协作的对象间的交互关系和链接(Link)关系。着重体现交互对象间的静态链接关系和协作关系。协作图也可以从顺序图生成。活动图(Activity Diagram)是由状态图变化而来的,从系统任务的观点来看,系统的执行过程是由一系列有序活动组成的。活动图可以有效地描述整个系统的流程,描述了系统的全局的动态行为,且只有活动图是唯一能够描述并发活动的UML图。6. 顺序图与协作图都是交互图,它们有何不同?所描述的主要系统特征是什么?顺序图(Sequence Diagram) 重点描述某些对象间消息传递的时间顺序,对象间的通信和交互通过在对象的生命线之间

43、传送的消息来表示。还常给出消息的说明信息及消息之间的时间限制及一些约束信息等。但当参与交互的对象数增加,交互关系复杂时难于表达清楚对象之间的交互关系。协作图(Collaboration Diagram) 则着重体现交互对象间的静态链接关系和协作关系,不强调执行事件的顺序,而是强调为了完成某个任务,对象之间通过发送消息实现协同工作关系。可以有效地描述当参与对象数较多时的交互关系。7. 状态图与活动图有何相同与不同之处?在建立系统模型时,应该如何使用这两类模型?答:活动图(Activity Diagram)是由状态图变化而来的,它们各自用于不同的目的。状态图着重描述了对象的状态变化以及触发状态变化

44、的事件。但是,从系统任务的观点看系统,它是由一系列有序活动组成的,活动图是从活动的角度描述系统任务,并且可以描述系统任务中的并发活动。活动图描述了系统中各种活动的执行顺序,刻画一个方法中所要进行的各项活动的执行流程。活动图显示动作及其结果,着重描述操作实现中完成的工作以及用例或对象内部的活动。此外,在状态图中状态的变迁通常需要事件的触发,而活动图中一个活动结束后将立即进入下一个活动。8. 什么是抽象类?在建模时有时使用抽象类有什么好处?答:抽象类是指没有实例的类,定义一些抽象的操作,即不提供实现方法的操作,只提供操作的特征,并标注abstract。如在建立类模型时,常将一些属性与操作类似的类作

45、为一个抽象类的子类,使系统结构更加清晰,增加系统的可读性。9. 以例5-5中图5.22“资源管理用例图”为例,说明<<include>>和<<extend>>的区别。答:在图5.22中,用例“删除资源”和“更新资源”与用例“查找资源”之间是<<include>>的关系,<<include>>本质上是一种使用关系,当一个用例包含另一个用例时,这两个用例之间就构成了使用关系。说明“删除资源”和“更新资源”的操作都需要首先“查找资源”。扩展<<extend>>是向一个用例中加入一些

46、新的动作后构成了另外一个用例,后者是继承前者的一些行为得来的。图5.22中,对用例“更新资源”中增加动作“清除技能”,得到用例“从资源中清除技能”,增加动作“指定技能”,得到用例“把技能指定给资源”,因此,用例“更新资源”与“从资源中清除技能”和“把技能指定给资源”之间的关系是<<extend>>。10. 在分析和设计阶段都需要建立类图,试说明分析类图与设计类图的主要区别是什么。答:在软件开发的不同阶段都使用类图,但这些类图表示了不同层次的抽象。在需求分析阶段,类图是研究领域的概念;在设计阶段,类图重点描述类与类之间的接口。由于分析类图主要描述应用领域中的概念,它们的类

47、可以从这些概念中得出,或者说分析类图中的类是从需求中获取的。设计类图描述软件的接口部分,而不是软件的实现部分。面向对象开发方法非常重视区别接口与实现之间的差异,可以用一个类型(Type)描述一个接口,这个接口可能因为实现环境、运行特性或者用户的不同而具有多种实现方式。设计类图更易于开发者之间的相互理解和交流。设计类图通常是在分析类图的基础上进行细化和改进的。11. 问题描述:储户用存折取款,首先填写取款单,根据“银行卡”中的信息检验取款单与存折,如有问题,将问题反馈给储户;否则,登录“储户存款数据库”,修改相应数据,并更新“帐卡”,同时发出付款通知,出纳向储户付款。 建立系统的用例模型; 建立

48、角色和用例的描述模板。答:通过分析,确定系统的角色为:储户、存款数据库、存折、出纳。用例为:填写取款单、验证取款单与存折、银行卡管理、数据库管理、付款。银行取款系统的高层用例图储户存折出纳存款数据库付款数据库管理填写取款单银行卡管理管理验证取款单与存折<<extend>><<include>><<include>><<include>>描述模板:角色描述模板:角色:储户角色职责:提供取款存折和取款信息。角色职责识别:提供存折、填写取款单、领取付款。角色:存折角色职责:储户存、取款的凭证。角色职责识别

49、:(1)向系统提供取款凭证。(2)与“银行卡管理”子系统交互,核对取款单。角色:出纳角色职责:向储户付款。角色职责识别:(1) 根据储户存款数据库的通知,向储户付款。 (2)与“付款”子系统交互。角色:存款数据库角色职责: 对储户信息及存、取款业务进行管理。角色职责识别:(1)在系统支持下完成银行数据库管理工作。(2)为银行卡管理及通知付款提供信息。用例描述模板:用例名:验证取款单与存折执行者:储户、存折、存款数据库目标: 根据“银行卡”中的信息检验取款单与存折。功能描述:1. 获取“银行卡”中的信息。2. 检验取款单与存折信息。3. 返回验证结果。其他非功能需求: 高可靠性、实时性主要步骤:

50、1. 储户填写取款单。2. 根据银行卡信息,检验取款单与存折信息是否正确。3. 若取款单与存折有问题,将信息返回给储户,否则登录“储户存款数据库”,修改相应数据,并更新“银行卡”。相关用例:填写取款单、银行卡管理、数据库管理相关信息:(优先级、性能、执行频率):优先级:根据储户类型,决定处理的优先次序,VIP用户优先。性能:实时性、高可靠性。其他用例模板略。12. 一个小型图书资料管理系统的主要功能有:图书资料的借出、归还、查询和管理,该系统有图书管理员和普通读者,普通读者要使用系统必须先注册。图书管理员负责添加、更新和修改、删除图书资料,登记和查询图书的借阅、归还情况。读者可以按照作者或主题

51、检索图书资料,还可以预订图书资料,即当新购买或有读者归还时,系统立即通知读者来借阅。 确定系统的类,并定义其属性和操作; 画出系统的分析类图。参考答案:在分析系统需求的基础上,采用名词识别法与实体识别法,确定以下系统的类:Book类该类标识一本书,其属性包括书名、作者、出版社等。User Information类该类标识一个用户,其属性包括用户名、密码、用户类型等。Librarian类 该类是User Information类的子类,其操作包括查询读者信息,添加、删除、更新读者信息、查询书籍信息、添加、删除、更新书籍信息等。Borrower类该类是User Information类的子类,其操

52、作包括查询个人信息、修改密码等。System Manager类该类是User Information类的子类,其操作包括查询图书管理员信息,添加、删除、更新图书管理员信息等。BorrowCriteria类该类标识一条借书规则,其属性包括规则名,规则应用对象等。Info Database类该类标识一个数据库,其属性有数据库名,其操作有读数据、写数据和查找数据。Communication类该类实现各数据库间的数据传输,其操作包括建立通信套接字、绑定端口、建立连接、发送数据、接受数据等。系统的分析类图:由于图书馆的多本书构成书库,增加BookDatabase类,与Book类之间是聚合关系。同样由于借

53、书规则不止一条,增加CriteriaDatabase类,与BorrowCriteria类之间是聚合关系。User Information13.为什么说RUP与UML密切结合,能够开发出满足最终用户需要的高质量软件?答:好的软件过程,是应用UML成功地进行软件开发的关键。在众多的软件开发过程中, RUP统一过程(Rational Unified Process)能够与UML最佳结合,不仅因为该过程的开发者也是UML的创立者,更因为RUP过程能够有效地测度工作进度,控制和改善工作效率。RUP是最佳软件开发经验的总结,具有迭代式增量开发、使用实例驱动、以软件体系结构为核心的三个鲜明特点,还包括了软件

54、开发中的6大经验:迭代式开发;管理需求;使用基于组件的软件体系结构;可视化建模;验证软件质量;控制软件变更。因此,RUP与UML密切结合,能够开发出满足最终用户需要的高质量软件。14.分析RUP的二维开发模型,说明RUP的迭代开发过程。答:在RUP中,软件开发生存周期根据时间和RUP的核心工作流划分为二维空间。横轴描述RUP开发过程的动态结构,纵轴描述RUP的静态组成部分。横轴把软件开发周期(Cycle)划分为起始(Inception)、演化(Elaboration)、构造(Construction)和提交(Transition) 四个连续的阶段(Pahse)。纵轴表示核心工作流。RUP中有商

55、业建模、需求、分析和设计、实现、测试、部署、配置和变更管理、软件项目管理和环境9个核心工作流(Core Workflows):RUP中的每个阶段都由一个或多个连续的迭代组成,每一个迭代都是一个完整的开发过程,产生一个可执行的产品版本,在每个阶段结束前都应有一个里程碑(MileStone)评估该阶段的工作,只有当阶段目标达到时才允许项目进入下一阶段,产生一个阶段里程碑。这是一种更灵活、风险更小的方法,是多次通过不同的开发工作流,这样可以更好地理解需求,构造一个健壮的体系结构,并最终交付一系列逐步完成的版本,称为一个迭代生存周期。第七章:1. 基于组件的软件开发的优势是什么? 大量来自产业实例研究

56、的证据表明基于组件的软件开发导致软件系统的开发成本、开发质量、开发效率都得到了显著的改善。开发的质量基于组件的软件开发的一个明显优点就是提高了软件的质量。可复用的组件相对于在单一应用中使用的模块来说,一般都更为成熟并具有较高的质量保证,这主要是因为:(1)可复用的组件在开发过程中都经过严格的测试。组件的开发者一般都是在该组件的使用领域具有丰富经验、对该领域具有深入研究的开发团体,他们能从以往的客户和开发项目那里得到许多宝贵的经验,因而更容易开发出高质量的组件“精品”。在组件的开发过程中,为了保证它广泛的适应性和在频繁使用过程中的正确性,一般对其有更高的质量要求,并且在组件正式发布以前,都要进行更为严格的测试。因而可复用组件的质量会得到更好的保证。(2)可复用的组件在不断复用过程中,其中的错误和缺陷会被陆续的发现,并得到及时的排除。所以随着一个可复用组件复用次数的不断增加,其中的错误会逐渐减少,软件的质量也随之改善。在软件开发中使用的一个可复用组件通常都是经过许多其他客户的频繁使用,因此可复用的组件相对于新开发的模块更为成熟。HP公司的一份研究报告认为:“被复用代码的缺陷率是每一千行0.9个缺陷。而在新开发的代码中缺陷率是每一千行4.1个缺陷。对一个包含68%复用代码的软件来说,缺陷率是每一千行2.0个缺陷,比无复用的软件缺陷率大约减少了51%。”所以可以说

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论