软件工程导论
第1章 软件工程学概述
复习小结
软件危机
在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件工程
软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
软件工程的本质特征
- 软件工程关注于大型程序的构造
- 软件工程的中心课题是控制复杂性
- 软件经常变化
- 开发软件的效率非常重要
- 和谐地合作是开发软件的关键
- 必须有效地支持它的用户
- 在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品
软件工程的基本原理
1、用分阶段的生命周期计划严格管理
2、坚持进行阶段评审
3、实行严格的产品控制
4、采用现代程序设计技术
5、结果应能清楚地审查
6、开发小组的人员应该少而精
7、承认不断改进软件工程实践的必要性
软件生命周期
- 软件定义
- 软件开发
- 运行维护
增量模型
增量模型也称为渐增模型。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能。
螺旋模型
螺旋模型的基本思想是,使用原型及其他方法来尽量降低风险。理解这种模型的一个简便方法,是把它看作在每个阶段之前都增加了风险分析过程的快速原型模型。
喷泉模型
“喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性。迭代是软件开发过程中普遍存在的一种内在属性。用面向对象方法学开发软件时,工作重点应该放在生命周期中的分析阶段
第2章 可行性研究
复习小结
可行性研究的任务
可行性研究的目的不是解决问题,而是确定问题是否值得去解决。
数据流图
数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。
基本符
-
正方形表示数据的源点或终点
-
圆角矩形代表变换数据的处理
-
开口矩形代表数据存储
-
箭头表示数据流,即特定数据的流动方向
例子
数据字典
? 数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
数字字典内容
- 数据流
- 数据流分量(数据元素)
- 数据存储
- 处理
关系算符
例:用户说明的标识符是长度不超过8个字符的字符串,其中第一个字符必须是字母字符,随后的字符既可以是字母字符也可以是数字字符。
解:标识符=字母字符+字母数字串
? 字母数字串=0{字母或数字}7
? 字母或数字=[字母字符|数字字符]
第3章 需求分析
复习小结
实体联系图ER图
数据模型中包含3种相互关联的信息:数据对象、数据对象的属性及数据对象彼此间相互连接的关系。
教学管理ER图
Warnier图
用Warnier图可以表明信息的逻辑组织,也就是说,它可以指出一类信息或一个信息元素是重复出现的,也可以表示特定信息在某一类信息中是有条件地出现的。
PAD图
判定树
计算环形复杂度

