前言

软件架构指标可用于度量软件项目的可维护性和架构质量,而且能在研发流程的早期提供累积的架构和技术债务的危险警告。本书介绍了每个软件架构师都应该知道的关键软件架构指标。本书的10位作者都发表过软件架构方面的著名文章和书籍,他们定期参加国际活动,并举办实践工作坊。

我们总是努力尝试平衡理论和实践。不过本书并非理论书籍,它关注的是实践和落地,涉及的都是已经尝试过的行之有效的方法,囊括了宝贵的经验和案例研究。我们不仅聚焦于如何提高架构质量,同时也关注在考虑自身情况和所涉及的权衡的前提下,如何将客观指标与业务成果联系起来。

我们进行了一项调查,发现人们对软件架构指标的需求非常强烈,但可用的资源却很少。我们希望本书能帮助你正确设置关键业绩指标(Key Performance Indicator,KPI),并能准确而深刻地度量成果。

我们非常感谢全球软件架构峰会,它让我们重聚,并让我们萌生了写一本关于软件架构指标的书的想法。这本书的所有章节和案例研究就像作者本身一样有所不同:我们注重使用来自不同行业和挑战的例子,以便每个读者都能找到解决方案或灵感。

你会学到什么

读完本书后,你会明白如何:

· 度量软件架构达到目标的程度。

· 引导架构实现高可测试性和可部署性。

· 为软件架构的工作安排优先级。

· 从可观测性中创造可预测性。

· 确定软件项目的KPI。

· 构建并自动化指标仪表板。

· 分析和度量项目或流程成功与否。

· 构建目标驱动的软件架构。

本书适用的人群

本书源自软件架构师,也面向软件架构师。如果你渴望探索这些成功的案例研究,并期望了解更多关于决策和度量有效性的知识,无论你是在软件开发公司工作还是作为独立顾问,这本书都适合你阅读。

10位作者都是经验丰富的从业人员,他们分享建议和智慧,提出不同的观点和看法。当你从事不同的项目时,你可能会发现某些章节比其他章节与你的工作相关度更高。你也可以定期翻阅本书,或者用它来设定KPI,然后再回过头来教导和激励新的团队成员。

拥有合适的软件架构指标和工具可以更快地进行架构检查,成本也更低。这可以让你在软件项目生命周期的起始阶段就执行架构检查。它们还可以帮助你在每个冲刺(sprint)阶段评估软件架构,以确保架构不会慢慢变得难以维护。它们还可以协助你对比不同的软件架构,以选择最适合项目需求的架构。

排版约定

本书中使用以下排版约定:

斜体(Italic)

  表示新的术语、URL、电子邮件地址、文件名和文件扩展名。

等宽字体(Constant width)

  用于程序清单,以及段落中的程序元素,例如变量名、函数名、数据库、 数据类型、环境变量、语句以及关键字。

O’Reilly在线学习平台(O’Reilly Online Learning)

40多年来,O’Reilly Media致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。

我们拥有独一无二的专家和革新者组成的庞大网络,他们通过图书、文章、会议和我们的在线学习平台分享他们的知识和经验。O’Reilly的在线学习平台允许你按需访问现场培训课程、深入的学习路径、交互式编程环境,以及O’Reilly和200多家其他出版商提供的大量文本和视频资源。有关的更多信息,请访问https://oreilly.com

如何联系我们

对于本书,如果有任何意见或疑问,请按照以下地址联系本书出版商。

美国:

  O’Reilly Media,Inc.

  1005 Gravenstein Highway North

  Sebastopol,CA 95472

中国:

  北京市西城区西直门南大街2号成铭大厦C座807室(100035)

  奥莱利技术咨询(北京)有限公司

要询问技术问题或对本书提出建议,请发送电子邮件至errata@oreilly.com.cn

本书配套网站https://oreil.ly/software-architecture-metrics上列出了勘误表、示例以及其他信息。

关于书籍和课程的新闻和信息,请访问我们的网站https://oreilly.com

我们在Facebook上的地址:https://facebook.com/oreilly

我们在Twitter上的地址:https://twitter.com/oreillymedia

我们在YouTube上的地址:https://www.youtube.com/oreillymedia

致谢

如果没有O’Reilly编辑和Apiumhub的贡献,这本书是不可能完成的,是他们把我们所有人聚集在一起。我们还想对以下人员表示特别感谢:

· Apiumhub的首席营销官Ekaterina Novoseltseva,她与O’Reilly共同管理了本书的写作和出版过程。

· O’Reilly的高级策划编辑Melissa Duffield,她让我们与O’Reilly的合作经历顺利而愉快。

· O’Reilly的策划编辑Sarah Grey,她协助我们组织书稿内容,使其更易于阅读。

· O’Reilly制作团队: Katherine Tozer、Adam Lawrence、Steve Fenton、Gregory Hyman和Kristen Brown,他们编辑并发行了这本书。

Christian Ciceri

