现代软件工程:如何高效构建软件

现代软件工程:如何高效构建软件

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

编辑推荐

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

内容简介

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

全书共4个部分:

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

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

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

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

作者简介

作者戴维·法利,持续交付有限公司(Continuous Delivery Ltd.)的创始人和顾问。曾担任过程序员、软件工程师、系统架构师和团队领导者,掌握了计算机和软件开发的基本原理,并形成了开创性的方法,改变了开发人员和团队的工作方式。

章节目录

版权信息

内容提要

关于作者

对本书的赞誉

前言

致谢

服务与支持

第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 小结

现代软件工程:如何高效构建软件是2023年由人民邮电出版社出版,作者[美] 戴维·法利。

得书感谢您对《现代软件工程:如何高效构建软件》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

你可能喜欢
软件工程实用教程 (第3版) 电子书
本书根据软件工程的**新发展,结合目前软件工程教学的需要,围绕软件工程的三大要素——过程、方法和工具,遵循软件开发“工程化”思想,结合大量的应用案例,系统地介绍软件工程的理论、方法以及应用技术。本书内容包括:软件工程引论、软件开发过程模型、需求工程、软件分析与设计、软件测试、软件维护、质量管理、文档技术、软件项目管理、软件开发工具与环境、软件工程课程设计等。本书强调软件工程的理论与实践相结合,技术
软件工程——理论与实践(附微课视频第2版) 电子书
软件工程教材:实用性强,理论实践结合,配备微课视频。
修改软件的艺术:构建易维护代码的9条最佳实践 电子书
《修改软件的艺术构建易维护代码的9条**佳实践》会帮你降低构建与维护软件的成本。如果你是软件开发者,将学到一套实践方法以构建易修改的代码,因为在应用当中代码经常需要修改。对于和软件开发者合作的管理者来说,本书会向你展示为何引入这9个基本的实践方法,会使你的团队更加有效地交付软件而不会让软件演变成遗留代码。
Dapr与.NET微服务实战 电子书
本书通过开发微服务示例程序来讲解Dapr的各项功能,并介绍其众多构建块的功能及使用方法。本书首先介绍了Dapr的基础知识以及相关环境的配置工作,以帮助读者快速进入Dapr的世界。其次,介绍了Dapr的核心概念、发布/订阅机制、资源绑定构建块与虚拟actor模型等相关知识,让读者进一步了解Dapr的相关功能。最后,介绍了Dapr的实际运用,包括Dapr应用的部署与可观测性,以及在Kubernetes
AutoCAD中文版实例教程(AutoCAD 2020)(微课版)(第2版) 电子书
本书系统地介绍AutoCAD 2020中文版的功能和操作技巧。