书籍详情
软件工程导论(第四版)
作者:张海藩编著
出版社:清华大学出版社
出版时间:2003-11-01
ISBN:9787302073215
定价:¥33.00
购买这本书可以去
内容简介
本书已经出版了三个版本,累计销售达60万册,成为软件工程领域的经典教材,先后荣获全国普通高等学校工科电子类专业优秀教材二等奖、一等奖。为了反映最近5年来软件工程的发展状况,作者主要从下述3个方面对第三版作了精心修改:删掉了一些较陈旧的或较次要的内容;增加了一些较新颖的或较重要的内容;用UML的概念与符号重新改写了有关面向对象方法学的内容。本书全面系统地讲述了软件工程的概念、原理和典型的方法学,并介绍了软件项目的管理技术。本书正文共13章,第1章是概述,第2章至第8章顺序讲述软件生命周期各阶段的任务、过程、结构化方法和工具,第9章至第12章分别讲述面向对象方法学引论、面向对象分析、面向对象设计和面向对象实现,第13章介绍软件项目管理。正文后面有两个附录,分别讲述了用面向对象方法和结构化方法开发两个软件的过程,对读者深入理解软件工程学很有帮助,也是上机实习的好材料。本书可作为高等院校"软件工程"课程的教材或教学参考书,也可供有一定实际经验的软件工作人员和需要开发应用软件的广大计算机用户阅读参考。1.权威版本本书已经出版了三个版本,累计销售达60万册,成为软件工程领域的经典教材,先后荣获全国普通高等学校工科电子类专业优秀教材二等奖、一等奖。2.精心修订为了反映最近5年来软件工程的发展状况,作者主要从以下3个方面对第三版作了精心修改:删掉了一些较陈旧的或较次要的内容;增加了一些较新颖的或较重要的内容;用UML的概念和符号重新改写了有关面向对象方法学的内容。3.全面系统本书全面系统地讲述了软件工程的概念、原理和典型的方法学,并介绍了软件项目的管理技术。本书正文共13章,第l章是概述,第2章至第8章顺序讲述软件生命周期各阶段的任务、过程、结构化方法和工具,第9章至第12章分别讲述面向对象方法学引论、面向对象分析、面向对象设计和面向对象实现,第13章介绍软件项目管理。正文后面有两个附录,分别讲述了用面向对象方法和结构化方法开发两个软件的过程,对读者深入理解软件工程学很有帮助,也是上机实习的好材料。4.适用面广本书可作为高等院校"软件工程"课程的教材或教学参考书,也可供有一定实际经验的软件工作人员和需要开发应用软件的广大计算机用户阅读参考。
作者简介
暂缺《软件工程导论(第四版)》作者简介
目录
第一版前言
修订版(第二版)前言
第三版前言
第四版前言
第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.4 软件过程
1.4.1 瀑布模型
1.4.2 快速原型模型
1.4.3 增量模型
1.4.4 螺旋模型
1.5 小结
习题1
第2章 可行性研究
2.1 可行性研究的任务
2.2 可行性研究过程
2.3 系统流程图
2.3.1 符号
2.3.2 例子
2.3.3 分层
2.4 数据流图
2.4.1 符号
2.4.2 例子
2.4.3 命名
2.4.4 用途
2.5 数据字典
2.5.1 数据字典的内容
2.5.2 定义数据的方法
2.5.3 数据字典的用途
2.5.4 数据字典的实现
2.6 成本/效益分析
2.6.1 成本分析
2.6.2 成本/效益分析的方法
2.7 小结
习题2
第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.4 实体-联系图
3.4.1 数据对象
3.4.2 属性
3.4.3 联系
3.4.4 实体-联系图的符号
3.5 数据规范化
3.6 状态转换图
3.6.1 状态
3.6.2 事件
3.6.3 符号
3.6.4 例子
3.7 其他图形工具
3.7.1 层次方框图
3.7.2 Warnier图
3.7.3 IPO图
3.8 验证软件需求
3.8.1 从哪些方面验证软件需求的正确性
3.8.2 验证软件需求的方法
3.8.3 用于需求分析的软件工具
3.9 小结
习题3
第4章 形式化说明技术
4.1 概述
4.1.1 非形式化方法的缺点
4.1.2 形式化方法的优点
4.1.3 应用形式化方法的准则
4.2 有穷状态机
4.2.1 概念
4.2.2 例子
4.2.3 评价
4.3 Petri网
4.3.1 概念
4.3.2 例子
4.4 Z语言
4.4.1 简介
4.4.2 评价
4.5 小结
习题4
第5章 总体设计
5.1 设计过程
5.2 设计原理
5.2.1 模块化
5.2.2 抽象
5.2.3 逐步求精
5.2.4 信息隐藏和局部化
5.2.5 模块独立
5.3 启发规则
5.4 描绘软件结构的图形工具
5.4.1 层次图和HIPO图
5.4.2 结构图
5.5 面向数据流的设计方法
5.5.1 概念
5.5.2 变换分析
5.5.3 事务分析
5.5.4 设计优化
5.6 小结
习题5
第6章 详细设计
6.1 结构程序设计
6.2 人机界面设计
6.2.1 设计问题
6.2.2 设计过程
6.2.3 人机界面设计指南
6.3 过程设计的工具
6.3.1 程序流程图
6.3.2 盒图(N-S图)
6.3.3 PAD图
6.3.4 判定表
6.3.5 判定图
6.3.6 过程设计语言
6.4 面向数据结构的设计方法
6.4.1 Jackson图
6.4.2 改进的Jackson图
6.4.3 Jackson方法
6.5 程序复杂程度的定量度量
6.5.1 McCabe方法
6.5.2 Halstead方法
6.6 小结
习题6
第7章 实现
7.1 编码
7.1.1 选择程序设计语言
7.1.2 编码风格
7.2 软件测试基础
7.2.1 软件测试的目标
7.2.2 软件测试的准则
7.2.3 测试方法
7.2.4 测试步骤
7.2.5 测试阶段的信息流
7.3 单元测试
7.3.1 测试重点
7.3.2 代码审查
7.3.3 计算机测试
7.4 集成测试
7.4.1 自顶向下集成
7.4.2 自底向下集成
7.4.3 不同集成测试策略的比较
7.4.4 回归测试
7.5 确认测试
7.5.1 确认测试的范围
7.5.2 软件配置复查
7.5.3 Alpha和Beta测试
7.6 白盒测试技术
7.6.1 逻辑覆盖
7.6.2 控制结构测试
7.7 黑盒测试技术
7.7.1 等价划分
7.7.2 边界值分析
7.7.3 错误推测
7.8 调试
7.8.1 调试过程
7.8.2 调试途径
7.9 软件可靠性
7.9.1 基本概念
7.9.2 估算平均无故障时间的方法
7.10 小结
习题7
第8章 维护
8.1 软件维护的定义
8.2 软件维护的特点
8.2.1 结构化维护与非结构化维护的差别巨大
8.2.2 维护的代价高昂
8.2.3 维护的问题很多
8.3 软件维护过程
8.4 软件的可维护性
8.4.1 决定软件可维护性的因素
8.4.2 文档
8.4.3 可维护性复审
8.5 预防性维护
8.6 软件再工程过程
8.7 小结
习题8
第9章 面向对象方法学引论
9.1 面向对象方法学概述
9.1.1 面向对象方法学的要点
9.1.2 面向对象方法学的优点
9.1.3 喷泉模型
9.2 面向对象的概念
9.2.1 对象
9.2.2 其他概念
9.3 面向对象建模
9.4 对象模型
9.4.1 类图的基本符号
9.4.2 表示关系的符号
9.5 动态模型
9.6 功能模型
9.6.1 用例图
9.6.2 用例建模
9.7 3种模型之间的关系
9.8 小结
习题9
第10章 面向对象分析
10.1 面向对象分析的基本过程
10.1.1 概述
10.1.2 3个子模型与5个层次
10.2 需求陈述
10.2.1 书写要点
10.2.2 例子
10.3 建立对象模型
10.3.1 确定类与对象
10.3.2 确定关联
10.3.3 划分主题
10.3.4 确定属性
10.3.5 识别继承关系
10.3.6 反复修改
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.6 定义服务
10.7 小结
习题7
第11章 面向对象设计
11.1 面向对象设计的准则
11.2 启发规则
11.3 软件重用
11.3.1 概述
11.3.2 类构件
11.3.3 软件重用的效益
11.4 系统分解
11.5 设计问题域子系统
11.6 设计人机交互子系统
11.7 设计任务管理子系统
11.8 设计数据管理子系统
11.8.1 选择数据存储管理模式
11.8.2 设计数据管理子系统
11.8.3 例子
11.9 设计类中的服务
11.9.1 确定类中应有的服务
11.9.2 设计实现服务的方法
11.10 设计关联
11.11 设计优化
11.11.1 确定优先级
11.11.2 提高效率的几项技术
11.11.3 调整继承关系
11.12 小结
习题11
第12章 面向对象实现
12.1 程序设计语言
12.1.1 面向对象语言的优点
12.1.2 面向对象语言的技术特点
12.1.3 选择面向对象语言
12.2 程序设计风格
12.2.1 提高可重用性
12.2.2 提高扩充性
12.2.3 提高健壮性
12.3 测试策略
12.3.1 面向对象的单元测试
12.3.2 面向对象的集成测试
12.3.3 面向对象的确认测试
12.4 设计测试用例
12.4.1 测试类的方法
12.4.2 集成测试方法
12.5 小结
习题12
第13章 软件项目管理
13.1 估算软件规模
13.1.1 代码行技术
13.1.2 功能点技术
13.2 工作量估算
13.2.1 静态单变量模型
13.2.2 动态多变量模型
13.2.3 COCOMO2模型
13.3 进度计划
13.3.1 估算开发时间
13.3.2 Gantt图
13.3.3 工程网络
13.3.4 估算工程进度
13.3.5 关键路径
13.3.6 机动时间
13.4 人员组织
13.4.1 民主制程序员组
13.4.2 主程序员组
13.4.3 一代程序员组
13.5 质量保证
13.5.1 软件质量
13.5.2 软件质量保证措施
13.6 软件配置管理
13.6.1 软件配置
13.6.2 软件配置管理过程
13.7 能力成熟度模型
13.8 小结
习题13
附录
附录A C++类库管理系统的分析与设计
A.1 面向对象分析
A.1.1 需求
A.1.2 建立对象模型
A.2 面向对象设计
A.2.1 设计类库结构
A.2.2 设计问题域子系统
A.2.3 设计人机交互子系统
A.2.4 设计其他类
附录B 一个汉字行编辑程序的设计
B.1 设计规格说明
B.1.1 外部编辑命令
B.1.2 编辑命令
B.1.3 输出信息
B.2 概要设计
B.2.1 正文文件
B.2.2 两个工作模式
B.2.3 数据元素
B.2.4 过程
B.3 概要设计结果
B.4 详细设计
B.4.1 数据元素
B.4.2 控制数据元素
B.4.3 编辑过程
B.4.4 输入模式的过程
B.4.5 编辑模式的过程
B.5 详细设计结果
B.5.1 编辑程序的详细结构
B.5.2 类PASCAL伪码
B.5.3 实现编辑程序的算法
参考文献
修订版(第二版)前言
第三版前言
第四版前言
第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.4 软件过程
1.4.1 瀑布模型
1.4.2 快速原型模型
1.4.3 增量模型
1.4.4 螺旋模型
1.5 小结
习题1
第2章 可行性研究
2.1 可行性研究的任务
2.2 可行性研究过程
2.3 系统流程图
2.3.1 符号
2.3.2 例子
2.3.3 分层
2.4 数据流图
2.4.1 符号
2.4.2 例子
2.4.3 命名
2.4.4 用途
2.5 数据字典
2.5.1 数据字典的内容
2.5.2 定义数据的方法
2.5.3 数据字典的用途
2.5.4 数据字典的实现
2.6 成本/效益分析
2.6.1 成本分析
2.6.2 成本/效益分析的方法
2.7 小结
习题2
第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.4 实体-联系图
3.4.1 数据对象
3.4.2 属性
3.4.3 联系
3.4.4 实体-联系图的符号
3.5 数据规范化
3.6 状态转换图
3.6.1 状态
3.6.2 事件
3.6.3 符号
3.6.4 例子
3.7 其他图形工具
3.7.1 层次方框图
3.7.2 Warnier图
3.7.3 IPO图
3.8 验证软件需求
3.8.1 从哪些方面验证软件需求的正确性
3.8.2 验证软件需求的方法
3.8.3 用于需求分析的软件工具
3.9 小结
习题3
第4章 形式化说明技术
4.1 概述
4.1.1 非形式化方法的缺点
4.1.2 形式化方法的优点
4.1.3 应用形式化方法的准则
4.2 有穷状态机
4.2.1 概念
4.2.2 例子
4.2.3 评价
4.3 Petri网
4.3.1 概念
4.3.2 例子
4.4 Z语言
4.4.1 简介
4.4.2 评价
4.5 小结
习题4
第5章 总体设计
5.1 设计过程
5.2 设计原理
5.2.1 模块化
5.2.2 抽象
5.2.3 逐步求精
5.2.4 信息隐藏和局部化
5.2.5 模块独立
5.3 启发规则
5.4 描绘软件结构的图形工具
5.4.1 层次图和HIPO图
5.4.2 结构图
5.5 面向数据流的设计方法
5.5.1 概念
5.5.2 变换分析
5.5.3 事务分析
5.5.4 设计优化
5.6 小结
习题5
第6章 详细设计
6.1 结构程序设计
6.2 人机界面设计
6.2.1 设计问题
6.2.2 设计过程
6.2.3 人机界面设计指南
6.3 过程设计的工具
6.3.1 程序流程图
6.3.2 盒图(N-S图)
6.3.3 PAD图
6.3.4 判定表
6.3.5 判定图
6.3.6 过程设计语言
6.4 面向数据结构的设计方法
6.4.1 Jackson图
6.4.2 改进的Jackson图
6.4.3 Jackson方法
6.5 程序复杂程度的定量度量
6.5.1 McCabe方法
6.5.2 Halstead方法
6.6 小结
习题6
第7章 实现
7.1 编码
7.1.1 选择程序设计语言
7.1.2 编码风格
7.2 软件测试基础
7.2.1 软件测试的目标
7.2.2 软件测试的准则
7.2.3 测试方法
7.2.4 测试步骤
7.2.5 测试阶段的信息流
7.3 单元测试
7.3.1 测试重点
7.3.2 代码审查
7.3.3 计算机测试
7.4 集成测试
7.4.1 自顶向下集成
7.4.2 自底向下集成
7.4.3 不同集成测试策略的比较
7.4.4 回归测试
7.5 确认测试
7.5.1 确认测试的范围
7.5.2 软件配置复查
7.5.3 Alpha和Beta测试
7.6 白盒测试技术
7.6.1 逻辑覆盖
7.6.2 控制结构测试
7.7 黑盒测试技术
7.7.1 等价划分
7.7.2 边界值分析
7.7.3 错误推测
7.8 调试
7.8.1 调试过程
7.8.2 调试途径
7.9 软件可靠性
7.9.1 基本概念
7.9.2 估算平均无故障时间的方法
7.10 小结
习题7
第8章 维护
8.1 软件维护的定义
8.2 软件维护的特点
8.2.1 结构化维护与非结构化维护的差别巨大
8.2.2 维护的代价高昂
8.2.3 维护的问题很多
8.3 软件维护过程
8.4 软件的可维护性
8.4.1 决定软件可维护性的因素
8.4.2 文档
8.4.3 可维护性复审
8.5 预防性维护
8.6 软件再工程过程
8.7 小结
习题8
第9章 面向对象方法学引论
9.1 面向对象方法学概述
9.1.1 面向对象方法学的要点
9.1.2 面向对象方法学的优点
9.1.3 喷泉模型
9.2 面向对象的概念
9.2.1 对象
9.2.2 其他概念
9.3 面向对象建模
9.4 对象模型
9.4.1 类图的基本符号
9.4.2 表示关系的符号
9.5 动态模型
9.6 功能模型
9.6.1 用例图
9.6.2 用例建模
9.7 3种模型之间的关系
9.8 小结
习题9
第10章 面向对象分析
10.1 面向对象分析的基本过程
10.1.1 概述
10.1.2 3个子模型与5个层次
10.2 需求陈述
10.2.1 书写要点
10.2.2 例子
10.3 建立对象模型
10.3.1 确定类与对象
10.3.2 确定关联
10.3.3 划分主题
10.3.4 确定属性
10.3.5 识别继承关系
10.3.6 反复修改
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.6 定义服务
10.7 小结
习题7
第11章 面向对象设计
11.1 面向对象设计的准则
11.2 启发规则
11.3 软件重用
11.3.1 概述
11.3.2 类构件
11.3.3 软件重用的效益
11.4 系统分解
11.5 设计问题域子系统
11.6 设计人机交互子系统
11.7 设计任务管理子系统
11.8 设计数据管理子系统
11.8.1 选择数据存储管理模式
11.8.2 设计数据管理子系统
11.8.3 例子
11.9 设计类中的服务
11.9.1 确定类中应有的服务
11.9.2 设计实现服务的方法
11.10 设计关联
11.11 设计优化
11.11.1 确定优先级
11.11.2 提高效率的几项技术
11.11.3 调整继承关系
11.12 小结
习题11
第12章 面向对象实现
12.1 程序设计语言
12.1.1 面向对象语言的优点
12.1.2 面向对象语言的技术特点
12.1.3 选择面向对象语言
12.2 程序设计风格
12.2.1 提高可重用性
12.2.2 提高扩充性
12.2.3 提高健壮性
12.3 测试策略
12.3.1 面向对象的单元测试
12.3.2 面向对象的集成测试
12.3.3 面向对象的确认测试
12.4 设计测试用例
12.4.1 测试类的方法
12.4.2 集成测试方法
12.5 小结
习题12
第13章 软件项目管理
13.1 估算软件规模
13.1.1 代码行技术
13.1.2 功能点技术
13.2 工作量估算
13.2.1 静态单变量模型
13.2.2 动态多变量模型
13.2.3 COCOMO2模型
13.3 进度计划
13.3.1 估算开发时间
13.3.2 Gantt图
13.3.3 工程网络
13.3.4 估算工程进度
13.3.5 关键路径
13.3.6 机动时间
13.4 人员组织
13.4.1 民主制程序员组
13.4.2 主程序员组
13.4.3 一代程序员组
13.5 质量保证
13.5.1 软件质量
13.5.2 软件质量保证措施
13.6 软件配置管理
13.6.1 软件配置
13.6.2 软件配置管理过程
13.7 能力成熟度模型
13.8 小结
习题13
附录
附录A C++类库管理系统的分析与设计
A.1 面向对象分析
A.1.1 需求
A.1.2 建立对象模型
A.2 面向对象设计
A.2.1 设计类库结构
A.2.2 设计问题域子系统
A.2.3 设计人机交互子系统
A.2.4 设计其他类
附录B 一个汉字行编辑程序的设计
B.1 设计规格说明
B.1.1 外部编辑命令
B.1.2 编辑命令
B.1.3 输出信息
B.2 概要设计
B.2.1 正文文件
B.2.2 两个工作模式
B.2.3 数据元素
B.2.4 过程
B.3 概要设计结果
B.4 详细设计
B.4.1 数据元素
B.4.2 控制数据元素
B.4.3 编辑过程
B.4.4 输入模式的过程
B.4.5 编辑模式的过程
B.5 详细设计结果
B.5.1 编辑程序的详细结构
B.5.2 类PASCAL伪码
B.5.3 实现编辑程序的算法
参考文献
猜您喜欢