总结
1.结构程序设计技术是进行详细设计的逻辑基础。
2.人机界面设计必须重视。
3.过程设计是详细设计阶段完成的主要工作。
4.在开发有清楚的层次结构时可采用面向数据结构的设计方法完成设计过程设计。
5.使用环形复杂度可以定量度量程序的复杂程度。
第7章 实现
通常把编码和测试统称为实现
测试用例
通常把测试数据和预期的输出结果称为测试用例。
白盒测试
? 白盒测试(又称结构测试)是把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。这种方法按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。
语句覆盖
语句覆盖的含义是,选择足够多的测试数据,使被测程序中每个语句至少执行一次。
判定覆盖又叫分支覆盖,它的含义是,不仅每个语句必须至少执行一次,而且每个判定的每种可能的结果都应该至少执行一次,也就是每个判定的每个分支都至少执行一次。
条件覆盖
条件覆盖的含义是,不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果。
判定/条件覆盖
判定/条件覆盖是一种能同时满足判定覆盖和条件覆盖的逻辑覆盖,它的含义是,选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。
条件组合覆盖
条件组合覆盖是更强的逻辑覆盖标准,它要求选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。
? 从对程序路径的覆盖程度分析,能够提出下述一些主要的逻辑覆盖标准。
? 图论中点覆盖的定义如下:如果连通图G的子图G′是连通的,而且包含G的所有结点,则称G′是G的点覆盖。
? 在第6.5节中已经讲述了从程序流程图导出流图的方法。在正常情况下流图是连通的有向图。满足点覆盖标准要求选取足够多的测试数据,使得程序执行路径至少经过流图的每个结点一次,由于流图的每个结点与一条或多条语句相对应,显然,点覆盖标准和语句覆盖标准是相同的。
? 图论中边覆盖的定义是:如果连通图G的子图G″是连通的,而且包含G的所有边,则称G″是G的边覆盖。为了满足边覆盖的测试标准,要求选取足够多测试数据,使得程序执行路径至少经过流图中每条边一次。通常边覆盖和判定覆盖是一致的。
? 路径覆盖的含义是,选取足够多测试数据,使程序的每条可能路径都至少执行一次(如果程序图中有环,则要求每个环至少经过一次)。
独立路径是指至少引入程序的一个新处理语句集合或一个新条件的路径,即独立路径至少包含一条在定义该路径之前不曾用过的边。
程序的环形复杂度决定了程序中独立路径的数量,而且这个数是确保程序中所有语句至少被执行一次所需的测试数量的上界。
黑盒测试
? 黑盒测试(又称功能测试)把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程。黑盒测试是在程序接口进行的测试,只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息(例如数据库或文件)的完整性。
? 黑盒测试着重测试软件功能。黑盒测试并不能取代白盒测试,它是与白盒测试互补的测试方法,它很可能发现白盒测试不易发现的其他类型的错误。
? 黑盒测试力图发现下述类型的错误:
(1) 功能不正确或遗漏了功能;
(2) 界面错误;
(3) 数据结构错误或外部数据库访问错误;
(4) 性能错误;
(5) 初始化和终止错误。
通常设计测试方案时总是联合使用等价划分和边界值分析两种技术。
小结
1.实现包括编码和测试两个阶段。
2.高级程序设计语言较汇编语言有很多优点。
3.通常软件测试至少分为单元测试、集成测试和验收测试3个基本阶段。
4.软件测试不仅仅指利用计算机进行的测试,还包括人工进行的测试(例如,代码审查)。
5.白盒测试和黑盒测试是软件测试的两类基本方法,设计白盒测试方案的技术主要有,逻辑覆盖和控制结构测试;设计黑盒测试方案的技术主要有,等价划分、边界值分析和错误推测。
6.及时改正测试过程中发现的软件错误就是调试的任务。
7.程序中潜藏的错误的数目,直接决定了软件的可靠性。通过测试可以估算出程序中剩余的错误数。
第8章 维护
1、维护是软件生命周期的最后一个阶段,也是持续时间最长、代价最大的一个阶段。软件工程学的主要目的就是提高软件的可维护性,降低维护的代价。
2、软件维护通常包括4类活动:改正性维护、适应性维护、完善性维护、预防性维护。
3、软件的可理解性、可测试性、可修改性、可移植性和可重用性,是决定软件可维护性的基本因素。
4、在软件生命周期的每个阶段都必须充分考虑维护问题,并且为软件维护预做准备。
5、文档是影响软件可维护性的决定因素。
6、在条件具备时应该主动地进行预防性维护。
试方案时总是联合使用等价划分和边界值分析两种技术。
小结
1.实现包括编码和测试两个阶段。
2.高级程序设计语言较汇编语言有很多优点。
3.通常软件测试至少分为单元测试、集成测试和验收测试3个基本阶段。
4.软件测试不仅仅指利用计算机进行的测试,还包括人工进行的测试(例如,代码审查)。
5.白盒测试和黑盒测试是软件测试的两类基本方法,设计白盒测试方案的技术主要有,逻辑覆盖和控制结构测试;设计黑盒测试方案的技术主要有,等价划分、边界值分析和错误推测。
6.及时改正测试过程中发现的软件错误就是调试的任务。
7.程序中潜藏的错误的数目,直接决定了软件的可靠性。通过测试可以估算出程序中剩余的错误数。
第8章 维护
1、维护是软件生命周期的最后一个阶段,也是持续时间最长、代价最大的一个阶段。软件工程学的主要目的就是提高软件的可维护性,降低维护的代价。
2、软件维护通常包括4类活动:改正性维护、适应性维护、完善性维护、预防性维护。
3、软件的可理解性、可测试性、可修改性、可移植性和可重用性,是决定软件可维护性的基本因素。
4、在软件生命周期的每个阶段都必须充分考虑维护问题,并且为软件维护预做准备。
5、文档是影响软件可维护性的决定因素。
6、在条件具备时应该主动地进行预防性维护。
7、预防性维护实质上是软件再工程。典型的软件再工程过程模型定义了库存目录分析、文档重构、逆向工程、代码重构、数据重构和正向工程6类活动。
原文件笔记可下载
软件工程导论期末复习整理
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!