您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 《软件工程》练习题答案
《软件工程》练习题一答案一、单选题1.C2.A3.C4.D5.B6.C7.C8.C9.D10.D11.D12.A13.B14.A15.A16.A17.D18.A19.D20.B21.A22.C23.C24.A25.C26.C27.B28.C29.B30.C31.A32.D33.C34.B35.C36.A37.B38.C39.C40.D41.B42.D43.B44.A45.D46.C47.B48.D49.D50.B51.A二、填空题1.软件配置管理2.容错功能3.114.模块5.F/(1+(n*i))6.管理技术7.软件工具软件开发环境8.数据字典DD9.可测试性10.父图子图11.数据结构12.防错程序设计13.空间14.可行性研究15.需求16.需求建模技术17.层数18.经济19.概率20.过程21.IPO22.资源23.数学24.重复25.模块数26.系统约束27.从属28.软件工程29.复杂30.外部31.风险估算32.文档33.数据源34.动态多变量35.数据流图36.三种基本控制结构37.事务分析设计38.功能39.用户组织的管理模式及规范40.符号表示习惯41.不可再分解的42..软件需求明确43.累计经济效益(折合成现在值)44.硬件/操作系统45.差别估算法三、判断题1.错2.对3.对4.错5.错6.错7.对四、名词解释1.软件生存周期模型是描述软件开发过程中各种活动如何执行的模型。2.数据字典是用来定义数据流图中的各个成分的具体含义的。它以一种准确的、无二义性的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。3.内聚性是模块独立性的衡量标准之一,它是指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。4.JSP方法是面向数据结构的设计方法,其定义了一组以数据结构为指导的映射过程,它根据输入、输出的数据结构,按一定的规则映射成软件的过程描述,即程序结构。5.软件生存周期包括一个软件从提出开发要求开始直到该软件报废为止的整个时期。包括:可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等。6.概要设计是在需求分析的基础上通过抽象和分解将系统分解成模块,确定系统功能实现。7.也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。8.信息隐蔽是指在设计和确定模块时,使得一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。9.一个模块的作用范围是指受该模块内一个判定影响的所有模块的集合。10.结构化分析方法(SA)是需求分析中使用最多的方法之一,适用于数据处理类型软件的需求分析。基本思想是采用自顶向下,逐步分解的方法分析整个系统,有效地控制系统开发的复杂性。11.CASE是一组工具和方法的集合,可以辅助软件开发生命周期各阶段进行软件开发。CASE把软件开发技术、软件工具和软件开发方法集成到一个统一而一致的框架中,并且吸收了CAD(计算机辅助设计)、软件工程、操作系统、数据库、网络和许多其他计算机领域的原理和技术。因而,CASE领域是一个应用、继承和综合的领域。12.结构化分析方法是需求分析中使用最多的方法之一,适用于数据处理类型软件的需求分析。基本思想是采用自顶向下、逐步分解的方法分析整个系统,有效地控制系统开发的复杂性。五、简答题1.模块的内聚性包括:(1)偶然内聚(2)逻辑内聚(3)时间内聚(4)通信内聚(5)顺序内聚(6)功能内聚2.(1)软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。(2)软件是通过人们的智力活动,把知识与技术转化成信息的一种产品,是在研制、开发中被创造出来的。(3)在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题。(4)软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。(5)软件的开发至今尚未完全摆脱手工的开发方式。(6)软件的开发费用越来越高,成本相当昂贵。3.耦合是对一个软件结构内各个模块之间互连程度的度量。内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。4.计算机软件包括与计算机系统操作有关的程序、规程、规则及任何与之有关的文档和数据。5.需求分析的任务是确定待开发的软件系统“做什么”。具体任务包括确定软件系统的功能需求、性能需求和运行环境约束,编制软件需求规格说明书、软件系统的验收测试准则和初步的用户手册。6.项目的成本,作为立项和签合同的依据之一,并在软件开发过程中按计划管理经费的使用估算软件。7.在软件开发的早期,快速开发一个目标软件系统的原型,让用户对其进行评价并提出修改意见,然后开发人员根据用户的意见对原型进行改进。8.软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。9.(1)制定软件质量保证计划。(2)按照质量评价体系控制软件质量要素。(3)对阶段性的软件产品进行评审。(4)对最终软件产品进行确认,确保软件质量。10.支持需求不明确、特别是大型软件系统的开发,并支持面向规格说明、面向过程、面向对象等多种软件开发方法,是一种具有广阔前景的模型。11.软件从定义开始,经过开发、使用和维护,直到最终退役的全过程称为软件生存周期。12.(1)风险标识(2)风险估算(3)风险评价(4)风险驾驭和监控。13.(1)一致性(2)可理解性(3)可修改性(4)可追踪性14.(1)引言。(2)可行性研究前提。(3)对现有系统的分析。(4)所建议系统的技术可行性分析。(5)所建议系统的经济可行性分析。(6)社会因素可行性分析。(7)其他可供选择方案。(8)结论意见。15.(1)经费预算经常突破,完成时间一再拖延。(2)开发的软件不能满足用户要求。(3)开发的软件可维护性差。(4)开发的软件可靠性差。16.它适合于那些不能预先确切定义需求的软件系统的开发,更适合于那些项目组成员(包括分析员、设计员、程序员和用户)不能很好交流或通信有困难的情况。17.在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足用户需求的软件产品。18.(1)自顶向下的估算方法(2)自底向上的估算方法(3)差别估算法(4)根据经验估算公式19.(1)软件的规模越来越大,结构越来越复杂。(2)软件开发管理困难而复杂。(3)软件开发费用不断增加。(4)软件开发技术落后。(5)生产方式落后。(6)开发工具落后,生产率提高缓慢。20.进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发。21.CASE是一组工具和方法的集合,可以辅助软件开发生命周期各阶段进行软件开发。CASE把软件开发技术、软件工具和软件开发方法集成到一个统一而一致的框架中,并且吸收了CAD、软件工程、操作系统、数据库、网络和许多其他计算机领域的原理和技术。22.(1)规模:总共的指令数或源程序行数。(2)难度:通常由程序中出现的操作数的数目所决定的量来表示。(3)结构:通常用与程序结构有关的度量来表示。(4)智能度:即算法的难易程度。23.(1)三种基本结构为:顺序结构选择结构重复结构(2)顺序结构的图解逻辑选择结构的图解逻辑重复结构的图解逻辑AseqAselect(条件1)Aiterwhile(条件)BBBCAor(条件2)AendDCAendAend24.软件工程是一门工程性的学科,其目标主要是成功地建造一个大型软件系统。包括:付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发的软件易于移植;需要较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。面临的主要问题是:软件费用、软件可靠性、软件维护、软件生产率、软件重用。25.(1)采用自顶向下,逐步求精的程序设计方法。(2)使用三种基本控制结构构造程序,分别是顺序,选择和循环(3)采用主程序员组的组织形式。六、理论应用题1.2.3.(1)3个过程是:软件定义过程、软件开发过程、软件使用与维护过程。(2)9个阶段有:可行性研究、需求分析、概要设计、详细设计、实现、组装测试、验收测试、使用与维护、退役。4.(1)软件开发的生产率P为:P=L/E=12.1×103LOC/24PM=504LOC/PM(2)开发每行代码的平均成本C为:C=S/L=168000美元/12100LOC=13.9美元/LOC(3)代码出错率EQR为:EQR=N/L=29个/12.1KLOC=2.4个/KLOC(4)软件的文档率D为:D=Pd/L=365页/12.1KLOC=30页/KLOC5.(1)描述本系统功能的数据流图如下所示:(2)描绘计算机储蓄系统中数据对象的实体-联系图。储户1记录存款信息2打印存款单3核对密码4计算利息4打印利息清单储户存款单取款单存款信息存款存单存款信息存款信息存款信息D1存款信息利息值6.7.下图为一个改进方案,将模块G的位置提高,使其作用范围为控制范围的子集,减少模块之间的联系。8.(1)数据流图:储户储户所存取款MN姓名住址身份证号码电话号码名称地址电话号码数额类型利率到期日期密码(2)软件结构图:9.《软件工程》练习题二答案一、单选题1.B2.D3.A4.B5.D6.A7.D8.D9.D10.B11.D12.C13.C14.A15.A16.B17.C18.A19.B20.D21.D22.D23.A24.B25.B26.A27.D28.D29.B30.D31.D32.C33.C34.A35.D36.C37.A38.A39.B40.C41.B42.B43.A44.D45.B46.B47.A48.C49.D50.D51.D52.D53.A54.C55.C56.B57.D58.C59.C60.D二、填空题1.可移植性2.输出结果3.歧义性4.判定树5.形式语言6.顺序选择循环7.程序占用的存储空间8.数据9.机器10.编码11.最后12.对象13.询问14.副作用15.复杂度16.确认17.宽度优先策略18.机器19.菜单20.实例化21.窗口22.减少23.三24.改正25.机器26.父类27.循环28.错误29.白盒30.难易31.面向维护32.自底向上或相反顺序33.软件概要设计三、判断题1.错2.错3.对四、名词解释1.指相同的操作或函数、过程可作用于多种类型的对象上并获得不同结果。或(不同的对象,收到同一消息可以产生不同的结果。)2.具有相似或相同性质的对象的抽象就是类。3.对象是客观实体在问题域中的抽象。4.程序的可移植性指把一个软件(或程序)从一个计算机环境移植到另一个计算机环境的容易程度。5.系统流程图是描绘物理系统的工具,它用图形符号来表示系统中的各元素。它表达了系统中各个元素之间的信息流动的情况。6.集成测试也称组装测试或联合测试。是指在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统进行的测试。组装模块的方式有两种:渐增式测试和非渐增式测试。五、简答题1.结构冗余:包括静态冗余、动态冗余和混合冗余。信息冗余:为检测或纠正信息在运算或传输中的错误,须外加一部分信息。时间冗余:指重复执行指令或程序来消除瞬时错误带来的影响。冗余附加技术:指为实现上述冗余技术所需的资源和技术。2.软件测试是(1)为了发现错误而执行程序的过程;(2)一个好的用例能够发现至今尚未发现的错误的测试。(3)一个成功的测试是发现至今尚未发现的错误的测试。3.就程序设计语言的工程特性而言,对程序编码有如下要求:(1)可移植性(2)开发工具的可利用性(3)软件的可重用性(4)可维护性4.软件测试的目的是为了发现程序中的错误而执行程序的过程。正确认识测试的目标是十分重要的,测试目标决定了测试力案的设计。如果为了表明程序是正确的而进行测试,就会设计一些不易暴露错误的测试方案;相反,如果测试是为了发现程序中的错误,就会力求设计出最能暴露错误的测试方案。由于测试的目标是暴露程序中的错误,从心理学角度看,
本文标题:《软件工程》练习题答案
链接地址:https://www.777doc.com/doc-2819016 .html