软件工程教材习题答案_第1页
软件工程教材习题答案_第2页
软件工程教材习题答案_第3页
软件工程教材习题答案_第4页
软件工程教材习题答案_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

习题答案习题一答案一、选择题1.软件的重要特性是(ABC)。A)无形B)高成本C)涉及程序和文档D)可独立构成计算机系统2.软件工程三要素是(B)。A)技术、办法和工具B)办法、工具和过程C)办法、对象和类D)过程、模型、办法3.包含风险分析的软件工程模型是(A)。A)螺旋模型B)瀑布模型C)增量模型D)喷泉模型

4.软件工程的重要目的是(C)。A)软件需求B)软件设计C)风险分析D)软件实现5.下列属于面对对象开发办法的是(ABCD)。A)BoochB)UMLC)CoadD)OMT6.软件危机的重要体现是(BD)。A)软件成本太高B)软件产品的质量低劣C)软件开发人员明显局限性D)软件生产率低下7.软件开发办法的重要工作模型有(ABC)A)螺旋模型B)循环模型C)瀑布模型D)专家模型8.软件工程的目的有(ABC)。A)易于维护B)低的开发成本C)高性能D)短的开发期9.软件工程学的目的和意义是(AD)。A)应用科学的办法和工程化的规范管理来指导软件开发B)克服软件危机C)作好软件开发的培训工作D)以较低的成本开发出高质量的软件二、判断题1.软件就是程序,编写软件就是编写程序。(×)2.瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰。(×)3.构造化办法的工作模型是使用螺旋模型进行开发。(×)4.构造化办法和OO办法都是一种面对过程的软件开发办法。(×)5.原型化开发办法涉及生成原型和实现原型两个环节。(×)6.面对对象的开发办法涉及面对对象的分析、面对对象的设计和面对对象的程序设计。(√)7.软件危机的重要体现是软件的需求量快速增加,软件价格上升。(×)8.软件工具的作用是为了延长软件产品的寿命。(×)9.软件工程过程应当以软件设计为中心,核心是编写程序。(×)10.RCP法与RSP法的重要区别是前者采用循环渐进的开发方式,原型将成为最后的产品,而后者原型将被废弃。(√)三、简答题1.软件产品的特性是什么?答:●软件是一种逻辑产品,含有无形性;●软件产品的生产重要是研制;重要是脑力劳动;●软件不存在磨损和老化问题,但存在退化问题;●软件产品的成本非常昂贵,其开发方式现在尚未完全摆脱手工生产方式;●软件含有“复杂性”,其开发和运行常受到计算机系统的限制。2.软件发展有几个阶段?各有何特性?答:①程序设计阶段。硬件特性:价格贵、存储容量小、运行可靠性差。软件特性:只有程序、程序设计概念,不重视程序设计办法。②程序系统阶段。硬件特性:速度、容量及工作可靠性有明显提高,价格减少,销售有爆炸性增加。软件特性:程序员数量猛增,开发人员素质低。③软件工程阶段。硬件特性:向超高速、大容量、微型化及网络化方向发展。软件特性:开发技术有很大进步,但未获得突破性进展,软件价格不停上升,未完全摆脱软件危机。3.什么是软件危机?其产生的因素是什么?答:“软件危机”(SoftwareCrisis)的出现是由于软件的规模越来越大,复杂度不停增加,软件需求量增大。而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术不能适应软件发展的需要。致使大量质量低劣的软件涌向市场,有的耗费大量人力、财力,而在开发过程中就夭折。软件危机重要体现在两个方面:(1)软件产品质量低劣,甚至开发过程就夭折。(2)软件生产率低,不能满足需要。4.什么是软件过程?有哪些重要的软件过程模型?它们各有哪些特点?答:软件过程是指在软件工具的支持下,所进行的一系列软件开发和进化的活动。软件过程模型是对软件开发实际过程的抽象和简化,是描述软件开发过程中多个活动如何执行的模型,因此又称为软件开发模型。重要的软件过程模型有:瀑布模型、增量模型、螺旋模型、喷泉模型和基于知识的模型等。⑴瀑布模型是典型的软件开发模型,将软件开发活动中的各项活动规定为依线性次序连接的若干阶段,它简朴易用,在消除非构造化软件、减少软件的复杂性、增进软件开发工程化方面起了很大的作用。但在软件开发实践中也逐步暴露出它的缺点。它将一种充满回溯的软件开发过程硬性分割为几个阶段,无法解决软件需求不明确或者变动的问题。⑵增量模型是一种非整体开发的模型。根据增量的方式和形式的不同,分为基于瀑布模型的渐增模型和基于原型的快速原型模型。该模型含有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。⑶螺旋模型将瀑布模型和增量模型结合起来,并加入了风险分析。螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期可分为4个工作环节:制订计划、风险分析、实施工程、客户评定。⑷喷泉模型用于采用对象技术的软件开发项目。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。喷泉模型使开发过程含有迭代性和无间隙性。软件开发过程有4个阶段,即分析、系统设计、软件设计和实现。各阶段互相重叠,以分析为基础,资源消耗成塔形,从高层返回低层无资源消耗。强调增量开发,是对象驱动的过程,反映了对象的开发和重用过程。⑸基于知识的模型也称为智能模型。通过领域的专家系统,可使需求阐明更加完整、精确和无二义性。通过软件工程知识和特定应用领域的知识和规则的应用来提供开发的协助。5.有哪些重要的软件开发办法?答:重要的软件开发办法有:构造化开发办法、原型化开发办法和面对对象的开发办法。6.软件生存周期各阶段的重要任务是什么?答:软件生存周期按瀑布模型分为6个阶段:●可行性研究与计划(拟定系统的目的和规模,分析项目的可行性);●需求分析与规格阐明(明确系统的规格和规定);●设计(涉及概要设计和具体设计,将系统分解为模块);●编程(用程序语言实现每个模块,简朴容易);●测试(发现并改正错误,分为模块测试、集成测试和系统联调三级);●运行维护(扩充功效、纠错等)。7.原型化办法的核心是什么?它含有哪些特点?答:原型化办法的核心是,耗费少量代价建立一种可运行的系统,使顾客及早获得学习的机会。强调软件开发人员与顾客的不停交互,通过原型的演进不停适应顾客任务变化的需求。它是一种循环的模型。速成原型法按下列环节循环执行:①快速分析。②构造原型。③运行和评价原型。④修改与改善。习题二答案一、选择题1.需求分析的重要目的是(BC)。A)系统开发的具体方案B)进一步拟定顾客的需求C)解决系统是“做什么”的问题D)解决系统是“如何做”的问题2.需求分析的重要办法有(CD)。A)形式化分析办法B)PAD图描述C)构造化分析(SA)办法D)OOA法3.面对对象的分析办法重要是建立三类模型,即(D)。A)系统模型、E-R模型、应用模型B)对象模型、动态模型、应用模型C)E-R模型、对象模型、功效模型D)对象模型、动态模型、功效模型4.SA法的重要描述手段有(B)。系统流程图和模块图B)DFD图、数据词典、加工阐明C)软件构造图、加工阐明D)功效构造图、加工阐明5.画分层DFD图的基本原则有(ACD)。A)数据守恒原则B)分解的可靠性原则C)子、父图平衡的原则D)数据流封闭的原则6.在E-R模型中,包含的基本成分是(C)。A)数据、对象、实体B)控制、联系、对象C)实体、联系、属性D)实体、属性、联系7.画DFD图的重要目的是(AD)。A)作为需求分析阶段顾客与开发者之间交流信息的工具B)对系统的数据构造进行描述C)对目的系统的层次构造进行描述D)作为分析和设计的工具8.数据字典是数据流图中全部元素的定义的集合,普通由(C)四类条目构成。A)数据阐明条目、控制流条目、加工条目、数据存储条目数据流条目、数据项条目、文献条目、加工条目C)数据源条目、数据流条目、数据解决条目、数据文献条目D)数据流条目、数据文献条目、数据池条目、加工条目9.在需求分析阶段重要采用图形工具来描述的因素是(BC)。A)图形的信息量大,便于描述规模大的软件系统B)图形工具能够极好地概括描述一种系统的信息,比文字叙述能够更加好地体现重要的细节C)图形能够更加直观地描述目的系统,便于顾客理解和交流,有助于开发者与顾客之间达成一致的需求D)图形比文字描述简朴、形象二、判断题1.在进行了可行性分析后,需求分析就只需要解决目的系统的设计方案。(×)2.SA法是面对数据流,建立在数据封闭原则上的需求分析办法。(√)3.需求管理重要是对需求变化的管理,即如何有效控制和适应需求的变化。(√)4.在面对对象的需求分析办法中,建立动态模型是最重要的任务。(×)5.加工小阐明是对系统流程图中的加工进行阐明。(×)6.鉴定表的优点是容易转换为计算机实现,缺点是不能够描述组合条件。(×)7.需求分析的重要办法有SD法、OOA法及HIPO法等。(×)8.分层的DFD图能够用于可行性分析阶段,描述系统的物理构造。(×)9.信息建模办法是从数据的角度来建立信息模型的,最惯用的描述信息模型的办法是E-R图。(√)用于需求分析的软件工具,应当能够确保需求的对的性,即验证需求的一致性、完整性、现实性和有效性。(√)三、简答题

