软件工程(第4版)
定价:¥59.00
作者: 齐治昌,谭庆平,宁洪
出版社:高等教育出版社
首届全国教材建设奖·全国优秀教材
- 高等教育出版社
- 9787040509601
- 4版
- 64272111-2
- 异16开
- 600
- 工学
- 计算机类
- 计算机类
- 本科
内容简介
本书是在第3版的基础上修改而成的,阐述了信息时代软件、软件工程及软件工程教育的地位和作用,基于计算机的系统和业务过程建模。书中分析了传统软件开发过程向统一过程RUP的进化,系统地介绍了RUP、UML和面向对象的软件开发方法,以及软件开发的需求、设计、实现、测试、交付、维护、软件度量、软件项目管理和软件开发组织的过程改进等专题。本书简化了前版中结构化软件开发方法的相关内容,充实了目前常用的基于构件的软件开发、持续集成(CI)等方面的内容。
本书强调理论与实践相结合,软件工程的技术、方法与工具相结合,软件项目的技术活动与管理活动相结合。书中含有丰富的例题、习题和参考文献。
本书可作为高等学校计算机或信息类专业高年级本科生教材,也可作为硕士研究生教材及软件开发人员参考书。
目录
目录
前辅文
第1章 软件与软件工程
1.1 软件的概念
1.1.1 软件与软件的组成
1.1.2 软件生存周期
1.1.3 软件的特点
1.1.4 几类常用的软件
1.1.5 软件的质量
1.1.6 软件的安全与保护
1.2 软件工程的概念
1.2.1 软件工程的定义
1.2.2 软件工程的发展
1.2.3 软件工程的目标和原则
1.2.4 软件开发的主要方法
1.3 软件过程模型
1.3.1 瀑布模型
1.3.2 增量过程模型
1.3.3 原型建造模型
1.3.4 螺旋模型
1.3.5 基于构件的过程模型
1.3.6 通用软件过程模型
1.4 敏捷软件开发原则和应用
1.4.1 敏捷软件开发原则
1.4.2 敏捷软件过程的极限编程实践
1.4.3 敏捷软件开发过程的应用
1.5 软件工程人的因素
1.5.1 软件工程教育
1.5.2 软件工程学科
1.5.3 软件工程从业人员的职业道德
1.6 软件工具及软件开发环境
1.6.1 软件工具
1.6.2 软件开发环境
1.7 基于计算机的系统
1.7.1 基于计算机的系统的概念
1.7.2 基于计算机的系统的功能组件
1.7.3 典型的基于计算机的系统
1.7.4 基于计算机的系统的研制
小结
习题1
第2章 UML与RUP统一过程
2.1 案例说明
2.2 面向对象的软件开发方法
2.2.1 面向对象的概念
2.2.2 面向对象方法的优势
2.3 UML概述
2.4 RUP统一过程
2.4.1 RUP软件过程框架
2.4.2 RUP的5个阶段
2.4.3 RUP的9个工作流
小结
习题2
第3章 需求工程概论
3.1 软件需求的概念
3.1.1 软件需求的分类
3.1.2 软件需求的质量要素
3.2 需求工程的预备知识
3.2.1 与用户/客户交流的技巧
3.2.2 需求调查的基本方法
3.2.3 需求建模的基本方法
3.3 需求工程的过程模型
3.3.1 需求工程中的活动
3.3.2 迭代式过程模型
3.3.3 过程模型的裁剪
小结
习题3
第4章 需求获取
4.1 软件需求的初始表示
4.1.1 用例
4.1.2 用例图
4.1.3 用例的表示
4.1.4 类图
4.1.5 活动图
4.2 需求获取的过程模型
4.3 定义软件问题
4.3.1 标识客户和用户
4.3.2 理解业务背景
4.3.3 策划并实施需求调查
4.3.4 定义软件系统的轮廓
4.4 创建框架用例
4.4.1 策划并实施用例调查
4.4.2 以框架用例记录调查结果
4.4.3 创建用例图
4.4.4 整合并评审框架用例
4.5 精化用例
4.5.1 用例交互动作序列的描述方法
4.5.2 分解或合并用例
4.5.3 构建完整用例
4.5.4 精化用例图
4.5.5 精化业务规则及非功能需求
4.6 评审用例模型
小结
习题4
第5章 需求分析与验证
5.1 分析模型的表示
5.1.1 顺序图
5.1.2 通信图
5.1.3 状态图
5.1.4 扩充机制
5.2 需求分析的过程模型
5.3 需求优先级分析
5.3.1 确定需求项优先级
5.3.2 编排用例分析的优先顺序
5.4 用例分析
5.4.1 精化领域概念模型
5.4.2 设置分析类
5.4.3 构思分析类之间的协作关系
5.4.4 导出分析类图
5.5 利用快速原型辅助需求分析
5.6 评审分析模型
5.7 需求规约
5.8 需求验证
小结
习题5
第6章 软件设计概论
6.1 软件设计的概念
6.1.1 软件设计模型
6.1.2 设计模型的质量要素
6.2 软件设计的基本原则
6.2.1 抽象与逐步求精
6.2.2 模块化
6.2.3 信息隐藏
6.2.4 关注点分离
6.3 软件设计的过程模型
6.3.1 软件设计中的活动
6.3.2 迭代式设计过程模型
6.3.3 设计过程模型的裁剪
小结
习题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.4.1 何谓设计模式
7.4.2 通用的体系结构模式
7.5 概念设计
7.5.1 关键需求辨识
7.5.2 体系结构初创
7.6 体系结构精化
7.6.1 逻辑视图体系结构的精化
7.6.2 开发视图体系结构的设计
7.6.3 物理视图体系结构的设计
7.6.4 运行视图体系结构的设计
7.6.5 数据视图体系结构的设计
7.6.6 软件体系结构文档
7.7 基于构件的体系结构设计
7.7.1 软件复用概述
7.7.2 构件创立
7.7.3 构件复用
7.8 体系结构验证
小结
习题7
第8章 人机交互设计
8.1 以用户为中心的设计
8.1.1 以用户为中心的设计理念
8.1.2 人类信息处理模型
8.1.3 以用户为中心的设计方法
8.2 用户界面设计的基本原则
8.3 用户界面设计模型的表示
8.4 用户界面设计的过程模型
8.5 用户及任务分析
8.5.1 用户分析
8.5.2 任务分析
8.6 用户界面的概念设计
8.7 用户界面流设计
8.8 用户界面的精化
小结
习题8
第9章 软件详细设计
9.1 详细设计的任务与过程模型
9.2 用例设计
9.2.1 设计用例实现方案
9.2.2 构造设计类图
9.2.3 整合并优化用例实现方案
9.3 子系统设计
9.3.1 确立内部设计元素
9.3.2 导出设计类图
9.3.3 设计状态图与活动图
9.4 构件设计
9.5 类设计
9.5.1 精化类间关系
9.5.2 精化属性和操作
9.5.3 设计状态图与活动图
9.6 数据模型设计
9.6.1 确定持久数据条目
9.6.2 确定持久数据的组织结构
9.6.3 确立持久数据操作
9.6.4 优化持久数据操作的性能
9.7 设计整合与验证
9.7.1 设计规约
9.7.2 设计验证
小结
习题9
第10章 软件实现
10.1 软件实现的任务
10.2 软件实现过程
10.3 软件实现与程序设计语言
10.3.1 程序设计语言的演变和分类
10.3.2 程序设计语言的基本机制
10.3.3 程序设计语言的选择
10.4 编程实现
10.4.1 将编程作为问题求解
10.4.2 程序设计范型
10.4.3 编程标准
10.4.4 编程风格
10.4.5 极限编程与结对编程
10.5 软件调试
10.5.1 调试过程
10.5.2 软件缺陷的分类
10.5.3 调试方法
10.5.4 调试技术
小结
习题10
第11章 结构化软件开发
11.1 面向数据流的分析方法
11.1.1 数据流图与数据字典
11.1.2 实体-关系图
11.1.3 数据流图的实时系统扩充
11.1.4 基于数据流的分析方法
11.2 面向数据流的设计方法
11.2.1 基本概念和设计过程
11.2.2 变换分析
11.2.3 事务分析
11.3 实时系统设计
11.3.1 实时系统性能要求
11.3.2 实时系统设计要素
11.3.3 实时系统设计方法
11.3.4 设计实例
小结
习题11
第12章 软件测试
12.1 软件测试的概念
12.1.1 软件测试的任务
12.1.2 测试阶段的信息流程
12.1.3 测试用例及其设计
12.1.4 软件测试的原则
12.2 软件测试的过程模型
12.3 软件测试方法
12.3.1 白盒测试
12.3.2 黑盒测试
12.4 软件测试活动及实施策略
12.4.1 单元测试
12.4.2 集成测试
12.4.3 确认测试
12.4.4 系统测试
12.5 面向对象软件的测试
12.5.1 类的测试
12.5.2 交互测试
12.5.3 继承的测试
小结
习题12
第13章 软件维护
13.1 软件维护与进化的概念
13.2 软件维护的过程模型
13.2.1 结构化与非结构化的维护
13.2.2 维护的成本
13.2.3 可能存在的问题
13.3 可维护性
13.4 维护活动及实施策略
13.5 维护的副作用
13.6 逆向工程与软件重构
小结
习题13
第14章 持续集成
14.1 持续集成概述
14.1.1 持续集成的相关概念
14.1.2 持续集成的过程与管道
14.1.3 持续集成的价值
14.2 版本控制
14.2.1 集中与分布式版本控制
14.2.2 版本控制的主线与分支
14.2.3 功能开关
14.3 构建
14.4 测试
14.4.1 单元测试自动化
14.4.2 集成测试自动化
14.4.3 确认测试自动化
14.5 代码质量分析
14.6 发布与部署
小结
习题14
第15章 软件度量与估算
15.1 软件测量、度量与估算的概念
15.1.1 软件测量的意义和作用
15.1.2 度量、测量和估算
15.1.3 软件工程测量、度量与估算的基本内容
15.1.4 软件工程测量估算的基本方法
15.2 软件规模度量
15.2.1 代码行度量
15.2.2 功能点度量
15.2.3 代码行度量与功能点度量的比较
15.2.4 对象点度量
15.2.5 软件复用的度量
15.3 软件复杂性度量
15.3.1 软件复杂性及度量原则
15.3.2 控制结构的复杂性度量
15.3.3 体系结构的复杂性度量
15.4 软件质量度量
15.4.1 软件质量的概念
15.4.2 软件质量度量的三层次模型
15.4.3 Boehm、FURPS和ISO 9126度量模型
15.4.4 软件质量的评价准则度量
15.5 软件可靠性度量
15.5.1 软件可靠性的概念
15.5.2 软件修复和软件有效性
15.5.3 软件可靠性估算
15.6 制定软件度量大纲的方法和工具
15.6.1 制定软件度量大纲的方法
15.6.2 软件度量工具
小结
习题15
第16章 软件项目管理与过程改进
16.1 软件项目管理与过程模型
16.1.1 软件项目管理的概念
16.1.2 软件项目管理的过程模型
16.1.3 软件项目管理的原则
16.1.4 软件项目制品
16.2 软件项目度量与估算
16.2.1 软件项目分解
16.2.2 采用代码行、功能点度量的工作量估算
16.2.3 软件项目的生产率度量
16.2.4 一般经验估算模型
16.2.5 COCOMO模型
16.2.6 COCOMO Ⅱ模型
16.2.7 Putnam模型
16.3 风险分析
16.3.1 风险标识
16.3.2 风险估算
16.3.3 风险评价和管理
16.4 软件项目计划
16.4.1 任务分配与工程进度
16.4.2 任务分解与并行化
16.4.3 工作量分布
16.4.4 工程进度安排
16.5 软件项目人员和组织
16.5.1 软件项目人员
16.5.2 软件项目团队
16.5.3 软件项目的人员组织
16.5.4 评审或估算专家
16.5.5 软件项目的人员分布
16.6 软件质量保证
16.6.1 软件开发标准
16.6.2 软件质量保证活动
16.6.3 基于统计的软件质量保证
16.7 软件配置管理
16.7.1 软件配置管理的概念
16.7.2 软件配置管理的任务
16.7.3 软件配置管理标准
16.7.4 配置管理工具
16.8 软件过程改进
16.8.1 CMM的基本概念
16.8.2 能力成熟度模型CMM
16.8.3 能力成熟度模型集成CMMI
16.8.4 CMM和CMMI的选择和应用
小结
习题16
参考文献
前辅文
第1章 软件与软件工程
1.1 软件的概念
1.1.1 软件与软件的组成
1.1.2 软件生存周期
1.1.3 软件的特点
1.1.4 几类常用的软件
1.1.5 软件的质量
1.1.6 软件的安全与保护
1.2 软件工程的概念
1.2.1 软件工程的定义
1.2.2 软件工程的发展
1.2.3 软件工程的目标和原则
1.2.4 软件开发的主要方法
1.3 软件过程模型
1.3.1 瀑布模型
1.3.2 增量过程模型
1.3.3 原型建造模型
1.3.4 螺旋模型
1.3.5 基于构件的过程模型
1.3.6 通用软件过程模型
1.4 敏捷软件开发原则和应用
1.4.1 敏捷软件开发原则
1.4.2 敏捷软件过程的极限编程实践
1.4.3 敏捷软件开发过程的应用
1.5 软件工程人的因素
1.5.1 软件工程教育
1.5.2 软件工程学科
1.5.3 软件工程从业人员的职业道德
1.6 软件工具及软件开发环境
1.6.1 软件工具
1.6.2 软件开发环境
1.7 基于计算机的系统
1.7.1 基于计算机的系统的概念
1.7.2 基于计算机的系统的功能组件
1.7.3 典型的基于计算机的系统
1.7.4 基于计算机的系统的研制
小结
习题1
第2章 UML与RUP统一过程
2.1 案例说明
2.2 面向对象的软件开发方法
2.2.1 面向对象的概念
2.2.2 面向对象方法的优势
2.3 UML概述
2.4 RUP统一过程
2.4.1 RUP软件过程框架
2.4.2 RUP的5个阶段
2.4.3 RUP的9个工作流
小结
习题2
第3章 需求工程概论
3.1 软件需求的概念
3.1.1 软件需求的分类
3.1.2 软件需求的质量要素
3.2 需求工程的预备知识
3.2.1 与用户/客户交流的技巧
3.2.2 需求调查的基本方法
3.2.3 需求建模的基本方法
3.3 需求工程的过程模型
3.3.1 需求工程中的活动
3.3.2 迭代式过程模型
3.3.3 过程模型的裁剪
小结
习题3
第4章 需求获取
4.1 软件需求的初始表示
4.1.1 用例
4.1.2 用例图
4.1.3 用例的表示
4.1.4 类图
4.1.5 活动图
4.2 需求获取的过程模型
4.3 定义软件问题
4.3.1 标识客户和用户
4.3.2 理解业务背景
4.3.3 策划并实施需求调查
4.3.4 定义软件系统的轮廓
4.4 创建框架用例
4.4.1 策划并实施用例调查
4.4.2 以框架用例记录调查结果
4.4.3 创建用例图
4.4.4 整合并评审框架用例
4.5 精化用例
4.5.1 用例交互动作序列的描述方法
4.5.2 分解或合并用例
4.5.3 构建完整用例
4.5.4 精化用例图
4.5.5 精化业务规则及非功能需求
4.6 评审用例模型
小结
习题4
第5章 需求分析与验证
5.1 分析模型的表示
5.1.1 顺序图
5.1.2 通信图
5.1.3 状态图
5.1.4 扩充机制
5.2 需求分析的过程模型
5.3 需求优先级分析
5.3.1 确定需求项优先级
5.3.2 编排用例分析的优先顺序
5.4 用例分析
5.4.1 精化领域概念模型
5.4.2 设置分析类
5.4.3 构思分析类之间的协作关系
5.4.4 导出分析类图
5.5 利用快速原型辅助需求分析
5.6 评审分析模型
5.7 需求规约
5.8 需求验证
小结
习题5
第6章 软件设计概论
6.1 软件设计的概念
6.1.1 软件设计模型
6.1.2 设计模型的质量要素
6.2 软件设计的基本原则
6.2.1 抽象与逐步求精
6.2.2 模块化
6.2.3 信息隐藏
6.2.4 关注点分离
6.3 软件设计的过程模型
6.3.1 软件设计中的活动
6.3.2 迭代式设计过程模型
6.3.3 设计过程模型的裁剪
小结
习题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.4.1 何谓设计模式
7.4.2 通用的体系结构模式
7.5 概念设计
7.5.1 关键需求辨识
7.5.2 体系结构初创
7.6 体系结构精化
7.6.1 逻辑视图体系结构的精化
7.6.2 开发视图体系结构的设计
7.6.3 物理视图体系结构的设计
7.6.4 运行视图体系结构的设计
7.6.5 数据视图体系结构的设计
7.6.6 软件体系结构文档
7.7 基于构件的体系结构设计
7.7.1 软件复用概述
7.7.2 构件创立
7.7.3 构件复用
7.8 体系结构验证
小结
习题7
第8章 人机交互设计
8.1 以用户为中心的设计
8.1.1 以用户为中心的设计理念
8.1.2 人类信息处理模型
8.1.3 以用户为中心的设计方法
8.2 用户界面设计的基本原则
8.3 用户界面设计模型的表示
8.4 用户界面设计的过程模型
8.5 用户及任务分析
8.5.1 用户分析
8.5.2 任务分析
8.6 用户界面的概念设计
8.7 用户界面流设计
8.8 用户界面的精化
小结
习题8
第9章 软件详细设计
9.1 详细设计的任务与过程模型
9.2 用例设计
9.2.1 设计用例实现方案
9.2.2 构造设计类图
9.2.3 整合并优化用例实现方案
9.3 子系统设计
9.3.1 确立内部设计元素
9.3.2 导出设计类图
9.3.3 设计状态图与活动图
9.4 构件设计
9.5 类设计
9.5.1 精化类间关系
9.5.2 精化属性和操作
9.5.3 设计状态图与活动图
9.6 数据模型设计
9.6.1 确定持久数据条目
9.6.2 确定持久数据的组织结构
9.6.3 确立持久数据操作
9.6.4 优化持久数据操作的性能
9.7 设计整合与验证
9.7.1 设计规约
9.7.2 设计验证
小结
习题9
第10章 软件实现
10.1 软件实现的任务
10.2 软件实现过程
10.3 软件实现与程序设计语言
10.3.1 程序设计语言的演变和分类
10.3.2 程序设计语言的基本机制
10.3.3 程序设计语言的选择
10.4 编程实现
10.4.1 将编程作为问题求解
10.4.2 程序设计范型
10.4.3 编程标准
10.4.4 编程风格
10.4.5 极限编程与结对编程
10.5 软件调试
10.5.1 调试过程
10.5.2 软件缺陷的分类
10.5.3 调试方法
10.5.4 调试技术
小结
习题10
第11章 结构化软件开发
11.1 面向数据流的分析方法
11.1.1 数据流图与数据字典
11.1.2 实体-关系图
11.1.3 数据流图的实时系统扩充
11.1.4 基于数据流的分析方法
11.2 面向数据流的设计方法
11.2.1 基本概念和设计过程
11.2.2 变换分析
11.2.3 事务分析
11.3 实时系统设计
11.3.1 实时系统性能要求
11.3.2 实时系统设计要素
11.3.3 实时系统设计方法
11.3.4 设计实例
小结
习题11
第12章 软件测试
12.1 软件测试的概念
12.1.1 软件测试的任务
12.1.2 测试阶段的信息流程
12.1.3 测试用例及其设计
12.1.4 软件测试的原则
12.2 软件测试的过程模型
12.3 软件测试方法
12.3.1 白盒测试
12.3.2 黑盒测试
12.4 软件测试活动及实施策略
12.4.1 单元测试
12.4.2 集成测试
12.4.3 确认测试
12.4.4 系统测试
12.5 面向对象软件的测试
12.5.1 类的测试
12.5.2 交互测试
12.5.3 继承的测试
小结
习题12
第13章 软件维护
13.1 软件维护与进化的概念
13.2 软件维护的过程模型
13.2.1 结构化与非结构化的维护
13.2.2 维护的成本
13.2.3 可能存在的问题
13.3 可维护性
13.4 维护活动及实施策略
13.5 维护的副作用
13.6 逆向工程与软件重构
小结
习题13
第14章 持续集成
14.1 持续集成概述
14.1.1 持续集成的相关概念
14.1.2 持续集成的过程与管道
14.1.3 持续集成的价值
14.2 版本控制
14.2.1 集中与分布式版本控制
14.2.2 版本控制的主线与分支
14.2.3 功能开关
14.3 构建
14.4 测试
14.4.1 单元测试自动化
14.4.2 集成测试自动化
14.4.3 确认测试自动化
14.5 代码质量分析
14.6 发布与部署
小结
习题14
第15章 软件度量与估算
15.1 软件测量、度量与估算的概念
15.1.1 软件测量的意义和作用
15.1.2 度量、测量和估算
15.1.3 软件工程测量、度量与估算的基本内容
15.1.4 软件工程测量估算的基本方法
15.2 软件规模度量
15.2.1 代码行度量
15.2.2 功能点度量
15.2.3 代码行度量与功能点度量的比较
15.2.4 对象点度量
15.2.5 软件复用的度量
15.3 软件复杂性度量
15.3.1 软件复杂性及度量原则
15.3.2 控制结构的复杂性度量
15.3.3 体系结构的复杂性度量
15.4 软件质量度量
15.4.1 软件质量的概念
15.4.2 软件质量度量的三层次模型
15.4.3 Boehm、FURPS和ISO 9126度量模型
15.4.4 软件质量的评价准则度量
15.5 软件可靠性度量
15.5.1 软件可靠性的概念
15.5.2 软件修复和软件有效性
15.5.3 软件可靠性估算
15.6 制定软件度量大纲的方法和工具
15.6.1 制定软件度量大纲的方法
15.6.2 软件度量工具
小结
习题15
第16章 软件项目管理与过程改进
16.1 软件项目管理与过程模型
16.1.1 软件项目管理的概念
16.1.2 软件项目管理的过程模型
16.1.3 软件项目管理的原则
16.1.4 软件项目制品
16.2 软件项目度量与估算
16.2.1 软件项目分解
16.2.2 采用代码行、功能点度量的工作量估算
16.2.3 软件项目的生产率度量
16.2.4 一般经验估算模型
16.2.5 COCOMO模型
16.2.6 COCOMO Ⅱ模型
16.2.7 Putnam模型
16.3 风险分析
16.3.1 风险标识
16.3.2 风险估算
16.3.3 风险评价和管理
16.4 软件项目计划
16.4.1 任务分配与工程进度
16.4.2 任务分解与并行化
16.4.3 工作量分布
16.4.4 工程进度安排
16.5 软件项目人员和组织
16.5.1 软件项目人员
16.5.2 软件项目团队
16.5.3 软件项目的人员组织
16.5.4 评审或估算专家
16.5.5 软件项目的人员分布
16.6 软件质量保证
16.6.1 软件开发标准
16.6.2 软件质量保证活动
16.6.3 基于统计的软件质量保证
16.7 软件配置管理
16.7.1 软件配置管理的概念
16.7.2 软件配置管理的任务
16.7.3 软件配置管理标准
16.7.4 配置管理工具
16.8 软件过程改进
16.8.1 CMM的基本概念
16.8.2 能力成熟度模型CMM
16.8.3 能力成熟度模型集成CMMI
16.8.4 CMM和CMMI的选择和应用
小结
习题16
参考文献
前辅文
第1章 软件与软件工程
1.1 软件的概念
1.1.1 软件与软件的组成
1.1.2 软件生存周期
1.1.3 软件的特点
1.1.4 几类常用的软件
1.1.5 软件的质量
1.1.6 软件的安全与保护
1.2 软件工程的概念
1.2.1 软件工程的定义
1.2.2 软件工程的发展
1.2.3 软件工程的目标和原则
1.2.4 软件开发的主要方法
1.3 软件过程模型
1.3.1 瀑布模型
1.3.2 增量过程模型
1.3.3 原型建造模型
1.3.4 螺旋模型
1.3.5 基于构件的过程模型
1.3.6 通用软件过程模型
1.4 敏捷软件开发原则和应用
1.4.1 敏捷软件开发原则
1.4.2 敏捷软件过程的极限编程实践
1.4.3 敏捷软件开发过程的应用
1.5 软件工程人的因素
1.5.1 软件工程教育
1.5.2 软件工程学科
1.5.3 软件工程从业人员的职业道德
1.6 软件工具及软件开发环境
1.6.1 软件工具
1.6.2 软件开发环境
1.7 基于计算机的系统
1.7.1 基于计算机的系统的概念
1.7.2 基于计算机的系统的功能组件
1.7.3 典型的基于计算机的系统
1.7.4 基于计算机的系统的研制
小结
习题1
第2章 UML与RUP统一过程
2.1 案例说明
2.2 面向对象的软件开发方法
2.2.1 面向对象的概念
2.2.2 面向对象方法的优势
2.3 UML概述
2.4 RUP统一过程
2.4.1 RUP软件过程框架
2.4.2 RUP的5个阶段
2.4.3 RUP的9个工作流
小结
习题2
第3章 需求工程概论
3.1 软件需求的概念
3.1.1 软件需求的分类
3.1.2 软件需求的质量要素
3.2 需求工程的预备知识
3.2.1 与用户/客户交流的技巧
3.2.2 需求调查的基本方法
3.2.3 需求建模的基本方法
3.3 需求工程的过程模型
3.3.1 需求工程中的活动
3.3.2 迭代式过程模型
3.3.3 过程模型的裁剪
小结
习题3
第4章 需求获取
4.1 软件需求的初始表示
4.1.1 用例
4.1.2 用例图
4.1.3 用例的表示
4.1.4 类图
4.1.5 活动图
4.2 需求获取的过程模型
4.3 定义软件问题
4.3.1 标识客户和用户
4.3.2 理解业务背景
4.3.3 策划并实施需求调查
4.3.4 定义软件系统的轮廓
4.4 创建框架用例
4.4.1 策划并实施用例调查
4.4.2 以框架用例记录调查结果
4.4.3 创建用例图
4.4.4 整合并评审框架用例
4.5 精化用例
4.5.1 用例交互动作序列的描述方法
4.5.2 分解或合并用例
4.5.3 构建完整用例
4.5.4 精化用例图
4.5.5 精化业务规则及非功能需求
4.6 评审用例模型
小结
习题4
第5章 需求分析与验证
5.1 分析模型的表示
5.1.1 顺序图
5.1.2 通信图
5.1.3 状态图
5.1.4 扩充机制
5.2 需求分析的过程模型
5.3 需求优先级分析
5.3.1 确定需求项优先级
5.3.2 编排用例分析的优先顺序
5.4 用例分析
5.4.1 精化领域概念模型
5.4.2 设置分析类
5.4.3 构思分析类之间的协作关系
5.4.4 导出分析类图
5.5 利用快速原型辅助需求分析
5.6 评审分析模型
5.7 需求规约
5.8 需求验证
小结
习题5
第6章 软件设计概论
6.1 软件设计的概念
6.1.1 软件设计模型
6.1.2 设计模型的质量要素
6.2 软件设计的基本原则
6.2.1 抽象与逐步求精
6.2.2 模块化
6.2.3 信息隐藏
6.2.4 关注点分离
6.3 软件设计的过程模型
6.3.1 软件设计中的活动
6.3.2 迭代式设计过程模型
6.3.3 设计过程模型的裁剪
小结
习题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.4.1 何谓设计模式
7.4.2 通用的体系结构模式
7.5 概念设计
7.5.1 关键需求辨识
7.5.2 体系结构初创
7.6 体系结构精化
7.6.1 逻辑视图体系结构的精化
7.6.2 开发视图体系结构的设计
7.6.3 物理视图体系结构的设计
7.6.4 运行视图体系结构的设计
7.6.5 数据视图体系结构的设计
7.6.6 软件体系结构文档
7.7 基于构件的体系结构设计
7.7.1 软件复用概述
7.7.2 构件创立
7.7.3 构件复用
7.8 体系结构验证
小结
习题7
第8章 人机交互设计
8.1 以用户为中心的设计
8.1.1 以用户为中心的设计理念
8.1.2 人类信息处理模型
8.1.3 以用户为中心的设计方法
8.2 用户界面设计的基本原则
8.3 用户界面设计模型的表示
8.4 用户界面设计的过程模型
8.5 用户及任务分析
8.5.1 用户分析
8.5.2 任务分析
8.6 用户界面的概念设计
8.7 用户界面流设计
8.8 用户界面的精化
小结
习题8
第9章 软件详细设计
9.1 详细设计的任务与过程模型
9.2 用例设计
9.2.1 设计用例实现方案
9.2.2 构造设计类图
9.2.3 整合并优化用例实现方案
9.3 子系统设计
9.3.1 确立内部设计元素
9.3.2 导出设计类图
9.3.3 设计状态图与活动图
9.4 构件设计
9.5 类设计
9.5.1 精化类间关系
9.5.2 精化属性和操作
9.5.3 设计状态图与活动图
9.6 数据模型设计
9.6.1 确定持久数据条目
9.6.2 确定持久数据的组织结构
9.6.3 确立持久数据操作
9.6.4 优化持久数据操作的性能
9.7 设计整合与验证
9.7.1 设计规约
9.7.2 设计验证
小结
习题9
第10章 软件实现
10.1 软件实现的任务
10.2 软件实现过程
10.3 软件实现与程序设计语言
10.3.1 程序设计语言的演变和分类
10.3.2 程序设计语言的基本机制
10.3.3 程序设计语言的选择
10.4 编程实现
10.4.1 将编程作为问题求解
10.4.2 程序设计范型
10.4.3 编程标准
10.4.4 编程风格
10.4.5 极限编程与结对编程
10.5 软件调试
10.5.1 调试过程
10.5.2 软件缺陷的分类
10.5.3 调试方法
10.5.4 调试技术
小结
习题10
第11章 结构化软件开发
11.1 面向数据流的分析方法
11.1.1 数据流图与数据字典
11.1.2 实体-关系图
11.1.3 数据流图的实时系统扩充
11.1.4 基于数据流的分析方法
11.2 面向数据流的设计方法
11.2.1 基本概念和设计过程
11.2.2 变换分析
11.2.3 事务分析
11.3 实时系统设计
11.3.1 实时系统性能要求
11.3.2 实时系统设计要素
11.3.3 实时系统设计方法
11.3.4 设计实例
小结
习题11
第12章 软件测试
12.1 软件测试的概念
12.1.1 软件测试的任务
12.1.2 测试阶段的信息流程
12.1.3 测试用例及其设计
12.1.4 软件测试的原则
12.2 软件测试的过程模型
12.3 软件测试方法
12.3.1 白盒测试
12.3.2 黑盒测试
12.4 软件测试活动及实施策略
12.4.1 单元测试
12.4.2 集成测试
12.4.3 确认测试
12.4.4 系统测试
12.5 面向对象软件的测试
12.5.1 类的测试
12.5.2 交互测试
12.5.3 继承的测试
小结
习题12
第13章 软件维护
13.1 软件维护与进化的概念
13.2 软件维护的过程模型
13.2.1 结构化与非结构化的维护
13.2.2 维护的成本
13.2.3 可能存在的问题
13.3 可维护性
13.4 维护活动及实施策略
13.5 维护的副作用
13.6 逆向工程与软件重构
小结
习题13
第14章 持续集成
14.1 持续集成概述
14.1.1 持续集成的相关概念
14.1.2 持续集成的过程与管道
14.1.3 持续集成的价值
14.2 版本控制
14.2.1 集中与分布式版本控制
14.2.2 版本控制的主线与分支
14.2.3 功能开关
14.3 构建
14.4 测试
14.4.1 单元测试自动化
14.4.2 集成测试自动化
14.4.3 确认测试自动化
14.5 代码质量分析
14.6 发布与部署
小结
习题14
第15章 软件度量与估算
15.1 软件测量、度量与估算的概念
15.1.1 软件测量的意义和作用
15.1.2 度量、测量和估算
15.1.3 软件工程测量、度量与估算的基本内容
15.1.4 软件工程测量估算的基本方法
15.2 软件规模度量
15.2.1 代码行度量
15.2.2 功能点度量
15.2.3 代码行度量与功能点度量的比较
15.2.4 对象点度量
15.2.5 软件复用的度量
15.3 软件复杂性度量
15.3.1 软件复杂性及度量原则
15.3.2 控制结构的复杂性度量
15.3.3 体系结构的复杂性度量
15.4 软件质量度量
15.4.1 软件质量的概念
15.4.2 软件质量度量的三层次模型
15.4.3 Boehm、FURPS和ISO 9126度量模型
15.4.4 软件质量的评价准则度量
15.5 软件可靠性度量
15.5.1 软件可靠性的概念
15.5.2 软件修复和软件有效性
15.5.3 软件可靠性估算
15.6 制定软件度量大纲的方法和工具
15.6.1 制定软件度量大纲的方法
15.6.2 软件度量工具
小结
习题15
第16章 软件项目管理与过程改进
16.1 软件项目管理与过程模型
16.1.1 软件项目管理的概念
16.1.2 软件项目管理的过程模型
16.1.3 软件项目管理的原则
16.1.4 软件项目制品
16.2 软件项目度量与估算
16.2.1 软件项目分解
16.2.2 采用代码行、功能点度量的工作量估算
16.2.3 软件项目的生产率度量
16.2.4 一般经验估算模型
16.2.5 COCOMO模型
16.2.6 COCOMO Ⅱ模型
16.2.7 Putnam模型
16.3 风险分析
16.3.1 风险标识
16.3.2 风险估算
16.3.3 风险评价和管理
16.4 软件项目计划
16.4.1 任务分配与工程进度
16.4.2 任务分解与并行化
16.4.3 工作量分布
16.4.4 工程进度安排
16.5 软件项目人员和组织
16.5.1 软件项目人员
16.5.2 软件项目团队
16.5.3 软件项目的人员组织
16.5.4 评审或估算专家
16.5.5 软件项目的人员分布
16.6 软件质量保证
16.6.1 软件开发标准
16.6.2 软件质量保证活动
16.6.3 基于统计的软件质量保证
16.7 软件配置管理
16.7.1 软件配置管理的概念
16.7.2 软件配置管理的任务
16.7.3 软件配置管理标准
16.7.4 配置管理工具
16.8 软件过程改进
16.8.1 CMM的基本概念
16.8.2 能力成熟度模型CMM
16.8.3 能力成熟度模型集成CMMI
16.8.4 CMM和CMMI的选择和应用
小结
习题16
参考文献
前辅文
第1章 软件与软件工程
1.1 软件的概念
1.1.1 软件与软件的组成
1.1.2 软件生存周期
1.1.3 软件的特点
1.1.4 几类常用的软件
1.1.5 软件的质量
1.1.6 软件的安全与保护
1.2 软件工程的概念
1.2.1 软件工程的定义
1.2.2 软件工程的发展
1.2.3 软件工程的目标和原则
1.2.4 软件开发的主要方法
1.3 软件过程模型
1.3.1 瀑布模型
1.3.2 增量过程模型
1.3.3 原型建造模型
1.3.4 螺旋模型
1.3.5 基于构件的过程模型
1.3.6 通用软件过程模型
1.4 敏捷软件开发原则和应用
1.4.1 敏捷软件开发原则
1.4.2 敏捷软件过程的极限编程实践
1.4.3 敏捷软件开发过程的应用
1.5 软件工程人的因素
1.5.1 软件工程教育
1.5.2 软件工程学科
1.5.3 软件工程从业人员的职业道德
1.6 软件工具及软件开发环境
1.6.1 软件工具
1.6.2 软件开发环境
1.7 基于计算机的系统
1.7.1 基于计算机的系统的概念
1.7.2 基于计算机的系统的功能组件
1.7.3 典型的基于计算机的系统
1.7.4 基于计算机的系统的研制
小结
习题1
第2章 UML与RUP统一过程
2.1 案例说明
2.2 面向对象的软件开发方法
2.2.1 面向对象的概念
2.2.2 面向对象方法的优势
2.3 UML概述
2.4 RUP统一过程
2.4.1 RUP软件过程框架
2.4.2 RUP的5个阶段
2.4.3 RUP的9个工作流
小结
习题2
第3章 需求工程概论
3.1 软件需求的概念
3.1.1 软件需求的分类
3.1.2 软件需求的质量要素
3.2 需求工程的预备知识
3.2.1 与用户/客户交流的技巧
3.2.2 需求调查的基本方法
3.2.3 需求建模的基本方法
3.3 需求工程的过程模型
3.3.1 需求工程中的活动
3.3.2 迭代式过程模型
3.3.3 过程模型的裁剪
小结
习题3
第4章 需求获取
4.1 软件需求的初始表示
4.1.1 用例
4.1.2 用例图
4.1.3 用例的表示
4.1.4 类图
4.1.5 活动图
4.2 需求获取的过程模型
4.3 定义软件问题
4.3.1 标识客户和用户
4.3.2 理解业务背景
4.3.3 策划并实施需求调查
4.3.4 定义软件系统的轮廓
4.4 创建框架用例
4.4.1 策划并实施用例调查
4.4.2 以框架用例记录调查结果
4.4.3 创建用例图
4.4.4 整合并评审框架用例
4.5 精化用例
4.5.1 用例交互动作序列的描述方法
4.5.2 分解或合并用例
4.5.3 构建完整用例
4.5.4 精化用例图
4.5.5 精化业务规则及非功能需求
4.6 评审用例模型
小结
习题4
第5章 需求分析与验证
5.1 分析模型的表示
5.1.1 顺序图
5.1.2 通信图
5.1.3 状态图
5.1.4 扩充机制
5.2 需求分析的过程模型
5.3 需求优先级分析
5.3.1 确定需求项优先级
5.3.2 编排用例分析的优先顺序
5.4 用例分析
5.4.1 精化领域概念模型
5.4.2 设置分析类
5.4.3 构思分析类之间的协作关系
5.4.4 导出分析类图
5.5 利用快速原型辅助需求分析
5.6 评审分析模型
5.7 需求规约
5.8 需求验证
小结
习题5
第6章 软件设计概论
6.1 软件设计的概念
6.1.1 软件设计模型
6.1.2 设计模型的质量要素
6.2 软件设计的基本原则
6.2.1 抽象与逐步求精
6.2.2 模块化
6.2.3 信息隐藏
6.2.4 关注点分离
6.3 软件设计的过程模型
6.3.1 软件设计中的活动
6.3.2 迭代式设计过程模型
6.3.3 设计过程模型的裁剪
小结
习题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.4.1 何谓设计模式
7.4.2 通用的体系结构模式
7.5 概念设计
7.5.1 关键需求辨识
7.5.2 体系结构初创
7.6 体系结构精化
7.6.1 逻辑视图体系结构的精化
7.6.2 开发视图体系结构的设计
7.6.3 物理视图体系结构的设计
7.6.4 运行视图体系结构的设计
7.6.5 数据视图体系结构的设计
7.6.6 软件体系结构文档
7.7 基于构件的体系结构设计
7.7.1 软件复用概述
7.7.2 构件创立
7.7.3 构件复用
7.8 体系结构验证
小结
习题7
第8章 人机交互设计
8.1 以用户为中心的设计
8.1.1 以用户为中心的设计理念
8.1.2 人类信息处理模型
8.1.3 以用户为中心的设计方法
8.2 用户界面设计的基本原则
8.3 用户界面设计模型的表示
8.4 用户界面设计的过程模型
8.5 用户及任务分析
8.5.1 用户分析
8.5.2 任务分析
8.6 用户界面的概念设计
8.7 用户界面流设计
8.8 用户界面的精化
小结
习题8
第9章 软件详细设计
9.1 详细设计的任务与过程模型
9.2 用例设计
9.2.1 设计用例实现方案
9.2.2 构造设计类图
9.2.3 整合并优化用例实现方案
9.3 子系统设计
9.3.1 确立内部设计元素
9.3.2 导出设计类图
9.3.3 设计状态图与活动图
9.4 构件设计
9.5 类设计
9.5.1 精化类间关系
9.5.2 精化属性和操作
9.5.3 设计状态图与活动图
9.6 数据模型设计
9.6.1 确定持久数据条目
9.6.2 确定持久数据的组织结构
9.6.3 确立持久数据操作
9.6.4 优化持久数据操作的性能
9.7 设计整合与验证
9.7.1 设计规约
9.7.2 设计验证
小结
习题9
第10章 软件实现
10.1 软件实现的任务
10.2 软件实现过程
10.3 软件实现与程序设计语言
10.3.1 程序设计语言的演变和分类
10.3.2 程序设计语言的基本机制
10.3.3 程序设计语言的选择
10.4 编程实现
10.4.1 将编程作为问题求解
10.4.2 程序设计范型
10.4.3 编程标准
10.4.4 编程风格
10.4.5 极限编程与结对编程
10.5 软件调试
10.5.1 调试过程
10.5.2 软件缺陷的分类
10.5.3 调试方法
10.5.4 调试技术
小结
习题10
第11章 结构化软件开发
11.1 面向数据流的分析方法
11.1.1 数据流图与数据字典
11.1.2 实体-关系图
11.1.3 数据流图的实时系统扩充
11.1.4 基于数据流的分析方法
11.2 面向数据流的设计方法
11.2.1 基本概念和设计过程
11.2.2 变换分析
11.2.3 事务分析
11.3 实时系统设计
11.3.1 实时系统性能要求
11.3.2 实时系统设计要素
11.3.3 实时系统设计方法
11.3.4 设计实例
小结
习题11
第12章 软件测试
12.1 软件测试的概念
12.1.1 软件测试的任务
12.1.2 测试阶段的信息流程
12.1.3 测试用例及其设计
12.1.4 软件测试的原则
12.2 软件测试的过程模型
12.3 软件测试方法
12.3.1 白盒测试
12.3.2 黑盒测试
12.4 软件测试活动及实施策略
12.4.1 单元测试
12.4.2 集成测试
12.4.3 确认测试
12.4.4 系统测试
12.5 面向对象软件的测试
12.5.1 类的测试
12.5.2 交互测试
12.5.3 继承的测试
小结
习题12
第13章 软件维护
13.1 软件维护与进化的概念
13.2 软件维护的过程模型
13.2.1 结构化与非结构化的维护
13.2.2 维护的成本
13.2.3 可能存在的问题
13.3 可维护性
13.4 维护活动及实施策略
13.5 维护的副作用
13.6 逆向工程与软件重构
小结
习题13
第14章 持续集成
14.1 持续集成概述
14.1.1 持续集成的相关概念
14.1.2 持续集成的过程与管道
14.1.3 持续集成的价值
14.2 版本控制
14.2.1 集中与分布式版本控制
14.2.2 版本控制的主线与分支
14.2.3 功能开关
14.3 构建
14.4 测试
14.4.1 单元测试自动化
14.4.2 集成测试自动化
14.4.3 确认测试自动化
14.5 代码质量分析
14.6 发布与部署
小结
习题14
第15章 软件度量与估算
15.1 软件测量、度量与估算的概念
15.1.1 软件测量的意义和作用
15.1.2 度量、测量和估算
15.1.3 软件工程测量、度量与估算的基本内容
15.1.4 软件工程测量估算的基本方法
15.2 软件规模度量
15.2.1 代码行度量
15.2.2 功能点度量
15.2.3 代码行度量与功能点度量的比较
15.2.4 对象点度量
15.2.5 软件复用的度量
15.3 软件复杂性度量
15.3.1 软件复杂性及度量原则
15.3.2 控制结构的复杂性度量
15.3.3 体系结构的复杂性度量
15.4 软件质量度量
15.4.1 软件质量的概念
15.4.2 软件质量度量的三层次模型
15.4.3 Boehm、FURPS和ISO 9126度量模型
15.4.4 软件质量的评价准则度量
15.5 软件可靠性度量
15.5.1 软件可靠性的概念
15.5.2 软件修复和软件有效性
15.5.3 软件可靠性估算
15.6 制定软件度量大纲的方法和工具
15.6.1 制定软件度量大纲的方法
15.6.2 软件度量工具
小结
习题15
第16章 软件项目管理与过程改进
16.1 软件项目管理与过程模型
16.1.1 软件项目管理的概念
16.1.2 软件项目管理的过程模型
16.1.3 软件项目管理的原则
16.1.4 软件项目制品
16.2 软件项目度量与估算
16.2.1 软件项目分解
16.2.2 采用代码行、功能点度量的工作量估算
16.2.3 软件项目的生产率度量
16.2.4 一般经验估算模型
16.2.5 COCOMO模型
16.2.6 COCOMO Ⅱ模型
16.2.7 Putnam模型
16.3 风险分析
16.3.1 风险标识
16.3.2 风险估算
16.3.3 风险评价和管理
16.4 软件项目计划
16.4.1 任务分配与工程进度
16.4.2 任务分解与并行化
16.4.3 工作量分布
16.4.4 工程进度安排
16.5 软件项目人员和组织
16.5.1 软件项目人员
16.5.2 软件项目团队
16.5.3 软件项目的人员组织
16.5.4 评审或估算专家
16.5.5 软件项目的人员分布
16.6 软件质量保证
16.6.1 软件开发标准
16.6.2 软件质量保证活动
16.6.3 基于统计的软件质量保证
16.7 软件配置管理
16.7.1 软件配置管理的概念
16.7.2 软件配置管理的任务
16.7.3 软件配置管理标准
16.7.4 配置管理工具
16.8 软件过程改进
16.8.1 CMM的基本概念
16.8.2 能力成熟度模型CMM
16.8.3 能力成熟度模型集成CMMI
16.8.4 CMM和CMMI的选择和应用
小结
习题16
参考文献


















