现代软件工程

[美] 戴维·法利(David Farley)

出版时间

2023-06-20

ISBN

9787115599582

评分

★★★★★
书籍介绍
这本书最尖锐之处,在于它直接挑战了'软件工程'这个名称本身:作者戴维·法利认为,多数团队做的其实是'工艺'——凭手艺和直觉写代码,而非'工程'——用可重复、可测量的方法解决问题。书中反复追问一个令人不适的问题:为什么投入大量精力的瀑布计划、甘特图、敏捷卡片,并未换来更可靠的软件?它给出的答案不是又一套流程模板,而是一种科学家的思维方式:把每次改动当作实验,用快速反馈和度量检验假设,敢于抛弃'技术上很酷'却无用的东西。它适合那些对'敏捷只是贴卡片'感到失望、渴望理解'为何优秀团队能持续重写代码'的开发者。当然,它理论偏多、翻译生硬,但若能熬过铺垫,你会获得一种审视自己日常工作的全新标尺。
作者简介
【作者】戴维·法利(David Farley)是持续交付的先驱、思想领袖,也是持续交付、DevOps、测试驱动开发和软件开发领域的专家。 从现代计算的早期开始,戴维曾担任过程序员、软件工程师、系统架构师和成功团队的领导者,他掌握了计算机和软件开发的基本原理,并形成了开创性的方法,改变了开发人员和团队的工作方式。他挑战了传统的思维方式,带领团队开发了世界级的软件。 戴维是获Jolt大奖的《持续交付:发布可靠软件的系统方法》一书的作者之一,是一位受欢迎的会议演讲者,并在YouTube上运营着广受欢迎的“持续交付”频道,主题是软件工程。他建立了世界上速度最快的金融交易所之一,是行为驱动开发的先驱,是《反应式宣言》的作者之一,并凭借LMAX Disruptor获得了杜克开源软件奖。 戴维热衷于通过咨询、YouTube 频道和培训课程分享他的专业知识,帮助世界各地的开发团队改进软件的设计,提高软件的质量和可靠性。 【译者】赵睿,计算机硕士,拥有20 年IT从业经验;曾先后就职于LG CNS China(北京乐金系统集成有限公司)和中国惠普有限公司,担任过软件工程师、架构师、项目经理等职务,参与或主导过物流系统、BI系统、云计算操作平台等多个大中型项目的软件开发、架构设计、团队建设和项目管理等工作;在单体架构、微服务架构、设计模式、敏捷编程、软件工程等方面有多年实践经验。译有《EJB 3.0 专家编程》和《Java EE 和.NET互操作性》。 【译者】茹炳晟,腾讯Tech Lead,腾讯研究院特约研究员,中国计算机学会(CCF)技术前线委员会(TF)研发效能主席,“研发效能宣言”发起人和主要起草人,团体标准《软件研发效能度量规范》核心编写专家,中国商业联合会互联网应用工作委员会智库专家,腾讯云、阿里云、华为云最具价值专家;国内多个技术峰会的联席主席、出品人和主会场演讲嘉宾;公众号“茹炳晟聊软件研发”主理人;著有《测试工程师全栈技术进阶与实践》《软件研发效能提升之美》《高效自动化测试平台: 设计与开发实战》《软件研发效能提升实践》和《软件研发效能权威指南》,译有《持续架构实践》。
AI导读
核心看点
  • 本书由持续交付先驱戴维·法利撰写,旨在纠正对软件工程的传统认知误区。作者重新定义软件工程,强调其并非简单的代码编写或工艺,而是基于科学原理、理性思考和严谨方法的工程实践。书中深入探讨了如何将工程学的核心原则,如管理复杂性、确保可重复性和准确性,应用到软件开发中,以构建可靠、高效的软件系统。
  • 全书系统梳理了优化学习与管理复杂性的两大核心支柱。在优化学习方面,倡导迭代式工作、增量主义、快速反馈及实验性方法,反对僵化的长期计划;在管理复杂性方面,详细讲解模块化、内聚力、关注点分离、信息隐藏及降低耦合等原则。这些内容旨在帮助读者建立正确的工程思维,提升软件系统的可测试性、可部署性及整体质量。
  • 本书强调实用主义与科学方法在软件开发中的结合,反对盲目追求“技术上闪亮的概念”或过度设计。作者指出,软件工程的目标是在经济约束范围内寻找最简成功之路,而非炫技。书中内容虽偏重理论框架与思维模式,缺乏具体代码示例,但对于理解软件工程本质、提升团队研发效能及构建高质量软件架构具有极高的指导价值,适合希望从底层逻辑提升工程能力的读者。
