您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 软件工程导论-期末复习题
第一章1、什么是软件工程?软件工程方法学包括哪三要素?答:概括地说,软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。软件工程方法学三要素:方法、工具、过程。目前使用得最广泛的软件工程方法学:传统方法学、面向对象方法学。2、传统方法学与面向对象方法学定义传统方法学也称为生命周期方法学或结构化范型。它采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。这种方法学把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务。面向对象方法学:面向对象方法把数据和行为看成是同等重要的,它是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。面向对象方法学具有下述4个要点:(1)把对象作为融合了数据及在数据上的操作行为的软件构件。(2)把所有对象都划分成类。(3)按照父类(或称为基类)与子类(派生类)的关系,把若干个相关类组成一个层次结构的系统。(4)对象彼此间只能通过发送消息互相联系。3、软件生命周期有哪些阶段?软件生命周期由软件定义、软件开发和软件维护3个时期组成,每个时期又进一步划分为若干个阶段。软件定义时期分3阶段:问题定义、可行性研究、需求分析。开发时期分4个阶段:总体设计、详细设计、编码和单元测试、综合测试。其中前两个阶段称为系统设计,后两个称为系统实现。维护时期的主要任务是使软件持久地满足用户的需要。第二章1、为什么要进行可行性研究,要从哪几个方面研究?可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。可行性研究至少应从3个方面研究:技术可行性、经济可行性、操作可行性。必要时还应从法律、社会效益等更广泛的方面研究每种解法的可行性。2、可行性研究的步骤(8个)(1)复查系统规模和目标(2)研究目前正在使用的系统(3)导出新系统的高层逻辑模型(4)进一步定义问题(5)导出和评价供选择的解法(6)推荐行动方针(7)草拟开发计划(8)书写文档提交审查第三章1、什么是需求分析?需求分析的任务是什么?需求分析是软件定义时期的最后一个阶段,它的基本任务是准确的回答“系统必须做什么”这个问题。需求分析的任务:(1)确定对系统的综合要求(2)分析系统的数据要求(3)导出系统的逻辑模型(4)修正系统开发计划2、与用户沟通获取需求的方法是什么?(1)访谈(2)面向数据流自顶向下求精(3)简易的应用规格说明技术(4)快速建立软件原型3、情景分析技术的用处体现在哪两方面?(1)它能在某种程度上演示目标系统的行为,从而便于用户理解,而且还可能进一步揭示出一些分析员目前还不知道的需求。(2)由于情景分析较易为用户所理解,使用这种技术能保证用户在需求分析过程中始终扮演一个积极主动的角色。4、在哪些方面验证软件需求的正确性4个方面:一致性、完整性、现实性、有效性。5、什么是数据流图,其中有哪4种元素?(给定需求描述,画数据流图,大题。)数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程,是系统逻辑功能的图形表示。4种元素:(1)正方形(或立方体)表示数据的源点或终点(2)圆角矩形(或圆形)代表变换数据的处理(3)开口矩形(或两条平行横线)代表数据存储(4)箭头表示数据流。第五章1、什么是总体设计总体设计的基本目的就是回答“概括地说,系统应该如何实现”这个问题,因此总体设计又称为概要设计或初步设计。2、在软件设计过程中,需要遵循哪些基本原理?(1)模块化(2)抽象(3)逐步求精(4)信息隐藏和局部化(5)模块独立3、解释模块化,模块化的好处模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。好处:采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。因为程序错误通常局限在有关的模块及它们之间的接口中,所以模块化使软件容易测试和调试,因而有助于提高软件的可靠性。因为变动往往只涉及少数几个模块,所以模块化能够提高软件的可修改性。模块化也有助于软件开发工程的组织管理,一个复杂的大型程序可以由许多的程序员分工编写不同的模块,并且可以进一步分配技术熟练的程序员编写困难的模块。4、启发规则有哪些?共7个:(1)改进软件结构提高模块独立性(2)模块规模应该适中(3)深度、宽度、扇出和扇入都应适当(4)模块的作用域应该在控制域之内(5)力争降低模块接口的复杂程度(6)设计单入口单出口的模块(7)模块功能应该可以预测5、什么是功能结构图功能结构图是描绘软件结构的图形工具,图中一个方框代表一个模块,框内注明模块的名字或主要功能;方框之间的箭头(或直线)表示模块的的调用关系。第六章1、详细设计我们要做什么详细设计阶段的根本目标是确定应该怎样具体的实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。2、在进行人机界面设计时应考虑哪些问题?系统响应时间、用户帮助设施、出错信息处理、命令交互。3、出错信息处理出错信息和警告信息,是出现问题时交互式系统给出的“坏消息”。出错信息设计的不好,将向用户提供无用的甚至误导的信息,反而会加重用户的挫折感。一般说来,交互式系统给出的出错信息或警告信息,应该具有下述属性:(1)信息应该用用户可以理解的术语描述问题。(2)信息应该提供有助于从错误中恢复的建设性意见。(3)信息应该指出错误可能导致哪些负面后果,以便用户检查是否出现了这些问题,并在确实出现问题时及时解决。(4)信息应该伴随着听觉上或视觉上的提示。(5)信息不能带有指责色彩,也就是说,不能责怪用户。4、什么是程序处理流程图程序流程图又称为程序框图,它是历史最悠久、使用最广泛的描述过程设计的方法。5、什么是数据库的设计,数据库设计阶段我们应该做什么数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求。数据库设计阶段内容:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库的实施和数据库的运行和维护。第七章1、如何选择程序设计语言根据下面的主要的实用标准:(1)系统用户的要求(2)可以使用的编译程序(3)可以得到的软件工具(4)工程规模(5)程序员的知识(6)软件可移植性要求(7)软件的应用领域2、软件测试的方法有哪些黑盒测试、白盒测试。3、测试步骤有哪些,解释系统测试步骤:(1)模块测试(2)子系统测试(3)系统测试(4)验收测试(5)平行运行系统测试是把经过测试的子系统装配成一个完整的系统来测试。在这个过程中不仅应该发现设计和编码的错误,还应该验证系统确实能提供需求说明书中指定的功能,而且系统的动态特性也符合预定要求。在这个测试中步骤中发现的往往是软件设计中的错误,也可能发现需求说明中的错误不论是子系统测试还是系统测试,都兼有检测和组装两重含义,通常称为集成测试。4、白盒测试中怎样设计测试用例(1)逻辑覆盖(2)控制结构测试下面是网上查找的答案:(1)保证一个模块中的所有独立路径至少被使用一次(2)对所有逻辑均需测试(3)在上下边界及可操作范围内运行所有循环(4)检查内部数据结构以确保其有效性5、黑盒测试中怎样设计测试用例(1)等价划分(2)边界值分析(3)错误推测第八章1、维护阶段有哪些因素决定软件的可维护性(1)可理解性(2)可测试性(3)可修改性(4)可移植性(5)可重用性可重用性:所谓重用是指同一事物不做修改或稍加改动就在不同环境中多次重复使用。大量使用可重用的软件构件来开发软件,可以从下述两个方面提高软件的可维护性:(1)通常,可重用的软件构件在开发时都经过很严格的测试,可靠性比较高,且在每次重用过程中都会发现并清除一些错误,随着时间推移,这样的构件将变成实质上无错误的。因此,软件中使用的可重用构件越多,软件的可靠性越高,改正性维护需求就越少。(2)很容易修改可重用的软件构件使之再次应用在新环境中,因此,软件中使用的可重用构件越多,适应性和完善性维护也就越容易。第十章1、面向对象的方法需要建立哪三种模型对象模型、动态模型、功能模型。2、面向对象中的三个子模型和五个层次3个子模型:对象模型、动态模型、功能模型。5个层次:主题层、类与对象层、结构层、属性层、服务层。3、解释结构层(类和对象的关系)第十三章1、什么是软件质量概括地说,软件质量就是“软件与明确地和隐含地定义的需求相一致的程度”。更具体地说,软件质量是软件与明确地叙述的功能和性能需求、文档中明确描述的开发标准以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度。
本文标题:软件工程导论-期末复习题
链接地址:https://www.777doc.com/doc-1666379 .html