第1章 软件工程概述
1.1 计算机系统与软件
1.2 软件生存周期和软件生存周期过程
1.3 软件生存周期模型
1.3.1 瀑布模型
1.3.2 渐增模型
1.3.3 演化模型
1.4 软件工程定义
1.4.1 软件工程的内容
1.4.2 软件工程的基本目标和原则
1.4.3 软件工程与一般工程的差异
1.5 软件工具与开发环境
1.5.1 软件工具
1.5.2 软件开发环境
1.6 软件工程的发展
1.7 阅读:软件工程学科的相关学科
1.8 习题与思考
1.9 实训:软件工程的计算环境
第2章 可行性研究与计划
2.1 可行性研究
2.2 软件计划
2.2.1 软件范围
2.2.2 资源
2.2.3 软件成本估算
2.3 进度安排
2.4 4 .计划文件与复审
2.5 阅读:《人月神话》作者布鲁克斯
2.6 题与思考
2.7 实训:软件工具与软件开发环境
第3章 软件需求分析
3.1 需求分析阶段的任务
3.2 结构化分析方法
3.2.1 结构化分析方法的内容
3.2.2 结构化分析方法的步骤
3.3 数据流程图
3.3.1 数据流程图的属性和成分
3.3.2 数据流程图示例
3.3.3 数据流程图绘制准则
3.4.数据字典
3.4.1 数据流条目
3.4.2 文件条目
3.4.3 数据项条目
3.4.4 加工条目
3.5 加工的分析与表达
3.5.1 加工的表达原则
3.5.2 结构化语言
3.5.3 判定表
3.5.4 判定树
3.6 需求分析文件与复审
3.6.1 GB/T8567-2006规定的文件
3.6.2 需求分析的复审
3.7 阅读:软件思想家杰拉尔德·温伯格
3.8 题与思考
3.9 实训:软件开发绘图工具Visio
第4章 软件概要设计
4.1 模块的划分
4.1.1 软件结构
4.1.2 模块划分的基本原则
4.1.3 内聚度
4.1.4 耦合度
4.1.5 高I内聚和低耦合
4.1.6 模块划分的方法
4.2 结构化设计方法
4.2.1 变换与事务型数据流分析
4.2.2 模块化设计
4.2.3 模块结构图
4.2.4 从数据流程图导出模块
结构图
4.3 Parnas方法
4.3.1 信息隐蔽原则
4.3.2 加强系统各成分间的检查
4.4 Jackson方法
4.5 程序的逻辑构造方法
4.6 概要设计文件与复审
4.6.1 概要设计说明书
4.6.2 概要设计的复审
4.7 阅读:Parnas:把软件工程作为
一门真正的工程学科(1)
4.8 习题与思考
4.9 实训:使用Visio绘制工程图形
第5章 软件详细设计
5.1 概述
5.2 结构化构造
5.3 图形设计工具
5.3.1 程序流程图
5.3.2 方块图
5.3.3 HIPO图
5.3.4 PAD图
5.4 伪码与程序设计语言
5.5 各种详细设计工具的比较
5.6 详细设计文件与复审
5.6.1 详细设计说明书
5.6.2 详细设计的复审
5.7 阅读:Parnas:把软件工程作
一门真正的工程学科(2)
5.8 习题与思考
5.9 实训:软件工程国家标准
第6章 软件编码
6.1 结构化程序设计方法
6.2 程序设计风格
6.2.1 源程序
6.2.2 数据说明
6.2.3 语句结构
6.3 源代码文件
6.3.1 综合文件
6.3.2 程序组织文件
6.3.3 指令级注释
6.4.程序设计技术
6.4.1 冗余程序设计
6.4.2 防错性程序设计
6.4 -3程序设计的质量
6.4.4 编译程序和解释程序
6.5 编程语言的特点
6.5.1 过程性语言
6.5.2 说明性语言
6.5.3 脚本语言
6.5.4 低级语言
6.5.5 高级语言
6.5.6 面向对象语言
6.5.7 事件驱动语言
6.5.8 构件(组件)
6.6 选择编程语言
6.7 编码文件与复审
6.8 阅读:19世纪的传奇合作
巴贝奇与阿达
6.9 习题与思考
6.10 实训:软件测试环境
第7章 软件测试
7.1 测试的基本概念
7.2 测试方法
7.2.1 静态分析技术
7.2.2 动态测试技术
7.3 单元测试
7.4 组装测试
7.4.1 组装测试的任务
7.4.2 组装测试的方式
7.5 确认测试
7.6 测试用例设计
7.6.1 白盒法
7.6.2 黑盒法
7.7 测试工具与测试自动化
7.7.1 基于GUI的自动化测试
7.7.2 自动化测试工具的特征
7.7.3 自动化测试工具的分类
7.7.4 B测试
7.8 测试文件与复审
7.8.1 GB/T8567-2006规定的文件
7.8.2 GB/T9386-1988规定的文件
7.8.3 测试的复审
7.9 排错技术与系统转换
7.10 阅读:从程序员到软件测试工程师
7.11 习题与思考
7.12 实训:黑盒法与白盒法设计测试用例
第8章 软件维护
8.1 概述
8.1.1 软件维护工作的必要性
8.1.2 软件维护的内容
8.’1.3 维护工作的过程
8.2 软件的可维护性
8.3 软件维护的管理
8.4 系统分析与建模工具Power Designer
8.5 阅读:软件工程学科的内涵
8.6 习题与思考
8.7 实训:Power Designer入门
第9章 软件质量管理
9.1 软件项目特点与软件管理职能
9.1.1 软件项目的特点
9.1.2 软件管理的主要职能
9.2 对软件质量的需求
9.2.1 用户的质量观
9.2.2 发人员的质量观
9.2.3 维护人员的质量观
9.2.4 管理人员的质量观
9.3 软件质量度量
9.3.1 软件质量框架模型
9.3.2 软件质量特性
9.3.3 评估指标的选取原则
9.4 软件质量评估指标体系
9.4.1 功能度指标
9.4.2 可靠性指标
9.4.3 易用性指标
9.4.4 效率特性指标
9.5 CMM:软件能力成熟度模型
9.6 Power Designer的CDM
9.7 阅读:《未来之路》和《数字化生存》
9.8 习题与思考
9.9 实训:Power Designer业务处理模型
第10章 软件配置管理
10.1 软件配置管理的概念
10.2 配置管理软件VSS
10.2.1 VSS的主要功能
10.2.2 软件配置管理员的任务
10.2.3 项目组其他人员的任务
10.2.4 与Visual Studio:IDE集成
10.3 阅读:软件产业的设计大师和VB之父Alan Cooper
10.4 习题与思考
10.5 实训:软件配置管理工具VSS
第11章 面向对象分析与设计
11.1 面向对象方法
11.1.1 面向对象方法的特点
11.1.2 面向对象软件工程
11.2 面向对象的概念
11.2.1 对象
11.2.2 类
11.2.3 消息传递
11.2.4 多态性
11.3 面向对象软件的开发过程
11.3.1 类生存期
11.3.2 面向对象的开发
11.4 面向对象分析——OOA
11.4.1 OOA的基本内容
11.4.2 常用的OOA方法
11.4.3 论域分析
11.5 面向对象设计——OOD
11.5.1 高层设计
11.5.2 类设计的目标和方针
11.5.3 通过复用设计类
11.5.4 类设计方法
11.6 Power Designer的CDM
11.7 阅读:极限编程XP的先驱Kent Beck.
11.8 习题与思考
11.9 实训:Power Designer概念数据模型
第12章 面向对象的实现
12.1 面向对象编程
12.2 面向对象测试
12.2.1 面向对象测试的特点
12.2.2 面向对象的测试步骤
12.2.3 面向对象的测试策略
12.3 面向对象软件的测试用例设计
12.3.1 传统测试用例设计方法的可用性
12.3.2 基于故障的测试设计
12.3.3 基于场景的测试设计
12.3.4 测试表层结构和深层结构
12.4 Power Designer的PDM
12.4.1 表、列、视图、主键、候选键、外键
12.4.2 存储过程和触发器
12.4.3 默认值与规则
12.4.4 完整性检查约束
12.4.5 索引
12.4.6 检查PDM对象
12.5 阅读:CASE与信息工程的创始人James Martin
12.6 题与思考
l2.7 实训:Power Designer·物理数据模型
第13章 统一建模语言——UML
13.1 UMI.概述
13.2 Power Designer OOM
13.2.1 用例图
13.2.2 时序图
13.2.3 类图
13.3 阅读:软件开发的教父Martin Fowler
13.4 习题与思考
13.5 实训:Power Designer面向对象模型
第14章 软件文件
14.1 目的和作用
14.2 软件生存周期与各种文件的编制
14.3 文件编制中考虑的因素
14.3.1 文件的读者
14.3.2 文件内容的重复性
14.3.3 文件内容的灵活性
14.4 文件编制的质量要求
14.5 文件的管理和维护
14.5.1 文件的形成
14.5.2 文件的分类与标识
14.5 -3文件控制
14.5.4 文件的修改管理
14.5.5 《软件文档管理指南》(GB/T16680-1996)
14.6 阅读:软件工程的七条基本原理
14.7 习题与思考
14.8 实训:软件产品开发文件编制指南
第15章 软件工程实训总结
15.1 实训的基本内容
15.2 实训的基本评价
15.3 课程学习能力测评
15.4 软件工程实训总结
15.5 实训总结评价(教师)
附录A课程设计
附录B软件文档编写提示(部分)
参考文献