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

下载本文档

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

文档简介

1.什么是软件危机,为什么会产生软件危机答:软件危机:计算机软件的开发和维护过程中所遇到的一系列严重问题。(正常、不正常运行软件都具有这种问题)原因:1)软件本身特点造成;2)软件开发与维护的方法不正确。主要表现:(a)忽视软件需求分析;(b)认为软件开发就是写程序并使之运行;(c)轻视软件维护;2.软件工程方法学(传统方法学(结构范型)答:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为范型。软件工程方法学的3要素:方法、工具和过程。传统方法学也称为生命周期方法学或结构化范型。结构化方法有:1)结构化设计方法;2)结构化分析方法;3)结构化分析与设计技术4)JACKSON方法5)WARNIER方法3.软件生存周期的定义,包含的阶段。答:软件生命周期:指软件从提出到最终被淘汰的这个存在期。软件生命周期组成:1)软件定义;A.问题定义B.可行性研究C.需求分析2)软件开发;D.总体设计E.详细设计F.编码和单元测试 G.综合测试3)运行维护。软件生命周期各个阶段:1.问题定义;2.可行性研究;3.需求分析;4.总体设计(概要设计);5.详细设计;6.编码与单元测试;7.综合测试;8.维护。4生命周期模型各自的基本思想是什么。答:瀑布模型1阶段间具有顺序性和依赖性2.推迟实现的观点3质量保证的观点。优点:采用规范的方法;严格规定每个阶段提交的文档;要求每个阶段交出的产品必须经过验证。快速原型模型优点:不带反馈环,基本上是线性顺序进行。增量模型优点:能较短时间内提交可完成部分工作的产品;可以使用户有充裕的时间学习和适应新产品。螺旋模型:可把它看作在每个阶段之前都增加风险分析的快速原型模型。喷泉模型:典型的面向对象软件开发过程模型之一。Rational 统一过程:1. RUP软件开发经验(1)迭代式开发(2)管理需求(3)使用基于构件的体系结构(4)可视化建模(5)贯穿于开发过程的软件质量验证(6)控制软件变更敏捷过程与极限编程1.敏捷过程:具有高效、快速响应变化的开发过程。(1)个体和交互胜过过程和工具;(2)可以工作的软件胜过面面俱到的文档;(3)客户合作胜过合同谈判;(4)响应变化胜过遵循计划。2.极限编程:敏捷过程中最著名的一种,指把好的开发实践运用到极致,多应用于软件需求模糊的场合。微软过程:1.微软过程准则2.微软软件生命周期(1)规划阶段(2)设计阶段(3)开发阶段(4)稳定阶段(5)发布阶段3.微软过程模型1.需求分析的任务是什么答:一.确定对系统的综合要求1功能需求2性能需求3. 可靠性和可用性需求4. 出错处理需求5. 接口需求6. 约束7. 逆向需求 8. 将来可能提出的要求 二. 分析系统的数据要求通过建立数据模型来分析,如数据字典、层次方框图、Warnier图,并将数据结构规范化。三. 导出系统的逻辑模型包括完善的数据流图、实体联系图、状态转换图、数据字典、主要的处理算法(IPO图)等。四. 修正系统开发计划修订前期制定的开发进度计划、等。2.需求规格说明书由那些部分构成答:(1) 引言:编写目的、背景说明、术语定义及参考资料等。(2) 概述主要功能、约束条件或特殊需求。(3) 数据流图与数据字典。 (4) 用户接口、硬件接口及软件接口。(5) 性能需求、属性等。(6) 其它需求,如数据库、操作及故障处理等。3.数据字典:数据字典:对数据流图中包含的所有元素的定义的集合;可行性研究阶段,数据流图与数据字典共同构成系统的逻辑模型。数据字典的内容数据字典应该对下列元素进行定义:1)数据流;2)数据元素(数据流分量);3)数据存储;4)处理。定义数据的方法1)数据元素字典定义:其定义的基本内容有:A数据元素编号、名称及其含义;B数据类型和长度;C合理取值;D其他内容,如它与其它数据的逻辑关系等。1.设计原理答1 模块化2抽象3逐步求精4信息隐蔽和局部化 5模块独立:模块的独立性很重要,因为:1)有效的模块化的软件比较容易开发出来;2)独立的模块比较容易测试和维护。模块独立程度可以由两个定性标准度量:耦合与内聚。耦合:指软件结构内不同模块彼此之间相互依赖(连接)的紧密程度。 模块的偶合分四类:1)数据耦合2)控制耦合3)公用耦合4)内容耦合内聚:一个模块内部各个元素彼此结合的紧密程度。它是衡量一个模块内部组成部分间整体统一性的度量。常见的内聚有七类。 1)功能内聚2)顺序内聚 3)通信内聚4)过程内聚5)时间内聚6)逻辑内聚7)偶然内聚 软件设计中应该:力求做到高内聚,尽量少用中内聚,不用低内聚。 2.面向数据流的设计方法答:面向数据流设计是与数据流分析对应的结构化软件设计技术。 面向数据流的设计将得到以数据流图为基础的软件模块结构图。 1 变换流与事务流:数据流可以分为两种类型:1)变换型数据流2)事务型数据流 2 面向数据流设计的步骤:1)复审并精化数据流图;2)确定数据处理流图的类型;3)确定变换中心或事务中心;4)将数据流图映射成软件模块结构图,设计出该数据流图对应的第一层模块结构;5)基于数据流图逐步分解,设计下层模块;6)运用模块设计和优化准则优化软件结构;7)描述模块的接口。3变换设计:变换设计就是从变换型数据流图映射出软件模块结构的过程,也称以变换为中心的设计。变换设计的基本方法有两步:1)分解第一层模块结构2)分别设计输入、输出和处理的下层模块结构4事务设计:事务设计就是从事务型数据流图映射出软件模块结构的过程,也称为以事务为中心的设计。事务设计的基本方法有两步:1)建立主控模块、接收输入类型分析模块和事务调度模块;2)分别设计输入类型分析模块和调度模块的下层模块结构。3.详细过程设计的工具答:1程序流程图:程序流程图:是一种描述程序的控制结构流程和指令执行情况的有向图。程序流程图的缺点:1)程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。2)程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。3)程序流程图不易表示数据结构。2盒图(N-S图) 盒图的特点有:1)功能域明确,可以从盒图上一眼就看出来;2)不可能任意转移控制;3)很容易确定局部和全程数据的作用域;4)很容易表现嵌套关系,也可以表示模块的层次结构。 3 PAD图:PAD(Problem Analysis Diagram)是问题分析图。日立公司发明和推广(1973)。 PAD图的优点:1)使用表示结构化控制结构的PAD符号所设计出来的程序必然是结构化程序;2)PAD图所描绘的程序结构十分清晰。3)用PAD图表现程序,通俗易懂,程序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点;4)容易将PAD图转换成高级语言源程序,这种转换可以用软件工具自动完成;5)可用于表示程序逻辑,也可用于描绘数据结构;6)PAD图的符号支持自顶向下、逐步求精的方法。4判定表:判定表由四部分组成:1.左上部列出所有条件2.左下部是所有可能做的动作3.右上部表示各种条件组合4.右下部是和每种条件组合相对应的动作 5判定树:判定树是判定表的变种。 6过程设计语言(PDL)PDL的优点:1)可以作为注释直接插在源程序中间;2)可以使用普通的正文编辑程序或文字处理系统来完成PDL的书写和编辑工作;3)现在已经有一些自动处理程序可以自动地把PDL生成程序代码。PDL的缺点:不如图形工具形象直观。4.面向数据结构的设计方法答:1Jackson图1)顺序结构 2)选择结构 3)重复结构 2改进的Jackson图 3 Jackson方法 Jackson方法的目标是:得出对程序处理过程的详细描述。Jackson结构程序设计方法由五个步骤组成:1)分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构;2)找出输入数据结构和输出数据结构中有对应关系的数据单元; 3)用三条规则从描绘数据结构的Jackson图导出描绘程序结构的Jackson图:A为每对有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图的相应层次画一个处理框;B根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框;C根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框;4)列出所有操作和条件(包括分支条件和循环结束条件),并且把它们分配到程序结构图的适当位置;5)用伪码表示程序。5.程序复杂程度的定量度量答:定量度量程序复杂度的作用:(1)可估算软件中错误的数量及软件开发工作量;(2)度量的结果可用来比较不同设计或不同算法的优劣;(3)程序的复杂度可作为模块规模的限度。 1 McCabe方法(1)流图“退化”的程序流程图,仅描绘程序的控制流程,不表现对数据的具体操作及循环、选择的条件。(2)计算环形复杂度的方法1)环形复杂度 V(G)等于流图中的区域数;2)环形复杂度 V(G)EN+2,其中E是流图中边的条数,N是结点数;3)环形复杂度 V(G)P1,其中P为流图中判定结点的数目。(3)环形复杂度的用途:对测试难度的一种定量度量,也能对软件最终的可靠性给出某种预测。实践表明,模块规模以V(G)10为宜。2 Halstead方法:根据程序中运算符和操作数的总数来度量程序复杂度。N = N1 + N2其中:N定义为程序长度;N1为程序中运算符出现的总次数;N2为操作数出现的总次数。 1.软件测试的目的与任务答:软件测试的目标(1)测试是为了发现程序中的错误而执行程序的过程;(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;(3)成功的测试是发现了至今为止尚未发现的错误的测试。 软件测试准则1)所有测试都应该能追溯到用户需求;2)应该远在测试前就制定出测试计划;3)把Pareto原理应用到软件测试中;4)应该从“小规模”测试开始,并逐步进行“大规模”测试;5)穷举测试是不可能的;6)为了达到最佳测试效果,应该由独立的第三方从事测试工作。2.测试与调试的区别答:软件测试:发现错误;软件调试:诊断并改正错误1.错误定位2.纠正错误3.回归测试3.测试的种类答:1.按是否需要执行被测软件的角度:可分为静态测试和动态测试2、按阶段划分1单元测试2 集成测试3系统测试 4 验收测试5 回归测试 6 Alpha 测试7 Beta 测试3、按测试方法划分:1 白盒测试 2 黑盒测试 3 ALAC(Act-like-a-customer)测试4.黑盒测试等价类划分(根据具体问题设计测试用例)答:黑盒测试:如果已经知道软件应该具有的功能,可以通过测试来检验是否每个功能都能正常使用,这种测试称黑盒测试。也称功能测试。等价类划分是一种黑盒测试技术。穷尽的黑盒测试需要使用所有可能的输入数据(有效的和无效的)进行测试,通常是不现实的。因此产生了等价类划分。等价类划分的思想:如果将所有可能的输入数据(有效的和无效的)划分为若干个等价类,就可以假定用每一个等价类中的代表值作为测试用例来进行测试时,等价于用该类中所有值进行了测试。用等价类划分设计测试用例时,主要分两步:划分等价类、确定测试用例。1)等价类划分:划分等价类需要经验,以下给出一些规则A如果某输入条件规定了输入的范围,那么可以划分为一个有效的等价类和两个无效的等价类。B如果某个输入条件规定了一组可能的值,且程序可以对不同的值作出不同的处理,那么可以为每种值确定一个有效的等价类,同时还有一个无效等价类。 2)确定测试用例A给每个等价类规定一个唯一的编号;B设计一个新的测试用例,使其尽可能多地覆盖未被覆盖过的有效等价类。重复此步,直至所有有效等价类被覆盖;C设计一个新的测试用例,使其覆盖而且只覆盖一个尚未被覆盖的无效等价类。重复此步,直到所有无效等价类被覆盖。通常程序发现一类错误后,就报出错信息,不再检查其它类错误,所以设计测试用例时,一次只覆盖一个无效等价类。5.白盒测试逻辑覆盖(5种)路经测试(流程图转换为程序图)答;白盒测试:也称结构测试。如果知道软件内部工作过程,可以通过测试来检验软件内部动作是否按照规格说明书的规定正常进行,这种测试称为白盒测试。1.语句覆盖:语句覆盖是指:设计的测试用例能使程序中每条语句至少执行一次。 2.判定覆盖:判定覆盖是指:选取足够的测试用例,使得程序中每个判断的可能结果都至少执行一次,也就是说使程序的每个判断分支至少通过一次。3.条件覆盖:条件覆盖是指:选择足够的测试用例,使得程序中每个判定表达式的每个条件都取到各种可能的结果。 4.判定/条件覆盖:判定/条件覆盖是指:选取足够的测试用例使得同时满足判定覆盖和条件覆盖的要求。 5.条件组合覆盖:条件组合覆盖指:选取足够的测试用例,使得每个判定表达式中条件的各种可能的组合都至少出现一次。 路径测试:6.点覆盖:选取足够多的测试用例,使得程序执行路径至少经过程序图中每个节点一次。 7.边覆盖:选取足够多的测试用例,使得程序执行路径至少经过程序图中每条边一次。 8.路径覆盖:选取足够多的测试用例,使得程序的每条可能路径都至少执行一次。6.单元、集成、确认和系统测试的概念及其先后次序答:单元测试 : 单元测试的一般方法是: 首先通过编译系统检查并改正程序中所有的语法错误; 然后用详细设计模块说明为指南,对重要的控制路径进行测试,以便发现模块内部的错误。 通常,单元测试使用白盒测试方法。 集成测试:集成测试是组装软件的系统化技术,它将经过单元测试的模块联系在一起进行测试。确认测试:也称为验收测试,目标是验证软件的有效性。 如果软件的功能和性能符合用户的期待,软件就是有效的。 软件规格说明书是进行确认测试的基础。 系统测试:是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方,从而提出更加完善的方案.1.软件维护的种类答:为了纠正在使用过程中暴露出来的错误而进行的改正性维护;为了适应外部环境的变化而进行的适应性维护;为了改进原有的软件而进行的完善性维护;为了改进将来的可维护性和可靠性而进行的预防性维护。2.什么是软件再工程、软件再工程有哪些活动答预防性维护实质上是软件在工程。软件再工程是指对既存对象系统进行调查,并将其重构为新形式代码的开发过程。最大限度地重用既存系统的各种资源是再工程的最重要特点之一。有六项活动:库存目录分析、文档重构、逆向工程、代码重构、数据重构和正向工程。 总体设计一、总体设计过程通常有两个主要阶段组成:1、 系统设计阶段:确定系统的具体实现方案2、 结构设计阶段:确定软件结构总体设计过程首先寻求实现目标系统的各种不同的方案,需求分析阶段得到数据流程图是设想各种方案的基础。然后分析员从这些提供的选择方案中选取若干合理的方案,为每个合理方案都准备一份流程图,列出组成系统的所有的物理元素,进行成本效益分析,并且制定实现这个方案的进度计划,。分析员应该结合分析比较这些方案,从中选出一个极佳的方案,向用户和使用部门的负责人推荐,如果用户和使用部门负责人接受了这个方案,分析员应该进一步为这个最佳方案设计软件结构,通常,设计出初步的软件结构后还要多方改进,从而得到更合理的结构,进行必要的数据库设计,确定测试要求,并且制定测试计划。二、典型的总体设计包括一下九个步骤:1. 1、设想供选择的方案:2. 选取合理的方案:3. 推荐最佳方案:4. 功能分解:5. 设计软件结构:6. 设计数据库:7. 制定测试计划:8. 书写文档:9. 审查和复审:三、设计原理模块的定义:模块是由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表他。模块化:就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成制定功能的满足用户需求。模块独立:模块化、抽象、信息1软件危机的主要表现:1.对软件的开发成本和进度的估算不准确2.用户对“已完成的”软件系统不满意的现象经常发生3.软件产品的质量往往靠不住4.软件常常是不可维护的。5软件通常没有适当的文档资料6软件成本在计算机系统总成本中所占的比例逐年上升7.跟不上计算机应用迅速普及深入的趋势2产生软件危机的原因:1与软件本身的特点有关2与软件的开发和维护的不正确有关系3软件工程:是指导计算机软件开发和维护的一门工程学科把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是吧工程应用于软件4软件工程方法学:软件工程包括技术和管理两个方面的内容,是技术与管理紧密结合所形成的工程学科。分为传统方法学和面向对象的方法学。5传统方法学也称为生命周期方法学或结构化范型,它采用结果化的技术来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的应用。6面向对象方法学:把对象作为融合了数据及在数据上的操作行为的软件构件2把所有对象

温馨提示

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

评论

0/150

提交评论