《软件工程基础》习题集答案-2_第1页
《软件工程基础》习题集答案-2_第2页
《软件工程基础》习题集答案-2_第3页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

《软件工程基础》习题集答案-2第一章概述1所谓“软件危机”就是,在计算机软件的开发和维护过程中所遇到的一系列严重的问题,概括起来归纳为:如何开发软件,以满足日益增长、日趋复杂的需要;如何维护数量不断膨胀的已有软件。软件危机的典型表现主要有:a.开发成本和进度不能准确估计b.开发出来的软件不能满足用户的要求c.软件的可维护性差d.软件质量不可靠e.软件成本在系统中的比重逐年上升f.软件开发生产率的提高速度不够简述产生软件危机的原因和解决的思路。软件危机产生的原因一方面与软件本身的特点有关,另一方面,是与已有软件开发、维护的方法不正确有密切关系。解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。即采用工程化的原则和方法组织软件开发是摆脱软件危机的一个主要出路。什么是软件工程?它有哪些本质特性?软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法进行软件开发和维护的学科。其实质就是用工程的概念、原理、技术和方法,结合有效的管理方法和先进的开发技术,开发与维护软件,以解决软件危机。软件工程是如何用来消除软件危机的?软件工程是从技术和管理两个方面来研究如何更好地开发和维护计算机软件,从源头上消除软件危机。简述软件的定义。软件=软件工程的目的是什么?为高质量的软件开发提供一个科学的体系框架。8三大要素?分为哪三个分支?软件工程方法学就是指在软件生命周期全过程中使用的一整套管理和开发技术方法的集合。目前,使用最广泛的软件工程方法学分别是传统方法学和面向对象方法学。软件工程作为一种层次化的技术,有方法、工具和过程三大要素,并由于其涉及学科内容的极为广泛,而分为三个分支:软件开发技术、软件项目管理技术、软件质量管理技术。9.简述软件工程的基本原理。软件工程有7条基本原理:123行严格的产品控制456员应少而精7.承认不断改进软件工程实践的必要性10.软件工程的基本开发原则有哪些?软件工程的基本开发原则有:1.模块化2.抽象和信息隐蔽3.模块的高内聚和低耦合4.确定性5.一致性6.完备性构成软件工程的基本元素有哪些?里的控制,即规模控制、成本控制、复杂性控制等。什么是软件过程?它与软件工程方法学有何关系?软件过程是指为了获得高质量软件产品,在软件工具支持下,由软件人员完成的一系列软件工程活动。软件过程规定了开发软件所需完成的各项任务步骤。过程步骤的设定与软件生命周期、生命周期模型、软件开发工具,以及参与开发的人员等诸方面因素有关。什么是软件生命周期?什么是软件生命周期模型?软件如同自然界任何事物一样,都有其孕育、诞生、成长、成熟、衰亡的生存过程。软件的这一过程,称为软件生命周期。软件生命周期模型也称软件开发过程模型,是为了解决产业环境中的实际问题,而提出的开发策略。是反映整个软件生命期中,系统开发、运行、维护等实施活动的一种结构框架。简述软件生命周期方法学的途径,以及划分阶段步骤的目的和实质。软件生命周期方法学是软件工程的传统途径,划分阶段步骤的目的和实质是:控制开发工作的复杂性,通过有限步骤,把抽象逻辑概念,转化为具体物力实现。说明它们各自的适用范围。1.瀑布模型。瀑布模型广为人知和历史悠久,其优势是规范及文档驱动的方法。但问题是,往往不能够真正满足用户的需求。适用于传统软件工程领域的结构化开发。2.原型模型。是为了克服瀑布模型的缺点而提出来的。通过快速构建一个在机器上可运行的原型系统,让用户试用原型,并收集反馈意见的办法,来获取用户真实的需求。螺旋模型。螺旋模型适用于大型软件项目,比起之前的其它模型而言,有其一定的优越性,但这些优越性并不是绝对的。主要体现在对开发人员的风险评估经验和专门知识的要求较高。如果项目风险较大,而开发人员的水平较低,不能准确的识别和分析风险,则势必造成重大损失。增量模型。具有在软件开发早期阶段使投资获得明显回报和交易维护的优点,但是要求软件具有开放的结构。第二章可行性研究务各是什么?可行性研究的目的是用最小的代价,在尽可能短的时间内确定问题是否可解决,以及是否值得解决。可行性研究的任务不是解决问题,而是确定是否可解/值得解。主要从以下几个方面进行可行性研究:技术可行性。以现有技术,能否在预定时间内完成该系统开发。3.应用需要。4.社会可行性。分析系统在法律、社会、市场等方面的认可度。3.可行性研究有哪些工作步骤?(1)复查定义,确定系统规模和目标。(2)研究老系统(conceptualdeign)(4(5法(6(7)(8)审查、存档简述系统流程图在可行性研究中的作用。系统流程图是概括的描述物理系统的传统工具。系统流程图反映的是信息在系统各部分间流动的情况。系统流程图可以帮助了解和分析系统,以概括的方式表达对系统的认识,并可以描述未来物理系统的概貌。简述数据流图在可行性研究中的作用和用途。数据流图在可行性分析中可以帮助分析和描绘数据在软件中流动和被处理的逻辑过程,用图形的方式描述系统的逻辑功能,是系统分析员和用户之间理想的通信工具。简单描述数据字典的内容和定义数据的方法。4234.处理除了数据定义外,数据字典还应包含一些关于数据的其它信息。定义数据的方法通常采用自顶向下分解的方式。并由顺序、选择、重复三种基本数据元素类型组成数据。说明软件计划的内容和目标。软件计划的内容=项目任务范围+环境资源+工作量+进度软件计划的目标是为了提供一个框架,以便于管理者对资源、成本和进度等进行合理的估算。什么是软件范围?定义软件范围需要哪些信息?软件范围就是在技术和管理层面上都是无二义性和可理解的项目范围,是软件开发各阶段的工作依据。定义软件范围需要以下信息:a.与用户、总体目标及利益相关的问题。b.有利于系统分析员理解的问题。c.集中于交流效果的问题。简述软件开发环境资源的三个层次。软件开发环境资源由三个层次构成:开发环境、软件构件以及最重要的资源——人。软件环境资源的特征有哪些?它们对制定软件计划都有哪些意义?每一类资源都有四个特征:资源描述、可用性说明和资源提供的时间、资源使用的延续时间。可以为制定软件计划估算软件开发所需的资源。优缺点?编制进度计划的常用工具主要有甘特图和网络计划法。甘特图的优点是简单,能动态地反映开发进展;缺点是难以反映多个任务间的逻辑关系。网络计划法则恰好弥补了甘特图的缺点,最适合反映多个工作之间的逻辑关系。主要有,代码行技术。是一种基于规模的分解估算:D=f(vi)以及基于问题的分解估算:EV=(Sopt+4Sm+Spe)/6还有功能点技术。这种技术以功能点(FP)为单位,度量软件的规模。由于项目本身的复杂性,因此,成本估计技术主要采用“分而治之”的分解技术对软件项目进行估算。为什么说成本估计是不可能精准的?那是由于太多的变化因素——人员、技术、环境、策略、复杂性等等,使得成本估算永远不可能精确。/效益分析的方法主要有哪些?常用成本/效益分析的方法主要有:(1)货币的时间价值(2)投资回收期(3)纯收入投资回收率16.软件计划的复审通常涉及有关软件工作范围和软硬件资源问题等。复审应该邀请用户参加,用户可提出建议,并与开发人员最终商定内容。复审内容分为技术和管理两个方面:技术方面需要考虑的问题有:系统的任务是否合理;系统的给你复杂性是否与开发成本、进度以及风险一致;系统规格说明书是否足够充分;系统性能要求是否恰当管理方面需要考虑的问题有:计划中描述的工作范围是否符合用户需求?计划中对资源的描述是否有效、合理?计划中系统的开发成本与进度要求是否合理?计划中人员的安排是否合理?系统开发存在哪些风险?第三章需求分析1.为什么要进行需求分析?通常对软件系统有哪些需求?需求问题是软件工程项目失败的主要原因。一个高质量的软件,很大程度上取决于对要解决的问题的认识,以及如何准确的表达用户的需求。需求分析就是要解决这个问题。通常,对一个软件系统的需求可以有功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求等多个方面。怎样与用户有效地沟通,以获得用户的真实需求?访谈、情景分析,以及面向数据流的自顶向下求精等方法,编制简易的系统规格说明文档,创建原型等,是获取真实需求的有效方法。需求分析的任务是什么?5功能需求:系统必须做什么?(3需求:运行环境、软硬件配置等。靠性等;开发者关心的属性,如可维护性、可复用性、可移植性等。未来可能的扩充需求:如HDIS等等。进行需求分析的步骤有哪些?1.确定系统的综合要求2.分析系统的数据要求3.导出逻辑模型4.修正系统开发计划6.简述建立原型模型对软件需求分析的作用。可以快速构建旨在演示目标系统主要功能的可运行程序,帮助用户确定及提供更为精准的需求,以利用户和开发者能够在目标系统应该“做什么”这一问题上尽快达成一致。8.说明为什么需要进行需求验证及验证的步骤有哪些?进行需求验证是为了确保软件开发的质量,降低开发成本。通常对需求进行验证的步骤有:验证需求的一致性、验证需求的现实性、验证需求的完整性和有效性。④归纳法:从错误症状中找出规律,推断根源。⑤演绎法:普通特殊32.什么是软件的可靠性、可用性和正确性?软件可靠性是指程序在给定的时间间隔内,按照说明书的规定,成功成功地运行的概率。软件正确性是指程序的功能正确。第七章维护1在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。软件维护有哪几种类型?①改正性维护:诊断和改正错误;\\改造界面,增加HELP④预防性维护:为了改进未来的可维护性或可靠性,或为了给未来的改进奠定更好的基础而修改软件。为什么说软件文档维护和代码维护同样重要?这是因为,软件文档是影响软件可维护性的决定因素。4.为什么说维护的代价很高?应该怎样做才能降低维护的代价?708-280%;2.无形代价:占用资源以致延误开发;修改不及时引起用户不满;维护引入新错误,降低了软件质量;等等。3.维护工作量的经验模型:M=P+K某ec-d降低维护代价的通常认识是:提高程序的可维护性,这也是软件工程学的主要目的。导致维护成本高企的原因主要有哪些?软件开发途径不好,导致软件可维护性差,原来的开发人员没有参与维护,维护成本日益高涨等,从维护工作量的经验模型可以看到,维护工作量和成本将呈指数增加。什么是软件的可维护性?软件可维护性可定性地定义为:维护人员理解、改正、改动和改进这个软件的难易程度。如何提高软件的可维护性?可以从提高决定软件可维护性的因素着手,这些因素是:可理解性、为什么说文档是影响软件可维护性的决定因素?由于长期使用的软件系统在使用过程中会有多次修改的经历,而文档应该记载了这些重要的修改,所以文档比之代码更为重要。什么是软件的系统文档?系统文档是指软件系统从问题定义、需求说明、设计、实现到验收测试计划等一系列和系统实现密切相关的技术文档。什么是软件的用户文档?维护性?可重用性是指同一事物不加修改或稍加修改,就可以在不同环境多次重复使用。大量使用可重用软件构件,可大幅提高软件的可维护性。主要体现在两个方面:可重用构件通常都是组装成功的部件,加上每次重用又都会进一件中使用可重用构件越多,软件的适应性维护和完善性维护也越容易。目的是提高软件的可维护性。可维护性复审在软件开放的不同阶段有不同的重点。例如,在分析阶段的复审重点是:可靠性、可移植性、可用性。而编码阶段则主要是:可理解性、可修改性、可移植性和效率。什么是软件的逆向工程和再工程?软件再工程则是以软件工程学为指导,对目标软件进行重新设计、重新编码和测试的过程。逆向工程与再工程与软件的预防性维护有什么样的关系?预防性维护是为了改进软件未来的可维护性或可靠性,或为了给软件未来的改进奠定更好的基础而修改软件的过程。预防性维护就是对软件将来可能需要的改动,使用逆向工程与再工程方法对软件进行维护。16;(b你将选取哪两份文档?为什么这样选取?你打算如何完成这个任务?应该选择(a)程序的规格说明和(b)程序的详细设计结果。因为是重大修改,所以需要从修改程序规格说明和详细设计开始,对开发文档进行重大修改,而源码也会需要重新编制。第八章面向对象方法学引论11、瀑布模型的缺点:僵化2、SA-SD-SP技术的缺点:本质上是基于过程的设计不易被理解;且功能变化往往引起结构变化较大,稳定性不好。系统有明确的边界定义,且系统结构依赖于系统边界的定义,这样的系统不易扩充和修改。数据与操作分开处理,可能造成软构件对具体应用环境的依赖,可重用性(reuability)较差。24以object以object3.一个claintanceinheritancecla4.从稳定性、Cla的独立性强、继承和多态性、容易理解、容易测试、调试等几方面改善了可维护性。什么是“对象”?它与传统数据有何不同?对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体,可以表示为:对象Object:=身份ID+方法Method+属性Attribute+消息Meage。与传统数据相比,对象有以下特点:①以数据为中心,不设与数据无关的操作;②Objectmeageobject构及算法;④具有并行性:不同object各自独立地处理自身数据,彼此间仅通过传递meage完成通信;⑤模块独立性好:内聚强(①)、耦合松(③④)什么是“类”?具有相同数据和相同操作的一组对象。6.什么是“继承”?子类自动共享父类的attribute和method,而不必重复定义。7.什么是模型?软件开发为什么要建立模型?模型就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。软件开发建立模型是为了帮助我们思考问题、定义术语、作出适当的假设,并帮助我们保持定义和假设的一致性。对于较为复杂而不能直接理解的系统,特别需要建立模型,其目的是可以减少复杂性。符号的含义是什么?描述系统数据结构。对象模型具体是描述系统的静态结构。符号的含义是什么?描述系统控制结构。动态模型具体是表示系统瞬时的控制性质。10.描述系统功能。功能模型具体描述的是表明系统应该做什么。第九章面向对象分析1需求陈述快速原型模型其中模型有三个:对象模型、动态模型、功能模型。2.建立对象模型有哪几个步骤?1、确定类与对象:122、确定关联结构层12334、确立属性5、识别继承关系及其它修改5&对象层、结构层、属性层、服务层。建立动态模型的步骤有哪些?1、编写脚本,描述事件序列:234、画状态图如何建立功能模型?123第十章面向对象设计1遵循该条准则的必要性。模块化方法中超脱。包括程序抽象、数据抽象、参数抽象。信息隐蔽。对象封装。弱耦合。包括交互耦合、继承耦合。可重用。是提高软件开发生产率和目标系统质量的重要途径。和必要性。1、设计结果清晰易懂,应做到:①用词一致——按习惯用法命名。不同类中相似的方法最好取同一名字。②使用已有的协议。③尽量减少消息模式的数目。④避免模糊定义。2(1007±2)3设计简单的类(定义不超过一页纸或两屏)。应注意:①避免过多属性;②能用简单的语句描述一个类的任务;③对象之间合作关系要简单;④避免过多方法(7个)。45(CASE6、把设计变动减至最小。方式?具备可重用的软构件应有的特点:独立、可塑、接口清晰(文档详尽)重用方式有:实例重用、继承重用和多态重用。什么是继承耦合?继承是一般化类和特殊类之间耦合的一种形式。从本质上看,通过继承关系结合起来的基类和派生类,构成了系统中粒度更大的模块。因此,与交互耦合相反,继承的耦合程度会更高。第十一章面向对象实现1应该选择能够更完整、更正确地表达问题域语义的面向对象语言。这是由于面向对象语言相对非面向对象的语言,其突出的优点:一致的表示方法、可重用性、可维护性。2.面向对象程序设计语言主要有哪些技术特点?面向对象语言的技术特点主要有:a)支持类与对象概念的机制b)实现整体—部分结构的机制c)实现一般—特殊结构的机制d)实现属性和服务的机制e)类型检查f)类库g)效率h)持久保存对象i)参数化类j)开发环境3主要应该着重考虑以下因素:将来能否占主导地位、可重用性、类库和开发环境、其他因素等。提高可重用性、提高可扩充性、提高健壮性。新特点?单元测试是在类层面上的测试。由于继承和复合,类(或对象)在很多情况下已不再是单纯意义上的单个操作了。因此,具体的测试将在所有与该操作有关的每个子类语境中进行。集成测试由于面向对象软件中类的成分的直接和间接交互,使得传统测试方法已经失去意义。因此有两种策略可供选择:基于线程的测试和基于使用的测试。确认测试与传统确认测试一样,仍然关注于用户可见的动作和用户可识别的系统输出,但是,基于场景的测试总是主宰面向对象系统的确认测试。随机测试、划分测试和基于故障的测试。7多类测试、从动态模型中导出测试用例。也可以采用随机测试、划分测试的方法。8.测试面向对象软件时,主要有哪些设计确认测试用例的方法?可以采用传统的黑盒方法,也可以采用基于情景的方法。第十二章项目管理1/r/

温馨提示

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

评论

0/150

提交评论