全国2010年10月四、简答题1.简述软件危机产生的原因。答案:软件危机产生的原因有:(每点1分)(1)软件的规模越来越大,结构越来越复杂。(2)软件开发的管理困难。由于软件规模大,结构复杂,又具有无形性,导致管理困难,进度控制困难,质量控制困难,可靠性无法保证。(3)软件开发费用不断增加。软件生产是一种智力劳动,它是资金密集、人力密集的产业,大型软件投入人力多,周期长,费用上升很快。(4)软件开发技术、开发工具落后,生产率提高缓慢。(5)生产方式落后。软件仍然采用个体手工方式开发。2.简述需求分析的概念及需求分析的基本任务。答案:需求分析是指开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程。(3分)需求分析的基本任务是要准确地定义新系统的目标,为了满足用户需要,回答系统必须“做什么”的问题。(2分)3.简述数据流图的分类及每一类的特点。答案:数据流图有两类:变换型数据流图和事务型数据流图。(1分)变换型数据流图是由输入、处理和输出三部分组成,(1分)因此变化型数据流图是一个顺序结构。(1分)事务型数据流图特征:事务处理中心将它的输入流分离成许多发散的数据流,形成许多加工路径,(1分)并根据输入的值选择其中一个路径来执行。(1分)4.简述建立对象模型的过程。答案:建立对象模型的步骤如下:(每点1分)(1)确定类:标出来自问题域的相关对象类。(2)准备数据字典:为所有建模实体准备一个数据字典,准确描述各对象类的精确含义,描述当前问题中的类的范围,包括对类的成员、用法方面的假设或限制;(3)确定关联:确定二个或多个类之间的相互依赖;(4)确定属性:只考虑与具体应用直接相关的属性(5)使用继承来细化类:使用继承来共享公共结构,以此来重新组织类__全国2010年1月1.简述软件工程面临的问题。答:内容:①软件开发技术②软件开发管理面临的主要问题:①软件费用②软件可靠性③软件维护④软件生产率⑤软件重用2.简述可行性研究报告包含的主要内容。技术可行性:对要开发项目的功能、性能、限制条件进行分析,确定在现有的资源条件下,技术风险有多大,项目是否能实现。包括:开发的风险;资源的有效性;技术;开发人员在评估技术可行性时,一旦估计错误,将会出现灾难性后果。经济可行性:包括成本――效果分析、公司经营长期策略、开发所需的成本和资源、潜在的市场前景。社会可行性包括:合同、责任、侵权、用户组织的管理模式及规范,其他一些技术人员常常不了解的陷阱等。3.简述软件结构设计的优化准则。答:(1)模块独立性准则,即尽量高内聚,低耦合,保持模块相对的独立性,并以此原则优化软件结构;(2)控制范围与作用范围之间的准则,一个模块的作用范围应在其控制范围之内,且条件判断所在的模块应与受其影响的模块在层次上尽量靠近;(3)软件结构的形态特征准则,软件结构的深度、宽度。扇入、扇出应适当;(4)模块的大小准则,模块的大小最好控制在50~150条语句左右,以便于阅读研究;(5)模块的接口准则,模块的接口要简单。清晰及含义明确,以便于理解、实现、测试和维护。4.简述快速原型的开发步骤。答:快速原型开发步骤可划分下列阶段:(1)快速分析:迅速确定基本需求、集中力量确定需求说明。(2)快速构造原型:在快速分析基础上,在强有力的软件工具支持下,快速构造所需原型。(3)运行原型:在开发者指导下,用户参与原型的运行,各类人员在共同运行原型中进一步加深对系统的了解及相互间的理解,以发现各种问题。(4)评价原型;在运行基础上,根据原型目标,考核原型的特性,分析原型效果是否满足用户需求,提出修改意见。(5)修改原型:在评价基础上进行修改。若不满足需求说明,则根据明确的需求修改原型。若不满足用户需求,则先修改并明确用户需求,再重新构造原型。2008年10月1.软件生存周期可以分为几个阶段,每个阶段的提交物是什么?答案:(1)可行性研究和项目开发计划,提交项目开发计划和可行性分析报告;(2)需求分析,提交软件需求说明书;(3)概要设计,提交概要设计说明书;(4)详细设计,提交详细设计说明书;(5)编码,提交源程序清单;(6)测试,提交测试报告;(7)维护,提交维护报告。(1点1分,答对5点以上可得满分)2.结构化分析的描述工具有哪些?简述结构化分析的步骤。答案:结构化分析的描述工具有:(1)数据流图,(2)数据字典,(3)描述加工逻辑的结构化语言、判定表、判定树。(1分)(1)了解当前系统的工作流程,获取当前系统的物理模型;(1分)(2)抽象出当前系统的逻辑模型;(1分)(3)建立目标系统的逻辑模型;(1分)(4)作进一步补充和优化。(1分)3.什么是黑盒测试法?常用的黑盒测试方法有哪些?答案:黑盒测试法把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程。(1分)黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息的完整性。黑盒测试又称为功能测试。(2分)常用的黑盒测试方法有等价类划分、边界值分析、错误推测、因果图。(2分,每答对两个1分)4.简述面向对象的特征。答案:(1)对象唯一性:每个对象都有自身唯一的标识,通过这种标识,可以找到相应的对象。(1分)(2)分类性:分类性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。(1分)(3)继承性:继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。(1分)(4)多态性:多态性是指相同的操作或函数、过程作用于多种类型的对象上并获得不同的结果。不同的对象收到同一消息可以产生不同的结果。(2分)2007年10月1.简述软件工程过程的含义、目的以及包含的子过程。答案:软件工程过程规定了获取、供应、开发、操作和维护软件时,要实施的过程、活动和任务。(1分)其目的是为各种人员提供一个公共的框架,以便用相同的语言进行交流。(1分)软件工程过程包含七个子过程:(3分)(1)获取过程;(2)供应过程;(3)开发过程;(4)操作过程;(5)维护过程;(6)管理过程;(7)支持过程。2.数据字典的作用是什么,它有哪些条目?答案:数据字典是用来定义数据流图中的各个成分的具体含义的,它以一种准确的、无二义性的说明方式,为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。它和数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分。(3分)[JP3]数据字典包含以下几个条目:数据流条目、数据存储条目、数据项条目、加工条目。(2分)3.简述结构化程序设计方法的基本要点。答案:(1)采用自顶向下、逐步求精的程序设计方法:在需求分析、概要设计中,都采用了自顶向下、逐层细化的方法。(1分)(2)使用三种基本控制结构构造程序,分别是顺序、选择和循环,这三种基本结构的共同点是单入口、单出口,为自顶向下、逐步求精的设计方法提供了具体的实施手段。(2分)(3)采用主程序员组的组织形式:指开发程序的人员组织方式应用由一个主程序员、一个后备程序员和一个程序管理员三人为核心,再加上一些专家、其他技术人员组成小组。(2分)4.简述原型的开发步骤。答案:(1)快速分析:在分析人员与用户紧密配合下,迅速确定系统的基本需求,根据原型所要体现的特征描述基本需求以满足开发原型的需要;(1分)(2)构造原型:在快速分析的基础上,根据基本需求说明尽快实现一个可运行的系统;(1分)(3)运行原型:这是发现问题、消除误解、开发者与用户充分协调的一个步骤;(1分)(4)评价原型:在运行的基础上,考核评价原型的特性,分析运行效果是否满足用户的愿望,纠正过去交互中的误解与分析中的错误,增添新的要求;(1分)(5)修改:根据评价原型的活动结果进行修改。(1分)2006年10月1.增量构造模型有什么特点?答案:增量构造模型是部分阶段进行增量开发,即在该模型中,需求分析阶段和设计阶段与瀑布模型一样,按照瀑布模型方式进行开发,(1分)而编码和测试阶段不采用瀑布模型方式,而采用增量方式开发,(1分)即先对部分功能进行编码,进行测试,将这部分功能提交用户,然后再对另一部分功能进行编码,测试提交用户,直到把全部功能按这种方式开发完毕,(1分)在这种模型中,用户可以及早看到部分软件功能,及早发现问题,以便在其它软件功能开发时及时解决。(2分)2.软件测试要经过哪些步骤?简述这些测试的基本任务。答案:(1)单元测试、集成测试、确认测试、系统测试。(1分)(2)单元测试:对源程序中的每个程序单元进行测试,检查各模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。(1分)(3)集成测试:检查与设计相关的软件结构的有关问题。(1分)(4)确认测试:主要检查已实现的软件是否满足需求规格说明书中确定了的各种需求。(1分)(5)系统测试:把已确认的软件与其它系统元素结合在一起进行测试。(1分)3.简述需求分析方法应遵循的基本原则。答案:应遵循的基本原则:(1)必须能够表达和理解问题的数据域和功能域;(2分)(2)可以把一个复杂问题按功能进行分解并可逐层细化;(2分)(3)建模。(1分)4.模块间的耦合性包括哪些类型?答案:模块的耦合性包括:(1)无直接耦合;(2)数据耦合;(3)标记耦合;(4)控制耦合;(5)公共耦合;(6)内容耦合。(少一点扣1分)2005年10月1.软件工程面临的主要问题有哪些?答案:(1)软件费用;(1分)(2)软件可靠性;(1分)(3)软件可维护;(1分)(4)软件生产率;(1分)(5)软件重用。(1分)2.软件配置管理的作用及其主要目标是什么?答案:软件配置管理用于整个软件工程过程。其目的是协调整个软件的开发,使得混乱减少到最小程度,使得变更所产生的错误达到最小并最有效地提高生产率。(3分)它的主要目标是:标识变更;控制变更;确保变更的正确实现;报告有关变更。(2分)3.简述SA步骤。答案:SA分析的主要步骤:(1)了解当前系统的工作流程,获得当前系统的物理模型;(2)抽象出当前系统的逻辑模型;(3)建立目标系统的逻辑模型;(4)作进一步补充和优化。(第一点2分,其他点1分)4.软件复杂性主要体现在哪些方面?减少软件复杂性有哪些优点?答案:软件复杂性主要表现在程序复杂性,而程序的复杂性主要指模块内程序的复杂性。它直接关联到软件开发费用的多少、开发周期长短和软件潜伏错误的多少。(3分)减少程序的复杂性,可提高软件的简单性和可理解性,并使软件开发费用减少,开发周期缩短,软件内部潜伏错误减少。(2分)2004年10月1.面向对象的主要特征有哪些?简要说明其含义。答案:对象的惟一性:每个对象都有自身惟一的标识;(1分)分类性:将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。(1分)继承性:指子类自动共享父类数据结构和方法的机制。(1分)多态性:指相同的操作或函数、过程可作用于多种类型的对象上并获得不同结果。(2分2.简述快速原型模型的开发步骤。答案:快速原型开发步骤可划分下列阶段:(1)快速分析:迅速确定基本需求、集中力量确定需求说明。(1分)(2)快速构造原型:在快速分析基础上,在强有力的软件工具支持下,快速构造所需原型。(1分)(3)运行原型:在开发者指导下,用户参与原型的运行,各类人员在共同运行原型中进一步加深对系统的了解及相互间的理解,以发现各种问题。(1分)(4)评价原型:在运行基础上,根据原型目标,考核原型的特性,分析原型效果是否满足用户需求,提出修改意见。(1分)(5)修改原型:在评价基础上进行修改。若不满足需求说明,则根据明确的需求修改原型。若不满足用户需求,则先修改并明确用户需求,再重新构造原型。(1分)3.简述软件结构的设计优化准则。答案:软件结构的设计优化准则是:(1)划分模块时尽量做到高内聚低耦合,保持模块相对独立性,并以此原则优化初始的软件结构。(1分)(2)一个模块的作用范围应在其控制范围之内,其判定所在的模块应与受其影