展开全部

主编推荐语

深入探讨软件工程的原则和方法。

内容简介

本书探讨了软件工程的真正含义,汇集了一些重要的软件开发基本原则,将它们紧密结合成一个一致的模型,旨在帮助读者有效、快速地构建软件。

全书共4个部分:

第1部分探讨软件工程的真正含义,以及如何将工程的原则和原理应用到软件开发中;

第2部分讲述运用科学思想优化软件开发过程的方法,包括迭代式、增量式工作,获得并利用快速、高质量的反馈,采用实验性和经验主义的科学方法;

第3部分介绍管理软件复杂性的方法,深入探讨模块化、内聚力、关注点分离、信息隐藏和抽象、管理耦合等原则;

第4部分介绍支持软件工程的工具,以及一些贯穿本书的软件开发理念,包括可测试性、可部署性、速度、控制变量、持续交付等。

目录

  • 版权信息
  • 内容提要
  • 关于作者
  • 对本书的赞誉
  • 前言
  • 致谢
  • 服务与支持
  • 第1部分 什么是软件工程?
  • 第1章 简单介绍
  • 1.1 工程——科学的实际应用
  • 1.2 软件工程的定义
  • 1.3 重新定义“软件工程”
  • 1.4 软件工程的诞生
  • 1.5 范式转移
  • 1.6 小结
  • 第2章 什么是工程?
  • 2.1 生产不是我们的问题
  • 2.2 设计工程,而非生产工程
  • 2.3 工程学的初步定义
  • 2.4 工程不等于代码
  • 2.5 为什么工程很重要?
  • 2.6 “工艺”的极限
  • 2.7 精度和可伸缩性
  • 2.8 管理复杂性
  • 2.9 测量的可重复性和准确性
  • 2.10 工程、创造和工艺
  • 2.11 为什么我们所做的不是软件工程
  • 2.12 权衡
  • 2.13 进步的错觉
  • 2.14 从工艺到工程的旅程
  • 2.15 只有工艺还不够
  • 2.16 是时候反思了?
  • 2.17 小结
  • 第3章 工程方法的基本原理
  • 3.1 变革的行业?
  • 3.2 度量的重要性
  • 3.3 应用稳定性和吞吐量
  • 3.4 软件工程学科的基础
  • 3.5 学习专家
  • 3.6 管理复杂性的专家
  • 3.7 小结
  • 第2部分 优化学习
  • 第4章 迭代式工作
  • 4.1 迭代式工作的实际优势
  • 4.2 迭代作为防御性设计策略
  • 4.3 计划的诱惑
  • 4.4 迭代式工作的实用性
  • 4.5 小结
  • 第5章 反馈
  • 5.1 反馈重要性的实例
  • 5.2 编码中的反馈
  • 5.3 集成中的反馈
  • 5.4 设计中的反馈
  • 5.5 架构中的反馈
  • 5.6 倾向于早期反馈
  • 5.7 产品设计中的反馈
  • 5.8 组织和文化中的反馈
  • 5.9 小结
  • 第6章 增量主义
  • 6.1 模块化的重要性
  • 6.2 组织增量主义
  • 6.3 增量主义工具
  • 6.4 限制变更的影响
  • 6.5 增量式设计
  • 6.6 小结
  • 第7章 经验主义
  • 7.1 立足于现实
  • 7.2 区分经验主义与实验性
  • 7.3 “我知道那个bug!”
  • 7.4 避免自我欺骗
  • 7.5 创造符合我们论点的现实
  • 7.6 以现实为指导
  • 7.7 小结
  • 第8章 实验性
  • 8.1 “实验性”是什么意思?
  • 8.2 反馈
  • 8.3 假设
  • 8.4 度量
  • 8.5 控制变量
  • 8.6 自动化测试作为实验
  • 8.7 将测试的实验结果置于环境中
  • 8.8 实验范围
  • 8.9 小结
  • 第3部分 优化管理复杂性
  • 第9章 模块化
  • 9.1 模块化的标志
  • 9.2 低估优秀设计的重要性
  • 9.3 可测试性的重要性
  • 9.4 可测试性设计提高模块化
  • 9.5 服务和模块化
  • 9.6 可部署性和模块化
  • 9.7 不同规模的模块化
  • 9.8 人类系统中的模块化
  • 9.9 小结
  • 第10章 内聚力
  • 10.1 模块化和内聚力:设计的基础
  • 10.2 内聚力的基本降低
  • 10.3 上下文很重要
  • 10.4 高性能软件
  • 10.5 与耦合的联系
  • 10.6 测试驱动开发推动高内聚力
  • 10.7 如何实现内聚软件
  • 10.8 内聚力差的代价
  • 10.9 人类系统中的内聚力
  • 10.10 小结
  • 第11章 关注点分离
  • 11.1 依赖注入
  • 11.2 分离本质复杂性和偶然复杂性
  • 11.3 领域驱动设计的重要性
  • 11.4 可测试性
  • 11.5 端口和适配器
  • 11.6 何时采用端口和适配器
  • 11.7 什么是API?
  • 11.8 使用测试驱动开发推动关注点分离
  • 11.9 小结
  • 第12章 信息隐藏和抽象
  • 12.1 抽象或信息隐藏
  • 12.2 是什么导致了“大泥球”?
  • 12.3 组织和文化问题
  • 12.4 技术问题和设计问题
  • 12.5 对过度设计的恐惧
  • 12.6 通过测试改进抽象
  • 12.7 抽象的力量
  • 12.8 抽象泄漏
  • 12.9 选择适当的抽象
  • 12.10 问题领域的抽象
  • 12.11 抽象偶然复杂性
  • 12.12 隔离第三方系统和代码
  • 12.13 总是倾向于隐藏信息
  • 12.14 小结
  • 第13章 管理耦合
  • 13.1 耦合的代价
  • 13.2 扩展
  • 13.3 微服务
  • 13.4 解耦可能意味着更多的代码
  • 13.5 松耦合不是唯一重要的类型
  • 13.6 倾向于松耦合
  • 13.7 这与关注点分离有何不同?
  • 13.8 DRY太过于简单化
  • 13.9 异步作为松耦合的工具
  • 13.10 松耦合设计
  • 13.11 人类系统中的松耦合
  • 13.12 小结
  • 第4部分 支持软件工程的工具
  • 第14章 工程学科的工具
  • 14.1 什么是软件开发?
  • 14.2 可测试性作为工具
  • 14.3 测量点
  • 14.4 实现可测试性的问题
  • 14.5 如何提高可测试性
  • 14.6 可部署性
  • 14.7 速度
  • 14.8 控制变量
  • 14.9 持续交付
  • 14.10 支持工程的通用工具
  • 14.11 小结
  • 第15章 现代软件工程师
  • 15.1 工程作为人类过程
  • 15.2 数字化颠覆性组织
  • 15.3 结果与机制
  • 15.4 持久且普遍适用
  • 15.5 工程学科的基础
  • 15.6 小结
展开全部

评分及书评

评分不足
2个评分

出版方

人民邮电出版社

人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。