内容简介
第1章 软件工程概述
1.1 软件的概念和特点
1.1.1 计算机系统的构成及实现
1.1.2 软件的概念
1.1.3 软件的特点
1.1.4 计算机软件的分类
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.3.6 软件开发方法
1.4 软件生存周期及其模型
1.4.1 软件定义时期
1.4.2 软件开发时期
1.4.3 软件运行与维护时期
1.4.4 软件生存周期模型
习题一
第2章 可行性研究
2.1 问题定义
2.1.1 问题定义的内容
2.1.2 问题定义的步骤
2.1.3 问题定义报告
2.2 可行性研究的任务
2.2.1 技术可行性
2.2.2 经济可行性
2.2.3 操作可行性
2.2.4 法律可行性
2.3 可行性研究的步骤
2.3.1 确定项目规模和目标
2.3.2 研究正在运行的系统
2.3.3 建立目标系统的高层逻辑模型
2.3.4 导出和评价各种方案
2.3.5 推荐可行的方案
2.3.6 编写可行性研究报告
2.4 系统流程图
2.4.1 系统流程图的作用
2.4.2 系统流程图的符号
2.5 成本—效益分析
2.5.1 成本估计
2.5.2 两种成本估算技术
2.5.3 度量效益的方法
2.6 可行性研究报告
2.7 项目开发计划
实训
习题二
第3章 需求分析
3.1 需求分析任务
3.1.1 需求分析的意义
3.1.2 需求分析的步骤
3.1.3 需求分析的具体任务
3.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.5 需求分析模型
3.5.1 实体关系图
3.5.2 数据流图
3.5.3 状态转换图
3.6 数据字典
3.6.1 数据字典的概念和组成
3.6.2 数据字典各部分的描述
3.6.3 词条描述
3.6.4 数据字典中的符号
3.7 需求规格说明书
3.7.1 引言
3.7.2 任务概述
3.7.3 需求规定
3.7.4 运行环境规定
实训
习题三
第4章 概要设计
4.1 软件设计过程
4.1.1 软件设计过程
4.1.2 目标系统的运行环境
4.2 概要设计的目标和任务
4.2.1 概要设计的目标
4.2.2 概要设计的任务
4.3 概要设计原则
4.3.1 模块化
4.3.2 抽象
4.3.3 自顶向下,逐步细化
4.3.4 信息隐蔽
4.3.5 模块独立性
4.4 体系结构设计工具
4.4.1 结构图
4.4.2 HIPO图
4.5 概要设计的启发式规则
4.5.1 提高模块独立性
4.5.2 模块大小要适中
4.5.3 模块应具有高扇入和适当的扇出
4.5.4 软件结构中的深度和宽度不宜过大
4.5.5 模块的作用域应处于控制域之内
4.5.6 尽量降低模块的接口复杂度
4.5.7 设计单入口、单出口的模块
4.5.8 模块功能应该可以预测
4.6 面向数据流的设计方法
4.6.1 SD方法实施的步骤
4.6.2 变换分析
4.6.3 事务分析
4.6.4 软件模块结构的改进
4.6.5 设计后的处理
4.7 概要设计说明书
实训
习题四
第5章 详细设计
5.1 详细设计的任务与原则
5.1.1 详细设计的任务
5.1.2 详细设计的原则
5.2 结构化程序设计
5.2.1 结构化程序设计的概念
5.2.2 结构化和非结构化程序设计方法的比较
5.2.3 结构化程序设计的原则
5.2.4 结构化程序设计的优点
5.3 过程设计工具
5.3.1 程序流程图
5.3.2 盒图(N-S图)
5.3.3 PAD图
5.3.4 判定表
5.3.5 判定树
5.3.6 PDL语言
5.4 用户界面设计
5.4.1 用户界面设计的“黄金规则”
5.4.2 用户界面设计过程
5.4.3 用户界面的主要形式
5.4.4 界面设计应考虑的因素
5.4.5 用户界面设计分析
5.4.6 用户界面的质量要求
5.5 数据库设计
5.5.1 数据需求分析
5.5.2 概念结构设计
5.5.3 逻辑结构设计
5.5.4 物理结构设计
5.5.5 数据库的实施
5.6 接口设计
5.6.1 软件接口设计的依据
5.6.2 软件接口的类型
5.6.3 应用程序编程接口
5.7 详细设计说明书
实训
习题五
第6章 程序编码
6.1 程序编码的目的和任务
6.1.1 程序编码的目的
6.1.2 程序编码的任务
6.2 程序设计语言
6.2.1 程序设计语言的分类
6.2.2 程序设计语言的选择
6.3 编码风格
6.3.1 源程序文档化
6.3.2 数据说明
6.3.3 语句结构
6.3.4 输入/输出方式
6.4 程序效率
6.4.1 程序效率的准则
6.4.2 算法对效率的影响
6.4.3 存储效率
6.4.4 输入/输出效率
6.5 冗余编程及容错技术
6.5.1 冗余编程
6.5.2 软件容错技术
6.6 程序复杂性的度量
6.6.1 代码行度量法
6.6.2 McCabe度量法
实训
习题六
第7章 面向对象的分析与设计
7.1 面向对象概述
7.1.1 面向对象方法
7.1.2 面向对象的基本概念
7.1.3 面向对象的特性
7.2 面向对象分析与对象模型化技术
7.2.1 面向对象的分析过程
7.2.2 面向对象的开发方法
7.2.3 对象模型化技术
7.2.4 Coad&Yourdon面向对象分析
7.3 面向对象设计
7.3.1 面向对象设计准则
7.3.2 面向对象设计的启发式规则
7.3.3 Coad&Yourdon设计方法
7.4 面向对象编程
7.4.1 面向对象语言的优点
7.4.2 面向对象语言的技术特点
7.4.3 选择面向对象语言的现实因素
7.4.4 程序设计风格
案例:自动取款机(ATM)系统的分析与设计
习题七
第8章 统一建模语言UML
8.1 UML概述
8.1.1 UML的产生和发展
8.1.2 UML的组成
8.1.3 UML视图
8.1.4 UML的主要特点
8.1.5 UML的应用
8.2 通用模型元素
8.2.1 模型元素
8.2.2 约束
8.2.3 依赖关系
8.2.4 细化
8.2.5 注释
8.3 静态建模机制
8.3.1 用例图
8.3.2 类图和对象图
8.3.3 包图
8.3.4 构件图
8.3.5 配置图
8.4 动态建模机制
8.4.1 消息
8.4.2 顺序图
8.4.3 协作图
8.4.4 状态图
8.4.5 活动图
案例:医院电话挂号系统
实训
习题八
第9章 统一软件开发过程RUP
9.1 RUP概述
9.1.1 RUP的意义
9.1.2 RUP的特点
9.2 RUP的二维开发模型
9.3 RUP开发阶段及里程碑
9.3.1 初始阶段
9.3.2 细化阶段
9.3.3 构造阶段
9.3.4 交付阶段
9.4 RUP的四个要素
9.4.1 人员至关重要
9.4.2 项目创造产品
9.4.3 产品不仅仅是代码
9.4.4 过程指导项目
9.4.5 工具对于过程不可或缺
9.5 RUP制品
9.5.1 模型
9.5.2 其他制品
9.6 RUP的核心工作流
9.6.1 业务建模
9.6.2 需求
9.6.3 分析
9.6.4 设计
9.6.5 实现
9.6.6 测试
9.6.7 部署
9.6.8 配置和变更管理
9.6.9 项目管理
9.6.10 环境
9.7 RUP裁剪
9.8 RUP的迭代开发模式
习题九
第10章 软件测试
10.1 软件测试基础
10.1.1 软件测试的意义
10.1.2 软件测试的目标
10.1.3 软件测试的原则
10.1.4 软件测试的信息流
10.1.5 软件测试的对象
10.1.6 软件测试与软件开发阶段的关系
10.1.7 软件测试有关概念
10.2 软件测试方法
10.2.1 静态测试和动态测试
10.2.2 白盒测试和黑盒测试
10.2.3 测试用例的设计
10.3 软件测试策略
10.4 软件测试过程
10.4.1 单元测试
10.4.2 集成测试
10.4.3 确认测试
10.4.4 系统测试
10.4.5 调试
10.5 面向对象的测试
10.5.1 面向对象测试模型
10.5.2 面向对象分析的测试
10.5.3 面向对象设计的测试
10.5.4 面向对象编程的测试
10.5.5 面向对象的单元测试
10.5.6 面向对象的集成测试
10.5.7 面向对象的系统测试
10.6 测试计划和分析报告
10.6.1 软件测试计划
10.6.2 测试分析报告
实训
习题十
第11章 软件维护
11.1 软件维护概述
11.1.1 软件维护的定义
11.1.2 软件维护的类型
11.1.3 影响软件维护工作量的因素
11.1.4 造成软件维护困难的因素
11.1.5 结构化维护与非结构化维护
11.2 软件维护策略
11.2.1 改正性维护
11.2.2 适应性维护
11.2.3 完善性维护
11.3 软件维护成本
11.4 软件维护的实施
11.4.1 软件维护机构
11.4.2 软件维护报告
11.4.3 软件维护工作流程
11.4.4 软件维护步骤
11.4.5 编写维护档案记录
11.4.6 维护评价
11.5 软件的可维护性
11.5.1 影响软件可维护性的因素
11.5.2 软件可维护性的度量
11.5.3 提高软件可维护性的方法
11.6 软件维护的副作用
11.6.1 软件维护副作用的类型
11.6.2 控制软件维护副作用的策略
习题十一
第12章 软件项目管理
12.1 软件项目管理概述
12.1.1 软件项目管理的意义
12.1.2 软件项目的特点
12.1.3 软件项目管理的职能
12.2 软件项目计划
12.2.1 软件项目计划的目标和风险分析
12.2.2 软件项目计划的类型
12.2.3 项目实施计划中任务的划分
12.2.4 项目的进度安排
12.3 软件项目组织
12.3.1 组织原则
12.3.2 组织结构的模式
12.3.3 程序设计小组的组织形式
12.4 软件项目的人员配备
12.4.1 项目开发各阶段所需人员
12.4.2 配备人员的原则
12.4.3 对项目经理的要求
12.4.4 评价软件开发人员的标准
12.5 软件配置管理
12.5.1 软件配置管理的概念
12.5.2 软件配置管理的基本目标
12.5.3 基线
12.5.4 软件配置项
12.5.5 版本控制
12.5.6 变更控制
12.5.7 软件配置管理应注意的问题
12.6 软件质量管理
12.6.1 软件质量的含义
12.6.2 影响软件质量的因素
12.6.3 软件质量保证措施
12.7 软件能力成熟度模型
12.7.1 软件过程的度量
12.7.2 关键过程域
实训
习题十二
第13章 软件复用技术
13.1 软件复用概述
13.1.1 软件复用的意义
13.1.2 软件复用的层次
13.1.3 软件成分的重用级别
13.2 可复用的软件成分
13.3 软件复用过程
13.4 软件复用环境
13.5 面向对象的复用技术
13.5.1 类构件的复用
13.5.2 类库
13.5.3 产生所需类的次序
13.5.4 既存类的复用方法
习题十三
参考文献