内容简介
第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 软件工程的基本原理
本章小结
思考题和习题
第2章 软件开发模型
2.1 软件工程过程
2.1.1 软件过程定义
2.1.2 软件过程的基本活动
2.2 软件生存周期
2.2.1 软件生存周期定义
2.2.2 软件生存周期的基本任务
2.3 软件生存周期模型
2.3.1 瀑布模型
2.3.2 原型模型
2.3.3 螺旋模型
2.3.4 增量模型
2.3.5 喷泉模型
2.3.6 形式化方法模型
2.3.7 基于组件的开发模型
2.4 软件开发方法
2.4.1 结构化开发方法
2.4.2 面向数据结构的方法
2.4.3 面向对象方法
2.4.4 原型法
本章小结
思考题和习题
第3章 需求分析
3.1 需求分析概述
3.1.1 需求分析的特点
3.1.2 需求分析的原则
3.1.3 需求分析的任务
3.1.4 需求分析的方法
3.2 需求开发过程
3.2.1 需求的获取
3.2.2 需求分析
3.2.3 编写需求规格说明书
3.2.4 需求验证
3.3 需求的层次与种类
3.3.1 业务需求
3.3.2 用户需求
3.3.3 功能需求
3.3.4 非功能需求
3.4 需求管理
本章小结
思考题和习题
第4章 结构化分析与结构化设计基础
4.1 结构化分析
4.1.1 结构化分析策略
4.1.2 数据流图(DFD)
4.1.3 数据词典
4.1.4 数据加工逻辑
4.1.5 实体关系图
4.1.6 结构化分析实例
4.2 结构化设计
4.2.1 结构化设计概述
4.2.2 软件设计的基本原理
4.2.3 软件设计采用的工具
4.2.4 面向数据流的设计方法
4.2.5 概要设计说明书
本章小结
思考题和习题
第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 程序设计的风格
本章小结
思考题和习题
第6章 面向对象方法及UML建模语言
6.1 面向对象技术的发展历史
6.2 面向对象的基本概念
6.2.1 对象
6.2.2 类
6.2.3 消息
6.2.4 封装性
6.2.5 继承性
6.2.6 多态性
6.3 面向对象的开发方法
6.4 UML统一建模语言简介
6.4.1 UML的发展历史
6.4.2 UML的特点
6.4.3 UML用于软件的开发
6.5 UML的语言基础
6.6 用例图
6.6.1 用例图描述
6.6.2 建立用例模型
6.6.3 用例图示例
6.7 静态图
6.7.1 类图
6.7.2 对象图
6.7.3 包图
6.8 行为图
6.8.1 状态图
6.8.2 活动图
6.9 交互图
6.9.1 顺序图
6.9.2 合作图
6.10 实现图
6.10.1 构件图
6.10.2 配置图
本章小结
思考题和习题
第7章 面向对象分析
7.1 面向对象分析概述
7.1.1 面向对象分析的3个模型与5个层次
7.1.2 问题陈述
7.2 建立对象模型
7.2.1 标识类-对象
7.2.2 确定关联
7.2.3 定义属性
7.2.4 标识主题
7.2.5 识别结构
7.2.6 优化对象模型
7.3 建立动态模型
7.3.1 编写脚本
7.3.2 事件跟踪图
7.3.3 状态图
7.3.4 优化动态模型
7.4 建立功能模型
7.5 定义服务
本章小结
思考题和习题
第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.6.1 设计服务
8.6.2 设计关联
8.7 面向对象设计的优化
本章小结
思考题和习题
第9章 软件测试
9.1 软件测试基本理论
9.1.1 软件测试的概念
9.1.2 软件测试的原则
9.2 软件测试方法和类型
9.2.1 静态测试和动态测试
9.2.2 白盒测试
9.2.3 黑盒测试
9.3 软件测试策略
9.3.1 单元测试
9.3.2 集成测试
9.3.3 确认测试
9.3.4 系统测试
9.4 面向对象软件测试
9.4.1 面向对象测试模型(Object-OrientTestModel)
9.4.2 面向对象分析的测试(OOATest)
9.4.3 面向对象设计的测试(OODTest)
9.4.4 面向对象编程的测试(OOPTest)
9.4.5 面向对象的单元测试(00UnitTest)
9.4.6 面向对象的集成测试(00IntegrateTest)
9.4.7 面向对象的系统测试(00SystemTest)
本章小结
思考题和习题
第10章 软件维护
10.1 软件维护概述
10.1.1 软件维护分类
10.1.2 软件维护成本
10.2 软件维护过程
10.2.1 软件维护活动
10.2.2 软件维护技术
10.3 软件可维护性
10.3.1 软件的可维护性
10.3.2 软件可维护性度量
10.3.3 提高可维护性的方法
10.4 软件维护的副作用
10.4.1 代码的副作用
10.4.2 数据副作用
10.4.3 文档副作用
10.5 软件再工程
10.5.1 软件再工程概述
10.5.2 软件再工程过程
10.5.3 软件再工程方法
本章小结
思考题和习题
第11章 软件工程管理
11.1 软件项目管理
11.1.1 软件项目管理的特点
11.1.2 软件项目管理活动
11.1.3 软件项目计划
11.2 软件风险管理
11.2.1 风险识别
11.2.2 风险分析
11.2.3 风险规划
11.2.4 风险控制
11.3 软件质量管理
11.3.1 软件质量基础
11.3.2 软件质量控制
11.4 软件配置管理
11.4.1 软件配置管理概述
11.4.2 软件配置管理过程
11.5 软件过程管理
11.5.1 ISO90000体系
11.5.2 能力成熟度模型
本章小结
思考题和习题
第12章 基于构件的软件开发
12.1 软件复用概述
12.1.1 软件复用的定义
12.1.2 软件复用的形式和级别
12.1.3 软件复用的过程
12.1.4 软件复用的意义
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 领域工程过程
12.4.2 领域工程实施
12.4.3 组织机构
12.4.4 相关技术
12.5 基于构件的软件开发
12.5.1 CBSE/CBD概述
12.5.2 CBSE过程
12.5.3 基于构件的系统的开发
12.5.4 构件构造
12.5.5 软件构件技术规范
12.6 CBD与传统的软件开发方法比较
本章小结
思考题和习题
第13章 Web工程
13.1 基于Web的系统和应用特点
13.2 Web工程的层次
13.2.1 过程
13.2.2 方法
13.2.3 工具和技术
13.3 Web分析
13.3.1 内容分析模型
13.3.2 交互分析模型
13.3.3 功能分析模型
13.3.4 配置分析模型
13.3.5 关系导航分析模型
13.4 Web设计
13.4.1 界面设计
13.4.2 美学设计
13.4.3 内容设计
13.4.4 体系结构设计
13.4.5 导航设计
13.4.6 构件设计
13.5 Web测试
13.5.1 内容测试
13.5.2 界面测试
13.5.3 构件级测试
13.5.4 导航测试
13.5.5 配置测试
13.5.6 安全性测试
13.5.7 性能测试
13.6 Web的项目管理
13.6.1 Web队伍
13.6.2 项目管理
13.6.3 配置管理
本章小结
思考题和习题
参考文献