软件工程期末考试版

上传人:liy****000 文档编号:118819175 上传时间:2019-12-26 格式:DOC 页数:7 大小:507KB
返回 下载 相关 举报
软件工程期末考试版_第1页
第1页 / 共7页
软件工程期末考试版_第2页
第2页 / 共7页
软件工程期末考试版_第3页
第3页 / 共7页
软件工程期末考试版_第4页
第4页 / 共7页
软件工程期末考试版_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《软件工程期末考试版》由会员分享,可在线阅读,更多相关《软件工程期末考试版(7页珍藏版)》请在金锄头文库上搜索。

1、1什么是软件危机,有哪些具体表现形式?简单地讲,软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题表现在以下几个方面:1) 软件发展速度跟不上硬件的发展和用户的需求2) 对软件成本和进度估计不准确,用户不满意3) 软件产品质量差,可靠性不能保证4) 软件产品可维护性差5) 软件没有合适的文档资料2为什么会产生软件危机?概况来说,产生软件危机的原因可以归结于以下两个方面:一方面与软件本身的特点有关。软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。另一方面与软件开发的方式、方法、技术和软件开发人员本身有关。随着软件规模越来越大,软件复杂程度

2、越来越高,原有软件开发方式、方法与技术远远满足不了软件发展的需求,给软件开发、维护带来了一系列严重的问题;同时,软件开发人员缺乏对软件产品正确认识,造成制定计划盲目、编程草率等问题。3解决软件危机的途径?1) 应该加强软件开发过程的管理。2) 推广使用开发软件的成功技术与方法,并且不断探索更好的技术与方法。3) 开发和使用好的软件工具,建立软件工程支持环境。总之,为了解决软件危机,既要有技术措施(好的方法和工具),又要有必要的组织管理措施。4 软件工程的定义及目标?从不同的角度,软件工程有各种不同的定义: 1) Fritz Bauer认为:“软件工程是为了经济地获得能够在实际机器上有效运行的可

3、靠软件而建立和使用的一系列完善的工程化原则。”2) IEEE认为:“软件工程是开发、运行、维护和修复软件的系统方法”,其中,“软件”的定义为:计算机程序、方法、规则、相关的文档资料以及在计算机上运行时所必需的数据。3) 中华人民共和国国家标准GB/T114571995软件工程术语的定义是:“软件工程是软件开发、运行、维护和引退的系统方法”。软件工程的目标可概括为:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足用户要求的软件产品。5 软件工程的基本原理软件工程的7条基本原理:1) 用分阶段的生命周期计划严

4、格管理2) 坚持进行阶段评审3) 实行严格的产品控制4) 采用现代程序设计技术5) 软件工程结果应能清楚地审查6) 开发小组的人员应该少而精7) 承认不断改进软件工程实践的必要性6 什么是软件生存周期,包含哪些阶段?软件生存周期是指从设计软件产品开始到产品不能使用为止的时间周期。概括地说,软件生命周期由软件定义、软件开发和软件维护3个时期组成。划分为问题定义、可行性研究、需求分析、软件设计(含:总体设计与详细设计两个阶段)、编码和单元测试、综合测试、运行/维护7个阶段。7 常用的软件生存周期模型有哪些?1) 瀑布模型:也称线性顺序模型或软件生存周期模型,遵循软件生存期的划分,明确规定各个阶段的

5、任务,各个阶段的工作自上而下、顺序展开。2) 快速原型模型:快速建立一个能反映用户主要需求的原型系统,降低了由于软件需求不明确带来的开发风险。3) 增量模型:将整个产品分解成若干个构件进行逐步交付,使得软件开发可以较好地适应需求的变化。4) 螺旋模型:将瀑布模型与增量模型结合起来,并且加入两种模型均忽略了的风险分析。1. 问题定义是什么,必须明确哪些问题?问题定义即是明确该软件开发项目要解决什么问题。必须明确以下问题:1) 软件系统要完成的总体目标是什么?2) 要开发软件的功能和性能是什么?3) 软件系统在可靠性和质量上有何具体要求?4) 开发该软件系统是否具备可行的技术?5) 当前市场和竞争

