内容简介
第一部分 软件式工程基础
第1章 绪论
1.1软件
1.1.1软件的作用和特性
1.1.2软件的发展和面临的新挑战
1.1.3软件危机
1.2工程
1.2.1软件开发与艺术、科学和工程的关系
1.2.2工程的定义和特性
1.2.3工程的准则
1.3软件工程
1.3.1软件工程的概念和知识域
1.3.2软件工程的金三角
1.3.3控制软件开发的复杂性
1.3.4软件工程经济学
1.4案例概述
本章小结
参考文献
习题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.3统一软件过程
2.3.1阶段
2.3.2迭代
2.3.3过程规范
2.4敏捷过程
2.4.1敏捷过程的价值观和原则
2.4.2 XP
2.4.3 Scrum
2.4.4 MSF
2.5软件过程的选择、裁剪、评估和改进
2.5.1软件过程的选择和裁剪
2.5.2软件过程的评估
2.5.3软件过程的改进
本章小结
参考文献
习题2
第3章 软件建模
3.1模型和建模
3.1.1模型
3.1.2软件模型的3个层次:CIM、PIM和PSM
3.1.3软件建模方法
3.2结构化方法
3.2.1结构化分析
3.2.2结构化设计
3.3面向对象方法
3.3.1面向对象的基本概念
3.3.2面向对象的基本原则
3.3.3面向对象的分析和设计
3.3.4结构化方法和面向对象方法的比较
3.4基于构件的开发方法
3.4.1构件
3.4.2基于构件的软件开发
3.4.3构件开发
3.4.4构件管理
3.4.5应用开发和构件组装
3.4.6与面向对象方法的关系
3.5面向服务方法
3.5.1面向服务架构的基本概念
3.5.2面向服务建模的内涵
3.5.3面向服务建模的方法
3.6模型驱动开发方法
3.6.1从代码驱动到模型驱动
3.6.2元模型和MOF
3.6.3基于MDA的软件开发方法
3.7形式化方法
3.7.1形式化方法的概念
3.7.2形式化规约
3.7.3形式化开发
3.7.4形式化验证
3.8敏捷建模方法
3.8.1敏捷建模的原则
3.8.2敏捷建模的实践
本章小结
参考文献
习题3
第4章 需求工程
4.1软件需求面临的挑战
4.2需求工程的概念
4.2.1软件需求
4.2.2需求的层次
4.2.3优秀需求应具有的特性
4.2.4软件需求工程
4.3需求获取
4.3.1需求来源
4.3.2需求获取技术
4.4需求分析建模
4.4.1分析模型
4.4.2分析建模的准则
4.5需求定义和验证
4.5.1软件前景文档
4.5.2软件需求规约
4.5.3用户界面原型
4.5.4软件需求验证
4.6需求管理
4.6.1定义需求基线
4.6.2需求变更控制和版本控制
4.6.3需求跟踪
本章小结
参考文献
习题4
第5章 面向对象的分析建模
5.1面向对象的分析模型
5.1.1用例图
5.1.2活动图
5.1.3类图
5.1.4时序图
5.1.5通信图
5.1.6包图
5.2分析建模的步骤
5.3用例建模
5.3.1执行者的识别
5.3.2用例的识别
5.3.3用例图的构建
5.3.4用例规约的撰写
5.3.5用例模型的优化
5.4建立概念模型
5.5用例实现的识别
5.6分析类的识别
5.6.1 3种分析类
5.6.2识别边界类
5.6.3识别控制类
5.6.4识别实体类
5.7用例分析
5.7.1职责分配的通用原则
5.7.2时序图和通信图的构建
5.7.3类图的构建
本章小结
参考文献
习题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.3.4安全性设计策略
6.3.5可测试性设计策略
6.3.6易用性设计策略
6.4架构风格
6.4.1通用结构的架构风格
6.4.2分布式系统的架构风格
6.4.3交互式系统的架构风格
6.4.4自适应系统的架构风格
6.4.5其他架构风格
6.5设计模式
6.5.1创建型设计模式
6.5.2结构型设计模式
6.5.3行为型设计模式
6.6人机界面设计
6.6.1界面设计原则
6.6.2人机交互方式
6.6.3界面设计过程
6.6.4界面设计问题
本章小结
参考文献
习题6
第7章 面向对象的设计建模
7.1面向对象的设计模型
7.1.1设计建模过程
7.1.2构件图
7.1.3部署图
7.1.4状态机图
7.2架构设计
7.2.1 4+1架构视图
7.2.2逻辑视图设计
7.2.3进程视图设计
7.2.4开发视图设计
7.2.5物理视图设计
7.2.6场景视图设计
7.2.7视图选择
7.3包和子系统设计
7.3.1包设计原则
7.3.2子系统设计
7.4类设计
7.4.1类设计原则
7.4.2类设计过程
7.5持久化设计
7.5.1实体对象模型与数据库设计
7.5.2数据库设计
7.5.3持久化框架
本章小结
参考文献
习题7
第8章 软件测试
8.1软件测试概念
8.1.1软件测试定义
8.1.2软件测试原则
8.1.3软件可测试性
8.2软件测试策略
8.2.1软件测试层次
8.2.2软件质量属性测试
8.2.3其他软件测试策略
8.3软件测试技术
8.3.1测试技术分类
8.3.2基于直觉和经验的测试
8.3.3基于代码的测试
8.3.4基于规约的测试
8.3.5基于错误的测试
8.3.6基于模型的测试
8.3.7基于应用类型的测试
8.4软件测试过程
8.4.1测试计划
8.4.2测试设计
8.4.3测试开发
8.4.4测试执行
8.4.5测试评估
8.5自动化测试
8.5.1自动化测试的定义和优势
8.5.2自动化测试适用的场合
8.5.3自动化测试的误区
8.5.4测试工具
本章小结
参考文献
习题8
第9章 软件演化和软件维护
9.1软件演化
9.1.1软件演化的定义
9.1.2软件演化法则
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.5软件维护技术
9.5.1程序理解
9.5.2逆向工程
9.5.3再工程
本章小结
参考文献
习题9
第二部分 软件工程管理
第10章 软件项目管理
10.1项目和项目管理
10.1.1项目管理的基本概念
10.1.2项目管理的相关标准
10.1.3软件项目管理的特点
10.2项目管理的知识域和过程
10.2.1项目管理知识域
10.2.2项目管理过程
10.3软件项目从立项到收尾
10.3.1软件项目立项
10.3.2软件项目启动
10.3.3软件项目规划
10.3.4软件项目执行
10.3.5软件项目监控
10.3.6软件项目收尾
10.4软件项目经理的职责
本章小结
参考文献
习题10
第11章 软件项目估算和计划
11.1软件项目计划
11.1.1软件项目计划的内容
11.1.2软件项目规划的关键活动
11.2软件估算
11.2.1估算对项目的影响
11.2.2估算原则
11.2.3估算方法
11.2.4软件规模估算
11.2.5大致估算
11.3进度安排
11.3.1关键路径法
11.3.2进度计划
11.3.3战胜进度压力
11.4挣值管理
11.4.1 3个基本参数
11.4.2 4个评价指标
11.4.3两个预测变量
本章小结
参考文献
习题11
第12章 软件质量管理
12.1软件质量概念
12.1.1软件质量定义
12.1.2软件质量模型
12.1.3软件质量的价值和成本
12.2软件质量管理
12.2.1质量管理的发展
12.2.2软件质量管理的内容
12.3项目级软件质量管理
12.3.1软件质量计划
12.3.2验证和确认
12.3.3质量分析与评价
12.3.4软件配置管理
12.4组织级软件质量管理
12.4.1质量管理体系标准ISO 9000
12.4.2质量管理体系的建立
12.4.3质量管理体系的持续改进
12.5软件质量管理技术
12.5.1静态技术
12.5.2动态技术
12.6软件评审
12.6.1评审方法分类
12.6.2审查
12.6.3评审的陷阱
12.7软件审核
12.7.1审核分类
12.7.2审核过程
本章小结
参考文献
习题12
第13章 软件风险管理
13.1风险管理概念
13.1.1风险的定义和分类
13.1.2风险管理的成本和收益
13.1.3被动和主动的风险策略
13.2风险管理的成熟度模型
13.3风险管理过程
13.3.1风险识别
13.3.2风险分析与排序
13.3.3风险管理计划制定
13.3.4风险跟踪和报告
13.3.5风险控制
13.3.6从风险中学习
13.4十大软件风险
13.4.1需求误解
13.4.2缺少上层的支持
13.4.3需求变更失控
13.4.4未能合理管理客户期望值
13.4.5不现实的进度计划和成本预算
13.4.6质量低劣
13.4.7人员薄弱
13.4.8技术和架构风险
13.4.9软件外包失败
13.4.10缺乏足够的用户参与
本章小结
参考文献
习题13
第14章 软件度量
14.1软件度量的概念
14.1.1度量目的
14.1.2度量定义和分类
14.1.3度量原则
14.2软件产品度量
14.2.1产品结构度量
14.2.2产品质量度量
14.3软件过程度量
14.3.1过程度量的特性
14.3.2常用过程度量方法
14.3.3过程稳定性
14.3.4过程能力
14.3.5过程基准比对
14.4软件度量过程
14.4.1建立度量目标和选择度量
14.4.2定义度量规程
14.4.3获取度量数据
14.4.4分析度量数据
14.4.5存储和交流度量结果
本章小结
参考文献
习题14
第15章 软件人员管理
15.1软件人员管理模型
15.1.1软件人员的特点
15.1.2 PCMM
15.2激励
15.2.1激励理论
15.2.2开发人员的激励因素
15.2.3最重要的激励因素
15.3团队建设
15.3.1高业绩团队
15.3.2团队建设方法
15.3.3团队建设的5个阶段
15.4团队模式
15.5沟通
15.5.1有效的沟通方法
15.5.2冲突管理
本章小结
参考文献
习题15
第三部分 高级主题
第16章 软件产品线工程
16.1软件产品线工程的提出
16.2软件产品线工程的3个基本活动
16.2.1软件产品线工程的组成
16.2.2领域工程和应用工程的关系
16.3产品线的可变性
16.4领域工程
16.4.1领域
16.4.2领域分析
16.4.3领域设计
16.4.4领域实现
16.5领域工程的代表性方法
16.5.1 FODA
16.5.2 FORM
16.5.3 Software Product Lines
16.5.4 FAST
16.5.5 PuLSE
16.5.6 FeatuRSEB
16.5.7青鸟领域工程方法和FODM
本章小结
参考文献
习题16
第17章 面向服务的软件开发
17.1面向服务架构概述
17.1.1 SOA产生的动因
17.1.2 SOA与Web Services
17.1.3 SOA对应用系统的分析与设计的影响
17.1.4 SOA对应用系统的开发与部署的影响
17.2面向服务的分析与设计
17.2.1业务建模的方法
17.2.2企业服务总线
17.2.3服务组织方式
17.2.4业务服务到软件服务的映射
17.2.5服务粒度的确定
17.3面向服务的系统实现
17.3.1服务的实现
17.3.2 Web 2.0客户端
17.3.3服务的调试与测试
本章小结
参考文献
习题17
第18章 形式化软件开发
18.1形式化方法的概念
18.2形式化规约
18.2.1数学基础
18.2.2形式化规约语言
18.2.3 Z语言
18.3形式化验证
18.3.1定理证明
18.3.2模型检验
18.4软件开发过程中的形式化方法
18.4.1考虑因素
18.4.2在软件过程中引入形式化方法的策略
18.4.3形式化方法的10条戒律
18.5形式化方法的应用案例
18.5.1案例介绍
18.5.2具体案例:卡西尼号探测器故障保护软件
18.6形式化方法的争议及未来
本章小结
参考文献
习题18
第19章 软件安全工程
19.1软件安全基本概念
19.1.1信息安全基本概念
19.1.2软件确保与软件安全工程
19.2安全软件开发过程
19.3软件安全需求
19.3.1软件安全需求工程SQUARE
19.3.2合规性需求
19.4安全的软件架构与设计
19.4.1安全原则与目标
19.4.2安全模式与安全设计模式
19.4.3架构风险分析
19.5安全编码
19.5.1安全编码原则
19.5.2安全编码规范
19.5.3代码的静态分析
19.6安全测试与应急响应
19.7安全的项目管理
本章小结
参考文献
习题19
第20章 软件工程职业化建设和职业道德规范
20.1软件工程的职业化建设
20.1.1走向一个成熟的软件工程职业
20.1.2职业化建设的框架
20.1.3软件工程职业化建设的进展
20.1.4职业化建设的3个层次
20.2软件工程职业道德规范
20.2.1软件工程职业道德规范和职业实践标准
20.2.2职业道德规范的履行
20.2.3软件工程师的职业责任
本章小结
参考文献
习题20
附录IEEE软件工程知识体系(SWEBOK)