我要感谢Ekaterina Novoseltseva和Apiumhub(https://apiumhub.com)给我写这本书的机会,这一直是我的梦想。感谢全球软件架构峰会(https://gsas.io)让我认识了所有这些软件架构师,他们推动着我前进,并引发了有趣的讨论。感谢VYou App(https://www.vyou-app.com/en)让我能创新和实施新的软件架构指标。我还要感谢我的猫,它总是陪在我身边,在任何情况下都支持着我。

Dave Farley

感谢Apiumhub和O’Reilly的所有人,是他们将我和其他人组织起来,让出版这本书成为可能。

Neal Ford

感谢Ekaterina Novoseltseva和Apiumhub的其他人为实现这一目标所做的工作。感谢我的雇主Thoughtworks和所有同事,他们对技术世界的热情和投入总是让我感到惊讶。最后,感谢我的妻子Candy忍受了让我远离她和我们的小猫的写作工作。

Andrew Harmel-Law

感谢我的妻子和孩子们对我的包容,感谢我在Thoughtworks的同事们给我的启发,让我将方法整理为合乎逻辑的结论。

如果我没有机会在一个真正理解并信任我的组织中将这些观点付诸实践,那么我在本书中提出的观点可能只是不完整的理论。感谢在Open GI(https://opengi.co.uk,一家专门为英国和爱尔兰保险行业提供SaaS的公司,也是我文中的那个客户)和我一起工作的每一个人。特别感谢我的开发伙伴和共事者Pete Hunter,他可以立即明白我们正在做的事情,并坚定不移地支持它、坚持不懈地改进它(因为我们每一步都是这样合作的),他还教会了我很多关于如何让其发挥作用的知识。

最后,感谢Ekaterina Novoseltseva和Apiumhub邀请我参与本书的写作,并回答我的问题。

Michael Keeling

我衷心地感谢Anastas Stoyanovsky、Colin Dean、George Fairbanks、Joe Runde和Ricky Kotermanski,他们都帮助审阅了本书早期章节的草稿。此外,我还要感谢我所有的同事,无论是现在的还是以前的,很荣幸能和他们一起工作。像本书中这样的经验报告只能由敢于冒险、敢于尝试新想法的团队来撰写。永远不要停止寻找让自己变得比现在更棒的方法!

Marie,我的女王,谢谢你支持我完成这样的写作项目。致Owen,谢谢你。致Finn,干杯!

Carola Lilienthal

我要感谢我职业生涯中有幸与其共事过的所有伟大的科学家和计算机科学家。他们中的许多人是我在WPS(Workplace Solutions)公司的同事,以及我在会议上遇到的、在讲座和讨论中向他们学习过的人。我还要感谢我的家人,当我需要写一本书或一篇文章时,他们总是会鼓励和支持我。

João Rosa

如果没有妻子Kary的支持,我的任何项目都不可能实现。她和我们美丽的小宝贝是我生活的中心。谢谢他们!特别感谢Xebia在这段旅程中对我的支持。分享知识是我们的基因。我还要感谢我们的技术审稿人Ruth Malan、Anna Shipman、Steve Pereira和Nick Tune;感谢Apiumhub鼓励我挑战自己去撰写一章;感谢Fai Fung、Thijs Wesselink和Kenny Baas-Schwegler审阅所写章节草稿的早期版本。最后,致所有这里未能提到的各位:我的记性有点差,可能记不住所有人的名字,但他们以各种方式影响着我的职业生涯,对此我心存感激。

Alexander von Zitzewitz

我要感谢我的妻子Charmaine、我的儿子们,以及hello2morrow这个伟大的团队,他们一直支持着我,用智慧、优秀的建议和极大的耐心支持我的项目。如果没有他们的持续支持,我在这本书中的工作成果和生活中的其他成就都不可能实现。

Rene Weiss

这对我来说是一件非常特别的事情,因为这是我第一次为一本书做贡献。我在职业生涯中遇到过很多激励过我的人。我想在这里介绍其中的两位,因为他们对我对软件架构的实际看法产生了重大影响。这两位是来自embARC(德国)的Stefan Toth和Stefan Zörner,他们是伟大的软件架构师、讲师和教练。在和他们一起工作的过程中,我接触到了演进式架构的概念,这颗“种子”最终形成了本书我所负责的这一部分的内容。如果你有机会在会议上见到他们,或者拿到他们的一本书(目前只有德语版),建议大家接触一下。

最后,我要感谢我的女朋友兼搭档Anna。在我的职业生涯中,她一直支持着我的工作和想法,没有她,就不会有我今天的成就。谢谢她!

Eoin Woods

我要感谢我的家人一直以来对我所有耗时的专业项目的支持。我还要感谢Chris Cooper-Bland和Nick Rozanski,他们对我负责的这一章进行了广泛而深入的审阅,使我能够不断改进它。我们的技术审稿人和O’Reilly的优秀团队为这本书的质量做出了巨大贡献,感谢他们。最后,感谢我在Endava的同事,他们创造了一个大学般的工作环境,同时也不断鼓励我挑战自己,让我“尽我所能做到最好”。