目录
序
第二版 前言
第一版 前言
第1章 软件工程概论
本章学习目标
1.1 引言
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.4 软件工程
1.4.1 软件工程的定义及目标
1.4.2 软件工程学的范畴
1.4.3 软件过程
1.4.4 软件工程的基本原理
1.5 软件生存周期
1.5.1 软件生存周期定义
1.5.2 软件生存周期划分阶段的原则
1.5.3 软件生存周期各阶段的任务
1.6 软件生存周期模型
1.6.1 瀑布模型
1.6.2 快速原型模型
1.6.3 增量模型
1.6.4 螺旋模型
本章小结
习题一
第2章 可行性研究与需求分析
本章学习目标
2.1 问题的定义与可行性研究
2.1.1 问题的定义
2.1.2 可行性研究的任务
2.1.3 可行性研究的过程
2.1.4 成本/效益分析
2.2 需求分析的任务
2.2.1 确定对系统的综合要求
2.2.2 分析系统的数据要求
2.2.3 导出系统的逻辑模型
2.2.4 修正系统开发计划
2.3 需求获取的常用方法
2.3.1 常用的需求获取方法
2.3.2 快速原型方法
2.4 结构化分析方法
2.4.1 结构化分析的过程
2.4.2 实体一联系图
2.4.3 数据规范化
2.4.4 数据流图
2.4.5 数据字典
2.4.6 状态转换图
2.4.7 其他图形工具
2.5 需求分析评审
2.5.1 需求规格说明书
2.5.2 评审过程
本章小结
习题二
第3章 软件设计
本章学习目标
3.1 软件设计的任务
3.2 软件结构设计
3.2.1 软件设计过程
3.2.2 软件结构设计基本原理
3.2.3 模块化
3.2.4 模块独立性
3.3 描绘软件结构的图形工具
3.3.1 层次图和}IIPO图
3.3.2 结构图
3.4 面向数据流的设计方法
3.4.1 基本概念
3.4.2 变换分析
3.4.3 事务分析
3.4.4 设计优化
3.5 详细设计
3.5.1 详细设计概述
3.5.2 程序流程图
3.5.3 N-S图
3.5.4 PAD图
3.5.5 判定表与判定树
3.5.6 过程设计语言
3.6 人机界面设计
3.6.1 设计问题
3.6.2 设计过程
3.6.3 人机界面设计指南
3.7 面向数据结构的设计方法
3.7.1 Jackson图
3.7.2 改进的Jackson图
3.7.3 Jackson方法
本章小结
习题三
第4章 编码与测试
本章学习目标
4.1 编码
4.1.1 编码语言的发展
4.1.2 编码语言的选择
4.1.3 编码风格
4.2 软件测试的基础
4.2.1 软件测试的目标
4.2.2 软件测试的原则
4.2.3 测试方法
4.2.4 测试步骤
4.2.5 测试阶段的信息流
4.2.6 人工测试
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.5 白盒测试
4.5.1 逻辑覆盖
4.5.2 控制结构测试
4.6 软件调试
4.6.1 调试过程
4.6.2 常用的调试方法
4.6.3 调试原则
本章小结
习题四
第5章 软件维护
本章学习目标
5.1 软件维护概述
5.1.1 软件维护的基本概念
5.1.2 软件维护的种类
5.1.3 影响软件维护工作量的因素
5.1.4 软件维护的策略
5.1.5 修改程序的副作用
5.2 软件维护的过程
5.2.1 维护机构
5.2.2 软件维护申请报告
5.2.3 软件维护工作流程
5.2.4 软件维护记录及评价
5.3 软件的可维护性
5.3.1 可维护性的定义
5.3.2 可维护性的度量
5.3.3 软件文挡
5.4 提高可维护性的途径
5.4.1 建立明确的软件质量目标和优先级
5.4.2 使用提高软件质量的技术和工具
5.4.3 进行明确的质量保证审查
5.4.4 选择可维护的程序设计语言
5.4.5 改进程序的文档
5.5 逆向工程和再工程
本章小结
习题五
第6章 面向对象技术
本章学习目标
6.1 面向对象的概念
6.1.1 对象
6.1.2 类
6.1.3 面向对象
6.1.4 继承
6.1.5 消息
6.1.6 多态性
6.1.7 封装性
6.2 面向对象方法学
6.2.1 面向对象方法学概述
6.2.2 面向对象的软件过程
6.2.3 面向对象方法学的主要优点
6.3 面向对象的开发模型
6.3.1 面向对象方法的开发模型
6.3.2 面向对象软件开发方法
6.3.3 面向对象建模
6.4 UML统一建模语言
6.4.1 UML语言的产生
6.4.2 UML的定义
6.4.3 UML的目标
6.4.4 UML语言的应用
6.5 UML语言概述
6.5.1 视图
6.5.2 图
6.5.3 UML的模型元素及表示方法
6.5.4 UML的通用机制和扩展机制
6.5.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 组件图与部署图
本章小结
习题六
第7章 面向对象软件开发方法
本章学习目标
7.1 面向对象分析
7.1.1 面向对象分析过程
7.1.2 建立对象模型
7.1.3 建立动态模型
7.1.4 建立功能模型
7.2 面向对象设计
7.2.1 面向对象设计准则
7.2.2 启发式规则
7.2.3 系统设计
7.2.4 问题域的设计
7.2.5 人机界面的设计
7.2.6 任务管理部分设计
7.2.7 数据管理部分设计
7.2.8 对象设计
7.3 面向对象系统的实现
7.3.1 选择程序设计语言
7.3.2 面向对象程序设计
7.4 面向对象测试
7.4.1 面向对象测试
7.4.2 面向对象的测试策略
7.4.3 面向对象测试用例设计
本章小结
习题七
第8章 软件工程管理与质量保证
本章学习目标
8.1 软件工程管理概述
8.2 软件规模估算
8.2.1 代码行度量技术
8.2.2 功能点度量
8.2.3 静态单变量模型
8.2.4 动态多变量模型
8.2.5 COCOM02模型
8.3 进度计划
8.3.1 估算开发时间
8.3.2 Gantt图
8.3.3 工程网络技术
8.4 人员组织
8.4.1 民主制小组
8.4.2 主程序员组
8.4.3 层次式小组
8.4.4 人员配备
8.5 质量保证
8.5.1 软件质量
8.5.2 软件质量保证措施
8.6 软件可靠性
8.7 软件容错技术
8.8 软件配置管理
8.8.1 软件配置
8.8.2 软件配置管理过程
本章小结
习题八
第9章 软件工程标准化及软件工程环境
本章学习目标
9.1 软件工程标准化
9.1.1 软件工程标准化的概念
9.1.2 软件工程标准化的意义
9.2 软件质量认证
9.2.1 ISO 9000系列标准
9.2.2 软件质量认证
9.2.3 ISO 9000.3的要点
9.3 CMM模型
9.3.1 软件过程成熟度模型
9.3.2 关键过程域
9.3.3 成熟度提问单
9.4 软件工程环境
9.4.1 什么是软件工程环境
9.4.2 软件工程环境的特点
9.4.3 软件工程环境的模型
9.5 CASE环境
9.5.1 CASE环境概述
9.5.2 CASE环境的组成与结构
9.5.3 CASE环境的类型
本章小结
习题九
第10章 现代软件工程技术
本章学习目标
10.1 软件形式化技术
10.1.1 形式方法的引入
10.1.2 形式方法的分类
10.1.3 形式方法的优缺点
10.1.4 软件形式开发方法
10.2 软件重用技术
10.2.1 软件重用的概念
10.2.2 软件重用的基本方法
10.2.3 软件可重用性
10.2.4 面向应用领域的软件重用
10.3 基于软件构件的开发技术
10.3.1 软件构件的概念
10.3.2 软件构件库
10.3.3 软件体系结构
10.3.4 几种开放的分布式计算构件模型规范
10.3.5 基于构件/架构的软件开发
10.4 软件智能化技术
10.4.1 智能系统的目标
10.4.2 智能行为
10.4.3 智能系统的主要分支
10.4.4 智台匕桔术存掳件T棵中的商用
10.4.5 软件工程的未来发展
10.5 嵌入式系统软件技术
10.5.1 嵌入式系统的定义
10.5.2 嵌入式系统的特点
10.5.3 嵌入式系统的应用
10.6 嵌入式系统开发过程
10.6.1 嵌入式软件的开发特点
10.6.2 嵌入式软件的开发过程
10.7 嵌入式软件的测试
10.7.1 嵌入式软件的测试方法
10.7.2 嵌入式软件的测试策略
10.7.3 嵌入式软件的测试工具
10.8 嵌入式系统的调试
10.8.1 嵌入式系统的调试方式
10.8.2 嵌入式系统的调试方法
本章小结
习题十
参考文献