您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 2014软件工程期末复习
软件工程期末复习说明:制作此文档目的是总结知识,明确复习重点,减轻复习和备考的负担,提供一些练习题供大家巩固基础知识。一、考试范围1.软件工程学概述2.可行性研究3.需求分析5.总体设计6.详细设计7.实现9.面向对象方法学引论10.面向对象分析13.软件项目管理考试内容以课本为依据。本次考试重点是第1,2,5,6,7章。二、考试内容第一章软件工程学概述1、软件危机(产生原因、克服途径)一般了解2、软件工程(定义、基本原理、方法学)理解3、软件过程(软件生命周期、软件生存期模型)理解4、主要知识点软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。产生危机的原因:(1)与软件本身的特点有关(2)与软件开发与维护的方法不正确有关。软件:软件定义由以下三部分组成:程序、数据结构、文档软件工程定义:软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发和维护软件。把经过时间考验而证明正确的管理技术和当前能够得到的最好技术方法结合起来,以经济地开发出高质量的软件并有效的维护它,这就是软件工程。软件工程7个本质特征:(1)软件工程关注与大型程序的构造(2)软件工程的中心课题是控制复杂性(3)软件经常变化(4)开发软件的效率非常重要(5)和谐地合作是开发软件的关键(6)软件必须有效的支持它的用户(7)在软件工程领域中通常由具有一种文化背景的人替另一种文化背景的人创造产品软件工程的7条基本原理:(1)用分阶段的生存周期计划严格管理;(2)坚持进行阶段评审;(3)实行严格的产品控制;(4)采用现代程序设计技术;(5)结果应能清楚地审查结果;(6)开发小组的人员应该少而精。(7)承认不断改进软件工程实践的必要性。软件工程的基本内容:软件工程学的内容包括技术和管理两方面的内容。软件工程方法学:在软件生命周期全过程中使用的一整套技术方法的集合称为软件工程方法学。软件工程方法学的三个要素:方法、工具和过程。软件生存周期:一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。软件生命周期的3个时期:软件定义、软件开发和软件维护(1)软件定义时期:①问题定义②可行性研究③需求分析。(2)软件开发时期:①总体设计②详细设计③编码和单元测试④综合测试(3)软件维护时期:主要任务是是软件持久地满足用户的需要。软件开发模型:软件开发模型是跨越整个软件生存周期的系统开发、运作、维护所实施的全部工作和任务的结构框架。瀑布模型即生存周期模型,是软件工程的基础模型。其核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作。采用结构化的分析与设计方法,将逻辑实现与物理实现分开。此外,还有快速原型模型、增量模型、螺旋模型、喷泉模型等。第二章可行性研究1、可行性研究的任务熟悉理解2、可行性研究的过程一般了解3、系统流程图一般了解4、数据流图掌握应用5、数据字典(内容、定义数据的方法)掌握应用6、主要知识点可行性研究的任务:用最小的代价在尽可能短的时间内确定问题是否能够解决。一般说来,应从经济可行性、技术可行性、运行可行性、法律可行性和开发方案等方面研究可行性。可行性研究的3个方面:(1)技术可行性:使用现有的技术是否能实现这个系统。(2)经济可行性:这个系统的经济效益能否超过它的开发成本。(3)操作可行性:这个系统的操作方式在这个用户组织内是否可行。可行性研究的8个步骤:(1)复查系统规模和目标研(2)究目前正在使用的系统(3)导出新系统的高层逻辑模型(4)进一步定义问题(5)导出和评价供选择的解法(6)推荐行动方针(7)草拟开发计划(8)书写文档提交审查系统流程图:系统流程图是描绘物理系统的传统工具。数据流图(DFD)(会画):数据流图是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换,是系统逻辑功能的图形表示。数据流图有4种元素:正方形(或立方体)表示数据的源点或终点;圆角矩形(或圆形)代表变换数据的处理;开口矩形(或两条平行横线)代表数据存储;箭头表示数据流,即特定数据的流动方向。数据字典:数据字典是关于数据的信息的集合,即对数据流图中包含的所有元素的定义的集合。数据字典的内容:由四类元素的定义组成(1)数据流;(2)数据流分量(即数据元素);(3)数据存储;(4)处理。第三章需求分析1、需求分析的任务熟悉理解2、需求分析模型(数据模型、功能模型、行为模型)掌握应用3、状态转换图掌握应用4、其他图形工具(层次方框图、Warnier图、IPO图)一般了解5、面向数据流的分析方法理解6、主要知识点需求分析的任务:它的基本任务是准确地回答“系统必须做什么?”这个问题。需求分析的任务不是确定系统如何完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。需求分析建模:数据模型、功能模型、行为模型状态转换图(状态图):指明了作为外部事件结果的系统行为。为此,状态转换图描绘了系统的各种行为模式(状态)和在不同状态间转换的方式。状态转换图是行为建模的基础。面向数据流的需求分析方法:结构化分析方法是面向数据流进行需求分析的方法。结构化分析方法使用数据流图DFD与数据字典DD来描述,面向数据流问题的需求分析适合于数据处理类型软件的需求描述。第五章总体设计1、总体设计的任务熟悉理解2、设计原理(模块化、抽象、逐步求精、信息隐藏)熟悉理解3、模块独立性(耦合、内聚)熟悉理解4、启发规则熟悉理解5、描述软件结构的图形工具(层次图、HIPO图、结构图)一般了解6、面向数据流的设计方法掌握应用7、主要知识点总体设计任务:决定系统“怎样做”。总体设计过程:(1)设想供选择的方案。(2)选取合理的方案。(3)推荐最佳方案(4)功能分解(5)设计软件结构(6)设计数据库(7)制定测试计划(8)书写文档(系统说明、用户手册、测试计划、详细的实现计划、数据库设计结果)(9)审核和复审模块化:模块是由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表它。模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。抽象:就是抽出事物的本质特性而暂时不考虑它们的细节。信息隐蔽:模块中所包括的信息不允许其它不需要这些信息的模块调用。信息局部化:是指把一些关系密切的软件元素物理地放得彼此靠近。模块独立性:是软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中其他的模块接口是简单的。模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。模块独立性的两个定性标准:耦合和内聚。模块独立性比较强的模块应是高内聚低耦合的模块。耦合:衡量不同模块彼此间互相依赖(连接)的紧密程度的度量。耦合强弱取决于模块间接口的复杂程度,调用模块的方式,以及通过接口的信息。(1)非直接耦合:两个模块中的每一个都能独立工作而不需要另一个模块,那么它们彼此完全独立。(2)数据耦合:两个模块间彼此通过参数交换信息,而且交换带信息仅仅是数据。(数据耦合是低耦合,系统中必须存在这种耦合)(3)标记耦合(也称为特征耦合):当把整个数据结构作为参数传递而被调用的模块只需要使用其中一部分数据元素,出现了特征耦合。(4)控制耦合:传递的信息中有控制信息(控制耦合是中度耦合,它增加了系统的复杂程度,它往往是多余的)(5)外部耦合:一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息。(6)公共耦合:当两个或多个模块通过一个公共数据环境互相作用时,它们之间的耦合称为公共耦合。(7)内容耦合:最高程度耦合是内容耦合。出现下列情况之一就出现了内容耦合a)一个模块访问另一个模块的内部数据。b)一个模块不通过正常入口而转到另一个模块内部。c)两个模块有一部分程序代码重叠(只可能出现在汇编中)d)一个模块有多个入口(意味着一个模块有多种功能)内聚:衡量一个模块内部各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。(1)巧合内聚:如果一个模块完成一组人物,这些人物彼此间即使有关系,关系也是松散的,这就是巧合内聚。(2)逻辑内聚:如果一个模块完成的人物在逻辑上属于相同或类似的一类,则称为逻辑内聚。(3)时间内聚:如果一个模块包含的人物必须在同一段时间内执行,则称为时间内聚。(4)过程内聚:如果一个模块内的处理元素是相关的,而且必须以特定次序执行,则称为过程内聚。(5)通信内聚:如果模块中的所有元素都使用同一个输入数据和(或)产生同一个输出数据,则称为通信内聚。(6)顺序内聚:如果一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行,则称为顺序内聚。(7)功能内聚:如果模块内所有处理元素属于一个整体,完成一个单一的功能,则称为功能内聚。启发规则:(1)改进软件结构提高模块的独立性。(2)模块规模应该适中。(3)深度、宽度、扇出、扇入都应适当。(4)模块作用域应该在控制域之内(5)力争降低模块接口的复杂程度(6)设计单入口单出口的模块(7)模块功能可以预测描述软件结构的图形工具:层次图、HIPO图、结构图面向数据结构的分析设计方法:面向数据流的设计方法把信息流映射成软件结构,信息流的类型(包括变换流和事务流)决定了映射的方法(变换分析和事务分析)。面向数据流的设计要解决的任务,就是上述需求分析的基础上,将DFD图映射为软件系统的结构。第六章详细设计1、详细设计的任务熟悉理解2、结构程序设计一般了解3、人机界面设计一般了解4、过程设计的工具掌握应用5、面向数据结构的设计方法掌握应用6、程序复杂程度的定量度量熟悉理解7、主要知识点详细设计阶段的根本目标:确定应该怎样具体的实现所要求的系统。过程设计的工具(会画):程序流程图、盒图、PAD图、判定表、判定树、伪码。程序流程图:程序流程图又称之为程序框图,它是软件开发者最熟悉的一种算法表达工具。N-S图(盒图):是一种符合结构化程序设计原则的图形描述工具。在N-S图也能表示五种基本控制结构。PAD图:问题分析图。它是用结构化程序设计思想表现程序逻辑结构的图形工具。PAD也设置了五种基本控制结构的图示,并允许递归使用。判定表:能够清晰地表示复杂的条件组合与应做的动作之间的对应关系。判定树:优点在于,它的形式简单到不需任何说明,一眼就可以看出其含义,因此易于掌握和使用。面向数据结构的设计方法:主要有两种方法:Jakson方法和Warnier方法。Jackson系统开发方法(JSD)是一种典型的面向数据结构的分析设计方法,它是以信息驱动的,是将信息转换成软件的程序结构。程序复杂程度的定量度量:常用方法:McCabe和Halstead。流图:实质上是“退化了的”程序流程图,它仅仅描绘程序的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。3种根据流图来计算环形复杂度方法:(1)流图中的区域数等于环形复杂度。(2)流图G的环形复杂度√(G)=E-N+2,其中,E是流图中边的条数,N是结点数。(3)流图G的环形复杂度√(G)=P+1,其中,P是流图中判定结点的数目。在源代码中,IF语句、WHILE循环或FOR循环都相当于1个判断,而CASE语句或其他多分支语句相当的判断数等于可能的分支数减1。第七章实现1、编码一般了解2、软件测试基础(测试目的、测试方法、测试准则)熟悉理解3、白盒测试技术(逻辑覆盖、控制结构测试)掌握应用4、黑盒测试技术(等价类划分、边界值分析)掌握应用5、调试(调试过程、调试方法)一般了解6、主要知识点软件测试的目的:在软件投入生产性运行之前,尽可能多地发现软件中的错误。软件测试的准则:(1)所有的测试都应追溯到用户需求(2)应该在测试工作开始前较长时间内就开始编写测试计划(3)Pareto原则应用于软件测试(4)测试应从小规模开始(5)穷举测试是不可能的(6)为了达到最佳效果,应该由独立的第三方来构造测试测试方法:按照测试过程是否在实际应用环境中来分,有静态
本文标题:2014软件工程期末复习
链接地址:https://www.777doc.com/doc-3014129 .html