软件工程导论复习重点总结很全(第六版).docx
《软件工程导论复习重点总结很全(第六版).docx》由会员分享,可在线阅读,更多相关《软件工程导论复习重点总结很全(第六版).docx(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件工程导论复习重点总结很全(第六版)软件工程导论复习重点总结-很全(第六版) 第1章 软件工程学概述 1.1 软件危机 1.1.1 软件危机的介绍 软件危机(软件萧条、软件困扰):是指在计算机软件的开发和维护过程中所遇到的一系列严峻问题。软件危机包含下述两方面的问题: 如何开发软件,满意对软件日益增长的需求; 如何维护数量不断膨胀的已有软件。软件危机的典型表现: (1)对软件开发成本和进度的估计经常很不精确; (2)用户对“已完成的”软件系统不满足的现象常常发生; (3)软件产品的质量往往靠不住; (4)软件经常是不行维护的; (5)软件通常没有适当的文档资料; (6)软件成本在计算机系统总
2、成本中所占的比例逐年上升; (7)软件开发生产率提高的速度,远远跟不上计算机应用快速普及深化的趋势 。1.1.2 产生软件危机的缘由 (1)与软件本身的特点有关 (2)与软件开发与维护的方法不正确有关 1.1.3 消退软件危机的途径 对计算机软件有正确的相识。相识到软件开发是一种组织良好、管理严密、各类人员协同协作、共同完成的工程项目。应当推广运用在实践中总结出来的开发软件的胜利技术和方法,并接着探讨探究。应当开发和运用更好的软件工具。总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。 1.2 1.2.1 软件工程的介绍 软件工程:是指导计算机软件开发和维护的一门
3、工程学科。采纳工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。(期中考) 软件工程的本质特性: 软件工程关注于大型程序的构造 软件工程的中心课题是限制困难性 软件常常改变 开发软件的效率特别重要 和谐地合作是开发软件的关键 软件必需有效地支持它的用户 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创建产品 1.2.2 软件工程的基本原理 用分阶段的生命周期安排严格管理 坚持进行阶段评审 实行严格的产品限制 采纳现代程序设计技术 结果应能清晰地审查
4、开发小组的人员应当少而精 承认不断改进软件工程实践的必要性 1.2.3 软件工程方法学 软件工程包括技术和管理两方面的内容。 软件工程方法学3要素:方法、工具、过程 1. 传统方法学(生命周期方法学或结构化范型)强调自顶向下 2. 面对对象方法学强调主动地多次反复迭代 面对对象方法学4个要点:对象、类、继承、消息 1.3 软件生命周期 (必考) 三个时期八个阶段:软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)三个时期组成,每个时期又进一步划分成若干个阶段。 1.4 软件过程 1.4.1 瀑布模型 1.4.2 快速原型模型 1.4.3 增量模型 1.4.4 螺旋模型 1.4.5 喷
5、泉模型 第2章 可行性探讨 2.1 可行性探讨的任务 可行性探讨的目的: 不是解决问题,而是确定问题是否值得去解决。 可行性探讨的实质: 进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。可行性探讨的内容: 首先进一步分析和澄清问题定义,导出系统的逻辑模型; 然后从系统逻辑模型动身,探究若干种可供选择的主要解法(即系统实现方案); 对每种解法都探讨它的可行性,至少应当从三方面探讨每种解法的可行性 。主要方面: 技术可行性,经济可行性,操作可行性, 其他方面: 运行可行性, 法律可行性, 2.2 可行性探讨过程 1. 复查系统规模和目标 2
6、. 探讨目前正在运用的系统 3. 导出新系统的高层逻辑模型 4. 进一步定义问题 5. 导出和评价供选择的解法 6. 举荐行动方针 7. 草拟开发安排 8. 书写文档提交审查 2.3 系统流程图 系统流程图:是概括地描绘物理系统的传统工具。表达的是数据在系统各部件之间流淌的状况,而不是对数据进行加工处理的限制过程。2.4 数据流图 2.4.1 符号 基本符号: 数据存储:数据存储是处于静止状态的数据; 数据流:数据流是处于运动中的数据。附加符号: 星号(*):表示“与”关系 加号(+):表示“或”关系 异或():表示互斥关系 2.5 数据字典 数据流图和数据字典共同构成系统的逻辑模型。2.5.
7、1 数据字典的内容 数据字典的组成:数据流 数据流重量(即数据元素) 数据存储 处理 2.5.2 定义数据的方法 方法:对数据自顶向下分解。 数据组成方式(三种基本类型):依次 选择 重复 附加类型:可选 符号: =意思是等价于(或定义为); +意思是和(即,连接两个重量); 意思是或(即,从方括弧内列出的若干个重量中选择一个),通常用“|”号隔开供选择的重量; 意思是重复(即,重复花括弧内的重量);经常运用上限和下限进一步注释表示重复的花括弧。 ( )意思是可选(即,圆括弧里的重量可有可无)。2.5.3 数据字典的实现 计算机实现 人工实现 2.6 成本/效益分析 2.6.1 成本估计:1.
8、 代码行技术 2. 任务分解技术 3. 自动估计成本技术 2.6.2 成本/效益分析的方法 成本/效益分析涉及的4个概念: 1. 货币的时间价值 2. 投资回收期 3. 纯收入 4. 投资回收率:P = F1/( 1 + j ) + F2/( 1 + j )2 + + Fn( 1 + j )n 第3章 需求分析 需求分析的任务: 需求分析是软件定义时期的最终一个阶段,它的基本任务是精确地回答“系统必需做什么?”这个问题。确定系统必需完成哪些工作,也就是对目标系统提出完整、精确、清楚、详细的要求。系统分析员应当写出软件需求规格说明书,以书面形式精确地描述软件需求 3.1 需求分析的任务 确定对系
9、统的综合要求 分析系统的数据要求 导出系统的逻辑模型 修正系统开发安排 3.1.1 确定对系统的综合要求 1. 功能需求 2. 性能需求 3. 牢靠性和可用性需求 4. 出错处理需求 5. 接口需求 6. 约束 7. 逆向需求 8. 将来可能提出的要求 3.1.2 分析系统的数据要求 建立数据模型ER图 描绘数据结构层次方框图和Warnier图 数据结构规范化 3.2 与用户沟通获得需求的方法 访谈:1. 正式访谈 2. 非正式访谈 3. 调查表 4. 情景分析技术 面对数据流自顶向下求精 简易的应用规格说明技术 快速建立软件原型:(1) 第四代技术(4GL)(2) 可重用的软件构件 (3)
10、形式化规格说明和原型环境 3.3分析建模与规格说明 3.3.1 分析建模 需求分析过程应当建立3种模型:数据模型 功能模型 行为模型 数据字典是分析模型的核心 实体-联系图用于建立数据模型的图形 数据流图是建立功能模型的基础 状态转换图是行为建模的基础 3.4 实体-联系图 数据模型中包含3种相互关联的信息:数据对象、数据对象的属性、数据对象彼此间相互连接的关系 3.4 状态转换图 3.6.1 状态 状态图分类: 表示系统循环运行过程,通常不关切循环是怎样启动的。表示系统单程生命期,须要标明初始状态和最终状态。3.6.2 事务 事务就是引起系统做动作或(和)转换状态的限制信息。3.6.3 符号
11、 3.7 其他图形工具 3.7.1 层次方框图 3.7.2 Warnier图 3.7.3 IPO图 3.8 验证软件需求(重点) 3.8.1 从哪些方面验证软件需求的正确性 一样性 完整性 现实性 有效性 第五章 总体设计 5.1 设计过程 由两个主要阶段组成: 系统设计阶段,确定系统的详细实现方案:设想供选择的方案 选取合理的方案 举荐最佳方案 结构设计阶段,确定软件结构:功能分解 设计软件结构 设计数据库 制定测试文档 书写文档 审查和复查 5.2 设计原理 5.2.1 模块化 模块化的作用: 采纳模块化原理可以使软件结构清楚,不仅简单设计也简单阅读和理解。模块化使软件简单测试和调试,因而
12、有助于提高软件的牢靠性。模块化能够提高软件的可修改性。模块化也有助于软件开发工程的组织管理。5.2.2 抽象 5.2.3 逐步求精 5.2.4 信息隐藏和局部化 5.2.5 模块独立 尽量运用数据耦合, 少用限制耦合和特征耦合, 限制公共环境耦合的范围, 完全不用内容耦合。 七种内聚的优劣评分结果: 高内聚:功能内聚 依次内聚 中内聚:通信内聚 过程内聚 低内聚:时间内聚 逻辑内聚 偶然内聚 5.3 启发规则 1. 改进软件结构提高模块独立性 2. 模块规模应当适中 3. 深度、宽度、扇出和扇入都应适当 4. 模块的作用域应当在限制域之内 5. 力争降低模块接口的困难程度 6. 设计单入口单出
13、口的模块 7. 模块功能应当可以预料 5.4 描绘软件结构的图形工具 5.4.1 层次图和HIPO图 1. 层次图(H图) 层次图用来描绘软件的层次结构。很适于在自顶向下设计软件的过程中运用。 2. HIPO图 5.4.2 结构图 5.5 面对数据流的设计方法 结构化设计方法(简称SD方法),也就是基于数据流的设计方法。5.5.1 概念 面对数据流的设计方法把信息流映射成软件结构,信息流的类型确定了映射的方法。信息流有两种类型:变换流 事务流 第6章 具体设计 6.1 结构程序设计 经典的结构程序设计: 只允许运用依次、IF-THEN-ELSE型分支和DO-WHILE型循环这3种基本限制结构;
14、 扩展的结构程序设计: 假如除了上述3种基本限制结构之外,还允许运用DO-CASE型多分支结构和DO-UNTIL型循环结构; 修正的结构程序设计: 再加上允许运用LEAVE(或BREAK)结构。6.2 人机界面设计 6.2.1 设计问题 设计人机界面过程中会遇到的4个问题: 系统响应时间:长度 易变性 用户帮助设施:集成的帮助设施附加的帮助设施 出错信息处理 吩咐交互 6.2.3 人机界面设计指南 一般交互指南 信息显示指南 数据输入指南 6.3过程设计的工具 6.3.1 程序流程图(程序框图) 程序流程图的主要缺点: 程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的限制流程
15、,而不去考虑程序的全局结构。程序流程图中用箭头代表限制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移限制。程序流程图不易表示数据结构。6.3.2 盒图(N-S图) 盒图具有下述特点: 功能域明确。不行能随意转移限制。很简单确定局部和全程数据的作用域。很简单表现嵌套关系,也可以表示模块的层次结构。6.3.3 PAD图 它用二维树形结构的图来表示程序的限制流,将这种图翻译成程序代码比较简单。 PAD图的主要优点如下: 运用表示结构化限制结构的PAD符号设计出来的程序必定是结构化程序。 PAD图所描绘的程序结构非常清楚。PAD图表现程序逻辑易读、易懂、易记。 简单将PAD图转换
16、成高级语言源程序,这种转换可用软件工具自动完成。即可表示程序逻辑,也可描绘数据结构。PAD图的符号支持自顶向下、逐步求精方法的运用。6.3.4 判定表 判定表却能够清楚地表示困难的条件组合与应做的动作之间的对应关系。 全部条件 条件组合矩阵 全部动作 条件组合 对应的动作 判定表的缺点: 判定表的含义不是一眼就能看出来的,初次接触这种工具的人理解它须要有一个简短的学习过程。 当数据元素的值多于两个时,判定表的简洁程度也将下降。6.3.5 判定树 判定树的优点: 它的形式简洁,一眼就可以看出其含义,因此易于驾驭和运用。判定树的缺点: 简洁性不如判定表,数据元素的同一个值往往要重复写多遍,而且越接
17、近树的叶端重复次数越多。画判定树时分枝的次序可能对最终画出的判定树的简洁程度有较大影响。6.3.6 过程设计语言(伪码) 伪代码的基本限制结构: 简洁陈述句结构:避开复合语句。判定结构:IF_THEN_ELSE或CASE_OF结构。选择结构:WHILE_DO或REPEAT_UNTIL结构。 PDL的优点: 可以作为注释干脆插在源程序中间。有助于保持文档和程序的一样性,提高了文档的质量。 可以运用一般的正文编辑程序或文字处理系统,很便利地完成PDL的书写和编辑工作。已经有自动处理程序存在,而且可以自动由PDL生成程序代码。PDL的缺点: 不如图形工具形象直观,描述困难的条件组合与动作间的对应关系
18、时,不如判定表清楚简洁。6.4 面对数据结构的设计方法 面对数据结构的设计方法的最终目标是得出对程序处理过程的描述。 6.4.1Jackson A由B、C、D 3个元素依次组成 依据条件A是B或C或D中的某一个 A由B出现N次(N0)组成 6.4.2 改进的Jackson图 6.4.3 Jackson方法 6.5 程序困难程度的定量度量 6.5.1 McCabe方法 1. 流图(程序图) 2. 计算环形困难度的方法 V(G)=流图中的区域数 V(G)=E-N+2 其中E是流图中的边数,N是结点数 V(G)=P+1 其中P是流图中判定结点的数目 6.5.2 Halstead方法 令N1为程序中运
19、算符出现的总次数,N2为操作数出现的总次数,程序长度N定义为: N=N1+N2 程序中运用的不同运算符(包括关键字)的个数n1,以及不同操作数(变量和常数)的个数n2。预料程序长度的公式如下: H = n1 log2n1 + n2 log2n2 预料程序中包含错误的个数的公式如下: E = N log2 (n1+n2)/3000 第7章 实现 编码和测试统称为实现。 7.1编码 7.1.1 选择程序设计语言 主要的好用标准: 系统用户的要求 可以运用的编译程序 可以得到的软件工具 工程规模 程序员的学问 软件可移植性要求 软件的应用领域 7.1.2 编码风格 1. 程序内部的文档:恰当的标识符
20、 适当的注解 程序的视觉组织 2. 数据说明 3. 语句构造 4. 输入输出 5. 效率:程序运行时间 存储器效率 输入输出的效率 7.2软件测试基础 7.2.1 软件测试的目标 测试是为了发觉程序中的错误而执行程序的过程; 好的测试方案是极可能发觉迄今为止尚未发觉的错误的测试方案; 胜利的测试是发觉了至今为止尚未发觉的错误的测试。 7.2.3 测试方法 黑盒测试(功能测试): 把程序看作一个黑盒子; 完全不考虑程序的内部结构和处理过程; 是在程序接口进行的测试。 白盒测试(结构测试): 把程序看成装在一个透亮的盒子里; 测试者完全知道程序的结构和处理算法; 根据程序内部的逻辑测试程序,检测程
21、序中的主要执行通路是否都能按预定要求正确工作。7.2.4 测试步骤 1. 模块测试(单元测试) 保证每个模块作为一个单元能正确运行; 发觉的往往是编码和具体设计的错误。2. 子系统测试 把经过单元测试的模块放在一起形成一个子系统来测试; 着重测试模块的接口。3. 系统测试 把经过测试的子系统装配成一个完整的系统来测试; 发觉的往往是软件设计中的错误,也可能发觉需求说明中的错误; 不论是子系统测试还是系统测试,都兼有检测和组装两重含义,通常称为集成测试。4. 验收测试(确认测试) 把软件系统作为单一的实体进行测试; 它是在用户主动参加下进行的,而且可能主要运用实际数据(系统将来要处理的信息)进行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 导论 复习 重点 总结 第六
限制150内