第 0 章 软件工程教学方案
第一部分 软件工程基本教程
第 1章 软件工程概述
1.1 关于软件
1.1.1软件及其特性
1.1.2软件的演化
1.1.3软件危机
【案例1.1】伦敦救护服务系统
1.2 软件工程
1.2.1 软件工程基本原理
1.2.2 软件工程基本原则
1.2.3 软件危机的解决途径
1.3 软件工程基本活动
1.4 软件工程两大范型
1.4.1 结构化范型
1.4.2 面向对象范型
1.5 小结
习题
第2章 软件过程及其模型
2.1 软件过程概述
2.1.1 软件过程框架
2.1.2 软件过程模型
2.2 软件生命周期
2.2.1 什么是软件生命周期?
2.2.2 软件生命周期阶段
2.3 敏捷软件过程
2.3.1 敏捷软件过程
2.3.2 极限编程
2.3.3 结对编程
2.3.4 分布式结对编程
2.4 软件工程实践
2.4.1 概念与原则
2.4.2 软件工程实践
2.5 软件过程模型
2.5.1 传统的软件过程模型
2.5.2 面向对象过程模型
2.6 能力成熟度模型
2.6.1 什么是能力成熟度模型?
2.6.2 软件过程成熟度5级模型
2.7 小结
习题
第 3章 软件需求分析
3.1 关于软件需求
3.1.1 功能需求
3.1.2 非功能需求
3.1.3 业务需求
【案例3.1】基于终端的短信系统
3.2 需求分析过程
3.3 非形式化分析技术
3.3.1 会谈
3.3.2 场景分析
3.3.3 调查表
【案例3.2】ATM机“取款”场景描述
3.4 结构化分析建模
3.4.1结构化需求分析
3.4.2 结构化分析模型
3.4.3 面向数据的建模方法
【案例3.3】图书馆管理系统实体关系模型
【案例3.4】POS机系统
3.4.4 面向数据流的建模方法
【案例3.5】订货系统数据流图
【案例3.6】电子表系统的状态图
【案例3.7】图书馆管理系统的分析模型
3.5 面向对象分析建模
3.5.1 面向对象概念
3.5.2 UML统一建模语言
3.5.3 用例建模
【案例3.8】POS机系统用例描述
3.5.4 业务建模
【案例3.9】POS机系统业务分析
3.5.5 系统行为建模
【案例3.10】POS机系统完整的对象分析
3.6 小结
习题
第 4章 软件设计
4.1 软件设计概述
4.1.1 软件设计过程
4.1.2 软件设计文档
4.2 模块化设计原理
4.2.1 模块化
4.2.2 抽象
4.2.3 信息隐蔽
4.2.4 模块独立性度量
4.2.5 逐步求精
4.2.6 重构
4.3 软件结构
4.4 软件体系结构模型
4.4.1 系统构成模型
4.4.2 系统控制模型
4.5 结构化软件设计
4.5.1 面向数据流的设计方法
【案例4.1】统计文件中单词数目的数据流设计
【案例4.2】ATM自动柜员机事务流设计
【案例4.3】公司的销售管理系统设计
4.5.2 面向数据结构的设计
【案例4.4】统计文件空格数和输出统计
【案例4.5】图书馆管理系统设计
4.6 面向对象的设计
4.6.1 面向对象设计过程
4.6.2 设计模式
【案例4.6】POS机系统面向对象设计
4.7 小结
习题
第 5章 软件详细设计
5.1 结构化详细设计
5.2 结构化设计工具
5.2.1 程序流程图
5.2.2 N-S图
5.2.3 PAD图
5.2.4 HIPO图
【案例5.1】盘存/销售系统的HIPO图
5.2.5 判定表与判定树
【案例5.2】确定保险类别
5.2.6 过程描述语言
【案例5.3】统计单词数目
5.3 人机界面设计
5.3.1 界面分析与设计
5.3.2 界面设计步骤
5.3.3 界面设计指南
【案例5.4】CAD系统中绘制圆弧的操作命令序列设计
5.4 数据库设计
5.5 面向对象精化设计
5.5.1 设计模型精化
5.5.2逻辑架构精化
5.5.3包设计
5.4.4 精化交互图
5.5.5 精化类图
【案例5.5】ATM机系统精华设计
5.6 编码
5.6.1 编码语言
5.6.2 编码风格
【案例5.6】POS机系统详细设计
5.7 小结
习题
第 6章 面向对象与统一软件开发过程
6.1 概述
6.2 用况驱动过程
【案例6.1】ATM机系统用况模型
6.3 构架描述
【案例6.2】ATM机系统构架设计
6.4 迭代的增量开发过程
6.5 核心工作流
6.5.1 需求捕获工作流
【案例6.3】电子商务交易系统
6.5.2 分析
【案例6.4】电子商务交易系统分析
6.5.3 设计
6.5.4 实现
6.5.5 测试
6.6 小结
习题
第 7章 软件测试
7.1 软件测试概述
7.1.1 软件测试的目的
7.1.2 验证与确认
7.1.3 软件测试的原则
7.2 软件测试策略
7.2.1 单元测试
7.2.2 集成测试
7.2.3 确认测试
7.2.4 系统测试
7.3 测试用例设计
7.4 黑盒测试技术
7.4.1 等价类划分
【案例7.1】ATM机系统等价类划分
7.4.2 边界值分析
【案例7.2】三角形无效类测试用例设计
7.4.3 错误推测
7.4.4 因果图方法
【案例7.3】自动售货机因果图法
7.5 白盒测试技术
7.5.1 逻辑覆盖
【案例7.4】逻辑覆盖测试用例设计
7.5.2 路径覆盖
【案例7.5】学生成绩计算路径测试用例设计
7.5.3 循环路径测试策略
7.6 集成测试技术
7.6.1 集成策略
7.6.2 性能测试
【案例7.6】多媒体数据库性能测试
【案例7.7】ATM取款机测试
7.7 调试技术
7.7.1 调试过程
7.7.2 调试策略
7.8 小结
习题
第 8章 软件维护
8.1 软件维护概述
8.1.1 软件维护任务
8.1.2 软件维护的特点
8.1.3 软件的可维护性
8.2 软件维护类型
8.3 软件维护技术与过程
8.4 非结构化维护和结构化维护
8.5 提高软件的可维护性
8.6 小结
习题
第 9章 软件项目管理
9.1 软件项目管理概述
9.2 软件项目组织管理
9.2.1 团队组织模式
9.2.2 项目组织原则
9.3 软件过程管理
9.3.1 软件过程度量
9.3.2 软件过程改进
9.3.3 软件项目度量
9.4 风险管理
9.4.1 风险识别
9.4.2 风险预测
9.4.3 风险管理
9.5 软件配置管理
9.5.1 基本概念
9.5.2 软件配置管理过程
9.5.3版本管理
9.6 软件项目估算
9.6.1 概述
9.6.2 软件规模度量
9.6.3 软件估算管理
9.7 软件项目估算技术
9.7.1 分解技术
【案例9.1】CAD系统的基于LOC的估算
【案例9.2】CAD系统的功能点FP估算
【案例9.3】CAD系统的基于过程的估算
9.7.2 经验模型
【案例9.4】基于微处理器的通信软件的中级COCOMO估算
【案例9.5】POS机系统的成本估算
9.8 软件项目计划
9.8.1 质量管理
9.8.2 项目进度计划
9.8.3 进度安排
9.8.4 进度跟踪管理
9.9 小结
习题
第二部分 软件工程工具教程和实践
第T1章 软件分析与设计工具MS Visio
T1.1 概述
T1.2 Visio基本使用
T1.2.1 Visio绘图初步
T1.2.2 Visio提供的模型
T1.3 模型绘制
T1.3.1 数据流模型
【案例T1.1】订货系统
T1.3.2 状态机模型
【案例T1.2】电子表设计
T1.3.3 Jackson模型
【案例T1.3】统计文档空格数目
T1.4 小结
习题
第T2章 数据建模工具Power Designer
T2.1 概述
T2.2 PowerDesigner基本操作
T2.3 PowerDesigner模型
T2.4 数据建模
T2.4.1 概念数据库模型构建
【案例T2.1】POS机系统
T2.4.2 业务处理模型构建
【案例T2.2】图书馆馆管理系统
T2.4.3 物理数据模型构建
【案例T2.3】出卷系统的物理数据模型
T2.4 小结
习题
第T3章 面向对象建模工具IBM Rose
T3.1 概述
T3.2 Rose基本使用
T3.2.1 Rational Rose主界面
T3.2.2 Rational Rose基本使用
T3.3 面向对象模型构建
T3.3.1 用例视图模型构建
【案例T3.1】电梯系统用例模型
T3.3.2 逻辑分析模型构建
【案例T3.2】电梯系统类图
T3.3.3 动态行为分析模型构建
【案例T3.3】电梯系统动态模型
T3.4 小结
习题
第T4章 功能测试工具MI WinRunner
T4.1 概述
T4.2 WinRunner基本使用
T4.2.1 WinRunner基本操作
T4.2.2 WinRunner测试方法
T4.3 功能测试方法
T4.3.1使用向导识别对象
【案例T4.1】机票预定系统-录制脚本
T4.3.2 插入同步点
【案例T4.2】机票预定系统-同步点测试
T4.4 小结
习题:
第T5章 负载测试工具IBM LoadRunner
T5.1 概述
T5.2 LoadRunner基本使用
T5.3 LoadRunner测试过程与方法
T5.3.1 录制脚本
T5.3.2 脚本回放
T5.3.3 场景设计
【案例T5.1】网上订票系统
T5.4 小结
习题
第T6章 项目管理工具MS Project
T6.1 概述
T6.2 Project基本使用
T6.2.1 Project基本操作
T6.2.2 Project视图
T6.3 Project项目计划
T6.3.1 项目计划分析
【案例T6.1】面对面结对编程系统
T6.3.2 建立建立日历视图
T6.3.3 创建并编辑任务列表
T6.4 小结
习题
第三部分 本书网络扩展教程
第 W1章 要求极高的计算机系统
W1.1 什么是要求极高的系统?
【案例W1.1】胰岛素输送系统
【案例W1.2】欧洲空中客车A340宽体客机
W1.2 要求极高的系统特性
W1.2.1 可用性和可靠性关系
W1.2.2 安全性和保密性关系
W1.3 要求极高系统的需求分析
W1.3.1 风险驱动的描述
【案例W1.3】胰岛素输送系统的安全性需求
W1.3.2 安全性描述
W1.3.3 信息安全性描述
W1.3.4 软件可靠性描述
【案例W1.4】ATM机的可靠性需求
【案例W1.5】胰岛素输送系统的可靠性需求
【案例W1.6】胰岛素输送系统完整的需求描述
W1.4 形式化描述方法
W1.4.1 软件过程中的形式化描述
W1.4.2 接口描述方法
【案例W1.7】列表数据结构的代数法
【案例W1.8】空中交通管制系统的代数描述
W1.4.3 对象约束语言
【案例W1.9】块处理器的对象描述
W1.4.4 行为描述
【案例W1.10】胰岛素输送系统的Z方法描述
W1.5 要求极高的系统设计
W1.5.1 系统设计
W1.5.2 实时监控系统
【案例W1.11】房屋安全实时监控系统的分析
W1.6 要求极高系统的开发
W1.6.1 可靠的过程
W1.6.2 可靠的编程
W1.6.3 容错
W1.6.4 容错体系结构
W1.7 系统验证
W1.7.1 可靠性验证
W1.7.2 安全性保证
【案例W1.12】胰岛素输送系统的系统验证
W1.7.3 信息安全评估
【案例W1.13】胰岛素输送系统的安全评估
W1.8 小结
习题
第 W2章 测试驱动开发
W2.1 测试驱动开发概述
【案例W2.1】货币转换程序设计问题描述
W2.2 测试驱动开发步骤
【案例W2.2】货币转换程序初步设计
W2.3 深入测试
【案例W2.3】货币转换程序设计深入测试
W2.4 代码重构
【案例W2.4】货币转换程序代码重构
W2.5 完整测试
【案例W2.5】货币转换程序完整测试
W2.6 小结
习题