内容简介
本书以面向对象程序设计技术的本质属性为主线,以C++语言为基础,全面地阐述了面向对象程序设计的基本原理。全书共分13章,前5章介绍C++语言的基本编程技术,包括C++的数据类型、常用的运算符、结构化控制语句和函数;第6章~第9章介绍面向对象程序设计方法的核心内容,包括类和对象、类的继承和多态;第10章介绍C++的程序结构、编译预处理指令和命名空间等内容;第11章介绍C++语言标准库中的输入/输出流类;第12章以C++语言为基础,介绍面向对象的异常处理机制;第13章简要介绍使用C++语言和面向对象的程序设计方法设计Windows应用程序的方法。本书语言简洁流畅,通俗易懂,内容全面,重点突出,对核心和重点内容都佐以大量的例证。
图书目录
第1篇软件工程与项目管理
第1章软件工程概述
1.1软件的定义与特点
1.1.1什么是软件
1.1.2软件的特点与本质
1.1.3“没有银弹”——复杂性是“软件危机”的本质原因
1.2软件工程的定义及研究的内容
1.2.1科学、工程与技术的界定
1.2.2软件工程的定义与原理
1.2.3软件工程的3个要素
1.2.4软件开发方法——对客观世界的认知观
1.2.5软件工程与相关科学的关系
1.3软件工程的教育与知识体系
1.3.1软件工程的教育体系
1.3.2CC2005的4个方向专业规范
1.3.3软件工程的知识体系——SWEBOK
1.4软件工程的标准
1.4.1软件工程标准化的意义
1.4.2软件工程的国际标准与体系
1.4.3国家标准
1.5计算机辅助软件工程
1.6软件工程人员的职业道德与行为准则
本章小结
思考与练习
第2章软件过程
2.1软件过程
2.1.1过程及其特征
2.1.2软件过程的公共框架
2.2软件过程模型
2.2.1理解软件过程模型
2.2.2瀑布模型
2.2.3演化软件过程模型
2.2.4快速原型开发方法
2.2.5统一软件过程
2.2.6核心工作流
2.2.7形式化方法模型
2.2.8软件复用——基于构件的开发方法
2.2.9第4代技术
2.2.10微软公司的软件过程模型
2.3软件过程改进
2.3.1软件能力成熟度模型——CMM与CMMI
2.3.2CMM/CMMI的应用及面临的问题
2.3.3个体软件过程
2.3.4团队软件过程
2.3.5CMM、TSP、PSP三者的关系
本章小结
思考与练习
第3章软件工程领域下的项目管理
3.1项目管理的历史实践
3.1.1远古的伟大工程实践
3.1.2沟通的故事——巴比伦塔的倒塌
3.2软件项目管理的范围与内容
3.2.1什么是项目管理
3.2.2软件项目管理的范围
3.2.3人员
3.2.4产品
3.2.5过程
3.2.6项目
3.3软件项目管理的活动——从这里开始
3.3.1软件项目管理的活动概述
3.3.2项目沟通与需求管理
3.3.3软件项目计划的制定
3.3.4项目范围与管理
3.3.5工作分解结构
3.3.6软件项目的组织
3.4项目进度管理
3.4.1项目里程碑
3.4.2人员与工作量分配
3.4.3项目进度管理的可视化工具
3.4.4项目管理软件及其功能
本章小结
思考与练习
第4章软件项目估算
4.1软件项目估算概述
4.1.1什么是估算
4.1.2软件项目估算的特点
4.1.3软件项目估算的复杂性分析
4.1.4软件项目估算的相关内容
4.2项目规模估算
4.2.1基于代码行的规模估算
4.2.2功能点估算
4.2.3基于计划评审技术的规模估算
4.3工作量估算
4.3.1用代码行与功能点估算工作量的例子
4.3.2基于数学模型的工作量估算
4.3.3COCOMO模型
4.3.4COCOMO Ⅱ模型
4.3.5Putnam模型
4.4软件成本估算
4.4.1软件项目成本的组成
4.4.2软件成本的估算方法
4.4.3估算技术的应用与评价
4.5项目进度估算
4.5.1三点估算方法
4.5.2项目进度获取值分析——项目计划与实际进展的定量比较
4.6软件工程经济学
4.6.1经济学与工程经济学
4.6.2软件工程经济学研究的基本问题
4.6.3资金的时间价值
4.6.4软件工程经济学中的成本效益评价技术
本章小结
思考与练习
第5章软件质量管理
5.1软件质量及其特性
5.1.1难以定义和度量的软件质量
5.1.2软件质量特性
5.1.3软件质量保证及其活动
5.2软件配置管理
5.2.1制定项目的配置计划
5.2.2软件配置项及其标识
5.2.3版本控制
5.2.4变更控制
5.2.5正式技术复审
本章小结
思考与练习
第6章软件风险管理
6.1软件项目的风险管理
6.1.1风险与项目风险
6.1.2软件项目风险与管理
6.1.3软件风险的定义
6.1.4软件风险的类型
6.2软件风险管理的体系框架
6.2.1常见风险管理过程框架
6.2.2软件风险管理的一般过程
6.3风险识别
6.3.1风险识别过程
6.3.2风险识别的方法与工具
6.4风险分析
6.4.1风险分析过程
6.4.2风险分析的技术与工具
6.5风险规划
6.5.1风险规划过程
6.5.2风险规划的工具与技术
6.6风险监控
6.6.1风险监控过程
6.6.2风险监控的技术与方法
6.6.3风险监控与管理计划——RMMM计划
本章小结
思考与练习
第2篇结构化开发方法
第7章面向过程的结构化分析
7.1系统工程
7.1.1系统论
7.1.2系统工程
7.1.3系统工程层次结构
7.1.4业务过程工程
7.1.5产品工程
7.2需求分析
7.2.1需求分析概述和特点
7.2.2软件需求分析的目标
7.2.3需求分析的过程
7.2.4需求获取技术
7.3结构化分析方法
7.3.1数据流图
7.3.2状态图
7.3.3实体关系图(ER图)
本章小结
思考与练习
第8章面向过程的结构化设计
8.1软件设计的基本概念和原理
8.1.1抽象
8.1.2信息隐蔽
8.1.3模块化设计
8.1.4模块独立
8.1.5耦合
8.1.6内聚
8.1.7结构图
8.2软件总体设计的任务和目标
8.3结构化软件设计
8.3.1基本概念
8.3.2变换分析
8.3.3事务分析
8.4过程设计
8.4.1程序流程图
8.4.2盒式(NS)图
8.4.3PAD
8.4.4PDL
8.4.5判定表
8.4.6判定树
8.5Jackson设计方法
本章小结
思考与练习
第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软件测试文档
本章小结
思考与练习
第10章软件的技术度量
10.1软件度量的基本概念
10.1.1测量、测度、度量、指标和估算
10.1.2软件度量的分类
10.1.3软件度量的目的
10.1.4有效软件度量的属性
10.2分析模型的度量
10.2.1基于功能点的度量
10.2.2bang度量
10.2.3规格说明质量的度量
10.3设计模型的度量
10.3.1体系结构设计度量
10.3.2构件级设计度量
10.4源代码度量
10.5对测试的度量
10.6对维护的度量
10.7软件质量的度量
本章小结
思考与练习
第3篇面向对象的开发方法
第11章面向对象概述
11.1面向对象的基本思想
11.2面向对象软件开发方法的优缺点
11.3面向对象的基本概念
11.3.1对象
11.3.2类
11.3.3属性和方法
11.3.4抽象、封装和信息隐藏
11.3.5继承
11.3.6多态
11.3.7关联
11.3.8协作
11.3.9聚合
11.3.10持久性
11.4统一建模语言:UML概述
11.4.1UML的发展历程
11.4.2UML的特点
11.5UML的视图
11.5.1用例图
11.5.2类图
11.5.3对象图
11.5.4顺序图
11.5.5协作图
11.5.6状态图
11.5.7包图
11.5.8部署图
11.6面向对象软件的开发过程
11.7UML建模工具
11.7.1商用建模工具
11.7.2开源UML建模工具
本章小结
思考与练习
第12章面向对象分析
12.1收集需求
12.1.1面向对象的软件需求概述
12.1.2系统范围
12.1.3参与者
12.1.4用例
12.1.5用例图
12.1.6用例规约
12.1.7使用包组织用例
12.2基于类的建模
12.2.1识别类
12.2.2CRC建模
12.2.3分析类的职责
12.2.4寻找协作者
12.2.5通过场景验证CRC模型
12.2.6CRC建模的优缺点
12.3类模型
12.3.1类、属性和方法
12.3.2类的层次结构
12.3.3关联
12.3.4聚合
12.3.5类图
12.4动态交互建模
12.4.1顺序图
12.4.2协作图
12.4.3活动图
12.5基于控制行为建模
本章小结
思考与练习
第13章面向对象设计
13.1划分分析模型
13.2系统逻辑架构
13.2.1经典3层架构
13.2.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.2Liskov替换原则
13.4.3依赖倒置原则
13.4.4接口分离原则
13.5设计模式
13.5.1单件模式
13.5.2抽象工厂模式
13.6对象持久性建模
13.6.1映射对象
13.6.2继承关系映射
13.6.3关联和聚合映射
13.6.4持久性框架
13.7部署建模
本章小结
思考与练习
第14章面向对象测试
14.1全生命周期面向对象测试
14.2面向对象测试策略
14.2.1面向对象的单元测试
14.2.2面向对象的集成测试
14.2.3面向对象的确认测试
14.3基于场景的模型测试
14.3.1场景设计
14.3.2测试用例设计
14.4类测试
14.4.1类的代码检查
14.4.2覆盖和路径测试
14.4.3类的随机测试
14.4.4类的划分测试
14.5类间测试
14.5.1多个类测试
14.5.2从类的行为模型导出的测试
本章小结
思考与练习
第15章面向对象系统的技术度量
15.1OO度量的识别特征
15.1.1局部化
15.1.2封装
15.1.3信息隐蔽
15.1.4继承
15.1.5抽象
15.2分析、设计模型的度量
15.3OO项目的度量
15.4面向类的度量
15.4.1CK度量套件
15.4.2LK度量组
15.4.3MOOD度量套件
15.5面向操作的度量
15.6面向对象测试的度量
本章小结
思考与练习
第4篇软件工程高级专题
第16章敏捷过程开发
16.1敏捷的定义
16.1.1什么是敏捷
16.1.2什么是敏捷过程
16.2敏捷过程模型
16.2.1极限编程
16.2.2自适应软件开发
16.2.3动态系统开发方法
16.2.4Scrum
16.2.5Crystal
16.2.6特征驱动开发
16.2.7精益开发
16.3设计自己的敏捷方法
本章小结
思考与练习
第17章Web工程
17.1基于Web的系统及应用
17.1.1Web应用的发展
17.1.2Web应用的特点和分类
17.1.3Web应用的开发团队
17.2Web工程
17.3Web工程技术
17.3.1Web服务器技术
17.3.2Web开发技术
17.3.3Web辅助技术
17.4Web工程的层次
17.4.1质量
17.4.2过程
17.4.3方法
17.4.4工具
17.5Web工程过程
17.5.1分析
17.5.2设计
17.5.3测试
17.5.4发布、维护
本章小结
思考与练习
第18章形式化方法
18.1形式化方法简介
18.1.1形式化方法的引入
18.1.2形式化方法的分类
18.1.3形式化规格方法的主要思想
18.2Petri网
18.2.1基本概念
18.2.2Petri网的性质
18.2.3Petri网的分析
18.2.4实例:ATM系统
18.3Z语言
18.3.1基本概念
18.3.2模式运算
18.3.3操作模式
18.3.4实例:ATM系统
18.4形式化方法的优缺点
18.5形式化方法的发展
本章小结
思考与练习
附录A软件工程和知识可视化表征