软件工程概论(原)
2017-11-02 15:31:18 0 举报
AI智能生成
软件工程概论
作者其他创作
大纲/内容
第8章 维护
8.1 软件维护的定义
进行软件维护的原因
8.2 软件维护的分类
- 改正性维护
- 完善性维护
- 适应性维护
- 预防性维护
四类维护占总维护的比例
8.3 软件维护的特性
8.3.1 软件维护的困难
-结构化维护
-非结构化维护
8.3.2 维护代价高昂
8.3.3 软件维护的副作用
(1)修改代码的副作用
(2)修改数据的副作用
(3)修改文档的副作用
8.4 软件维护过程
软件维护过程的本质
具体过程:
维护事件流(标准的事件序列)
8.5 软件的可维护性
- 概念
- 影响因素
8.6 提高可维护性的途径
第9章 面向对象的技术
9.1 面向对象方法学
9.1.1 两种方法学的比较
(1)与人类习惯的思维方法一致
(2)系统稳定性好
(3)可重用性好
(4)较易开发大型软件产品
(5)可维护性好
9.1.2 面向对象的基本概念
对象(object):
类(class)
继承(Inheritance)
多态性(Polymorphism)
消息(message)
9.1.3 面向对象的开发方法
Booch方法
Coad方法
OMT方法
UML
9.2 面向对象的实施步骤
(1)面向对象分析
(2)面向对象设计
(3)面向对象实现
(4)面向对象测试
9.3 面向对象的建模语言—UML
9.3.1 UML的特点
(1)统一标准
(2)面向对象
(3)可视化、表示能力强
(4)独立于过程
(5)易掌握、易用
9.3.2 UML的构成
(1)视图
(1)用例视图
(2)设计视图
(3)过程视图
(4)实现视图
(5)配置视图
视图
(2)图
(1)用例图(Use Case Diagram)
(2)静态图(Static Diagram)
(3)行为图(Behavior Diagram)
(4)交互图(Interactive Diagram)
(5)实现图(Implementation Diagram)
(3)模型元素
(4)通用机制
9.3.3 UML的通用模型元素
常用的模型元素
连接关系的模型元素
通用模型元素分为以下两类:
第10章 面向对象的需求分析
10.1 用例图
三个重要元素
用例图模型
10.2 用例建模的步骤
10.2.1 定义系统边界
10.2.2 确定参与者
10.2.3 识别用例
10.2.4 确定用例之间的关系
关联关系
包含关系
扩展关系
10.5
泛化关系
用例间3种关系的比较
10.3 书写用例描述文档
10.4 用例模型的建立
第11章 面向对象的分析(无)
第12章 面向对象的设计与实现
12.1 面向对象设计准则
(1)模块化
(2)抽象
(3)信息隐藏
(4)弱耦合
(5)强内聚
(6)可重用
12.2 面向对象启发规则
12.3 面向对象的实现
12.3.1 面向对象语言
(1) 面向对象语言的优点
(2) 面向对象语言的技术特点
(3) 面向对象语言的选择
12.3.2 程序设计风格
12.3.3 从设计产品到代码
1. 将类图映射为代码
(1)单个类映射为代码
(2)包映射为路径
(3)继承机制的映射
(4)类间关联关系的映射
2. 活动图映射为代码
3. 状态图映射为代码
4. 顺序图映射为代码
12.4 面向对象的软件测试
面向对象软件测试的特点:
面向对象测试的主要活动包括:
12.4.1 面向对象测试模型
12.4.2 面向对象分析测试
12.4.3 面向对象设计测试
12.4.4 面向对象编程测试
12.4.5 面向对象单元测试
12.4.6 面向对象集成测试
12.4.7 面向对象系统测试
12.4.8 面向对象确认测试
12.4.9 测试用例的设计
1. 测试类的方法
(1)随机测试
(2)划分测试
(3)基于故障的测试
2. 集成测试方法
(1)多类测试。
(2)从动态模型导出测试用例。
第1章 软件工程学概述
1.1 软件危机
1.1.1 软件的定义(判断选择名词解释)
软件的经典定义:
软件的特征:
软件危机的定义
1.1.2 软件危机的表现(判断选择简答题)
1)对软件开发成本和进度的估计常常很不准确。
2)软件产品质量较差,可靠性低。
3)用户对开发出来的软件产品不满意。
4)软件常常是不可维护的
5)软件产品缺少应有的文档资
6)软件产品的供不应求。
1.1.3 产生软件危机的原因(简答题)
客观原因:
主观原因:
1.2 软件工程
1.2.1 软件工程的概念(判断选择名词解释)
软件工程的定义
IEEE的定义
1.2.2 软件工程的基本原理(简答题)
1)用分阶段的生命周期计划严格管理
2)坚持进行阶段评审
3)实行严格的产品控制
4)采用现代程序设计技术
5) 结果可以清楚地审查
6)开发小组成员少而精
7)承认不断改进软件工程实践的必要性
1.2.3 软件工程方法学(选择填空)
方法学概念和分类
传统方法学
面向对象方法学
1.3 软件生命周期
1.3.1 软件生命周期的概念
软件生命周期的定义(名词解释填空)
软件生命周期的构成(重要)
软件定义时期:
问题定义
可行性研究
需求分析
软件开发时期:
总体设计(概要设计)
详细设计(模块设计)
编码和单元测试
综合测试
维护时期:
软件维护
1.3.2 软件生命周期的模型
软件生命周期模型的定义
瀑布模型—线性模型之一(选择判断简答题)
瀑布模型
瀑布模型的特点:
瀑布模型的问题:
原型模型
原型模型
快速原型模型的特点:
快速原型模型的问题:
增量模型
增量模型
增量模型
增量模型的特点:
增量模型的问题:
喷泉模型
喷泉模型
问题探讨
问题一
问题二
第2章 可行性研究
2.1 可行性研究的目标与任务
研究软件工程项目可行性应从那几个方面分析:
2.2 可行性研究过程
1)复查系统规模与目标
2)研究目前正在使用的系统
3)导出新系统的高层逻辑模型
4)导出与评价各种方案
5)推荐行动方针
6)草拟开发计划
7)书写文档提交审查——《可行性研究报告》
2.3 可行性研究工具
系统流程图
流程图符号表
基本符号表(概括描述系统)
基本符号表(概括描述系统)
例题
库存清单系统的高层系统流程图
数据流程图
数据流图的基本图形符号
数据流图的基本图形符号
数据流图的基本图形符号
数据流图元素命名原则
(1)数据流(数据存储)的命名
(2)数据加工的命名
(3)为数据源点/终点命名
数据流图的层次结构
分层的数据流图
画数据流图的基本步骤
1)先找外部实体(可以是人、物或其他软件系统)
2)找出外部实体的输入和输出数据流;
3)在图的边上画出系统的外部实体;
4)从外部实体的输出流(源点)出发,
5)对初步画出的数据流图进行检查和修改。
6)最后按照上述步骤画出所有子图。
检查和修改数据流图的原则
数据流图的用途
例题
例1
定货系统的顶级数据流图
定货系统的一级数据流图
定货系统的二级数据流图
例2
计算机储蓄系统数据流图
例3
患者监护系统的基本系统模型
患者监护系统的功能级数据流图
例4
主文件修改系统的基本系统模型
主文件修改系统的功能级数据流图
2.4 成本/效益分析
成本估价
代码行技术
任务分解技术
自动估计成本技术
效益分析
常用的效益度量方法
例题
问题图
答案:
第3章 需求分析
3.1 需求分析的任务和步骤
(1)确定对系统的综合要求
功能性需求
非功能性需求
(2)分析系统的数据要求
(3)建立软件的逻辑模型
(4)编写软件需求规格说明书
(5)需求分析评审
3.2 需求获取的常用方法
1、访谈
(1)访谈对象
访谈类型表
(2)访谈中的沟通技巧
2、问卷调查
(1)问卷的特点
(2)使用方法
3.观察用户工作流程
4.建立联合分析小组
5.快速原型法
过程:
使用时应注意以下几点
3.3 需求分析的方法
1.功能分解方法
2.结构化开发方法
3.信息建模方法
4.面向对象的分析
3.4 结构化分析技术
分析过程
思路
分析工具
3.5 需求分析图形工具
3.5.1 实体-联系图
实体
属性
联系
如何区分实体和属性
一般原则
例题
符号
E-R符号图
例题
例题1
例一
例题2
例二
例题3
例三
例4
例4-1
例4-2
例4-3
3.5.2 数据字典
基本功能
定义组成
数据流图中每一个被命名的图形元素包含
数据定义的方法
可以使用的符号:
数据字典的实现
数据字典的实现
例题1
定货报表在DD中的定义1
定货报表在DD中的定义 2
定货报表在DD中的定义3
定货报表在数据字典中的表示
练习-1:
答案
练习-2:
答案
3.5.3 层次方框图
层次方框图:
例1
例一
例2
例二
3.5.4 IPO图
定义
IPO图
改进的IPO图
3.6习题
第4章 总体设计
4.1 总体设计的目标及任务
总体设计
过程
总体设计的基本目的
总体设计的两个阶段
1、设计软件结构
2.数据结构及数据库设计
3.确定测试要求并制定测试计划
4、编写总体设计文档《概要设计说明书》
5、评审
4.2 软件结构设计原理
软件结构设计(结构化方法)
4.2.1 模块化
“由大化小,各个击破”
模块
模块的基本属性:
模块化
4.2.2 抽象
抽象
各阶段
逐步求精
4.2.3 信息隐藏和局部化
4.2.4 模块独立性
良好的模块独立性的重要性:
耦合
无直接耦合
数据耦合
控制耦合
特征耦合
公共耦合
内容耦合
设计原则:
内聚
偶然内聚
逻辑内聚
时间内聚
过程内聚
通信内聚
顺序内聚
功能内聚
设计原则
4.3 软件结构设计工具
4.3.1层次图
层次图
层次图解释
4.3.2 HIPO图
HIPO图
HIPO图解释
4.3.3 软件结构图
例
注意事项
4.4 软件结构设计启发式规则
1.模块独立性准则
2.模块的作用域应该在控制域内
作用域:
图4.14 模块的作用域和控制域
改进方法:
控制域:
3.软件结构的形态特征准则
如图所示,结构图的深度为5;宽度为8;模块M的扇出为3;模块T的扇入为4。
4.模块大小准则
5.模块的接口准则
4.5 结构化设计方法
1. 变换型数据流图
变换型数据流图
2.事务型数据流图
事务型数据流图
3.用SD方法将数据流图转换为软件结构
1.复查并精化数据流图
2.确定数据流图类型
3.确定数据流的边界
4.完成“第一级分解”
5.完成“第二级分解”
6.优化
4.变换分析设计步骤
1. 确定DFD中的变换中心、逻辑输入和逻辑输出
2. 设计软件结构的顶层和第一层——变换结构
变换型分析设计
从上图导出的初始结构图
3. 设计中、下层模块
变换型分析设计2
变换型分析设计3
4.设计的优化
5.事务分析设计步骤:
1.确定DFD中的事务中心和加工路径
2.设计软件结构的顶层和第一层——事务结构
3.设计事务结构的中下层
4.对初始的事务结构优化工作同变换结构。
事务型分析设计
6.综合型数据流图
1.确定DFD整体上的类型
2.标出局部的DFD范围,确定其类型
3.按整体和局部的DFD特征,设计出软件结构
例图
主图是变换型,子图是事务型的数据流图分析设计示意图
主图是事务型,子图是变换型的数据流图分析设计示意图
7.软件结构图后续设计工作
4.6 习题
答案
答案
第5章 详细设计
5.1 详细设计的目的与任务
根本目标:
该阶段工作具体包括以下几方面:
1.处理方式的设计
2.为数据库进行物理设计
3.其它设计
5.2 详细设计方法
进行详细设计应该遵循以下三个原则
图5.1 程序流程图的3种基本结构
其他结构
5.2.1 结构化程序设计方法
结构化程序设计的经典定义:
结构化程序设计的更全面的定义:
结构化程序设计的本质:
结构化程序设计方法的基本思路:
1.自顶向下、逐步细化
2.模块化设计
3.结构化编码
5.2.2 面向数据结构的设计方法
面向数据结构的设计方法中最著名的方法有:
1.Jackson图
(1)顺序结构的Jackson图表示
(2)选择结构的Jackson图表示
(3)重复结构的Jackson图表示
2.改进的Jackson图
举例:Jackson图符号的运用
3. Jackson方法
举例:P57
处理流程:
步骤1
步骤2
步骤3
步骤4
步骤5
Jackson图相比传统结构化设计工具的优点:
Jackson图与层次图的比较
5.3 详细设计工具
描述工具
描述工具
5.3.1 程序流程图
程序流程图中使用的符号
图5.1 程序流程图的3种基本结构
图5.1 程序流程图的其他结构
优缺点
5.3.2 盒图
基本符号
优点
举例
盒图举例
5.3.3 PAD图—问题分析图
基本符号
使用PAD图提供的定义功能来逐步求精的例子
优点:
5.3.4 过程设计语言
应具备以下特点
PDL的特点:
5.3.5 判定表与判定树
判定表的构成:
判定表绘制的步骤如下:
例题
(1)判定条件可能取值表:
(2)计算组合数2*3*2=12;
(3)初步判定表
(4)简化后的判定表
特点:
判定树
特点:
5.4 习题(无)
第6章 实现
6.1 程序设计语言的分类
编码的目的:
程序设计语言分类:
面向机器语言——机器语言
面向机器语言——汇编语言(符号语言)
高级语言——通用语言
高级语言——专用语言
6.2 程序设计语言的选择
6.3 编码风格
6.3.1 程序内部文档
1、标识符的命名及说明
2、程序的注解
3.程序的布局
6.3.2 语句的构造及书写
6.3.3输入/输出
输入设计:
输出设计:
6.3.4 效率
6.4 程序复杂度度量
6.4.1 McCabe(麦坎比)方法
环形复杂度
流图
区域
环形复杂度的计算方法:
环形复杂度的用途:
几点说明:
McCabe度量方法的缺点:
6.4.2 Halstead方法——文本复杂度度量
Halstead方法给出的程序长度预测公式:
多次验证表明,预测长度H与实际长度N非常接近。
Halstead方法给出的错误个数预测公式:
例子
6.5 习题(无)
第7章 软件测试
7.1 软件测试目标
7.2 软件测试准则
7.3 软件测试方法
7.3.1 静态测试
定义:
主要方法:
7.3.2 动态测试
定义:
主要方法:
白盒测试与黑盒测试两类方法的对比
7.4 软件测试过程
软件测试的V模型
7.4.1 单元测试
- 概念
- 测试重点
- 单元测试环境
驱动模块(Drive)
桩模块(Stub)
7.4.2 集成测试
- 概念
单元测试完成后为什么还需要集成测试?
- 集成测试的模式
(1)自顶向下集成
子主题
子主题
(2)自底向上集成
自顶向下集成测试方法:
自底向上测试方法:
(3)三明治集成
7.4.3 系统测试
- 概念
功能测试
性能测试
7.4.4 确认测试
- 概念
- 分类
Alpha测试(开发者+用户)
Beta测试(用户+开发者)
7.4.5 回归测试
概念:
实施条件:
作用:
7.5 测试用例的设计
7.5.1 测试用例的设计原则
7.5.2 白盒测试方法用例的设计
7.5.2 白盒测试方法用例的设计图1
1.逻辑覆盖
(1) 语句覆盖
基本思想
7.5.2 白盒测试方法用例的设计图2
语句覆盖的优缺点:
(2) 判定覆盖
基本思想
7.5.2 白盒测试方法用例的设计图2
判定覆盖的优缺点:
(3) 条件覆盖
基本思想
子主题
条件覆盖的优缺点:
(4) 判定-条件覆盖
基本思想
7.5.2 白盒测试方法用例的设计图5
判定-条件覆盖优缺点:
(5) 条件组合覆盖
基本思想
7.5.2 白盒测试方法用例的设计图6
7.5.2 白盒测试方法用例的设计图7
条件组合覆盖的优缺点
(6) 路径覆盖
基本思想
路径覆盖的优缺点
例题
例题答案
2. 循环覆盖
循环覆盖图一
简单循环的测试案例选取策略:
嵌套循环的测试案例选取策略:
串接循环的测试案例选取策略:
白盒路径测试技术:基本路径测试
白盒路径测试技术:基本路径测试图一
白盒路径测试技术:基本路径测试图二
白盒路径测试技术:基本路径测试图三
白盒路径测试技术:基本路径测试图四
白盒路径测试技术:基本路径测试图五
白盒路径测试技术:基本路径测试图六
白盒路径测试技术:基本路径测试图七
白盒路径测试技术:基本路径测试图八
白盒路径测试技术:基本路径测试图九
7.5.3 黑盒测试方法用例的设计
黑盒测试概念示意图
常用测试种类
(1)等价划分(经典的黑盒测试方法)
有效等价类
无效等价类
确定等价类的原则:
根据等价类来设计测试用例,过程
黑盒等价划分测试技术
黑盒等价划分测试技术图一
黑盒等价划分测试技术图二
(2)边界值分析
边界值分析图一
边界值分析举例:
边界值分析举例图一
边界值分析举例图二
(3)错误推测
(4)因果图法
因果图法图一
因果图法图二
因果图法举例
1) 分析这一段说明,列出原因和结果,并编号。
2)画出因果图
3) 转换成判定表
4)
课堂练习
(1)分析规格说明并编号。
(2)添加约束和限制条件
课堂练习图一
课堂练习图二
(3)问题的因果图表述
课堂练习图三
(4)因果图-判定表
课堂练习图四
(5)根据判定表的3~8列编写测试用例如下
课堂练习图五
7.6 软件调试
软件调试过程
0 条评论
下一页