内容简介
第1章 概述
1.1 软件工程的产生
1.1.1 软件工程发展史
1.1.2 软件危机
1.2 软件工程学
1.2.1 什么是软件
1.2.2 什么是软件工程
1.2.3 软件工程学的内容
1.2.4 软件过程
1.2.5 软件工程基本原理
1.3 软件生命周期
1.3.1 软件生命周期定义
1.3.2 软件生命周期划分阶段的原则
1.3.3 软件生命周期各阶段的任务
1.4 软件开发模型
1.4.1 瀑布模型
1.4.2 快速原型模型
1.4.3 增量模型
1.4.4 喷泉模型
1.4.5 螺旋模型
1.4.6 统一过程
小结
习题1
第2章 软件计划
2.1 软件问题定义及可行性研究
2.1.1 软件问题定义
2.1.2 可行性研究
2.1.3 制订项目开发计划
2.2 需求分析的任务
2.2.1 确定目标系统的具体要求
2.2.2 建立目标系统的逻辑模型
2.2.3 软件需求规格说明
2.2.4 修正系统开发计划
2.2.5 制订初步的系统测试计划
2.2.6 编写初步的用户手册
2.2.7 编写数据要求说明书
2.3 需求分析步骤
2.3.1 进行调查研究
2.3.2 分析和描述系统的逻辑模型
2.3.3 复审
2.4 实体-关系图
2.4.1 实体
2.4.2 属性
2.4.3 关系
2.5 数据流图
2.5.1 数据流图的基本符号
2.5.2 数据流图的附加符号
2.5.3 画数据流图的步骤
2.5.4 几点注意事项
2.6 状态转换图
2.7 数据字典
2.7.1 数据字典的内容
2.7.2 数据字典使用的符号
2.7.3 数据字典与图形工具
2.8 需求分析的其他图形工具
2.8.1 层次图
2.8.2 Warnier图
2.8.3 IPO图
2.9 软件计划阶段文档
2.9.1 软件计划阶段文档的编写步骤
2.9.2 软件计划实例
小结
习题2
第3章 结构化设计
3.1 软件设计步骤
3.1.1 概要设计步骤
3.1.2 详细设计的基本任务
3.2 软件结构设计
3.2.1 软件结构设计的基本原理
3.2.2 模块化
3.2.3 模块独立性
3.2.4 模块设计启发规则
3.3 软件结构设计的图形工具
3.3.1 层次图(或HIPO图)
3.3.2 结构图
3.4 面向数据流的设计方法
3.5 过程设计工具
3.5.1 流程图
3.5.2 盒图
3.5.3 PAD图
3.5.4 判定表
3.5.5 判定树
3.5.6 过程设计语言
3.6 系统人机界面设计
3.6.1 人机界面设计问题
3.6.2 人机界面设计过程
3.6.3 评估界面设计的标准
3.6.4 界面设计指南
3.7 数据代码设计
3.7.1 代码设计目的
3.7.2 代码设计原则
3.7.3 代码种类
3.7.4 代码设计方法
3.8 面向数据结构的设计方法
3.9 软件设计文档
3.9.1 概要设计说明书
3.9.2 数据库设计说明书
3.9.3 详细设计说明书
3.9.4 操作手册编写提示
小结
习题3
第4章 软件编码和软件测试
4.1 结构化程序设计
4.1.1 程序设计语言的选择
4.1.2 程序设计风格
4.2 软件测试目标
4.3 软件测试方法
4.3.1 静态分析与动态测试
4.3.2 黑盒法与白盒法
4.4 软件测试步骤
4.4.1 模块测试
4.4.2 集成测试
4.4.3 程序审查会和人工运行
4.4.4 确认测试
4.4.5 平行运行
4.5 设计软件测试方案
4.5.1 等价类划分法
4.5.2 边界值分析法
4.5.3 错误推测法
4.5.4 逻辑覆盖法
4.5.5 程序环形复杂度的度量
4.5.6 因果图法
4.5.7 用基本路径覆盖法设计测试用例
4.6 软件测试原则和策略
4.6.1 软件测试原则
4.6.2 实用测试策略
4.7 软件调试、验证与确认
4.7.1 软件调试
4.7.2 软件验证
4.7.3 软件确认
4.8 软件测试文档
小结
习题4
第5章 软件维护
5.1 软件维护的种类、过程和副作用
5.1.1 软件维护的种类
5.1.2 软件维护的特点
5.1.3 软件维护的过程
5.1.4 软件维护的副作用
5.2 软件的可维护性
5.2.1 决定可维护性的因素
5.2.2 可维护性的度量
5.2.3 如何提高软件的可维护性
小结
习题5
第6章 面向对象方法学与UML
6.1 面向对象方法概述
6.1.1 面向对象方法学的要素和优点
6.1.2 面向对象方法的概念
6.2 UML概述
6.2.1 UML的发展
6.2.2 UML的内容
6.3 UML图
6.3.1 用例图
6.3.2 类图和包
6.3.3 对象图
6.3.4 状态图
6.3.5 顺序图
6.3.6 活动图
6.3.7 协作图
6.3.8 构件图
6.3.9 部署图
6.4 UML的应用
6.4.1 UML模型
6.4.2 UML视图
6.4.3 UML使用准则
6.4.4 UML的扩展机制
6.4.5 UML的应用领域
小结
习题6
第7章 面向对象软件设计与实现
7.1 面向对象分析
7.1.1 面向对象分析过程
7.1.2 面向对象分析原则
7.2 建立对象模型
7.2.1 建立对象模型的基本方法
7.2.2 确定对象和类
7.2.3 确定类的相互关系
7.2.4 划分主题
7.3 建立动态模型
7.4 建立功能模型
7.5 面向对象设计
7.5.1 系统设计
7.5.2 对象设计
7.5.3 面向对象设计的准则
7.5.4 面向对象设计的启发规则
7.6 面向对象系统的实现
7.6.1 选择程序设计语言
7.6.2 面向对象程序设计风格
7.6.3 面向对象实现的人员分工
7.7 面向对象的测试
7.7.1 面向对象测试策略
7.7.2 面向对象的测试步骤
7.8 面向对象方法实例
7.8.1 面向对象分析实例
7.8.2 面向对象的设计实例
小结
习题7
第8章 软件工程技术的发展
8.1 CASE技术
8.2 软件工具
8.2.1 软件工具的功能
8.2.2 软件工具的性能
8.2.3 软件工具的分类
8.3 软件开发环境
8.4 软件重用
8.4.1 可重用的软件成分
8.4.2 软件重用过程模型
8.4.3 开发可重用的软件构件
8.4.4 分类和检索软件构件
8.5 RUP
8.6 Rational Rose简介
8.6.1 Rational Rose界面
8.6.2 Rational Rose模型的4个视图
8.6.3 Rational Rose的使用
8.7 几种软件构件模型比较
8.7.1 CORBA
8.7.2 COM+/DCOM
8.7.3 JavaBean
8.7.4 三种构件模型的分析比较
8.7.5 软件构架技术
小结
习题8
第9章 软件工程管理
9.1 软件工程管理概述
9.2 软件规模估算
9.2.1 软件开发成本估算方法
9.2.2 代码行技术
9.2.3 功能点技术
9.2.4 COCOMO2模型
9.3 进度计划
9.3.1 Gantt图
9.3.2 工程网络技术
9.4 人员组织
9.5 软件配置管理
9.6 软件质量保证
9.6.1 软件质量的特性
9.6.2 软件质量保证措施
9.7 软件开发风险管理
9.7.1 软件开发风险的分类
9.7.2 软件开发风险的识别
9.7.3 软件开发的风险预测
9.7.4 处理软件开发风险的策略
9.8 软件工程标准与软件文档
9.8.1 软件工程标准
9.8.2 软件文档的编写
小结
习题9
第10章 实例——招聘考试成绩管理系统
10.1 问题定义
10.2 可行性研究
10.2.1 技术可行性
10.2.2 经济可行性
10.3 需求分析
10.4 概要设计
10.4.1 数据库结构设计
10.4.2 系统结构设计
10.4.3 设计测试方案
10.5 详细设计
10.5.1 系统界面设计
10.5.2 考前处理
10.5.3 输入设计
10.5.4 成绩处理
10.5.5 录用过程设计
10.5.6 输出设计
10.5.7 测试用例设计
10.6 程序设计提示
10.7 软件测试
习题10
附录A 部分习题解答
参考文献