软件工程复习题.doc_第1页
软件工程复习题.doc_第2页
软件工程复习题.doc_第3页
软件工程复习题.doc_第4页
软件工程复习题.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

软件工程复习题一、 单选题(20分)第一组:1、在软件开发的各种资源中,()是最重要的资源。A开发工具 B.方法 C.硬件 D.人员2、软件的复杂性是(),它引起人员通信困难、开发费用超支、开发时间超时等问题。A.固有的 B.人为的 C.可消除的 D.不可降低的3、原型化方法是用户和软件开发人员之间进行的一种交互过程,适用于()系统。A.需求不确定的 B.需求确定的 C.管理信息 D.决策支持4、单元测试的测试用例主要根据()的结果来设计。A.需求分析 B.源程序 C.概要设计 D.详细设计5、()是软件生存期中的一系列相关软件工程活动的集合,它由软件规格说明、软件设计与开发、软件确认、软件改进等活动组成。A.软件过程 B.软件工具 C.软件生存周质量保证 D.软件工程6、()意味着一个操作在不同的类中可以有不同的实现方式。A.多态性 B.类的复用 C.封装 D.对象的复用7、软件测试计划开始于需求分析阶段,完成于()阶段。A需求分析 B.软件设计 C.软件实现 D.软件测试8、在软件生存周期的瀑布模型中一般包括计划、()、设计、编码、测试、维护等阶段。A可行性分析 B.需求采集 C.需求分析 D.问题定义9.软件需求分析阶段的测试手段一般采用()。A总结 B.阶段性报告 C.需求分析评审 D.不测试10.()是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是隐蔽的,外界只能通过有限的接口与对象发生联系。A多态性 B.继承 C.封装 D.消息11.软件测试是为了()而执行程序的过程。A纠正错误 B.发现错误 C.避免错误 D.证明正确12.在结构化分析方法中,()表达系统内部数据运动的图形化技术。A数据字典 B.实体关系图 C.数据流图 D.状态转换图13.软件工程的基本要素包括方法、工具和()。A过程 B.软件系统 C.硬件环境 D.人员14.TURBO PASCAL是()软件。A系统软件 B.人工智能 C.事务软件 D.应用软件15、选择结构的复杂性比顺序结构的复杂性要()。A.小 B.大 C.相等 D.无法比较16、模块内聚度越高,说明模块内各成分彼此结合的程度越()。A.松散 B.紧密 C.无法判断 D.相等17、软件维护是软件生命周期中的固有阶段,一般认为,各种不同的软件维护中以()所占的维护量最小。A.纠错性维护 B.代码维护 C.预防性维护 D.文档维护18、在下述哪一种测试中,测试人员必须接触到源程序()。功能测试 结构测试 A.均不需 B.只有 C.只有 D.和19、软件设计阶段的输出主要是()。A.程序 B.模块 C.伪代码 D.设计规格说明书20、软件测试方法中,黑盒、白盒测试法是常用的方法,其中白盒测试主要用于测试()。A.结构合理性 B.软件外部功能 C.程序正确性 D.程序内部逻辑21、下面哪个阶段不是软件的设计阶段()。A.编码 B.可行性研究 C.测试 D.维护 22、数据字典是用来定义()中的各个成分的具体含义的。A流程图 B功能结构图 C系统结构图 D数据流图23、在面向对象设计中,()意味着在同一作用域内的若干个参数不同的函数可以使用相同的函数名字。A重载 B类的复用 C封装 D继承第二组:1.“软件工程的概念是为解决软件危机而提出的”这句话的意思是()A.强调软件工程成功解决了软件危机的问题B.说明软件危机的存在总是使软件开发不像传统工程项目那样容易管理C.说明软件工程这门学科的形成是软件发展的需要D.说明软件工程的概念,即:工程的原则、思想、方法可解决当时软件开发和维护存在的问题2.瀑布模型的主要特点是()A.将开发过程严格地划分为一系列有序的活动 B.将开发过程分解为阶段C.提供了有效的管理模式 D.缺乏灵活性3.在软件工程的需求分析阶段,不属于问题识别内容的是()A.功能需求 B.性能需求 C.环境需求 D.输入输出需求4.画某系统的数据流图时,顶层图有()A.0张 B.1张 C.2张 D.3张及其以上5.软件模块内聚性最强的是()A.功能内聚 B.通信内聚 C.偶然内聚 D.逻辑内聚6.最早提出软件系统维护问题的阶段是()A.可行性分析 B.需求分析 C.概要设计 D.详细设计7.SD(结构化设计)方法设计的结果是()A.模块 B.模块结构图 C.模块的算法 D.数据流图8.在进行软件测试时,首先应当进行以下哪项测试,然后再进行组装测试,最后再进行有效性测试()A.单元测试 B.系统测试 C.集成测试 D.确认测试9.软件详细设计阶段的任务是()A.算法与数据结构设计 B.功能设计 C.调用关系设计 D.输入输出设计10.下列属于静态测试方法的是()A.黑盒法 B.路径覆盖 C.白盒法 D.人工检测11.Fortran语言主要作为以下哪个方面的语言()A.科学工程计算 B.系统软件 C.事务处理 D.人工智能12.用结构化语言来描述加工逻辑的外层结构时,以下不属于基本结构的是()A.顺序结构 B.选择结构 C.嵌套结构 D.重复结构l3.可维护软件的主要特性包括()A.可理解性、可修改性、可移植性 B.可使用性C.可维护性、可使用性、可靠性 D.可测试性14.程序设计语言不具有的特性是()A.心理特性 B.工程特性 C.应用特性 D.技术特性15.下列不属于项目进度安排主要方法的是()A.工程网络图 B.Gantt图 C.进度结构图 D.任务资源表16.下列不属于通常冗余技术的是()A.结构冗余 B.信息冗余 C.时间冗余 D.代码冗余17.下列工具中,属于需求追踪工具的是()A.在DBMS上的应用运行工具 B.追踪和状态报告C.访问和版本控制机构 D.文件和修改管理18.关于软件测试的目的,下面观点错误的是()A.为了发现错误而执行程序的过程 B.一个好的测试用例能够发现至今尚未发现的错误 C.证明程序是正确、没有错误的 D.一个成功的测试用例是发现了至今尚未发现的错误的测试19.在制定项目开发计划文档时,不包含的内容是()A.项目概述 B.实施计划 C.测试计划 D.交付期限20.面向对象的开发方法中,以下哪种方法原是面向Ada语言的,并处于面向对象开发方法的奠基性地位()A.Booch方法 B.Coad方法 C.UML语言 D.OMT方法二、 判断题(10分)1.文档是软件产品的一部分,没有文档的软件就不称其为软件。()2.在需求分析过程中,分析员要从用户那里解决的最重要的问题是给该软件提供哪些信息。()3.需求规格说明书在软件开发中具有重要的作用,它也可以作为软件可行性分析的依据。()4.数据流图建立系统的功能模型,它由数据流、加工和数据存贮组成。()5.好的测试是用少量的测试用例运行程序,发现被测程序尽可能多的错误。()6.面向对象的分析是面向计算机系统建立软件系统的对象模型。(7.不完善的系统定义往往是导致软件项目失败的主要原因。()8.一个成功的项目唯一提交的就是运行程序。()9.只有质量差的软件产品才需要维护。()10.一个好的测试用例在于能发现至今未发现的错误。()11.软件工作的考虑范围主要是程序设计和实现。()12.在项目计划发生延迟的情况下,增加更多的程序员一定会加快进度。()13.软件错误可能出现在开发过程的早期,越早修改越好。()14.在软件开发的过程中,若能推迟暴露其中的错误,则为修复和改正错误所花费的代价就会降低。(W)15.模型是对现实的简化,建模是为了更好地理解所开发的系统。()16.好的测试用例应能证明软件是正确的。()17.白盒测试仅与程序的内部结构有关,完全可以不考虑程序的功能要求。()三、 填空题(10分) 1. 软件生命周期可划分为定义、开发和维护三个时期,通常把这三个时期再细分为8个阶段,它们是问题定义、可行性研究、需求分析、总体设计、编码和单元测试、综合测试和维护,其中维护阶段的工作量是8个中最大的。2. 可行性研究的任务是从技术、经济和操作三个方面研究软件项目的可行性。3. 至少应该从一致性、现实性、完整性和有效性四个方面验证软件需求的正确性,其中完整性和有效性这两个方面的正确性必须有用户的积极参与才能验证,而且为了验证这两个方面的正确性往往需要开发原型系统。4. 软件总体设计时应该遵循模块化、抽象、逐步求精、信息隐藏、局部化和模块独立6条基本原理。详细设计通常以结构程序设计为技术为逻辑基础,因为从软件工程观点看,可理解性是软件最重要的质量标准之一。5. 软件测试的目的是发现错误,通常把测试方法分为黑盒测试和白盒测试两大类。因为通常不可能穷尽测试,所以精心设计测试方案是保证达到测试目的所必需的。6. 面向对象方法用对象分解取代了传统方法的功能分解。7. 在面向对象的软件中,类是对具有相同数据和相同操作的一组相似对象的定义;实例是某个特定的类所描述的一个具体对象。8. 消息就是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。通常一个消息有下述3部分组成:接收消息的对象、消息名、零个或多个变元。9. 方法就是对象所能执行的操作,也就是类中所定义的服务。10. 属性就是类中定义的数据,它是对客观世界实体所具有性质的抽象。类的每个实例都有自己特有的属性值。11. 封装就是把某个事物包起来,使外界不知道该事物的具体内容。12. 继承是指能够直接获得已有的性质和特征,而不必重复定义它们。13. 一个用例是可以被行为者感受到的、系统的一个完整的功能。14. 行为者是与系统交互的人或其他系统,它代表系统外部的实体。15. 在建立动态模型中,脚本是指系统在某一执行期间内出现的一系列事件。四、 简答题(50分)1. 什么是软件危机?它有哪些典型表现?答:软件危机是指在计算机软件的开发和维护过程中所遇到的一些列严重问题。它包括两方面:一是如何开发软件,以满足对软件日益增长的需求;二是如何维护数量不断增长的已有软件。软件危机的典型表现:(1)对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个数量级,实际进度比计划进度拖延几个月甚至几年的现象。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。这些都降低了开发商的信誉,引起用户不满;(2)用户对已完成的软件不满意的现象时有发生;(3)软件产品的质量往往都是不可靠的;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料。文档资料不全或者不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题;(6)软件成本,软件维护费在计算机系统总成本中所占的比例逐年上升;(7)开发生产率提高的速度远跟不上计算机应用普及的需求。2. 什么是软件工程?它有哪些本质特征? 答:软件工程是指导计算机软件开发和维护的一门工程学科。主要特征有:1.软件工程关注于大型程序的构造;2.软件工程的中心课题是控制复杂性;3.软件是经常变化的,开发过程中必须考虑软件将来可能的变化;4.开发软件的效率非常重要;5.和谐的合作是开发软件的关键;6.软件必须有效的支持它的用户;7.在软件工程领域中是有由具有一种文化背景的人替具有一种文化背景的人完成一些工作。3. 什么是软件过程?它与软件工程方法学有何关系? 答:软件过程是为了获得高质量软件所需要完成的一些列任务的框架,它规定了完成各项工作步骤。概括地说,软件过程描述为了开发出客户需要的软件,什么人、在什么时候、做什么事以及怎样做这些事以实现某一个特定的具体目标。而通常把在软件生命周期全过程中使用的一整套技术方法的集合称为工程方法学,也称范型。软件过程是软件工程方法学的三个要素(方法、工具和过程)之一。4. 在软件开发的早期阶段为什么要进行可行性研究?应该从哪些方面研究目标系统的可行性? 答:开发一个软件时,需要判断原定的系统模型和目标是否现实,系统完成后能带来的效益是否大到值得投资开发这个系统的程度,如果做不到这些,那么花费在这些工程上的任何时间,人力,软硬件资源和经费,都是无谓的浪费。可行性研究的实质是要进行一次大大压缩简化了的系统分析和设计过程,就是在高层次上以较抽象的方式进行的系统分析和设计的过程。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。 技术上的可行性。对要开发项目的功能,性能和限制条件进行的分析,确定在现有的资源条件下进行分析,技术风险有多大,项目是否能实现,这些即为技术可行性的研究内容。 经济上的可行性。进行开发成本烦人估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发,这些即为经济可行性研究的内容。 操作可行性。有时还要研究社会可行性问题,研究开发的项目是否存在任何侵犯,妨碍等责任问题。社会可行性所涉及的范围也比较广,它包括合同,责任,侵权和其他一些技术人员常常不了解的陷阱等。必要时还应该从法律,社会效益等更为广泛的方面研究每种解法的可行性。5. 为什么要进行需求分析?通常对软件系统有哪些需求? 答:为了开发出真正满足用户需求的软件产品,准确定义未来系统的目标,确定为了满足用户的需求系统必须做什么,就必须进行准确的需求分析。通常对软件系统的需求有:功能需求;性能需求;可靠性和可用性需求;出错处理需求;接口需求;约束;逆向需求;文档需求,数据需求等等。6. 怎样与用户有效的沟通以获得用户的真实需求? 答:1.访谈:有两种基本形式,分别是正式的和非正式的访谈;2.面向数据流自顶向下求精:通常从数据流图的输出端着手分析,根据输出数据定义给出最基本的数据元素的定义;3.简易的应用规格说明技术:主要是面向团队的一种收集需求的方法,通过会议,大家提出的一致性意见;4.快速建立软件原型,快速建立一个能够演示目标系统主要功能的可运行的程序,让用户在使用中完善需求规格说明书。7. 什么是模块测试和集成测试?它们各有什么特点? 答:模块测试是对每个单独的模块,分别用黑盒和白盒测试技术,测试它的功能是否正确,检查模块控制结构中的特定路径并发现最大数量的错误。其特点是:主要应用白盒测试的技术,对多个模块的测试可以并行地进行。 集成测试是把模块装配在一起形成完整的软件包,在装配的同时进行测试,主要目的是发现与接口有关的问题。特点是:可以发现模块间接口存在的问题。8. 软件的可维护性与哪些因素有关?在软件开发过程中应该采取哪些措施来提高软件产品的可维护性? 答:软件的可维护性与可理解性、可测试性、可修改性、可移植性和可重用性有关。在每个阶段结束前的技术审查和管理复查工程中,应该着重对可维护性进行复审过程中,应该对将来要改进的部分和可能要改的部分加以注意指明,应该讨论软件的可移植性问题,考虑可能影响软件维护的系统界面。在设计和编码过程中应该尽量使用可重用的软件构件,每个测试步骤都可以暗示在软件正式交付使用之前,程序中可能需要做预防性维护的部分。在完成每项维护工作之后,都应该对软件维护本身仔细认真的复查。9. 什么是面向对象方法学?它有哪些优点?答:面向对象方法学是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类解决问题的方法与过程,使描述问题的问题空间与实现解法的解法空间在结构上尽可能一致。优点:(1)与人类习惯的思维方法一致;(2)稳定性好;(3)可重用性好;(4)较易开发大型软件产品;(5)可维护性好;(6)比较容易修改;(7)比较容易理解;(8)易于测试和调试。10. 什么是对象模型?建立对象模型时主要使用哪些图形符号?这些符号的含义是什么?答:对象模型表示静态的,结构化的系统的“数据”性质。它是对模拟客观世界实体的对象以及对象彼此间关系的映射,描述了系统的静态结构。在UML中,用类图来建立对象模型,表示一个类及属于该类的对象。11. 面向对象设计应该遵循哪些准则?简述每条准则的内容。 答:(1)模块化,面向对象软件开发模式,很自然地支持了把系统分解成模块的设计原理:对象就是模块。它是把数据结构和操作这些数据的方法紧密地结合一起所构成的模块;(2)抽象,面向对象方法不仅支持过程抽象,而且支持数据抽象。类实际上是一种抽象数据类型,它对外开放的公共接口构成了类的规格说明,这种接口规定了外界可以使用合法的操作符。利用这些操作符可以对类实例中包含的数据进行操作。使用者无须知道这些操作符的实现算法和类中数据元素的具体表示方法,就可以通过这些操作符使用类中定义的数据。通常把这类抽象称为规格说明抽象。(3)信息隐藏,在面向对象方法中,信息隐藏通过对象的封装性实现:类结构分离了接口与实现,从而支持了信息隐藏。对于用户来说,属性的表示方法和操作的实现算法都应该是隐藏的。(4)弱藕合,在面向对象方法中,对象是最基本的模块,因此,耦合主要指不同对象之间相互关联的紧密程度。主要有交互耦合和继承耦合两种。(5)强内聚,设计中使用的一个构件内的各个元素,对完成一个定义明确的目的所做出的贡献程度;(6)可重用,一是尽量使用已有的类,二是如果确实需要新建新类,则在设计这些新类时,应该考虑将来的可重复使用性。12. 为什么说类构件是目前比较理想的可重用构件?它有哪些重用方式?答:(1)模块独立性强。具有单一,完整的功能,且经过反复测试被确认是正确的;(2)具有高度可塑性软构件的应用环境比集成电路更广阔,更复杂;(3)接口清晰,简明,可靠。重用方式:实例重用;继承重用;多态重用。13. 面向对象实现应该选用哪种程序设计语言?为什么? 答:就目前面向对象实现可以选择的语言有:LISP、SIMULA、Modula_2、Smalltalk、Eiffel、C+和JAVA等。因为这些面向对象的语言都具有支持面向对象实现的要求的特点:支持类和对象、具有聚集和泛化机制、实现属性和服务机制、类型检查机制、丰富的类库和高效率、持久保存对象、参数化类等特点。14. 面向对象程序设计语言主要有哪些技术优点? 答:(1)支持类与对象概念的机制;(2)实现聚集结构的机制;(3)实现泛化结构的机制;(4)实现属性和服务的机制;(5)类型检查机制;(6)类库;(7)效率;(8)持久保存对象的机制;(9)参数化类的机制;(10)开发环境。15. 良好的面向对象程序设计风格主要有哪些? 答:1.提高可重用性:提高方法的内聚、减小方法的规模、保持方法的一致性、把策略与实现分开、全面覆盖、尽量不使用全局信息、利用继承机制;2.提高可扩充性:封装实现策略、不要用一个方法遍历多条关联链、避免使用多分支语句、精心确定公有方法;3.提高健壮性:预防用户的操作错误、检查参数的合法性、不要预先确定限制条件、先测试后优化。16. 测试面向对象软件时,主要有哪些设计确认测试用例的方法? 答:为了导出确认测试用例,测试人员应

温馨提示

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

评论

0/150

提交评论