读者共识
  • 读者普遍认为本书在理论层面具有较高的价值,作者对软件工程的重新定义和对科学方法的强调令人耳目一新。尽管翻译质量差、内容空洞、缺乏实例等批评声音较多,但仍有不少读者认可其核心观点,认为其有助于提升工程思维和代码质量。部分读者指出,书中关于迭代、反馈、复杂性管理等原则是正确的,但表述方式过于学术化和啰嗦,导致阅读体验下降,建议读者取其精华,去其糟粕。
  • 多数读者反映本书阅读体验不佳,主要问题在于翻译生硬、内容重复、缺乏实际案例。部分读者认为书中观点老生常谈,甚至存在错误,对实际工作帮助有限。然而,也有部分读者认为,尽管存在上述问题,但本书在纠正错误认知、提升工程伦理方面仍有积极作用。读者建议,若对软件工程理论感兴趣,可尝试阅读,但需做好心理准备,并建议结合其他更实用的书籍一起学习,以获得更全面、平衡的知识体系。
  • 读者共识认为,本书不适合初学者或寻求具体技术解决方案的读者,而更适合有一定经验、希望深入理解软件工程本质的资深技术人员。尽管存在争议,但部分读者仍认为其核心观点值得借鉴,如强调反馈、迭代、科学方法的重要性。读者建议,在阅读时应保持批判性思维,不要盲目接受作者的所有观点,而应结合自身实践进行判断。同时,读者呼吁出版社提高翻译质量,避免误导读者,影响书籍的传播和价值。
精彩摘录
  • "我在大学里学的是计算机科学,当然,我完成了几门名为“软件工程”或者名字与之类似的课程。 在我开始攻读学士学位时,我对编程其实并不陌生,并且已经为我的高中的职业图书馆实现了一个完全有效的目录管理系统。我记得自己曾经对“软件工程”极度困惑,它的存在似乎就是为了妨碍实际的代码编写和应用程序交付。 21 世纪初,当我毕业的时候,我去了一家大型汽车公司的IT部门工作。正如你所料,他们热衷于“软件工程”。就是在这里,我第一次看到(但肯定不是最后一次!)甘特图(Gantt chart),也是在这里,我体验到了瀑布式(waterfall)开发。也就是说,我看到软件开发团队在需求收集和设计阶段花费了大量的时间和"
  • "不过具体来玩· 倾向认为政变现有的代码是一件好事,定 野多组织要么害怕更改他们的代码,要么对其不有某种背离现实的敬畏之心。我为怡倍相反:如果你不能或不愿更改代码,那么代码实际上是死的。再次用弗雷德痛 鲁克斯的话: 一旦一个设计被冻结,它就过时了。① 家的丽友丹·诺思说过一个有趣的想法。丹有一种用巧妙的措辞表达观点的才华,他把“团队的软件半衰期”当作质量的度量标准。 我和丹都没有数据来支持这个观点,但这是一个有趣的观点。他说,一个团队生产的软件的质量是其软件半衰期的因变量。软件半衰期是指,队重写一半他们负责骏件所花费的时间。 在丹的模型中,优秀的团队可能会在几个月内重写一半他们负责的软件,低效能"
  • "我们是技术人员,因此,我们有一些共同的倾向。我们应该意识到并防范的这些向之一是,追求“技术上闪亮的概念”。我和任何人一样,对技天概念感兴趣,我也为嘔呼的吸力之一,也是我门重视的学之成为工程丽,我们必须接受一定程度的实用主义,甚至是怀疑主义:在本书的-开稳我对工程学的定义里,有一部分包括“在经济约束范围内”我们应该总是考虑最简鲜成功之路,而不是最酷的,也不是我们可以添加到我们履历或个人简历中的最先造装术路 无论如何,要跟上新思想的发展。学握我们工作中的新技术或方法,但始终要解你试图解决的问题,如实地评估它们的使用情况。如果你正在应用这项技术或思想,以了解它是否有用,就要认识到这一事实,并以试用、"
目录
序 ——特丽莎·吉(Trisha Gee),开发技术推广工程师和Java 拥护者
第1部分 什么是软件工程?
第1章 简单介绍 3
1.1 工程——科学的实际应用 3
1.2 软件工程的定义 4

显示全部
用户评论
大师名作!!作者深入浅出把软件工程的一些关键理念娓娓道来,没有华丽辞藻和复杂概念,推荐!
非常适合软件相关专业的同学阅读,跟随大师的节奏
翻译很别扭
透过这本书可以进一步审视软件工程的的重要性,能够更好提升软件写作的效率!
还行吧,主要还是要有代码项目经验才行,实操性
特别学术性的内容,阅读体验也不好,大部分是一些工程思维和敏捷开发内容,涉及到实践和经验的东西比较少,大部分是偏老生常谈的理论知识了,告诉你什么是xxx?xxx有多重要,重要在哪些方面?再扯上一些有的没的无聊例子凑字数,提一下其他畅销书的xxx观点,大概就是这本书的风格了,对我来说没啥帮助,基于礼貌多给一星
在软件工程领域的一众书籍中,这本绝对属于头部了。如果你想深入了解软件工程,但只有阅读一本书记得时间,可以拿起这本书。
有这样一本书把如何开发软件的工程化思想系统地梳理出来真是太好了。翻译也很好。
阅读体验良好,作者从架构讲解到细节。学习到了很多新概念。
求书
收藏