软件工程导论考试总复习全考点重点总结.docx
《软件工程导论考试总复习全考点重点总结.docx》由会员分享,可在线阅读,更多相关《软件工程导论考试总复习全考点重点总结.docx(50页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件工程导论考试总复习全考点重点总结第1章软件工程学概述1.1 软件危机1.1.1 软件危机的介绍软件危机(软件萧条、软件困扰):是指在计算机软件的开发和维护过程中所遇到的一系列严 重问题。软件危机包含下述两方面的问题:如何开发软件,满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。软件危机的典型表现:(1)对软件开发成本和进度的估计常常很不准确;(2)用户对已完成的软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上计
2、算机应用迅速普及深入的趋势。由两个主要阶段组成:系统设计阶段,确定系统的具体实现方案:设想供选择的方案选取 合理的方案推荐最佳方案结构设计阶段,确定软件结构:功能分解设计软件结构设计数据 库制定测试文档书写文档审查和复查5.2设计原理5.2.1 模块化模块化的作用:采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。模 块化使软件容易测试和调试,因而有助于提高软件的可靠性。模块化能够提高软件的可修改 性。模块化也有助于软件开发工程的组织管理。5.2.2 抽象5.2.3 逐步求精5.2.4 信息隐藏和局部化5.2.5 模块独立尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合
3、的范围,完全不用内容耦合。七种内聚的优劣评分结果:高内聚:功能内聚顺序内聚中内聚:通信内聚过程内聚低内聚:时间内聚逻辑内聚偶然内聚5.2启发规则1 .改进软件结构提高模块独立性2 .模块规模应该适中3 .深度、宽度、扇出和扇入都应适当4 .模块的作用域应该在控制域之内5 .力争降低模块接口的复杂程度6 .设计单入口单出口的模块7 .模块功能应该可以预测5.4描绘软件结构的图形工具5.4.1 层次图和HIPO图1 .层次图(H图)层次图用来描绘软件的层次结构。很适于在自顶向下设计软件的过程中使用。2 . HIPO 图3 .4.2结构图5.4面向数据流的设计方法结构化设计方法(简称SD方法),也就
4、是基于数据流的设计方法。面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法。信息流 有两种类型:变换流事务流第6章详细设计6.1 结构程序设计经典的结构程序设计:只允许使用顺序、IF-THEN-ELSE型分支和DO-WHILE型循环这3种基本控制结构;扩展 的结构程序设计:如果除了上述3种基本控制结构之外,还允许使用DO-CASE型多分支结构和DO-UNTIL 型循环结构;修正的结构程序设计:再加上允许使用LEAVE(或BREAK)结构。6.2 人机界面设计6.2.1 设计问题设计人机界面过程中会遇到的4个问题:系统响应时间:长度易变性用户帮助设施:集 成的帮助设施附加的
5、帮助设施出错信息处理命令交互人机界面设计指南一般交互指南信息显示指南数据输入指南6.3过程设计的工具6.3.1 程序流程图(程序框图)程序流程图的主要缺点:程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考 虑程序的控制流程,而不去考虑程序的全局结构。程序流程图中用箭头代表控制流,因此程 序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。程序流程图不易表 示数据结构。6.3.2 盒图(N-S 图)盒图具有下述特点:功能域明确。不可能任意转移控制。很容易确定局部和全程数据的作用 域。很容易表现嵌套关系,也可以表示模块的层次结构。6.3.3 PAD图它用二维树形结构的图来表示
6、程序的控制流,将这种图翻译成程序代码比较容易。PAD图的主要优点如下:使用表示结构化控制结构的PAD符号设计出来的程序必然是结构 化程序。PAD图所描绘的程序结构十分清晰。PAD图表现程序逻辑易读、易懂、易记。容 易将PAD图转换成高级语言源程序这种转换可用软件工具自动完成。即可表示程序逻辑, 也可描绘数据结构。PAD图的符号支持自顶向下、逐步求精方法的使用。判定表判定表却能够清晰地表示复杂的条件组合与应做的动作之间的对应关系。所有条件条件组合矩阵所有动作条件组合对应的动作判定表的缺点:判定表的含义不是一眼就能看出来的初次接触这种工具的人理解它需要有一个简短的学习 过程。当数据元素的值多于两个
7、时,判定表的简洁程度也将下降。1.1.5 判定树判定树的优点:它的形式简单,一眼就可以看出其含义,因此易于掌握和使用。判定树的缺点:简洁性不如判定表,数据元素的同一个值往往要重复写多遍,而且越接近树的叶端重复次数 越多。画判定树时分枝的次序可能对最终画出的判定树的简洁程度有较大影响。1.1.6 过程设计语言(伪码)伪代码的基本控制结构:简单陈述句结构:避免复合语句。判定结构:IF_THEN_ELSE或CASE_OF结构。选择结构:WHILE_DO 或 REPEATJJNTIL 结构。PDL的优点:可以作为注释直接插在源程序中间。有助于保持文档和程序的一致性,提高了文档的质量。可以使用普通的正文
8、编辑程序或文字处理系统,很方便地完成PDL的书写和编辑工作。已经有自动处理程序存在,而且可以自动由PDL生成程序代码。PDL的缺点:不如图形工具形象直观,描述复杂的条件组合与动作间的对应关系时,不如判定表清晰简单。6.4 面向数据结构的设计方法面向数据结构的设计方法的最终目标是得出对程序处理过程的描述。A由B、C、D 3个元素顺序组成根据条件A是B或C或D中的某一个A由B出现N次(N20)组成6.4.1 改进的Jackson图6.4.2 Jackson 方法6.5 程序复杂程度的定量度量6.5.1 McCabe 方法1 .流图(程序图)2 .计算环形复杂度的方法V(G)浪图中的区域数V(G)=
9、E-N + 2其中E是流图中的边数,N是结点数V(G) = P+1其中P是流图中判定结点的数目6.5.2 Halstead 方法令N1为程序中运算符出现的总次数,N2为操作数出现的总次数,程序长度N定义为:N=N1+N2程序中使用的不同运算符(包括关键字)的个数nl以及不同操作数(变量和常数)的个数n2o预测程序长度的公式如下:H = nl Iog2nl + n2 Iog2n2预测程序中包含错误的个数的公式如下:E = N Iog2 (nl+n2)/3000第7章实现编码和测试统称为实现。7.1 编码7.1.1 选择程序设计语言主要的实用标准:系统用户的要求可以使用的编译程序可以得到的软件工具
10、工程规模程序员的知识软件可移植性要求软件的应用领域7.1.2 编码风格1 .程序内部的文档:恰当的标识符适当的注解程序的视觉组织2 .数据说明3 .语句构造4 .输入输出5 .效率:程序运行时间存储器效率输入输出的效率7.2软件测试基础7.2.1 软件测试的目标测试是为了发现程序中的错误而执行程序的过程;好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;成功的测试是发现了至今为止尚未发现的错误的测试。7.2.3 测试方法黑盒测试(功能测试):把程序看作一个黑盒子;完全不考虑程序的内部结构和处理过程;是在程序接口进行的测试。白盒测试(结构测试):把程序看成装在一个透明的盒子里;测试者完全
11、知道程序的结构和处理算法;按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。7.2.4 测试步骤1 .模块测试(单元测试)保证每个模块作为一个单元能正确运行;发现的往往是编码和详细设计的错误。2 .子系统测试把经过单元测试的模块放在一起形成一个子系统来测试;着重测试模块的接口。3 .系统测试把经过测试的子系统装配成一个完整的系统来测试;发现的往往是软件设计中的错误,也可能发现需求说明中的错误;不论是子系统测试还是系统测试,都兼有检测和组装两重含义,通常称为集成测试。产生软件危机的原因(1)与软件本身的特点有关(2)与软件开发与维护的方法不正确有关消除软件危机的途径
12、对计算机软件有正确的认识。认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。应该推广使用在实践中总结出来的开发软件的成功技术和方法,并继续研究探索。应该开发和使用更好的软件工具。总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。1.21.2.1 软件工程的介绍软件工程:是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和 方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技 术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。(期中 考)软件工程的本质特性:软件工程关注
13、于大型程序的构造4 .验收测试(确认测试)把软件系统作为单一的实体进行测试;它是在用户积极参与下进行的,而且可能主要使用实际数据(系统将来要处理的信息)进行测试;发现的往往是系统需求说明书中的错误。5 .平行运行6 .2.5测试阶段的信息流输入信息有两类:软件配置,包括需求说明书、设计说明书和源程序清单等;测试配置,包括测试计划和测试方案。7.3 单元测试单元测试集中检测模块;单元测试和编码属于软件过程的同一个阶段;可以应用人工测试和计算机测试这样两种不同类型的测试方法;单元测试主要使用白盒测试技术,对多个模块的测试可以并行地进行。模块接口局部数据结构重要的执行通路出错处理通路边界条件7.3.
14、2 代码审查由审查小组正式进行测试称为代码审查;一次审查会上可以发现许多错误,可以减少系统验证的总工作量。7.3.3 计算机测试驱动程序是一个主程序,它接收测试数据,传送给被测试的模块,并且印出有关的结果。存根程序代替被测试的模块所调用的模块。它使用被它代替的模块的接口,可能做最少量的 数据操作,印出对入口的检验或操作结果,并且把控制归还给调用它的模块。7.4 集成测试集成测试是测试和组装软件的系统化技术,主要目标是发现与接口有关的问题。由模块组装成程序时有两种方法:7.4.2 不同集成测试策略的比较混合策略:改进的自顶向下测试方法混合法7.4.3 回归测试7.5 确认测试确认测试也称为验收测
15、试,它的目标是验证软件的有效性。7.5.3 Alpha 和 Beta 测试Alpha测试是在受控的环境中进行的。Beta测试是软件在开发者不能控制的环境中的“真实应用。1 .接口测试2 .路径测试3 .功能测试4 .健壮性测试5 .性能测试7 .信息安全测试8 .压力测试9 .可靠性测试10 .安装/反安装测试确认测试也称为验收测试,它的目标是验证软件的有效性。Alpha测试是在受控的环境中进行的。Beta测试是软件在开发者不能控制的环境中的真实应用。4 .接口测试5 .路径测试6 .功能测试7 .健壮性测试8 .性能测试9 .用户界面测试10 信息安全测试11 压力测试12 可靠性测试13
16、.安装/反安装测试7.6白盒测试技术7.6.1 逻辑覆盖语句覆盖判定覆盖:比语句覆盖强,但对程序逻辑的覆盖程度仍不高。条件覆盖:判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖。判定/条件覆盖:有时判定/条件覆盖也并不比条件覆盖更强。条件组合覆盖:条件组合覆盖标准的测试数据并不一定能使程序中的每条路径都执行到。6 .点覆盖(语句覆盖标准相同)7 .边覆盖(判定覆盖一致)8 .路径覆盖9 .6.2控制结构测试覆盖1 .基本路径测试基本路径测试是Tom McCabe提出的一种白盒测试技术。首先计算程序的环形复杂度; 以该复杂度为指南定义执行路径的基本集合;2 .条件测试从该基本集合导出的测
17、试用例可保证程序中的每条语句至少执行一次,而且每个条件在执行 时都将分别取真、假两种值。3 .循环测试循环测试是一种白盒测试技术,它专注于测试循环结构的有效性。在结构化的程序中通常只有3种循环,即简单循环、串接循环和嵌套循环。4 .7黑盒测试技术7.7.1 等价划分7.7.2 边界值分析773错误推测7.7.3 可靠性基本概念软件可靠性:程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。软件的可用性:程序在给定的时间点,按照规格说明书的规定,成功地运行的概率。第8章维护软件工程的目的是要提高软件的可维护性,减少软件维护所需要的工作量,降低软件系统的 总成本。8.1 软件维护的定义软
18、件维护:在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。可分为4项活动:改正性维护适应性维护完善性维护预防性维护8.2 软件维护的特点8.2.1 结构化维护与非结构化维护差别巨大8.2.2 维护的代价高昂8.2.3 维护的问题很多8.3 软件维护过程1.维护组织2.维护报告3.维护的事件流4.保存维护记录5.评价维护活动8.4软件的可维护性决定软件可维护性的因素主要有7个:可理解性可测试性可修改性可靠性可移植性可使用性效率第9章面向对象方法学引论9.1 面向对象方法学概述9.1.1 面向对象方法学要点(1)认为客观世界是由各种对象组成的,任何事物都是对象(2)把所有对象都划
19、分成各种类对象,每个对象类都定义了一组数据和一组方法(3)按照子类和父类的关系,把若干个对象类组成一个层次结构的系统(4)对象彼此之间仅能通过传递消息相互联系9.1.2 面向对象开发方法面向对象=对象+类+继承+通信9.1.4 面向对象方法组成面向对象的分析面向对象的设计面向对象的程序设计9.1.6 面向对象方法的优点1.与人类习惯的思维方式一致2稳定性好3 .可重用性好4 .可维护性好5 .较易开发大型软件产品6 .2面向对象的概念9.2.1 对象 是客观事物或概念的抽象表述,即对客观存在的事物的描述统称为对象,对象可以是事、物、 或抽象概念,是将一组数据和使用该数据的一组基本操作或过程封装
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 导论 考试 复习 考点 重点 总结
限制150内