1.需求工程涉及哪些基本活动?各项基本活动的重要任务是什么?答:需求工程过程涉及以下重要活动:⑴获取需求。进一步实际,在充足理解顾客需求的基础上,获取足够多的问题领域的知识,主动与顾客交流,捕获、分析和修订顾客对目的系统的需求,并提炼出符合解决领域问题的顾客需求。需求获取的办法普通有问卷法、面谈法、数据采集法、用例法、情景实例法以及基于目的的办法等。⑵需求分析与建模。对已获取的需求进行分析和提炼,进行抽象描述,建立目的系统的概念模型,需求概念模型的规定涉及实现的独立性:不模拟数据的表达和内部组织等;需求模拟技术又分为公司模拟、功效需求模拟和非功效需求模拟等。进一步对所建立的模型(原型)进行分析。需求模型的体现形式有自然语言、半形式化(如图、表、构造化英语等)和形式化表达等三种。⑶需求规格阐明。对需求模型进行精确的、形式化的描述,为计算机系统的实现提供基础。⑷确认需求。以需求规格阐明为基础输入,通过符号执行、模拟或快速原型等办法,分析和验证需求规格阐明的对的性和可行性,确保需求阐明精确、完整地体现系统的重要特性,就是对需求规格阐明与顾客达成一致。其重要任务是冲突求解,涉及定义冲突和冲突求解两方面。惯用的冲突求解办法有:协商、竞争、仲裁、强制、教育等,其中有些只能用人的因素去控制。⑸需求管理。在整个需求工程过程中,贯穿了需求管理活动。需求管理重要涉及跟踪和管理需求变化,支持系统的需求演进。由于客户的需要总是不停(持续)增加的,但普通的软件开发又总是落后于客户需求的增加,如何管理需求的进化(变化)就成为软件管理的首要问题。对于传统的变化管理过程来说,其基本成分涉及软件配备、软件基线和变化审查小组。现在的发展是软件家族法,即产品线办法。多视点办法也是管理需求变化的一种新办法,它能够用于管理不一致性,并进行有关变化的推理。进化需求是十分必要的。2.简述抽取需求的重要办法,并比较它们的特点。⑴面谈法。这是一种重要而直接简朴,随时可使用的发现和获取需求的办法。面谈的对象重要有顾客和领域专家:与顾客面谈重要理解和提取需求,与领域专家面谈,是一种对领域知识的学习和转换过程。使用该办法时应注意面谈前要充足准备,面谈后认真分析总结,同时注意掌握面谈的人际交流技巧,才干获得好的效果。⑵问卷法调查法。通过采用向顾客发问卷调查表的方式,达成彻底搞清项目需求的一种需求获取办法。这是一种从多个顾客处收集需求信息的有效方式,是对面谈法的补充。⑶会议讨论法。所谓会议讨论法,是指开发方和顾客方召开若干次需求讨论会议,达成彻底搞清项目需求的一种需求获取办法。这种办法适合于开发方不清晰项目需求的状况。⑷原型法。对于某些实验性、探索性的项目,更是难于得到一种精确、无二义性的需求。而原型化办法(PrototypingMethod)是获取这一类项目需求的有效办法。⑸面对用例的办法。分析建立“用例”的过程,也就是提取需求的过程。在实际应用中,经常将以上办法进行综合应用。3.客户的需要总是不停地增加,但是普通的软件开发又总是落后于客户需求的增加,如何管理需求的进化就成为软件进化的首要问题。请阐明需求变更的管理过程。答:需求变更的管理是需求管理的核心内容。其重要任务是对系统需求变更进行跟踪和控制。对传统的变化管理过程来说,其基本内容涉及软件配备、软件基线和变更审查等。现在推出的新的管理办法有软件家族法,即软件产品线办法及多视点办法等。下图描述了需求变更的管理过程。识别出识别出的问题问题分析和变更描述变更分析和成本计算变更实现修正后的需求4.M公司的软件产品以实验型的新软件为主。用瀑布模型进行软件开发已有近十年了,并获得了某些成功。若你作为一名管理人员刚加入M公司,你认为快速原型法对公司的软件开发更加优越,请向公司副总裁写一份报告阐明你的理由。切记:副总裁不喜欢报告长度超出一页。参考答案提示:应先简述瀑布模型的缺点,它已不适宜开发实验型的软件。根据快速原型法的特点,阐明它特别适合于开发探索型、实验型的软件。5.如何画分层数据流图?有哪些基本原则?答:总的原则是:至顶而下,逐级分解(画分层数据流图)。逐级分解的画法能够控制每一层的复杂度。顶层:将整个系统作为一种加工,描述系统边界(输入与输出)。中间层:将某个加工分解为一组子加工,其中的子加工还需进一步分解。底层:由不再进行分解的基本加工构成。画分层数据流图的基本原则有:①数据守恒与数据封闭原则。②加工分解的原则。③子图与父图“平衡”的原则。④合理使用文献的原则。6.加工小阐明有哪些描述办法?它们各有何优缺点?为什么不采用自然语言进行描述?答:重要的描述办法有三种;构造化语言、鉴定表和鉴定树。●构造化语言:介于自然语言和形式语言(如谓词逻辑)之间的的一种半形式语言,它是自然语言的一种受限制的子集。是在自然语言的基础上加上某些约束,普通分为两层构造:外层语法较具体,为控制构造(次序、选择、循环);内层较灵活,体现“做什么”。惯用构造化英语或构造化汉语表达,精确、简要扼要、文体灵活。构造化语言特点:简朴,易学,少二义性,但不好解决组合条件。●鉴定表:合用于表述比较复杂的加工逻辑,如含有多选条件的操作。鉴定表是一种二维的表格,惯用于较复杂的组合条件。普通由四部分构成,如教材表2-2所示。对用构造化语言不易解决的较复杂的组合条件问题,可使用鉴定表。●鉴定树:本质上与鉴定表相似,图形表达更易于理解。描述普通组合条件较清晰,但不易输入计算机。7.考察下图中子图、父图的平衡关系。图1图2参考答案:⑴显然,图1中子图与父图不平衡。⑵图2中,如果有以下数据条目:订货单=客户+账号+数量则子、父图平衡。8.画出银行取款过程的用例图。问题描述为:储户用存折取款,首先填写取款单,根据“银行卡”中的信息检查取款单与存折,如有问题,将问题反馈给储户,否则,登录“储户存款数据库”,修改对应数据,并更新“银行卡”,同时发出付款告知,出纳向储户付款。参考答案:分析所给出的需求,拟定角色为:储户、存款数据库、存折、出纳。用例为:填写取款单、验证取款单与存折、银行卡管理、数据库管理、付款。银行取款系统的高层用例图银行取款系统的高层用例图储户存折出纳存款数据库付款数据库管理填写取款单银行卡管理管理验证取款单与存折<<extend>><<include>><<include>><<include>>习题三答案一、选择题1.模块的基本特性是(AC)。A)外部特性(输入/输出、功效) B)内部特性(输入/输出、功效)C)内部特性(局部数据、代码)D)外部特性(局部数据、代码)2.SD办法的设计总则是(CD)。A)程序简洁、操作方便B)构造清晰、合理C)模块内聚性强D)模块之间耦合度低3.软件设计的重要任务是(ABD)。A)将分析阶段获得的需求阐明转换为计算机中可实现的系统;B)完毕系统的数据构造和程序构造设计C)完毕模块的编码和测试D)对模块内部的过程进行设计4.设计阶段应达成的目的有(AD)。A)提高可靠性和可维护性B)提高应用范畴C)构造清晰D)提高可理解性和效率5.从工程管理的角度来看,软件设计分(D)两步完毕。A)系统分析、模块设计B)具体设计、总体设计C)模块设计、具体设计D)总体设计、具体设计6.模块独立性准则定性指标(BD)来衡量。A)分解度B)耦合度C)屏蔽性D)内聚性7.顾客界面设计的任务涉及(ABC)。A)拟定顾客界面类型B)建立任务模型C)建立顾客模型D)建立功效模型二、判断题1.划分模块能够减少软件的复杂度和工作量,因此应当将模块分得越小越好。(×)2.在网状构造中任何两个模块都是平等的,没有附属关系,因此在软件开发过程中经常被使用。(×)3.信息隐蔽原则有助于提高模块的内聚性。(√)4.中心变换型的DFD图可当作是对输入数据进行转换而得到输出数据的解决,因此能够使用事务分析技术得到初始的模块构造图。(×)5.SD法是一种面对数据构造的设计办法,强调程序构造与问题构造相对应。(×)6.当模块的控制范畴是其作用范畴的子集时,模块之间的耦合度较低。(×)三、简答题1.请解释为什么需要体系构造设计。答:软件体系构造为软件系统提供了一种构造、行为和属性的高级抽象,由构成系统的元素的描述、元素间的互相作用、指导元素集成的模式以及这些模式的约束构成。软件体系构造不仅指定了系统的组织构造和拓扑构造,并且显示了系统需求和构成系统的元素之间的对应关系,提供了某些设计决策的基本原理。良好的体系构造是普遍合用的,它能够高效地解决多个各样的个体需求。2.集中式模型和分布式模型相比各有什么优缺点?答:以集中式的仓库模型为例。其重要优点:数据由某个子系统产生,并且被存储到仓库中,方便为另外某些子系统共享;由于中央集中控制的缘故,共享数据能得到有效的管理,各子系统之间不需要通过复杂的机制来传递共享数据;一种子系统不必关心其它的子系统是怎么使用它产生的数据;全部的子系统都拥有一致的基于中央数据仓库的数据视图。如果新子系统也采用相似的规范,则将它集成于系统中是容易的。但这种系统也有明显的缺点:即使共享数据得到了有效的管理,但随之而来的问题是各子系统必须有一致的数据视图方便能共享数据,换句话说,就是各子系统之间为了能共享数据必须走一条折中的路线,这不可避免地会影响整个系统的性能。一种子系统发生了变化,它产生的数据也可能发生构造上的变化。问题随之而来,其它的子系统如何能对的解析这些数据呢?所觉得了达成共享的目的,数据翻译系统会被引入到整个系统当中。但这种翻译的代价是很高的,并且有时是不可能完毕的。中央数据仓库和各子系统的私有数据库必须有相似的有关备份、安全、访问控制和恢复的方略,这可能会影响子系统的效率。集中式的控制使数据和子系统的分布变得非常困难甚至成为不可能。这里分布指的是将数据或子系统分散到不同的机器上。分布式构造有这样的某些优势:资源共享:系统中每个服务节点上的资源都能够被系统中的其它节点访问;开放性高:系统能够方便地增删不同软硬构造的节点;可伸缩性好:系统能够方便地增删新的服务资源以满足需要;容错能力强:分布式系统中的信息冗余能够容忍一定程度的软硬故障;透明性高:系统中的节点普通只需懂得服务的位置而不必清晰系统的构造。但分布式构造也存在着某些局限性:复杂性:分布式系统比集中式系统要复杂得多。集中式系统的性能重要依赖于主机的解决器能力,而分布式系统的性能则还会依赖于网络的带宽,这让情形变得更加复杂。安全性:网络环境随时面临着多个威胁:病毒、恶意代码、非法访问等。如何确保安全性是一种让人头疼的问题。可管理性:分布式系统的开放性造成了系统的异构性。显而易见,管理异构的系统比管理主机系统要困难得多。不可预知性:这重要指系统的响应时间。网络环境本身的特点决定了网络负载会明显地影响整个系统的响应时间。3.请举出一种集中式模型的实例,并图示它的构造。答:请参考3.2.1“仓库模型”4.胖客户模型和瘦客户模型的区别是什么?它们分别被应用在什么样的场合?答:在胖客户模型中,客户端应用负责顾客界面和应用逻辑部分,因此它的工作比较繁重。普通的数据库应用都是属于这种构造。而与此相反,在瘦客户模型中,服务器负责了更多的工作,而客户端的工作就变得非常单纯。浏览器/Web服务器构造就属于瘦客户构造,并且常被称为B/S(Browser/Server)构造。5.请举出一种分布式模型的实例,并图示它的构造。答:请参考3.2.4“两层C/S模型”6.请为一种公司的电子商务网站建设提出体系构造设计方案。答:略。7.分布式对象模型与客户-服务器模型有什么异同?答:在C/S模型中,客户和服务器的“地位”是不“平等”的:客户只能向服务器提出服务请求,而服务器不能向客户提出服务请求,同时服务器之间能够互相提供服务。另外,客户普通要懂得服务器在网络上的具体位置(服务器的域名或者IP地址),相反,服务器则不需要。这种差别在一定程度上限制了系统的灵活性和可扩展性。而在分布式对象构造中,服务的提供者是被称为“对象”(Object)的系统组件(SystemComponent)。每个对象的地位在逻辑上是平等的,它们能够互相为对方提供所需的服务。在这种状况下,提供服务的对象就是服务器,而提出服务请求的对象就是客户。为了能够提供服务,每个对象都有一种服务接口。8.请查阅有关的资料,写一篇对比CORBA和DCOM的报告。答:略。9.模块分解的最后目的是什么?答:模块分解的目的是将系统“分而治之”,以减少问题的复杂性,使软件构造清晰,易阅读、易理解,易于测试和调试,因而也有助于提高软件的可靠性。10.模块分解应当遵照什么样的原则?答:按照“减少块间联系,提高块内联系”的设计总则对模块进行分解。具体从下列方面考虑:(1)尽量建立功效模块;(2)消除重复功效;(3)模块的作用范畴与控制范畴,即当作用范畴为控制范畴的子集时,才干获得较低的块间联系;(4)模块的大小适宜;(5)模块的扇入/扇出数不适宜太多。也能够用软件独立性的两个定性指标来度量模块分解的原则:一是耦合性。用于描述模块之间联系的紧密程度。从三个方面衡量块间联系大小:①方式(直接或间接)②类型(数据型、控制型、混合型)③数量(数量越大,块间联系越紧密。二是内聚性。用于描述模块内部联系的紧密程度。它是从功效的角度来度量模块内的联系。显然,块内联系愈紧,即内聚性愈强,模块独立性愈好。功效型模块独立性最佳。11~17题答案略。习题四答案一、选择题

1.面对对象程序设计的基本机制是(ABC)。A)继承B)消息C)办法D)构造2.下列属于面对对象的要素有(BCD)。A)分类性B)抽象C)共享D)封装3.下列选项中属于面对对象开发办法的有(ACD)。A)BoochB)CADC)CoadD)OMT4.下列属于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.主题是一种有关模型的抽象机制,它是面对对象模型的概貌,也是有关某个模型要同时考虑和理解的内容,主题起一种控制作用。(√)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.面对对象的分析涉及哪些重要活动?所建立的分析模型涉及哪些类型的模型?答:面对对象的分析过程分为论域分析和应用分析。论域分析过程是抽取和整顿顾客需求并建立问题域精确模型的过程。应用分析是将论域分析建立起来的问题论域模型,用某种基于计算机系统的语言来描述。面对对象的分析具体涉及下列活动:①获取顾客基本需求。普通使用用例(UserCase)来收集和描述。②标记类和对象。涉及标记类及对象的属性和操作。③定义类的构造和层次。普通有普通与特殊( Generalization—Specialization)构造,整体与部分(Whole—Part)构造。④建立类(对象)之间的关系,用“对象-关系模型”描述系统的静态构造。⑤建立对象—行为模型,描述系统的动态行为。所建立的分析模型涉及:①基本模型。是一种类图(classdiagram),是以直观的方式体现系统最重要的信息。OOA基本模型的三个层次分别描述了:系统中应设哪几类对象,每类对象的内部构成,对象与外部的关系。②主题图(subject)。又称为子系统(subsystem),是将某些联系亲密的类组织在一起的类的集合。按照粒度控制原则,将系统构成几个主题,便于理解。③交互图(interactiondiagram)是用例与系统成分之间的对照图。主题图和交互图又称为补充模型。5.面对对象设计的重要任务是什么?答:面对对象的设计(Object-OrientedDesign,OOD)是面对对象开发办法(OOSD)的核心阶段。是在OOA的基础上解决系统“如何做”的问题。重要任务涉及:⑴系统设计系统设计的任务涉及:将分析模型中紧密有关的类划分为若干子系统(也称为主题),子系统应当含有良好的接口,子系统中的类互相协作;标记问题本身的并发性,将各子系统分派给解决器,建立子系统之间的通信。⑵对象设计通过对象的认定和对象层次构造的组织,拟定解空间中应存在的对象和对象层次构造,并拟定外部接口和重要的数据构造。⑶设计优化对设计进行优化,重要涉及提高效率的技术和建立良好的继承构造的办法。6.为什么面对对象的办法能够有效地解决软件需求中存在的问题?需求过程中存在两大难题,一是需求的拟定是困难的,二是需求是不停变动的。特别是对于某些大型软件系统,开发周期长,系统规模大,复杂性高。面对对象的办法中,由于对象所含有的封装性和信息隐蔽,使得对象的内部实现与外界隔离,含有较强的独立性。并且面对对象的办法是以对象为中心构造软件系统,而不是基于对系统功效进行分解来构造系统,当系统功效需求变化时不会引发系统构造的变化,使软件系统含有良好的稳定性和可适应性。软件生存期各阶段所使用的办法、技术含有高度的持续性,对软件开发过程全部阶段进行综合考虑,能有效地减少软件开发的复杂度,提高软件质量,也便于需求的拟定。7.OMT办法明确提出了建模的概念,为什么在软件开发过程中需要进行建模?答:OMT办法从不同而又有关的角度建立三类模型:对象模型、动态模型和函数模型,并为每一类模型提供了图形表达。软件模型普通涉及数学模型、描述模型和图形模型。在软件开发过程中进行建模,一是由于软件系统的复杂性和规模的不停增大,需要建立不同的模型对系统的各个层次更加好地进行描述。模型含有的直观性及丰富的信息描述,便于开发人员与顾客的交流。建立的模型为后来的系统维护和升级提供了文档。鉴于上述因素,在软件开发过程中建模,能够提高软件开发的效率和质量。8.为什么说面对对象的办法为软件复用提供了良好的环境?答:软件复用是将已有的软件成分用于构造新的软件系统,以达成提高软件系统的开发质量与效率,减少开发成本的目的。复用的软件成分也称为可复用构件(ReusableComponent)。对可复用组件普通有下列的规定:含有功效上的独立性与完整性;含有较高的通用性;含有较高的灵活性;含有严格的质量确保;含有较高的原则化程度。面对对象的办法对复用的支持重要反映在:⑴面对对象办法能够保护在整个软件生存周期概念、原则、术语及表达法达成高度一致。这使面对对象办法不仅能在各个级别支持软件复用,并且能对各个级别的复用形成统一、高效的支持,达成良好的全局效果。⑵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是一种建模语言,是一种原则的表达,是一种办法。(×)3.泳道是一种分组机制,它描述了状态图中对象所执行的活动。(×)4.同时消息和异步消息的重要区别是:同时消息的发送对象在消息发送后,不必等待消息解决,可立刻继续执行,而异步消息则发送对象必须等待接受对象完毕消息解决后,才干继续执行。(×)5.类图中的角色是用于描述该类在关联中所扮演的角色和职责的。(√)6.类图用来表达系统中类和类与类之间的关系,它是对系统动态构造的描述。(×)7.用例模型的基本构成部件是用例、角色和用例之间的联系。(√)8.用例之间有扩展、使用、组合等几个关系。(√)9.次序图描述对象之间的交互关系,重点描述对象间消息传递的时间次序。(√)10.活动图显示动作及其成果,着重描述操作实现中所完毕的工作以及用例实例或类中的活动。(×)三、简答题1.以图1(一种在学校初次报名的UML活动图)为例,阐明如何绘制活动图。图1学校初次报名的UML活动图答:要创立一种UML活动图,需要重复执行下列环节。(1)定义活动图的范畴。首先应当拟定建模的范畴,是对整个系统建模,还是一种子系统。一旦定义了作图的范畴,应当在其顶部,用一种注释指明该图的标题和惟一的标记符,还可标注该图的时间及作者姓名。本题的建模范畴是一种学校管理系统中的“报名”部分。(2)添加活动。活动是活动图的核心,活动是完毕系统任务所必须执行的解决环节。可从用例模型出发,对每个角色(actor)所驱动的重要用例引入一种活动,如果是对整个系统建模,应对每个重要流程引入一种活动。在“报名”的活动图中拟定了“Filloutenrollment”(填写报名表)、“Enrollinuniversity”(登记入学)、“Obtainhelptofilloutforms”(协助填写报名表)、“Attenduniversityoverviewpresentation”(参加介绍学校会议)等6个活动。(3)添加起点和结束点。每个活动图只能有一种起始点和多个结束点,结束点能够是全部活动的结束,也能够是对执行过程的终止。(4)添加活动间的转变。当一种活动结束时将进入下一种活动,称为活动转移。可标明活动转移的条件、引发活动转移的事件。如活动“填写报名表”有两个活动转移,当填写报名表不对的时,则转移到活动“协助填写报名表”;当填写对的时,则转移到活动“登记入学”。(5)添加判断点。当对建模的逻辑需要做出一种判断时,需要添加判断点。例如,在图1中,在“Enrollinuniversity”活动之后,还必须按照入学条件进行判断,满足条件的继续执行入学报到的活动,而不满足入学条件的则结束。(6)找出并行活动。若两个活动间没有直接的联系,并且它们都必须在第三个活动开始前结束,则它们是能够并行运行的。在图1中,用同时线描述系统任务中的并发活动,活动“Attenduniversityoverviewpresentation”(参加介绍学校会议)和“Enrollinseminars”(注册研讨班)及“Makeinitialtuitionpayment”(交付初始的学费)可并行执行,使用同步线表达它们都要在结束整个流程前完毕。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中,状态图、协作图、活动图、次序图在系统分析中各起到了什么作用?答:状态图(StateDiagram)用来描述一种特定对象在其生存周期或在某段时间内的全部可能的状态及其引发状态转移的事件。一种状态图涉及一系列的状态以及状态之间的变化。例如订单的状态变化等,在实时系统中用得较多,还能够用于辅助设计顾客界面。次序图(SequenceDiagram)清晰地描述一组对象之间动态的交互关系、时间的约束关系,着重描述对象间消息传递的时间次序,因此次序图在实时系统中被大量使用。当参加交互的对象数目增加,交互关系复杂时用次序图描述会显得杂乱,协作图(CollaborationDiagram)从另一种角度来更加好地描述互相协作的对象间的交互关系和链接(Link)关系。着重体现交互对象间的静态链接关系和协作关系。协作图也能够从次序图生成。活动图(ActivityDiagram)是由状态图变化而来的,从系统任务的观点来看,系统的执行过程是由一系列有序活动构成的。活动图能够有效地描述整个系统的流程,描述了系统的全局的动态行为,且只有活动图是唯一能够描述并发活动的UML图。6.次序图与协作图都是交互图,它们有何不同?所描述的重要系统特性是什么?次序图(SequenceDiagram)重点描述某些对象间消息传递的时间次序,对象间的通信和交互通过在对象的生命线之间传送的消息来表达。还常给出消息的阐明信息及消息之间的时间限制及某些约束信息等。但当参加交互的对象数增加,交互关系复杂时难于体现清晰对象之间的交互关系。协作图(CollaborationDiagram)则着重体现交互对象间的静态链接关系和协作关系,不强调执行事件的次序,而是强调为了完毕某个任务,对象之间通过发送消息实现协同工作关系。能够有效地描述当参加对象数较多时的交互关系。7.状态图与活动图有何相似与不同之处?在建立系统模型时,应当如何使用这两类模型?答:活动图(ActivityDiagram)是由状态图变化而来的,它们各自用于不同的目的。状态图着重描述了对象的状态变化以及触发状态变化的事件。但是,从系统任务的观点看系统,它是由一系列有序活动构成的,活动图是从活动的角度描述系统任务,并且能够描述系统任务中的并发活动。活动图描述了系统中多个活动的执行次序,刻画一种办法中所要进行的各项活动的执行流程。活动图显示动作及其成果,着重描述操作实现中完毕的工作以及用例或对象内部的活动。另外,在状态图中状态的变迁普通需要事件的触发,而活动图中一种活动结束后将立刻进入下一种活动。8.什么是抽象类?在建模时有时使用抽象类有什么好处?答:抽象类是指没有实例的类,定义某些抽象的操作,即不提供实现办法的操作,只提供操作的特性,并标注{abstract}。如在建立类模型时,常将某些属性与操作类似的类作为一种抽象类的子类,使系统构造更加清晰,增加系统的可读性。9.以例5-5中图5.22“资源管理用例图”为例,阐明<<include>>和<<extend>>的区别。答:在图5.22中,用例“删除资源”和“更新资源”与用例“查找资源”之间是<<include>>的关系,<<include>>本质上是一种使用关系,当一种用例包含另一种用例时,这两个用例之间就构成了使用关系。阐明“删除资源”和“更新资源”的操作都需要首先“查找资源”。扩展<<extend>>是向一种用例中加入某些新的动作后构成了另外一种用例,后者是继承前者的某些行为得来的。图5.22中,对用例“更新资源”中增加动作“去除技能”,得到用例“从资源中去除技能”,增加动作“指定技能”,得到用例“把技能指定给资源”,因此,用例“更新资源”与“从资源中去除技能”和“把技能指定给资源”之间的关系是<<extend>>。10.在分析和设计阶段都需要建立类图,试阐明分析类图与设计类图的重要区别是什么。答:在软件开发的不同阶段都使用类图,但这些类图表达了不同层次的抽象。在需求分析阶段,类图是研究领域的概念;在设计阶段,类图重点描述类与类之间的接口。由于分析类图重要描述应用领域中的概念,它们的类能够从这些概念中得出,或者说分析类图中的类是从需求中获取的。设计类图描述软件的接口部分,而不是软件的实现部分。面对对象开发办法非常重视区别接口与实现之间的差别,能够用一种类型(Type)描述一种接口,这个接口可能由于实现环境、运行特性或者顾客的不同而含有多个实现方式。设计类图更易于开发者之间的互相理解和交流。设计类图普通是在分析类图的基础上进行细化和改善的。11.问题描述:储户用存折取款,首先填写取款单,根据“银行卡”中的信息检查取款单与存折,如有问题,将问题反馈给储户;否则,登录“储户存款数据库”,修改对应数据,并更新“帐卡”,同时发出付款告知,出纳向储户付款。⑴建立系统的用例模型;⑵建立角色和用例的描述模板。答:⑴通过分析,拟定系统的角色为:储户、存款数据库、存折、出纳。用例为:填写取款单、验证取款单与存折、银行卡管理、数据库管理、付款。银行取款系统的高层用例图银行取款系统的高层用例图储户存折出纳存款数据库付款数据库管理填写取款单银行卡管理管理验证取款单与存折<<extend>><<include>><<include>><<include>>⑵描述模板:角色描述模板:角色:角色:储户角色职责:提供取款存折和取款信息。角色职责识别:提供存折、填写取款单、领取付款。角色:存折角色职责:储户存、取款的凭证。角色职责识别:(1)向系统提供取款凭证。(2)与“银行卡管理”子系统交互,核对取款单。角色:出纳角色职责:向储户付款。角色职责识别:(1)根据储户存款数据库的告知,向储户付款。(2)与“付款”子系统交互。角色:存款数据库角色职责:对储户信息及存、取款业务进行管理。角色职责识别:(1)在系统支持下完毕银行数据库管理工作。(2)为银行卡管理及告知付款提供信息。用例描述模板:用例名:验证取款单与存折执行者:储户、存折、存款数据库目的:根据“银行卡”中的信息检查取款单与存折。功效描述:1.获取“银行卡”中的信息。2.检查取款单与存折信息。3.返回验证成果。其它非功效需求:高可靠性、实时性重要环节:储户填写取款单。根据银行卡信息,检查取款单与存折信息与否对的。若取款单与存折有问题,将信息返回给储户,否则登录“储户存款数据库”,修改对应数据,并更新“银行卡”。有关用例:填写取款单、银行卡管理、数据库管理有关信息:(优先级、性能、执行频率):优先级:根据储户类型,决定解决的优先次序,VIP顾客优先。性能:实时性、高可靠性。其它用例模板略。12.一种小型图书资料管理系统的重要功效有:图书资料的借出、偿还、查询和管理,该系统有图书管理员和普通读者,普通读者要使用系统必须先注册。图书管理员负责添加、更新和修改、删除图书资料,登记和查询图书的借阅、偿还状况。读者能够按照作者或主题检索图书资料,还能够预订图书资料,即当新购置或有读者偿还时,系统立刻告知读者来借阅。⑴拟定系统的类,并定义其属性和操作;⑵画出系统的分析类图。参考答案:⑴在分析系统需求的基础上,采用名词识别法与实体识别法,拟定下列系统的类:①Book类该类标记一本书,其属性涉及书名、作者、出版社等。②UserInformation类该类标记一种顾客,其属性涉及顾客名、密码、顾客类型等。③Librarian类该类是UserInformation类的子类,其操作涉及查询读者信息,添加、删除、更新读者信息、查询书籍信息、添加、删除、更新书籍信息等。④Borrower类该类是UserInformation类的子类,其操作涉及查询个人信息、修改密码等。⑤SystemManager类该类是UserInformation类的子类,其操作涉及查询图书管理员信息,添加、删除、更新图书管理员信息等。⑥BorrowCriteria类该类标记一条借书规则,其属性涉及规则名,规则应用对象等。⑦InfoDatabase类该类标记一种数据库,其属性有数据库名,其操作有读数据、写数据和查找数据。⑧Communication类该类实现各数据库间的数据传输,其操作涉及建立通信套接字、绑定端口、建立连接、发送数据、接受数据等。⑵系统的分析类图:由于图书馆的多本书构成书库,增加BookDatabase类,与Book类之间是聚合关系。同样由于借书规则不止一条,增加CriteriaDatabase类,与BorrowCriteria类之间是聚合关系。UserInformationUserInformation13.为什么说RUP与UML亲密结合,能够开发出满足最后顾客需要的高质量软件?答:好的软件过程,是应用UML成功地进行软件开发的核心。在众多的软件开发过程中,RUP统一过程(RationalUnifiedProcess)能够与UML最佳结合,不仅由于该过程的开发者也是UML的创立者,更由于RUP过程能够有效地测度工作进度,控制和改善工作效率。RUP是最佳软件开发经验的总结,含有迭代式增量开发、使用实例驱动、以软件体系构造为核心的三个鲜明特点,还涉及了软件开发中的6大经验:迭代式开发;管理需求;使用基于组件的软件体系构造;可视化建模;验证软件质量;控制软件变更。因此,RUP与UML亲密结合,能够开发出满足最后顾客需要的高质量软件。14.分析RUP的二维开发模型,阐明RUP的迭代开发过程。答:在RUP中,软件开发生存周期根据时间和RUP的核心工作流划分为二维空间。横轴描述RUP开发过程的动态构造,纵轴描述RUP的静态构成部分。⑴横轴把软件开发周期(Cycle)划分为起始(Inception)、演化(Elaboration)、构造(Construction)和提交(Transition)四个持续的阶段(Pahse)。⑵纵轴表达核心工作流。RUP中有商业建模、需求、分析和设计、实现、测试、布署、配备和变更管理、软件项目管理和环境9个核心工作流(CoreWorkflows):RUP中的每个阶段都由一种或多个持续的迭代构成,每一种迭代都是一种完整的开发过程,产生一种可执行的产品版本,在每个阶段结束前都应有一种里程碑(MileStone)评定该阶段的工作,只有当阶段目的达届时才允许项目进入下一阶段,产生一种阶段里程碑。这是一种更灵活、风险更小的办法,是多次通过不同的开发工作流,这样能够更加好地理解需求,构造一种强健的体系构造,并最后交付一系列逐步完毕的版本,称为一种迭代生存周期。习题六答案1.程序设计语言分为哪几类?答:程序设计语言,按照语言级别能够分为两大类:低档语言和高级语言。低档语言涉及机器语言和汇编语言。低档语言依赖于特定的机器,其使用复杂、繁琐、费时、易出差错,因而程序编写也有一定的难度。机器语言是表达成二进制形式的机器基本指令集,或者是操作码通过符号化的基本指令集,其存储由语言本身决定。汇编语言比机器语言更直观,是机器语言中地址部分符号化的成果,或进一步涉及宏构造。即便是现在汇编语言有着生产效率低、维护困难、容易出错的缺点,但是在实现与硬件系统接口部分时,仍然采用它,由于它易于实现接口,实现效率高。高级语言的表达办法要比低档语言更靠近于待解的问题,其特点是在一定程度上与具体机器无关,易学、易用、易维护。高级语言的实现极大地提高了软件的生产效率。众多的高级语言根据不同的原则有不同的分类方式。按照应用范畴分为:通用语言与专用语言。通用语言有:Pascal、C、C++、Java等;目的单一的语言称为专用语言,有:APT等。按照顾客的规定分为:过程式语言和非过程式语言。过程式语言的重要特性是,顾客能够指明一系列可执行的次序运算,以表达对应的计算过程,如Pascal、C等;非过程式语言反之,较为知名的是Java。按照使用方式分为:交互式语言和非交互式语言。含有反映人机交互作用的语言成分的语言成为交互式语言,如BASIC等;不反映人机交互作用的语言称为非交互式语言,如Pascal、C等都是非交互式语言。按照语言的内在特点分为:系统实现语言、静态高级语言、动态高级语言和块构造高级语言;系统实现语言例如:C语言;静态高级语言例如:COBOL和FORTRAN语言;动态高级语言的特点是动态完毕全部的存储管理,如Java;块构造高级语言,例如ALGOL和Pascal语言。2.程序设计语言的成分有哪些?程序设计语言基本的构成成分以下:①数据成分,用于描述程序所涉及的数据程序名字声明:首先声明这个程序设计对象在这个程序中的名字,这样避免编译时出现错误。例如,设计一种电子时钟,那么对于主程序完全能够对其名字声明为:clock,这样当背面进行编译的时候就能够识别这是已经声明了的对象,而不再报错。数据类型声明:对程序实现时用到的多个数据的类型作一声明,如整型、浮点型、顾客自定义类型等。②运算成分,用以描述程序中所包含的运算初始化:程序设计实现时最常出现的一种错误就是没有对于要运算的数据初始化,即没有赋予一种适宜的初始数据,成果造成了编译或运行时出错。运算对象:运算对象是程序执行时要运行的对象,涉及一种算术体现式或者一种逻辑体现式,或者是一种完整的语言,例如:赋值语句等。③控制成分,用以描述程序中所包含的控制。次序控制构造:次序执行的语句构成了次序构造。循环控制构造:常见的循环控制构造有for语句和while语句,至于它们的基本使用以及体现形式这里不再赘述。分支控制构造:常见的分支控制构造有if语句和switch-case语句两种,另外if语句中又分为带else和不带else语句两种。④传输成分,用以体现程序中数据的传输。传输成分涉及基本的输入和输出。3.程序设计语言的选择对应用程序的开发有什么样的影响?答:普通应根据软件系统的应用特点,程序设计语言的内在特性以及系统的性能规定等方面来进行选择。程序设计语言的选择应当考虑下列因素:项目的应用领域。应尽量选用适合某个应用领域的语言。例如,选择VisualBasic来开发数据库应用就比选择VisualC++要容易某些。算法和计算复杂性。要根据不同语言的特点来选用能够适应软件项目算法和计算复杂性的语言。例如,对于科学计算较多的应用普通会考虑选择FORTRAN语言。软件的执行环境。要选用机器上能运行且含有对应支持软件的语言。例如,在嵌入式系统中(这类系统的硬件资源往往较少),软件开发语言多为C/C++、Java。性能因素。应结合工程具体性能来考虑,例如实时系统对响应速度有特殊规定,就应选择汇编语言、C语言等。数据构造的复杂性。要根据不同语言构造数据构造类型的能力选用适宜的语言。C++、Java这样的高级语言显然比汇编语言的体现能力要强。软件开发人员的知识水平以及心理因素。知识水平涉及开发人员的专业知识,程序设计能力;心理因素是指开发人员对某种语言或工具的熟悉程度。从技术的层面来讲,大多数的任务用任何一门高级语言都能够完毕,因此选择开发者熟悉的语言是能够提高效率的。为此,要尽量避免受外界的影响,盲目追求高、新的语言。4.构造化程序设计的特点是什么?为什么要采用构造化程序设计?答:构造程序设计的概念最早是由E.W.Dijkstra提出来的,他指出:“能够从高级语言中取消GOTO语句,程序质量与程序中所包含的GOTO语句的数量成反比”。并指出构造程序设计并非简朴的取消GOTO语句,而是创立一种新的程序设计思想、办法和风格,以明显提高软件生产率和质量。提高程序可读性的核心是使程序构造简朴清晰,构造化程序设计(SP)办法是达成这一目的的重要手段。构造化程序设计是一种程序设计技术,它采用自顶向下,逐步求精的程序设计办法和单入口和单出口的控制构造。具体来说,构造化程序设计技术重要含有下列特点:(1)自顶而下,逐步求精这种逐步求精的思想符合人类解决复杂问题的普遍规律,从而能够明显提高软件开发的效率。并且这种思想还体现了“先全局,后局部”、“先抽象,后具体”的办法,使开发的程序层次构造清晰,易读、易理解还易验证,因而提高了程序的质量。将程序自顶向下逐步细化的分解过程用一种树状构造来描述,以下图所示。(2)单入口和单出口的控制构造构造化的程序是由且仅由次序、选择、循环三种基本控制构造构成,既确保了程序构造清晰,又提高了程序代码的可重用性。这三种基本构造能够构成全部的多个复杂程序。提出和分析问题拟定数学模型设计算法模块化编程程序整个编译、运行构造化程序设计的基本原理中一种重要的概念是“模块化提出和分析问题拟定数学模型设计算法模块化编程程序整个编译、运行模块是由边界元素限定的相邻的程序元素的序列,并且有一种总体标志符来代表它。所谓模块化,即是将一种大任务分成若干个较小的任务,较小的任务又细分为更小的任务,直到更小的任务只能解决功效单一的任务为止,一种小任务称为一种模块。各个模块能够分别由不同的人编写和调试。把大任务逐步分解成小任务的过程能够称为是“自顶向下,逐步细化”的过程。对于模块的设计和实现有下列5条基本的原则:可分解性可组装性可理解性持续性保护性遵照以上原则是进行构造化程序设计时运用模块化原理的基本准则,这样设计出来的程序不仅软件构造清晰,并且代码也有较好的可读性和可维护性。5.对比面对对象程序设计,构造化程序设计有什么样的优势和劣势?答:略。6.算法转换的指导原则是什么?答:转换过程中的指导原则是:在编码前,尽量化简有关的算术体现式和逻辑体现式。认真检查算法中嵌套的循环,尽量将某些语句或体现式移到循环外面。尽量避免使用多维数组。尽量避免使用指针和复杂的表。采用“快速”的算术运算。不要混淆数据类型,避免在体现式中出现类型混杂。尽量采用整数算术体现式和布尔体现式。选用等效的高效率算法。上述的原则要在转换时统筹考虑,而不应当教条地使用。例如,程序员谨守的一条原则就是尽量不用GOTO语句,但是当要从一种嵌套很深的循环中直接跳出来时,GOTO语句就能较好地发挥作用。7.影响软件代码效率的因素有哪些?答:⑴算法对效率的影响有关算法的转换指导原则,在一定程度上减小了算法对效率的影响。从这一点能够看出算法直接影响到的是程序,进而影响到了整个代码的效率问题。故而在转换时需要注意之外,在程序设计和实现时同样需要考虑效率的问题。⑵存储效率解决器的分页调度和分段调度的特点决定了文献的存储效率,同样对于代码也存在这个问题。普通来说使用能保持功效域的构造化控制构造是提高效率的好措施。提高效率的措施普通也是提高存储效率的办法。⑶输入输出效率输入和输出的效率决定的是人与计算机之间通信的效率,程序设计中输入和输出的简朴清晰,是提高输入输出效率的核心。8.请仿照C语言的代码审查项目表提出针对于Java语言的审查项目表。答:略。9.请找出你和其它同窗/同事的某些程序作品,然后互相审核对方的代码,写出一份审查报告。答:略。10.根据代码审查报告来修改你自己的代码,然后再作一次审查来检查你的成果。答:略。习题七答案基于组件的软件开发的优势是什么?大量来自产业实例研究的证据表明基于组件的软件开发造成软件系统的开发成本、开发质量、开发效率都得到了明显的改善。①开发的质量基于组件的软件开发的一种明显优点就是提高了软件的质量。可复用的组件相对于在单一应用中使用的模块来说,普通都更为成熟并含有较高的质量确保,这重要是由于:(1)可复用的组件在开发过程中都通过严格的测试。组件的开发者普通都是在该组件的使用领域含有丰富经验、对该领域含有进一步研究的开发团体,他们能从以往的客户和开发项目那里得到许多珍贵的经验,因而更容易开发出高质量的组件“精品”。在组件的开发过程中,为了确保它广泛的适应性和在频繁使用过程中的对的性,普通对其有更高的质量规定,并且在组件正式公布以前,都要进行更为严格的测试。因而可复用组件的质量会得到更加好的确保。(2)可复用的组件在不停复用过程中,其中的错误和缺点会被陆续的发现,并得到及时的排除。因此随着一种可复用组件复用次数的不停增加,其中的错误会逐步减少,软件的质量也随之改善。在软件开发中使用的一种可复用组件普通都是通过许多其它客户的频繁使用,因此可复用的组件相对于新开发的模块更为成熟。HP公司的一份研究报告认为:“被复用代码的缺点率是每一千行0.9个缺点。而在新开发的代码中缺点率是每一千行4.1个缺点。对一种包含68%复用代码的软件来说,缺点率是每一千行2.0个缺点,比无复用的软件缺点率大概减少了51%。”因此能够说,基于可复用的组件的软件开发在质量和可靠性方面确实带来了实质性的提高。②开发的效率基于可复用组件的软件开发对于提高软件开发的效率也有着明显的作用。软件复用已经渗入到了软件开发的各个阶段,在开发的各个阶段都有能够被重复使用的软件产品。在分析和设计阶段能够复用的组件涉及:应用框架、用例、分析和设计模型等产品。在编码阶段能够复用的组件涉及:函数库、子程序库、类库、二进制组件库等产品。在测试阶段复用的组件涉及测试用例和测试数据等产品。显然使用现成可用的可复用组件比从头开始进行开发在开发效率上大为提高。在软件开发的各个阶段使用对应的可复用组件对于提高软件产品的生产效率含有重大的意义。然而使用可复用的组件对开发效率的影响受到多方面因素的影响,这些因素涉及:应用领域、问题的复杂度、开发队伍的构造和规模、项目开发的周期、被应用的技术等。由于在不同的应用中影响其开发效率的因素有所不同,因此可复用组件对开发效率的提高程度也是不同的,普通大概30%-50%的复用能够使开发效率提高25%-40%。③开发的成本使用可复用的现成组件进行软件开发比一切都重新开发,其成本大为节省。它避免了不必要的

温馨提示

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

评论

0/150

提交评论