第1章 软件工程概述
1.1 软件工程的产生和发展
1.1.1 软件工程的发展过程
1.1.2 软件危机
1.1.3 软件工程研究的内容
1.2 软件与软件工程过程
1.2.1 软件的概念和特点
1.2.2 软件工程过程
1.3 软件过程模型
1.3.1 瀑布模型
1.3.2 增量模型
1.3.3 螺旋模型
1.3.4 喷泉模型
1.3.5 智能模型
1.4 软件开发方法
1.4.1 结构化开发方法
1.4.2 原型化开发方法
1.4.3 面向对象的软件开发方法
1.5 软件工具与软件开发环境
习题1
第2章 软件维护
2.1 软件维护的基本概念
2.1.1 软件维护的目的
2.1.2 软件维护的类型
2.1.3 软件维护的特性
2.1.4 软件维护的代价
2.2 软件维护的过程
2.3 软件维护技术
2.4 软件可维护性
2.4.1 软件可维护性的定义
2.4.2 提高可维护性的方法
2.5 逆向工程和再工程
习题2
第3章 软件工具与集成化环境
3.1 软件工具
3.1.1 软件开发工具
3.1.2 软件维护工具
3.1.3 软件管理与支持工具
3.2 集成化CASE环境
3.2.1 概述
3.2.2 集成化的CASE开发环境
的要求
3.2.3 集成化的CASE开发环境的
体系结构
3.3 软件开发工具Rational Rose
3.3.1 Rose工具简介
3.3.2 业务用例图
3.3.3 用例图
3.3.4 类图
3.3.5 协作图与时序图
3.3.6 活动图
3.3.7 状态图
3.3.8 构件图和部署图
习题3
第4章 面向对象方法
4.1 面向对象方法概述
4.1.1 什么是面向对象方法
4.1.2 面向对象方法的主要特点
4.2 面向对象的基本概念
4.2.1 对象与类
4.2.2 继承
4.2.3 多态性
4.2.4 消息
4.3 面向对象的分析
4.3.1 需求分析中的问题
4.3.2 OOA的特点
4.3.3 OOA的基本任务与分析过程
4.4 面向对象的设计
4.4.1 OOD的准则
4.4.2 OOD的基本任务
4.5 典型的面向对象方法
4.5.1 Booch方法
4.5.2 Coad/Yourdon方法
4.5.3 对象模型技术(OMT)
4.5.4 OOSE方法
习题4
第5章 统一建模语言(UML)
5.1 UML概述
5.1.1 UML的形成
5.1.2 UML的特点
5.1.3 UML建模及其构成
5.1.4 UML的图形表示
5.1.5 通用模型元素
5.2 建立用例模型
5.2.1 需求分析与用例建模
5.2.2 确定执行者
5.2.3 确定用例
5.2.4 建立用例之间的关系
5.2.5 用例建模实例
5.3 建立静态模型
5.3.1 类图
5.3.2 包图
5.4 建立动态模型
5.4.1 消息
5.4.2 状态图
5.4.3 顺序图
5.4.4 合作图
5.4.5 活动图
5.5 建立实现模型
5.5.1 构件图
5.5.2 配置图
5.6 统一过程及其应用
5.6.1 UML与RUP
5.6.2 RUP的特点
5.6.3 RUP的二维开发模型
5.6.4 RUP的迭代开发模式
习题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.2.3 确认测试
6.2.4 系统测试
6.2.5 测试和β测试
6.2.6 综合测试策略
6.3 软件调试
6.3.1 软件调试过程
6.3.2 软件调试策略
6.4 面向对象的测试
6.4.1 面向对象测试的特点
6.4.2 面向对象测试的类型
6.4.3 分析模型测试
6.4.4 面向对象的测试用例
习题6
第7章 面向对象程序设计语言的核心概念
7.1 面向对象的目标
7.2 面向对象的核心概念
7.2.1 数据封装
7.2.2 继承
7.2.3 多态性
7.3 按对象方式思维
7.4 面向对象的思想和方法
7.4.1 面向对象是一种认知方法学
7.4.2 面向对象与软件IC
7.4.3 面向对象方法与结构化程序设计方法
7.4.4 对象是抽象数据类型的实现
7.5 面向对象的程序设计语言
第8章 C++语言实现数据封装
8.1 类的定义
8.2 类的成员
8.2.1 数据成员
8.2.2 成员函数
8.2.3 静态成员
8.2.4 类外访问成员的方法
8.3 C++语言的类
8.4 数据封装和信息隐蔽的意义
8.5 构造函数
8.5.1 构造函数的作用
8.5.2 构造函数的定义
8.5.3 重载构造函数
8.6 复制构造函数
8.7 析构函数
8.8 对象的创建、释放和初始化
8.9 对象和指针
8.9.1 this指针
8.9.2 指向类对象的指针
8.9.3 指向类的成员的指针
8.10 友元关系
8.10.1 友元函数
8.10.2 友元类
8.10.3 友元关系的总结
8.11 与类和对象相关的问题
8.11.1 类类型作为参数类型
8.11.2 一个类的对象作为另一个类的成员
8.11.3 临时对象
习题8
第9章 C++语言实现多态性
9.1 重载运算符
9.1.1 运算符重载的语法形式
9.1.2 重载运算符规则
9.1.3 一元运算符和二元运算符
9.1.4 重载“++”和“”的前缀和后缀方式
9.1.5 重载赋值运算符
9.1.6 重载运算符“( )”和“[ ]”
9.1.7 重载输入运算符和输出运算符
9.1.8 指针悬挂问题
9.2 C++语言的类型转换
9.2.1 标准类型转换为类类型
9.2.2 类类型转换函数
9.3 实例——复数类重载运算符
习题9
第10章 C++语言实现继承性
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.4 虚函数
10.4.1 静态多态性
10.4.2 基类和派生类的指针与对象的关系
10.4.3 虚函数与多态性
10.5 纯虚函数和抽象类
10.6 虚函数实例——Figure类
10.7 类属
10.7.1 无约束类属机制
10.7.2 约束类属机制
10.8 模板的概念
10.8.1 函数模板与模板函数
10.8.2 类模板与模板类
10.9 实例——一维数组
10.10 堆栈、队列的应用
习题10
第11章 Java语言基础
11.1 Java语言的发展历程
11.2 Java语言的特点
11.2.1 简捷性
11.2.2 面向对象
11.2.3 动态性
11.2.4 安全性
11.2.5 平台无关性和可移植性
11.2.6 高性能
11.2.7 多线程
11.2.8 分布式
11.2.9 健壮性
11.3 Java语言的开发工具包
11.3.1 JDK的下载、安装和设置
11.3.2 JDK的简介
11.4 Java程序的基本结构
11.5 Java程序开发实例
11.5.1 一个简单的Java
……
第12章 Java语言程序设计
参考文献