资源预览内容
第1页 / 共37页
第2页 / 共37页
第3页 / 共37页
第4页 / 共37页
第5页 / 共37页
第6页 / 共37页
第7页 / 共37页
第8页 / 共37页
第9页 / 共37页
第10页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
软件工程作业题简答题1、 什么叫软件? 软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合 2、 什么叫软件危机?软件危机包含哪两点?软件危机产生的原因是什么? 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。包括两点: (1) 如何开发软件,以满足对软件日益增长的需求; (2)如何维护数量不断膨胀的已有软件。这些问题具体表现在以下几个方面: (1)用户对开发出的软件很难满意。 (2)软件产品的质量往往靠不住。 (3)一般软件很难维护。 (4)软件生产效率很低。 (5)软件开发成本越来越大。 (6)软件成本与开发进度难以估计。 (7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。 3、 什么叫软件工程? 版本 1:软件工程是指导计算机软件开发和维护的工程学科。它采用工程的概念、原理、技术和方法来开发和维护软件;它将管理技术与当前经过时间考验的而证明是正确的技术方法结合起来;它强调使用生存周期方法学和结构分析和结构技术;经过人们长期的努力和探索,围绕着实现软件优质高产这个目标,从技术到管理两个方面做了大量的努力,逐渐形成了”软件工程学”这一新的学科。 版本 2:1968 年在第一届 NATO 会议上的早期定义:“建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法” 。 1993 年 IEEE 的定义: “软件工程是:把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;进而研究实现的途经 我们国家最近定义:软件工程是指导计算机软件开发和维护的工程学科。它采用工程的概念、 原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得 到的最好的技术方法结合起来 4、 两种软件工程方法学开发软件时要建立哪些模型? 瀑布模型(需求稳定,而且可以预先指定) 原型模型(需求模糊或者随时间变化) 增量模型(分析员先作出需求分析和概要设计,用户参与逐步完善) 螺旋模型(将瀑布模型与原型化模型结合起来,并加入了风险分析) 喷泉模型(使开发过程具有迭代性和无间隙性) 5、 软件过程模型有哪些?简述它们的特点。过程模型分为五大类:1.管理过程模型。2.瀑布模型(又称为生命周期模型) 。3.增量过程模型:包括增量模型、RAD 模型。4.烟花过程模型:包括 原型开发模型、螺旋模型、协同开发模型。 5.专用过程模型:包括 机遇构建的开发模型、形式化方法模型、面向方面的软件开发模型。 6、 什么是软件生命周期?一个软件从定义、开发、使用和维护,知道最终被废弃,要经历一个毛长的时期,通常把软件经历的这个漫长的时期成为生命周期。 7、 软件生命周期有哪几个阶段和步骤?软件开发过程生命周期各个阶段的基本任务1)软件定义(1) 问题定义(2) 可行性研究(3) 需求分析系统必需完成哪些任务2)软件开发(1) 总体设计概括地说,系统如何实现(2) 详细设计(3) 编码和单元测试(4) 综合测试3)软件维护(1) 改正性维护(2) 适应性维护(3) 完善性维护(4) 预防性维护8、 计算机软件的开发经过哪三个大阶段? 三个阶段:定义、开发、维护 9、 软件开发的各阶段的任务是什么? 定义阶段:问题定义、可行性研究、需求分析;开发阶段:总体设计、详细设计、编码与单 元测试、综合测试;维护阶段:运行维护 10、 软件设计分哪两个阶段?总体设计的两个阶段分别是什么? 分为总体设计和详细设计两个阶段。 总体设计包括系统设计 (划分出组成系统的程序、文件、 数据库、人工过程和文档等物理元素)和结构设计(确定系统中每个程序是由哪些模块组成 的,以及这些模块相互间的关系,不涉及模块内部算法流程) 11、 软件与硬件的区别是什么? 软件是一种逻辑部件,而不是具体的物理部件。软件在开发、生产、使用、维护等方面与硬 件相比有明显差异。 软件是开发,硬件是制造 软件是自定的,硬件是组装的 软件不会磨损,硬件存在机械磨损问题 12、 软件需求分析的任务是什么? 需求分析的任务是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。一般说来,需求分析的任务包括下述几方面: (1).确定对系统的综合要求 (主要有: 功能需求、 性能需求、 运行需求、 将来可能提出的需求。 ) (2).分析系统的数据要求 (3).导出系统的逻辑模型:数据流图、实体-联系图、状态转换图、数据字典、算法流程等(4).修正系统开发计划 13、 瀑布模型与原型模型分别适用于开发哪些软件? 瀑布模型与原型模型分别适用于开发哪些软件瀑布模型适合于需求稳定,而且可以预先指定的大型系统工程项目。 原型模型适合于需求模糊或者随时间变化的中小型项目 14、 数据流图的作用是什么? 数据流图简称 DFD(Data Flow Diagram)图,它是以特定的图形符号描述系统逻辑模型的工数据流图 具; 它从数据传送和加工的角度抽象的描述信息在系统中的流动和数据处理的过程; 它是开发人员与用户之间交流信息的通信工具;它也是系统分析与系统设计的工具。数据流图画法总结 (1).先找出数据源点和汇点。它们是外部实体,由它们确定系统与外界的接口。 (2).找出外部实体的输出数据流与输入数据流。画出顶层数据流图。 (3).从顶层加工出发,逐步细化,画出所需子图。 (4).分析系统的主要处理功能,把每一个处理功能作为一个加工,并且确定它们之间的数据流 入、流出关系,画出第一层数据流图。 (5). 对流图中的每个加工进行细化,画出所需的子图,直到加工不需再分解为止。 (6).按照前面给出原则检查和修改每一层数据流图和子图 15、 什么叫数据字典?如何写数据字典? 数据字典是描述数据流图中数据的信息的集合(描述内容包括:数据流图、状态转换图、数据字典 E-R 图中的数据信息(数据流、数据存储、外部实体) 、控制信息(事件)等,不包括处理 ) 。 如何写? 数据元素的组合方式 顺序:即以确定的次序连接两个或多个分量。例:A+B 选择:即从两个或多个可能的元素中选取一个。例:A|B 重复:即把指定的分量重复零次或多次。例:1A5 可选:即一个分量是可有可无的(重复零次或一次) 16、 软件设计的原则有哪些? 模块化、抽象与逐步求精、信息隐藏于局部化,模块独立。17、耦合与内聚分别有哪些?如何定义?如何区分? 耦合衡量不同模块彼此间互相依赖(连接)的紧密程度 内聚衡量一个模块内部各个元素彼此结合的紧密程度 耦合的种类: 数据耦合:如果两个模块间的通讯信息是若干参数,其中每一个参数都是一个数据元素,称 数据耦合 这种耦合为数据耦合。这是模块之间影响最小的耦合关系。 标记耦合:当把整个数据结构作为参数传递而被调用模块只需要使用其中一部分数据元素标记耦合时,这种情况称为标记耦合。 控制耦合: 那么 A 和 B 之间 控制耦合如果模块 A 向模块 B 所传递的信息控制了模块 B 的内部逻辑,的耦合称为控制耦合。 公共耦合:如果两个或多个模块都和同一个公共数据域有关,则称为公共耦合。 公共耦合 公共耦合是一种不良的耦合关系,它给模块的维护和修改带来困难。 如果两个模块共享的数据很多,都通过参数传递很不方便时,可以利用公共耦合。 内容耦合:如果一个模块和另一个模块的内部属性(即运行程序和内部数据)有关,则称为 内容耦合。 功能内聚:如果一个模块内部的各组成部分的处理动作全都为执行同一个功能而存在, 并且 功能内聚: 只执行一个功能,则称为功能内聚。判断一个模块是不是功能内聚,只要看这个模块是“做什么” 是完成一个具体的任务,还是完成多任务。 顺序内聚:如果一个模块内部的各个组成部分执行的几个处理动作有这样的特征: 前一个处 顺序内聚:理动作所产生的输出数据是后一个处理动作的输入数据,称为顺序内聚。顺序内聚维护起来不如功能内聚方便, 要修改模块中的一个功能, 会影响到同一个模块中的 其他功能。 通讯内聚: 如果一个模块内各组成部分的处理动作都使用相同的输入数据或产生相同的输通讯内聚 出数据,称为通讯内聚。 过程内聚:如果一个模块内部的各个组成部分的处理动作各不相同,彼此也没有联系,但他 们都受同一个控制流支配,决定他们的执行次序,称为过程内聚。 暂时内聚(时间内聚):如果一个模块内的各组成部分的处理动作和时间有关,则称为暂时 : 内聚。暂时内聚模块的处理动作必须在特定的时间内完成。-指在一个特定的时间范围内 完成,但完成次序不重要。例如:程序设计中的模块的初始化。 逻辑内聚:如果一个模块内部的各组成部分的处理动作在逻辑上相似, 但功能都彼此不同或 逻辑内聚: 无关,则称为逻辑内聚。一个逻辑内聚模块往往包括若干个逻辑相似的动作,使用时可以选 用一个或几个功能。例如:把编辑各种输入数据的功能放在一个模块中。机械内聚(偶然内聚): 如果一个模块的内部各组成部分的处理动作彼此没有任何联系,则 : 称为机械内聚 18、 详细设计阶段用到了哪些图形工具? 程序流程图(PFD) 盒图(N-S 图) 问题分析图(PAD) 判定表/判定树 (其他非图形工具有过程设计语言(PDL) 19、 软件工程的启发式规则有哪些? A.当模块过大时就应该分解它。 一般按功能分解到成为一个小的功能单一的模块为止。一般一个模块内包含的语句在 30-50 条左右较好(指高级语言) 。分解后不应该降低模块的独立性。 B. 深度、宽度、扇出和扇入都应适当。好的设计结构通常是顶层扇出比较高,中层扇出比较少,底层扇入到公共的实用模块中去(底层模块有高扇入) 。模块的独立性是贯穿始终的 标准,不能为了追求其它目标而违背独立性标准。 C.对于任何一个内部存在判断调用的模块, 它的判断作用的范围应该是其控制范围的一个子 集。 存在判断调用的模块, 所在层次不要与那些属于判断作用范围的模块所在的层次相隔太 远-越近越好。 D. 力争降低模块接口的复杂程度。模块接口复杂是软件发生错误的一个主要原因。应该仔细设计模块接口,使得信息传递简单并且和模块的功能一致。接口复杂或不一致(即看起来 传递的数据之间没有联系) ,是紧耦合或低内聚的征兆,应该重新分析这个模块的独立性。 E.设计单入口单出口的模块: 防止出现内容耦合-多入口 (多种处理功能) 意味着内容耦合。 F.模块功能应该可以预测-模块是黑合子,输入相同则输出相同,其内部数据结构和接口 受到限制。模块的功能应该能够预测,但也要防止模块功能过分局限。过分局限将导致模块 灵活性太差,会出现使用现场的修改。 20、 模块的作用域与控制域分别指什么? 模块的控制域:本身及其所有下级模块(包括直接和间接下级模块) 。 模块的作用域:受该模块内一个判定影响的所有模块的集合 21、 模块的扇入、扇出、深度、宽度分别是什么意思? 深度表示软件结构中控制的层数-粗略的标志一个系统的大小和复杂程度。 宽度是软件结构同一层次上的模块总数的最大值-宽度越大系统越复杂。 模块的扇出指一个模块拥有的直属下级模块的个数,一般扇出数控制在 7 以内,平均为 3或 4。模块的扇入是指一个模块的直接上级模块的个数。 22、 软件测试的目的是什么? 软件测试是为了发现错误而执行程序的过程; 测试是程序的执行过程,目的在于发现错误; 软件测试绝对不是要证明程序的正确性, 也证明不了程序的正确性。 23、 单元测试有那些内容?单元测试主要针对模块的以下五个基本特征进行测试:1.模块接口 2.局部数据结构 3.重要的执行路径 4.错误处理 5.边界条件 24、 什么是集成测试?非渐增式和渐增式有什么区别?渐增式如何组装模块?集成测试:将模块组合起来成为一个完整的系统对其进行测试。 非渐增式是将模块先进行单元测试然后组装在一起进行测
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号