内容简介
《高等院校软件工程专业规划教材:软件工程与计算(卷2):软件开发的技术基础》作为国家精品课程“软件工程与计算”系列课程的第二门课程配套教材,《高等院校软件工程专业规划教材:软件工程与计算(卷2):软件开发的技术基础》以经典软件工程方法与技术为主线,软件开发技术与程序设计知识为教学重点,培养学生简单小组级别、中小规模软件系统的软件开发能力。
全书主要分为六部分。第一部分介绍软件工程的基本框架。第二部分介绍项目启动阶段的知识。第三部分介绍软件需求开发的基础知识,包括软件需求工程的概要、软件需求的内涵、常见的需求分析方法、软件需求文档。第四部分首先介绍软件设计的基础概念,之后沿着设计过程和设计技术两条主线,深入描述软件设计的相关知识。第五部分介绍软件构造、测试、移交与维护等软件开发的下游工程的基础知识。第六部分是对第一部分的延续,通过总结性回顾,进一步加深读者对软件工程的理解。
《高等院校软件工程专业规划教材:软件工程与计算(卷2):软件开发的技术基础》可作为高等院校软件工程、计算机及相关专业本科生软件工程课程的教材,也可作为从事软件开发的相关技术人员的参考书。
目录
前言
第一部分 软件工程概论
第1章 软件工程基础
1.1 软件
1.1.1 软件独立于硬件
1.1.2 软件是一种工具
1.1.3 软件的核心是程序
1.1.4 软件开发远比编程要复杂
1.1.5 应用软件基于现实又高于现实
1.2 软件工程
1.2.1 定义
1.2.2 软件工程是一种工程活动
1.2.3 软件工程的动机
1.2.4 软件工程是科学性、实践性和工艺性并重的
1.2.5 软件工程追求足够好,不是最好
1.2.6 软件工程的产品是基于虚拟计算机的软件方案
1.2.7 软件工程的最终目的
1.3 软件工程概览
1.3.1 软件工程知识域
1.3.2 软件开发活动
1.3.3 软件工程的角色分工
1.4 习题
第2章 软件工程的发展
2.1 软件工程的发展脉络
2.2 20世纪50年代的软件工程
2.3 20世纪60年代的软件工程
2.4 20世纪70年代的软件工程
2.5 20世纪80年代的软件工程
2.6 20世纪90年代的软件工程
2.7 21世纪00年代的软件工程
2.8 习题
第二部分 项目启动
第3章 示例项目描述
3.1 背景
3.2 目标
3.3 系统用户
3.4 用户访谈要点
3.5 项目实践过程
第4章 项目管理基础
4.1 项目和项目管理
4.2 团队组织与管理
4.2.1 团队的特征
4.2.2 团队结构
4.2.3 团队建设
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.4.4 配置管理活动
4.4.5 变更控制
4.5 项目实践
4.6 习题
第三部分 需求开发阶段
第5章 软件需求基础
5.1 引言
5.2 需求工程基础
5.2.1 需求工程简介
5.2.2 需求工程活动
5.2.3 需求获取
5.2.4 需求分析
5.2.5 需求规格说明
5.2.6 需求验证
5.2.7 需求管理
5.3 需求基础
5.3.1 需求
5.3.2 需求的层次性
5.3.3 结合层次性的需求开发
5.3.4 区分需求、问题域与规格说明
5.4 需求分类
5.4.1 需求谱系
5.4.2 软件需求的分类
5.5 项目实践
5.6 习题
第6章 需求分析方法
6.1 需求分析基础
6.1.1 需求分析的原因
6.1.2 需求分析模型
6.2 结构化分析
6.2.1 结构化分析方法
6.2.2 数据流图
6.2.3 实体关系图
6.3 面向对象分析
6.3.1 面向对象分析方法
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.5 项目实践
6.6 习题
第7章 需求文档化与验证
7.1 文档化的原因
7.2 需求文档基础
7.2.1 需求文档的交流对象
7.2.2 用例文档
7.2.3 软件需求规格说明文档
7.3 需求文档化要点
7.3.1 技术文档写作要点
7.3.2 需求书写要点
7.3.3 软件需求规格说明文档书写要点
7.4 评审软件需求规格说明文档
7.4.1 需求验证与确认
7.4.2 评审需求的注意事项
7.5 以需求为基础开发系统测试用例
7.5.1 开发测试用例套件
7.5.2 开发测试用例
7.6 度量需求
7.7 将需求制品纳入配置管理
7.8 项目实践
7.9 习题
第四部分 软件设计
第8章 软件设计基础
8.1 软件设计思想的发展
8.2 软件设计的核心思想
8.3 理解软件设计
8.3.1 设计与软件设计
8.3.2 工程设计与艺术设计
8.3.3 理性主义和经验主义
8.3.4 软件设计的演化性
8.3.5 软件设计的决策性
8.3.6 软件设计的约束满足和多样性
8.4 软件设计的分层
8.5 软件设计过程的主要活动
8.6 软件设计的方法和模型
8.6.1 软件设计的方法
8.6.2 软件设计的模型
8.7 软件设计描述
8.7.1 设计视图和设计图
8.7.2 设计视角和设计关注
8.7.3 需求和涉众
8.7.4 设计理由
8.7.5 设计描述的模板
8.7.6 软件设计文档书写要点
8.8 项目实践
8.9 习题
第9章 软件体系结构基础
9.1 软件体系结构的发展
9.2 理解软件体系结构
9.2.1 定义
9.2.2 区分软件体系结构的抽象与实现
9.2.3 部件
9.2.4 连接件
9.2.5 配置
9.3 体系结构风格初步
9.3.1 主程序/子程序
9.3.2 面向对象式
9.3.3 分层
9.3.4 MVC
9.4 项目实践
9.5 习题
第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.3 体系结构集成与测试
10.3.1 集成的策略
10.3.2 桩、驱动与集成测试用例
10.4 软件体系结构设计文档描述
10.5 体系结构评审
10.6 项目实践
10.7 习题
第11章 人机交互设计
11.1 引言
11.2 人机交互设计的目标
11.3 人机交互设计的人类因素
11.3.1 精神模型
11.3.2 差异性
11.4 人机交互设计的计算机因素
11.4.1 可视化设计
11.4.2 常见界面类型
11.5 人机交互设计的交互性
11.5.1 导航
11.5.2 反馈
11.5.3 一些人机交互设计原则
11.6 人机交互设计过程
11.6.1 基本过程
11.6.2 示例
11.7 项目实践
11.8 习题
第12章 详细设计的基础
12.1 详细设计概述
12.1.1 详细设计出发点
12.1.2 详细设计的上下文
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.5 详细设计文档描述
12.6 详细设计的评审
12.7 项目实践
12.8 习题
第13章 详细设计中的模块化与信息隐藏
13.1 模块化与信息隐藏思想
13.1.1 设计质量
13.1.2 模块化与信息隐藏思想的动机
13.1.3 模块化与信息隐藏思想的发展
13.2 模块化
13.2.1 分解与模块化
13.2.2 结构化设计中的耦合
13.2.3 结构化设计中的内聚
13.2.4 回顾:MSCS系统设计中的模块化思想
13.3 信息隐藏
13.3.1 抽象与信息隐藏
13.3.2 信息与隐藏
13.3.3 模块说明
13.3.4 回顾:MSCS系统设计中的信息思想
13.4 习题
第14章 详细设计中面向对象方法下的模块化
14.1 面向对象中的模块
14.1.1 类
14.1.2 类之间的联系
14.2 访问耦合
14.2.1 访问耦合的分析
14.2.2 降低访问耦合的方法
14.3 继承耦合
14.3.1 继承耦合的分析
14.3.2 降低继承耦合的方法
14.4 内聚
14.4.1 面向对象中的内聚
14.4.2 提高内聚的方法
14.5 耦合与内聚的度量
14.5.1 耦合的度量
14.5.2 内聚的度量
14.6 项目实践
14.7 习题
第15章 详细设计中面向对象方法下的信息隐藏
15.1 封装类的职责
15.1.1 类的职责
15.1.2 封装——分离接口与实现
15.1.3 封装实现细节
15.2 为变更而设计
15.2.1 封装变更/开闭原则
15.2.2 多态
15.2.3 依赖倒置原则
15.2.4 总结
15.3 项目实践
15.4 习题
第16章 详细设计的设计模式
16.1 设计模式基础
16.2 可修改性及其基本实现机制
16.3 策略模式
16.3.1 典型问题
16.3.2 设计分析
16.3.3 解决方案
16.3.4 模式实例
16.4 抽象工厂模式
16.4.1 典型问题
16.4.2 设计分析
16.4.3 解决方案
16.4.4 模式实例
16.5 单件模式
16.5.1 典型问题
16.5.2 设计分析
16.5.3 解决方案
16.5.4 模式实例
16.6 迭代器模式
16.6.1 典型问题
16.6.2 设计分析
16.6.3 解决方案
16.6.4 模式实例
16.7 项目实践
16.8 习题
第五部分 软件构造、测试、交付与维护
第17章 软件构造
17.1 概述
17.1.1 软件构造的定义
17.1.2 软件构造是设计的延续
17.2 软件构造活动
17.2.1 详细设计
17.2.2 编程
17.2.3 测试
17.2.4 调试
17.2.5 代码评审
17.2.6 集成与构建
17.2.7 构造管理
17.3 软件构造实践方法
17.3.1 重构
17.3.2 测试驱动开发
17.3.3 结对编程
17.4 项目实践
17.5 习题
第18章 代码设计
18.1 设计易读的代码
18.1.1 格式
18.1.2 命名
18.1.3 注释
18.2 设计易维护的代码
18.2.1 小型任务
18.2.2 复杂决策
18.2.3 数据使用
18.2.4 明确依赖关系
18.3 设计可靠的代码
18.3.1 契约式设计
18.3.2 防御式编程
18.4 使用模型辅助设计复杂代码
18.4.1 决策表
18.4.2 伪代码
18.4.3 程序流程图
18.5 为代码开发单元测试用例
18.5.1 为方法开发测试用例
18.5.2 使用Mock Object测试类方法
18.5.3 为类开发测试用例
18.6 代码复杂度度量
18.7 问题代码
18.8 项目实践
18.9 习题
第19章 软件测试
19.1 引言
19.1.1 验证与确认
19.1.2 软件测试的目标
19.1.3 测试用例
19.1.4 桩与驱动
19.1.5 缺陷、错误与失败
19.2 测试层次
19.2.1 测试层次的划分
19.2.2 单元测试
19.2.3 集成测试
19.2.4 系统测试
19.3 测试技术
19.3.1 测试用例的选择
19.3.2 随机测试
19.3.3 基于规格的技术——黑盒测试方法
19.3.4 基于代码的技术——白盒测试方法
19.3.5 特定测试技术
19.4 测试活动
19.5 测试度量
19.6 项目实践
19.7 习题
第20章 软件交付
20.1 安装与部署
20.1.1 安装
20.1.2 部署
20.2 培训与文档支持
20.2.1 培训
20.2.2 文档支持
20.3 项目评价
20.3.1 项目评价的原因
20.3.2 项目评价的内容
20.3.3 项目评价的方法
20.3.4 注意事项
20.4 项目实践
20.5 习题
第21章 软件维护与演化
21.1 软件维护
21.1.1 软件可修改性与软件维护
21.1.2 软件维护的类型
21.1.3 软件维护的高代价性
21.1.4 开发可维护的软件
21.1.5 软件维护过程与活动
21.2 软件演化
21.2.1 演化与维护
21.2.2 软件演化定律
21.2.3 软件演化生命周期模型与演化活动
21.3 软件维护与演化的常见技术
21.3.1 遗留软件
21.3.2 逆向工程
21.3.3 再工程
21.4 项目实践
21.5 习题
第六部分 软件过程模型与职业基础
第22章 软件开发过程模型
22.1 软件开发的典型阶段
22.1.1 软件需求工程
22.1.2 软件设计
22.1.3 软件构造
22.1.4 软件测试
22.1.5 软件交付
22.1.6 软件维护
22.2 软件生命周期模型
22.3 软件过程模型
22.4 构建-修复模型
22.5 瀑布模型
22.6 增量迭代模型
22.7 演化模型
22.8 原型模型
22.9 螺旋模型
22.10 Rational统一过程
22.11 敏捷过程
22.12 习题
第23章 软件工程职业基础
23.1 软件工程职业
23.1.1 软件行业的发展
23.1.2 软件工程职业的出现
23.1.3 软件工程师职业素质
23.2 软件工程职业概况
23.2.1 知识体系
23.2.2 教育体系
23.2.3 职业道德规范
23.2.4 认证体系
23.2.5 行业协会
23.3 软件工程的行业标准
23.4 习题
附录A 软件需求规格说明文档模板
附录B 文档注释规范
附录C _软件工程道德和职业实践规范(5.2版)的八项原则
附录D 连锁商店管理系统(MSCS)
相关文档
参考文献
前言/序言
alt="" />
高等院校软件工程专业规划教材:软件工程与计算(卷2):软件开发的技术基础 下载 mobi epub pdf txt 电子书 格式