6、对手的情况怎样?6) 开发该软件系统是否有成本和进度约束?7) 该软件系统将来可能进行哪些扩充?2. 可行性研究的主要目的是什么?可行性研究的主要目的是用极少的代价在最短的时间内决定被开发的软件是否能开发成功。3. 可行性研究包括哪几方面的内容?1) 经济可行性:通过对被开发软件系统的成本效益的分析,估算系统的开发成本,估计系统可能取得的效益,确定待开发系统是否值得投资开发。2) 技术可行性:从问题定义规格说明书提出的系统功能、性能以及实际系统的各种约束来分析,确定当前的技术及条件是否能实现整个系统。3) 法律可行性:分析在系统开发的全部过程中可能出现和涉及的法律问题,如合同、责任、知识产权、

7、专利等问题。4) 运行可行性:判断新系统的运行方式是否可行。4. 可行性研究的主要工具是什么,有何作用?在进行可行性研究时,使用的主要工具为系统流程图。系统流程图的基本作用是:以黑盒方式描述系统各部件(如人工处理、程序、数据库、图表等),它只描述了信息在系统各部件中的流动情况,不对信息在系统中的加工细节进行描述,所以它不同于程序流程图。5. 需求分析的基本任务是什么?准确定义未来系统的目标,确定为了满足用户的需要系统必须做什么。6. 常用的需求获取方法?1) 访谈和会议2) 市场调查3) 访问用户和用户领域的专家4) 考察现场,跟踪现场业务流程5) 开发人员和用户共同组成联合小组7. 需求分析

8、的描述工具有哪些?实体-关系图(ER)、数据流图(DFD)、数据字典(DD)、判定表、判定树、结构化语言、层次方框图、Warnier图、IPO图和需求描述语言等。8. 结构化分析方法的定义?结构化分析就是使用DFD、DD、结构化语言、判定表和判定树等工具,来建立一种新的称为结构化说明书的目标文档。9. 什么是实体联系图,具有哪些基本成分?实体联系图简称为E-R图。E-R图中包含了实体(即数据对象)、联系和属性等3种基本成分。1) 数据对象:可以由一组属性来定义的实体都可以被认为是数据对象。在E-R图中用矩形框表示。2) 属性:属性定义了数据对象的特征。它可用来:为数据对象的实例命名;描述这个实

9、例;建立对另一个数据对象的另一个实例的引用。在E-R图中用圆角矩形框表示。3) 联系:数据对象彼此之间相互连接的方式称为联系,也称为关系。实体与实体之间的关系,在E-R图中用连接两个实体的菱形框表示。联系可分有3种类型:一对一(1:1)、一对多(1:m)、多对多(n:m)。10. 为什么数据流图要分层?画分层的DFD要遵循哪些原则?分层的目的:便于逐步细化、结构清晰。画分层的DFD要遵循哪些原则:1) 父图与子图之间数据要平衡。2) 分解的深度和层次达到使加工足够简单、易于理解的基本加工为止。3) 区分局部文件和局部外部项(局限于数据流中某一层或某几层的文件和外部项)。4) 不要把控制流作为数

10、据流。5) 忽略琐碎的枝节。6) 每个数据流要有一个合适的名字,尽量使用现实系统中有具体意义的名字。11. 系统流程图与数据流程图有什么区别?系统流程图描述系统物理模型的工具,数据流程图描述系统逻辑模型的工具;系统流程图从系统功能的角度抽象的描述系统的各个部分及其相互之间信息流动的情况;数据流程图从数据传送和加工的角度抽象的描述信息在系统中的流动和数据处理的工作状况。12. 数据字典包括哪些内容?它的作用是什么?数据字典是描述数据流图中数据的信息的集合。它对数据流图上每一个成分:数据项、文件(数据结构)、数据流、数据存储、加工和外部项等给以定义和说明;它主要由数据流描述、加工描述和文件描述三部

