描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787111478218
内容简介
软件工程学科具有知识面广、发展迅速、实践性强等特点。本书作者针对软件工程的学科特点,在写作中注重结合实例讲解软件工程的理论与方法,避免抽象和枯燥的论述,在兼顾传统的结构化方法的同时,注重当前广为采用的面向对象方法。全书内容组织成五部分:部分是软件工程概述;第二部分介绍结构化分析与设计方法;第三部分讲述面向对象分析与设计方法;第四部分讲解软件实现与测试;第五部分介绍软件维护与软件管理。
郑人杰和马素霞和殷人昆编著的《软件工程概论(第2版)》结构合理、内容丰富,讲解通俗易懂、由浅入深,适合作为计算机科学与技术、软件工程等专业本科生的教材。
郑人杰和马素霞和殷人昆编著的《软件工程概论(第2版)》结构合理、内容丰富,讲解通俗易懂、由浅入深,适合作为计算机科学与技术、软件工程等专业本科生的教材。
目 录
前言
教学建议
部分 软件工程概述
第1章 软件与软件工程的概念
1.1 软件的概念、特点和分类
1.1.1 软件的概念及特性
1.1.2 软件的分类
1.2 软件危机与软件工程
1.2.1 软件危机
1.2.2 软件工程
1.3 系统工程的目标
1.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 常用软件工具介绍
1.7 软件工程知识体系及知识域
习题
第2章 软件生存期模型
2.1 瀑布模型
2.2 快速原型模型
2.3 增量模型
2.4 螺旋模型
2.5 喷泉模型
2.6 统一过程
2.7 基于构件的开发模型
2.8 敏捷过程
习题
第二部分 结构化分析与设计方法
第3章 软件需求获取与结构化分析方法
3.1 需求获取与需求分析阶段的任务
3.1.1 需求获取的任务和原则
3.1.2 需求获取的过程
3.1.3 软件需求分析阶段的任务
3.2 结构化分析方法
3.2.1 功能建模
3.2.2 数据建模
3.2.3 行为建模
3.2.4 数据字典
3.2.5 加工规格说明
3.3 系统需求规格说明
3.3.1 软件需求规格说明模板
3.3.2 SRS和DRD的质量要求
3.4 需求评审
3.4.1 正式的需求评审
3.4.2 需求评审中的常见风险
3.5 需求管理
3.5.1 需求跟踪
3.5.2 需求变更管理
习题
第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 典型的数据流类型和系统结构
4.3.3 变换型映射方法
4.3.4 事务型映射方法
4.3.5 模块间的耦合与内聚
4.3.6 软件模块结构的改进方法
4.4 接口设计
4.4.1 接口设计概述
4.4.2 人机交互界面
4.5 数据设计
4.5.1 文件设计
4.5.2 数据库设计
4.6 过程设计
4.6.1 结构化程序设计
4.6.2 程序流程图
4.6.3 N S图
4.6.4 PAD图
4.6.5 伪代码
4.6.6 自顶向下、逐步细化的设计过程
4.7 软件设计规格说明
4.8 软件设计评审
4.8.1 概要设计评审的检查内容
4.8.2 详细设计评审的检查内容
习题
第三部分 面向对象分析与设计方法
第5章 面向对象方法与UML
5.1 面向对象的概念与开发方法
5.1.1 对象
5.1.2 类与封装
5.1.3 继承
5.1.4 多态
5.1.5 消息通信
5.1.6 面向对象的软件开发方法
5.2 UML简介
5.2.1 UML的产生和发展
5.2.2 UML的特点
5.2.3 UML的基本模型
5.3 UML的事物
5.3.1 结构事物
5.3.2 行为事物
5.3.3 分组事物
5.3.4 注释事物
5.4 UML的关系
5.4.1 依赖关系
5.4.2 关联关系
5.4.3 泛化关系
5.4.4 实现关系
5.5 UML的图
5.5.1 用例图
5.5.2 类图
5.5.3 顺序图与通信图
5.5.4 状态图
5.5.5 活动图
5.5.6 构件图与部署图
习题
第6章 面向对象分析
6.1 面向对象分析概述
6.1.1 确定系统边界
6.1.2 面向对象分析的3种模型
6.2 建立用例模型
6.2.1 确定业务参与者
6.2.2 确定业务需求用例
6.2.3 创建用例图
6.3 建立对象模型
6.3.1 对象模型的5个层次
6.3.2 划分主题
6.3.3 确定类与对象
6.3.4 确定结构
6.3.5 确定属性
6.3.6 确定服务
6.3.7 建立类图
6.4 建立动态模型
6.4.1 顺序图
6.4.2 通信图
6.4.3 状态图
习题
第7章 软件体系结构与设计模式
7.1 软件体系结构的基本概念
7.1.1 什么是体系结构
7.1.2 体系结构模式、风格和框架的概念
7.1.3 体系结构的重要作用
7.2 典型的体系结构风格
7.2.1 数据流风格
7.2.2 调用∕返回风格
7.2.3 仓库风格
7.3 特定领域的软件体系结构
7.3.1 类属模型
7.3.2 参考模型
7.4 分布式系统结构
7.4.1 多处理器体系结构
7.4.2 客户机∕服务器体系结构
7.4.3 分布式对象体系结构
7.4.4 代理
7.5 体系结构框架
7.5.1 模型视图控制器
7.5.2 J2EE体系结构框架
7.5.3 PCMEF与PCBMER框架
7.6 设计模式
7.6.1 抽象工厂
7.6.2 单件
7.6.3 外观
7.6.4 适配器
7.6.5 职责链
7.6.6 中介者
7.6.7 观察者
习题
第8章 面向对象设计
8.1 面向对象设计过程与准则
8.1.1 面向对象设计过程
8.1.2 面向对象设计准则
8.2 体系结构模块及依赖性
8.2.1 类及其依赖性
8.2.2 接口及其依赖性
8.2.3 包及其依赖性
8.2.4 构件及其依赖性
8.3 系统分解
8.3.1 子系统和类
8.3.2 服务和子系统接口
8.3.3 子系统分层和划分
8.3.4 Coad & Yourdon的面向对象设计模型
8.3.5 子系统之间的两种交互方式
8.3.6 组织系统的两种方案
8.4 问题域部分 的设计
8.5 人机交互部分 的设计
8.5.1 用户界面设计步骤
8.5.2 Web应用系统的界面设计
8.6 任务管理部分 的设计
8.7 数据管理部分 的设计
8.8 对象设计
8.8.1 使用模式设计对象
8.8.2 接口规格说明设计
8.8.3 重构对象设计模型
8.9 优化对象设计模型
习题
第四部分 软件实现与测试
第9章 软件实现
9.1 程序设计语言
9.1.1 程序设计语言的性能
9.1.2 程序设计语言的分类
9.1.3 程序设计语言的选择
9.2 程序设计风格
9.2.1 源程序文档化
9.2.2 数据说明标准化
9.2.3 语句结构简单化
9.2.4 输入/输出规范化
9.3 编码规范
9.4 程序效率与性能分析
9.4.1 算法对效率的影响
9.4.2 影响存储器效率的因素
9.4.3 影响输入/输出的因素
习题
第10章 软件测试方法
10.1 软件测试的基本概念
10.1.1 什么是软件测试
10.1.2 软件测试的目的和原则
10.1.3 软件测试的对象
10.1.4 测试信息流
10.1.5 测试与软件开发各阶段的关系
10.1.6 白盒测试与黑盒测试
10.2 白盒测试的测试用例设计
10.2.1 逻辑覆盖
10.2.2 语句覆盖
10.2.3 判定覆盖
10.2.4 条件覆盖
10.2.5 判定条件覆盖
10.2.6 条件组合覆盖
10.2.7 路径覆盖
10.3 基本路径覆盖
10.4 黑盒测试的测试用例设计
10.4.1 等价类划分
10.4.2 边界值分析
10.5 软件测试的策略
10.5.1 单元测试
10.5.2 组装测试
10.5.3 确认测试
10.5.4 系统测试
10.5.5 测试的类型
10.6 人工测试
10.6.1 静态分析
10.6.2 人工测试方法
10.7 调试
习题
第五部分 软件维护与软件管理
第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.3.3 修改程序的副作用及其控制
11.3.4 重新验证程序
11.4 软件的维护性
11.4.1 软件维护性定义
11.4.2 软件维护性度量
11.5 提高软件维护性的方法
11.5.1 使用提高软件维护性的开发技术和工具
11.5.2 实施开发阶段产品的维护性审查
11.5.3 改进文档
习题
第12章 软件过程与软件过程改进
12.1 软件过程概述
12.2 软件生存期过程国际标准
12.3 软件过程成熟度
12.3.1 什么是软件过程成熟度
12.3.2 过程制度化
12.4 软件能力成熟度模型
12.4.1 CMM与SEI
12.4.2 CMM的演化
12.4.3 CMM族和CMMI
12.4.4 CMMI 1.3 简介
12.4.5 CMMI评估
12.5 软件过程改进
12.5.1 软件过程改进的IDEAL模型
12.5.2 软件过程改进框架
12.5.3 有效的软件过程
习题
第13章 软件项目管理
13.1 软件项目管理概述
13.1.1 软件项目管理的目标
13.1.2 软件项目管理涉及的几个方面
13.2 项目估算
13.2.1 项目策划与项目估算
13.2.2 软件规模估算的功能点方法
13.2.3 软件开发成本估算
13.3 风险管理
13.3.1 什么是软件风险
13.3.2 风险管理的任务
13.3.3 风险评估
13.3.4 风险控制
13.3.5 做好风险管理的建议
13.4 进度管理
13.4.1 进度控制问题
13.4.2 甘特图
13.4.3 时标网状图
13.4.4 PERT图
13.5 需求管理
13.5.1 系统需求与软件需求
13.5.2 需求工程
13.5.3 需求变更
13.5.4 需求变更控制
13.5.5 可追溯性管理
13.6 配置管理
13.6.1 什么是软件配置管理
13.6.2 软件配置标识
13.6.3 变更管理
13.6.4 版本控制
13.6.5 系统建立
13.6.6 配置审核
13.6.7 配置状态报告
习题
第14章 软件工程标准及软件文档
14.1 软件工程标准
14.1.1 标准的概念
14.1.2 软件标准化的意义
14.1.3 标准的分类与分级
14.1.4 软件工程标准的制定与实施
14.1.5 软件组织内的标准化工作
14.2 软件文档
14.2.1 软件文档的作用和分类
14.2.2 软件基本文档的内容要求
14.2.3 对文档编制的质量要求
14.2.4 文档的管理和维护
习题
主要参考文献
教学建议
部分 软件工程概述
第1章 软件与软件工程的概念
1.1 软件的概念、特点和分类
1.1.1 软件的概念及特性
1.1.2 软件的分类
1.2 软件危机与软件工程
1.2.1 软件危机
1.2.2 软件工程
1.3 系统工程的目标
1.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 常用软件工具介绍
1.7 软件工程知识体系及知识域
习题
第2章 软件生存期模型
2.1 瀑布模型
2.2 快速原型模型
2.3 增量模型
2.4 螺旋模型
2.5 喷泉模型
2.6 统一过程
2.7 基于构件的开发模型
2.8 敏捷过程
习题
第二部分 结构化分析与设计方法
第3章 软件需求获取与结构化分析方法
3.1 需求获取与需求分析阶段的任务
3.1.1 需求获取的任务和原则
3.1.2 需求获取的过程
3.1.3 软件需求分析阶段的任务
3.2 结构化分析方法
3.2.1 功能建模
3.2.2 数据建模
3.2.3 行为建模
3.2.4 数据字典
3.2.5 加工规格说明
3.3 系统需求规格说明
3.3.1 软件需求规格说明模板
3.3.2 SRS和DRD的质量要求
3.4 需求评审
3.4.1 正式的需求评审
3.4.2 需求评审中的常见风险
3.5 需求管理
3.5.1 需求跟踪
3.5.2 需求变更管理
习题
第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 典型的数据流类型和系统结构
4.3.3 变换型映射方法
4.3.4 事务型映射方法
4.3.5 模块间的耦合与内聚
4.3.6 软件模块结构的改进方法
4.4 接口设计
4.4.1 接口设计概述
4.4.2 人机交互界面
4.5 数据设计
4.5.1 文件设计
4.5.2 数据库设计
4.6 过程设计
4.6.1 结构化程序设计
4.6.2 程序流程图
4.6.3 N S图
4.6.4 PAD图
4.6.5 伪代码
4.6.6 自顶向下、逐步细化的设计过程
4.7 软件设计规格说明
4.8 软件设计评审
4.8.1 概要设计评审的检查内容
4.8.2 详细设计评审的检查内容
习题
第三部分 面向对象分析与设计方法
第5章 面向对象方法与UML
5.1 面向对象的概念与开发方法
5.1.1 对象
5.1.2 类与封装
5.1.3 继承
5.1.4 多态
5.1.5 消息通信
5.1.6 面向对象的软件开发方法
5.2 UML简介
5.2.1 UML的产生和发展
5.2.2 UML的特点
5.2.3 UML的基本模型
5.3 UML的事物
5.3.1 结构事物
5.3.2 行为事物
5.3.3 分组事物
5.3.4 注释事物
5.4 UML的关系
5.4.1 依赖关系
5.4.2 关联关系
5.4.3 泛化关系
5.4.4 实现关系
5.5 UML的图
5.5.1 用例图
5.5.2 类图
5.5.3 顺序图与通信图
5.5.4 状态图
5.5.5 活动图
5.5.6 构件图与部署图
习题
第6章 面向对象分析
6.1 面向对象分析概述
6.1.1 确定系统边界
6.1.2 面向对象分析的3种模型
6.2 建立用例模型
6.2.1 确定业务参与者
6.2.2 确定业务需求用例
6.2.3 创建用例图
6.3 建立对象模型
6.3.1 对象模型的5个层次
6.3.2 划分主题
6.3.3 确定类与对象
6.3.4 确定结构
6.3.5 确定属性
6.3.6 确定服务
6.3.7 建立类图
6.4 建立动态模型
6.4.1 顺序图
6.4.2 通信图
6.4.3 状态图
习题
第7章 软件体系结构与设计模式
7.1 软件体系结构的基本概念
7.1.1 什么是体系结构
7.1.2 体系结构模式、风格和框架的概念
7.1.3 体系结构的重要作用
7.2 典型的体系结构风格
7.2.1 数据流风格
7.2.2 调用∕返回风格
7.2.3 仓库风格
7.3 特定领域的软件体系结构
7.3.1 类属模型
7.3.2 参考模型
7.4 分布式系统结构
7.4.1 多处理器体系结构
7.4.2 客户机∕服务器体系结构
7.4.3 分布式对象体系结构
7.4.4 代理
7.5 体系结构框架
7.5.1 模型视图控制器
7.5.2 J2EE体系结构框架
7.5.3 PCMEF与PCBMER框架
7.6 设计模式
7.6.1 抽象工厂
7.6.2 单件
7.6.3 外观
7.6.4 适配器
7.6.5 职责链
7.6.6 中介者
7.6.7 观察者
习题
第8章 面向对象设计
8.1 面向对象设计过程与准则
8.1.1 面向对象设计过程
8.1.2 面向对象设计准则
8.2 体系结构模块及依赖性
8.2.1 类及其依赖性
8.2.2 接口及其依赖性
8.2.3 包及其依赖性
8.2.4 构件及其依赖性
8.3 系统分解
8.3.1 子系统和类
8.3.2 服务和子系统接口
8.3.3 子系统分层和划分
8.3.4 Coad & Yourdon的面向对象设计模型
8.3.5 子系统之间的两种交互方式
8.3.6 组织系统的两种方案
8.4 问题域部分 的设计
8.5 人机交互部分 的设计
8.5.1 用户界面设计步骤
8.5.2 Web应用系统的界面设计
8.6 任务管理部分 的设计
8.7 数据管理部分 的设计
8.8 对象设计
8.8.1 使用模式设计对象
8.8.2 接口规格说明设计
8.8.3 重构对象设计模型
8.9 优化对象设计模型
习题
第四部分 软件实现与测试
第9章 软件实现
9.1 程序设计语言
9.1.1 程序设计语言的性能
9.1.2 程序设计语言的分类
9.1.3 程序设计语言的选择
9.2 程序设计风格
9.2.1 源程序文档化
9.2.2 数据说明标准化
9.2.3 语句结构简单化
9.2.4 输入/输出规范化
9.3 编码规范
9.4 程序效率与性能分析
9.4.1 算法对效率的影响
9.4.2 影响存储器效率的因素
9.4.3 影响输入/输出的因素
习题
第10章 软件测试方法
10.1 软件测试的基本概念
10.1.1 什么是软件测试
10.1.2 软件测试的目的和原则
10.1.3 软件测试的对象
10.1.4 测试信息流
10.1.5 测试与软件开发各阶段的关系
10.1.6 白盒测试与黑盒测试
10.2 白盒测试的测试用例设计
10.2.1 逻辑覆盖
10.2.2 语句覆盖
10.2.3 判定覆盖
10.2.4 条件覆盖
10.2.5 判定条件覆盖
10.2.6 条件组合覆盖
10.2.7 路径覆盖
10.3 基本路径覆盖
10.4 黑盒测试的测试用例设计
10.4.1 等价类划分
10.4.2 边界值分析
10.5 软件测试的策略
10.5.1 单元测试
10.5.2 组装测试
10.5.3 确认测试
10.5.4 系统测试
10.5.5 测试的类型
10.6 人工测试
10.6.1 静态分析
10.6.2 人工测试方法
10.7 调试
习题
第五部分 软件维护与软件管理
第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.3.3 修改程序的副作用及其控制
11.3.4 重新验证程序
11.4 软件的维护性
11.4.1 软件维护性定义
11.4.2 软件维护性度量
11.5 提高软件维护性的方法
11.5.1 使用提高软件维护性的开发技术和工具
11.5.2 实施开发阶段产品的维护性审查
11.5.3 改进文档
习题
第12章 软件过程与软件过程改进
12.1 软件过程概述
12.2 软件生存期过程国际标准
12.3 软件过程成熟度
12.3.1 什么是软件过程成熟度
12.3.2 过程制度化
12.4 软件能力成熟度模型
12.4.1 CMM与SEI
12.4.2 CMM的演化
12.4.3 CMM族和CMMI
12.4.4 CMMI 1.3 简介
12.4.5 CMMI评估
12.5 软件过程改进
12.5.1 软件过程改进的IDEAL模型
12.5.2 软件过程改进框架
12.5.3 有效的软件过程
习题
第13章 软件项目管理
13.1 软件项目管理概述
13.1.1 软件项目管理的目标
13.1.2 软件项目管理涉及的几个方面
13.2 项目估算
13.2.1 项目策划与项目估算
13.2.2 软件规模估算的功能点方法
13.2.3 软件开发成本估算
13.3 风险管理
13.3.1 什么是软件风险
13.3.2 风险管理的任务
13.3.3 风险评估
13.3.4 风险控制
13.3.5 做好风险管理的建议
13.4 进度管理
13.4.1 进度控制问题
13.4.2 甘特图
13.4.3 时标网状图
13.4.4 PERT图
13.5 需求管理
13.5.1 系统需求与软件需求
13.5.2 需求工程
13.5.3 需求变更
13.5.4 需求变更控制
13.5.5 可追溯性管理
13.6 配置管理
13.6.1 什么是软件配置管理
13.6.2 软件配置标识
13.6.3 变更管理
13.6.4 版本控制
13.6.5 系统建立
13.6.6 配置审核
13.6.7 配置状态报告
习题
第14章 软件工程标准及软件文档
14.1 软件工程标准
14.1.1 标准的概念
14.1.2 软件标准化的意义
14.1.3 标准的分类与分级
14.1.4 软件工程标准的制定与实施
14.1.5 软件组织内的标准化工作
14.2 软件文档
14.2.1 软件文档的作用和分类
14.2.2 软件基本文档的内容要求
14.2.3 对文档编制的质量要求
14.2.4 文档的管理和维护
习题
主要参考文献
评论
还没有评论。