特别优惠
跟上新发行和促销的步伐。注册,听取我们的意见。
提高你的创造力、效率,最终提高你的代码
在现代软件工程,持续交付先驱David Farley帮助软件专业人员更有效地思考他们的工作,更成功地管理它,并真正提高他们的应用程序、他们的生活以及他们同事的生活的质量。
Farley为程序员、管理人员和所有经验水平的技术领导撰写了这本书,阐明了有效软件开发核心的持久原则。他将这门学科提炼为两个核心练习:学习和探索,以及管理复杂性。对于每一个,他都定义了可以帮助您改善从思维方式到代码质量的所有方面的原则,并描述了已被证明可以促进成功的方法。
Farley的思想和技术凝聚成一个统一的、科学的、基础的方法,在现实的经济约束下解决实际的软件开发问题。这种通用的、持久的、普遍的软件工程方法可以帮助您解决尚未遇到的问题,使用今天和未来的技术。它让你更深入地了解你每天都在做什么,帮助你更快、更快乐、更有成就感地创建更好的软件。
下载样例页面(包括第三章)
前言十七
前言第二十一章
确认第二十五章
作者简介
第一部分:什么是软件工程?1
第一章:绪论
工程学——科学的实际应用
什么是软件工程?4
重新定义“软件工程
软件工程的诞生
范式的转变
总结9
第二章:什么是工程?11
生产不是我们的问题
设计工程,而不是生产工程
工程的工作定义
工程=代码17
为什么工程很重要?19
“工艺”的极限
精度和可扩展性
管理复杂性21
测量的重复性和准确性
工程、创意和工艺
为什么我们所做的不是软件工程
权衡26
进步的幻觉
从工艺到工程的旅程
光有手艺是不够的
是时候重新思考了?28
总结30
第三章:工程方法的基础
一个变革的行业?31
测量的重要性
应用稳定性和吞吐量
软件工程学科的基础36
学习专家36
管理复杂性的专家
总结38
第二部分:优化学习
第4章:迭代工作
迭代工作的实际优势
作为防御性设计策略的迭代
计划的诱惑
迭代工作的实用性
总结55
第五章:反馈
反馈重要性的一个实际例子
编码中的反馈60
集成中的反馈61
设计中的反馈63
Architecture中的反馈65
更喜欢早期反馈
产品设计中的反馈
组织与文化中的反馈
70年总结
第六章:渐进主义
模块化的重要性
组织渐进主义
渐进主义的工具
限制变化的影响
增量设计77
79年总结
第七章:经验主义
立足于现实/
从实验中分离经验
“我认识那只虫子!”82
避免自欺欺人/
创造一个符合我们论点的现实
以现实为导向
89年总结
第八章:做实验
“实验”是什么意思?92
反馈93
假设94年
测量95
控制变量96
作为实验的自动化测试
把测试的实验结果放到语境中去98
实验的范围
100年总结
第三部分:优化管理复杂性
第九章:模块化
模块化的特点
低估优秀设计的重要性
可测试性的重要性
可测试性设计提高模块化
服务和模块化
可部署性和模块化
不同尺度的模块化
人体系统中的模块化
120年总结
第十章:内聚
模块化和内聚:设计基础
内聚力的基本减少
背景很重要125
高性能软件128
链接到耦合129
用TDD 129驱动高内聚
如何实现内聚软件130
低凝聚力的代价
人类系统中的内聚
133年总结
第十一章:关注点分离
依赖注入139
分离本质复杂性和偶然复杂性
DDD的重要性
可测试性144
端口和适配器145
何时采用端口和适配器
什么是API?148
使用TDD驱动关注点分离
150年总结
第十二章:信息隐藏和抽象
抽象或信息隐藏
什么导致了“大泥球”?152
组织和文化问题
技术问题和设计问题
对过度工程的恐惧
通过测试改进抽象
抽象的力量/
有漏洞的抽象
选择合适的抽象
问题域的抽象165
偶然复杂性166
隔离第三方系统和代码
总是喜欢隐藏信息
170年总结
第13章:管理耦合
耦合成本171
放大172
Microservices 173
解耦可能意味着更多代码175
松耦合不是唯一重要的一种
更喜欢松耦合177
这与关注点分离有何不同?178
DRY太简单了
异步作为松耦合的工具
松耦合的设计
人类系统中的松耦合
184年总结
第四部分:支持软件工程的工具
第十四章:工程学科的工具
什么是软件开发?188
作为工具的可测试性
测量点192
实现可测试性的问题
如何提高可测试性196
部署197年
速度199
控制变量200
持续交付201
支持工程的通用工具
203年总结
第十五章:现代软件工程师
作为人类过程的工程
数字化颠覆性组织207
结果与机制/
耐用且普遍适用
工程学科基础
215年总结
指数217