11、分组成。对用户来讲,数据字典为他们提供了数据的明确定义;对系统分析员来讲,数据字典帮助他们比较容易修改已建立的系统逻辑模型。4. 什么是模块?模块具有哪些基本属性、特性?模块是数据说明、可执行语句等程序对象的集合,可以单独命名且可通过名字来访问。模块具有3个基本属性:1) 功能:模块实现的功能(含该模块调用的子模块的功能)。2) 逻辑:描述模块内部怎么做。3) 状态:模块使用时的环境和条件。模块具有内部和外部两个特性:1) 外部特性:模块的名字、参数表等。2) 内部特性:完成模块功能的程序代码和模块内部数据。5. 什么是模块化?模块设计的准则?模块化是按规定的原则将一个大型软件划分为一个个较小

12、的、相对独立但又相关的模块。模块设计的准则:1) 改进软件结构,提高模块独立性:在对初步模块进行合并、分解和移动的分析、精化过程中力求提高模块的内聚,降低藕合。2) 模块大小要适中:大约50行语句的代码,过大的模块应分解以提高理解性和可维护性;过小的模块合并到上级模块中。3) 软件结构图的深度、宽度、扇入和扇出要适当。一般模块的调用个数不要超过5个。4) 尽量降低模块接口的复杂程度;5) 设计单入口、单出口的模块。6) 模块的作用域应在控制域之内。7. 变换分析设计的步骤?1) 区分传入、传出和变换中心三部分,划分DFD图的分界线;2) 完成第一级分解:建立初始SC图的框架;3) 完成第二级分

13、解:分解SC图的各个分支;4) 对初始结构图按照设计准则进行精化与改进。8. 事务型数据流由哪几部分组成?事务型数据流图由接受事务、事务中心和若干处理单元输出结果部分组成。9. 事务分析设计的步骤?1) 在DFD图中确定事务中心、接收部分和发送部分; 2) 画出SC图框架,把DFD图的三部分分别映射为事务控制模块、接收模块和动作发送模块。一般得到SC图的顶层和第一层; 3) 分解和细化接收分支和动作分支,完成初始的SC图; 4) 对初始结构图按照设计准则进行精化与改进。 10. 比较层次图和结构图的异同?层次方框图描绘数据的层次结构,结构图描绘的是软件结构。二者都采用多层次矩形框树形结构。层次

14、方框图的顶层矩形框代表完整的数据结构,下面各层矩形框依次代表上个框数据的子集;结构图是在层次图的每一个方框内注明模块的名字或主要功能,方框之间的直线表示模块的调用关系,用带注解的箭头表示模块调用过程中传递的信息。1. 选择编码语言通常需要考虑的因素有哪些?1) 系统的应用领域2) 系统用户的要求3) 软件的执行环境4) 目标系统的性能要求5) 程序员的知识水平6) 软件的可移植性要求7) 算法和数据结构的复杂性2. 编码风格的指导原则?源程序文档化:适当的标识符、适当的注解、程序清单的合理布局与清晰。数据说明:数据结构或数据类型的说明次序标准化;变量名称尽量有意义。对复杂的数据结构在注解中要说

15、明在程序设计中实现这个数据结构的方法。语句结果:语句的构造简单明了:不要为节省空间将多个语句写在同一行;尽量避免复杂的条件及“非”条件的测试;避免大量使用循环嵌套和条件嵌套;括号的使用是为了使逻辑表达式和算术表达式的运算顺序清晰直观。效率:考虑程序运行的时间存储器效率、输入/输出的效率;在处理程序正确性、清晰与效率之间的关系时先求程序正确后求快;先求清楚后求快;保持程序简单以求快;书写清楚,不为“效率”牺牲清晰。3. 什么是软件测试?软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例,并利用这些测试用例去运行程序,以发现程序错误的过程。 4. 软件测试与软件调试的主要区别?1) 测试从一个侧面证明程序员的失败;调试证明程序员的正确;2) 测试从已知条件开始,使用预先定义的程序,且有预知的结果,不可预见的仅是程序是否通过测试;调试从不可知内部条件开始,除统计性调试外,结果是不可预见的;3) 测试有计划并且要进行测试设计;调试不受时间约束;4) 测

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 其它考试类文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号