前言
軟件架構(gòu)指標(biāo)可用于度量軟件項(xiàng)目的可維護(hù)性和架構(gòu)質(zhì)量,而且能在研發(fā)流程的早期提供累積的架構(gòu)和技術(shù)債務(wù)的危險(xiǎn)警告。本書介紹了每個(gè)軟件架構(gòu)師都應(yīng)該知道的關(guān)鍵軟件架構(gòu)指標(biāo)。本書的10位作者都發(fā)表過(guò)軟件架構(gòu)方面的著名文章和書籍,他們定期參加國(guó)際活動(dòng),并舉辦實(shí)踐工作坊。
我們總是努力嘗試平衡理論和實(shí)踐。不過(guò)本書并非理論書籍,它關(guān)注的是實(shí)踐和落地,涉及的都是已經(jīng)嘗試過(guò)的行之有效的方法,囊括了寶貴的經(jīng)驗(yàn)和案例研究。我們不僅聚焦于如何提高架構(gòu)質(zhì)量,同時(shí)也關(guān)注在考慮自身情況和所涉及的權(quán)衡的前提下,如何將客觀指標(biāo)與業(yè)務(wù)成果聯(lián)系起來(lái)。
我們進(jìn)行了一項(xiàng)調(diào)查,發(fā)現(xiàn)人們對(duì)軟件架構(gòu)指標(biāo)的需求非常強(qiáng)烈,但可用的資源卻很少。我們希望本書能幫助你正確設(shè)置關(guān)鍵業(yè)績(jī)指標(biāo)(Key Performance Indicator,KPI),并能準(zhǔn)確而深刻地度量成果。
我們非常感謝全球軟件架構(gòu)峰會(huì),它讓我們重聚,并讓我們萌生了寫一本關(guān)于軟件架構(gòu)指標(biāo)的書的想法。這本書的所有章節(jié)和案例研究就像作者本身一樣有所不同:我們注重使用來(lái)自不同行業(yè)和挑戰(zhàn)的例子,以便每個(gè)讀者都能找到解決方案或靈感。
你會(huì)學(xué)到什么
讀完本書后,你會(huì)明白如何:
· 度量軟件架構(gòu)達(dá)到目標(biāo)的程度。
· 引導(dǎo)架構(gòu)實(shí)現(xiàn)高可測(cè)試性和可部署性。
· 為軟件架構(gòu)的工作安排優(yōu)先級(jí)。
· 從可觀測(cè)性中創(chuàng)造可預(yù)測(cè)性。
· 確定軟件項(xiàng)目的KPI。
· 構(gòu)建并自動(dòng)化指標(biāo)儀表板。
· 分析和度量項(xiàng)目或流程成功與否。
· 構(gòu)建目標(biāo)驅(qū)動(dòng)的軟件架構(gòu)。
本書適用的人群
本書源自軟件架構(gòu)師,也面向軟件架構(gòu)師。如果你渴望探索這些成功的案例研究,并期望了解更多關(guān)于決策和度量有效性的知識(shí),無(wú)論你是在軟件開(kāi)發(fā)公司工作還是作為獨(dú)立顧問(wèn),這本書都適合你閱讀。
10位作者都是經(jīng)驗(yàn)豐富的從業(yè)人員,他們分享建議和智慧,提出不同的觀點(diǎn)和看法。當(dāng)你從事不同的項(xiàng)目時(shí),你可能會(huì)發(fā)現(xiàn)某些章節(jié)比其他章節(jié)與你的工作相關(guān)度更高。你也可以定期翻閱本書,或者用它來(lái)設(shè)定KPI,然后再回過(guò)頭來(lái)教導(dǎo)和激勵(lì)新的團(tuán)隊(duì)成員。
擁有合適的軟件架構(gòu)指標(biāo)和工具可以更快地進(jìn)行架構(gòu)檢查,成本也更低。這可以讓你在軟件項(xiàng)目生命周期的起始階段就執(zhí)行架構(gòu)檢查。它們還可以幫助你在每個(gè)沖刺(sprint)階段評(píng)估軟件架構(gòu),以確保架構(gòu)不會(huì)慢慢變得難以維護(hù)。它們還可以協(xié)助你對(duì)比不同的軟件架構(gòu),以選擇最適合項(xiàng)目需求的架構(gòu)。
排版約定
本書中使用以下排版約定:
斜體(Italic)
表示新的術(shù)語(yǔ)、URL、電子郵件地址、文件名和文件擴(kuò)展名。
等寬字體(Constant width)
用于程序清單,以及段落中的程序元素,例如變量名、函數(shù)名、數(shù)據(jù)庫(kù)、 數(shù)據(jù)類型、環(huán)境變量、語(yǔ)句以及關(guān)鍵字。
O’Reilly在線學(xué)習(xí)平臺(tái)(O’Reilly Online Learning)
40多年來(lái),O’Reilly Media致力于提供技術(shù)和商業(yè)培訓(xùn)、知識(shí)和卓越見(jiàn)解,來(lái)幫助眾多公司取得成功。
我們擁有獨(dú)一無(wú)二的專家和革新者組成的龐大網(wǎng)絡(luò),他們通過(guò)圖書、文章、會(huì)議和我們的在線學(xué)習(xí)平臺(tái)分享他們的知識(shí)和經(jīng)驗(yàn)。O’Reilly的在線學(xué)習(xí)平臺(tái)允許你按需訪問(wèn)現(xiàn)場(chǎng)培訓(xùn)課程、深入的學(xué)習(xí)路徑、交互式編程環(huán)境,以及O’Reilly和200多家其他出版商提供的大量文本和視頻資源。有關(guān)的更多信息,請(qǐng)?jiān)L問(wèn)https://oreilly.com。
如何聯(lián)系我們
對(duì)于本書,如果有任何意見(jiàn)或疑問(wèn),請(qǐng)按照以下地址聯(lián)系本書出版商。
美國(guó):
O’Reilly Media,Inc.
1005 Gravenstein Highway North
Sebastopol,CA 95472
中國(guó):
北京市西城區(qū)西直門南大街2號(hào)成銘大廈C座807室(100035)
奧萊利技術(shù)咨詢(北京)有限公司
要詢問(wèn)技術(shù)問(wèn)題或?qū)Ρ緯岢鼋ㄗh,請(qǐng)發(fā)送電子郵件至errata@oreilly.com.cn。
本書配套網(wǎng)站https://oreil.ly/software-architecture-metrics上列出了勘誤表、示例以及其他信息。
關(guān)于書籍和課程的新聞和信息,請(qǐng)?jiān)L問(wèn)我們的網(wǎng)站https://oreilly.com。
我們?cè)贔acebook上的地址:https://facebook.com/oreilly
我們?cè)赥witter上的地址:https://twitter.com/oreillymedia
我們?cè)赮ouTube上的地址:https://www.youtube.com/oreillymedia
致謝
如果沒(méi)有O’Reilly編輯和Apiumhub的貢獻(xiàn),這本書是不可能完成的,是他們把我們所有人聚集在一起。我們還想對(duì)以下人員表示特別感謝:
· Apiumhub的首席營(yíng)銷官Ekaterina Novoseltseva,她與O’Reilly共同管理了本書的寫作和出版過(guò)程。
· O’Reilly的高級(jí)策劃編輯Melissa Duffield,她讓我們與O’Reilly的合作經(jīng)歷順利而愉快。
· O’Reilly的策劃編輯Sarah Grey,她協(xié)助我們組織書稿內(nèi)容,使其更易于閱讀。
· O’Reilly制作團(tuán)隊(duì): Katherine Tozer、Adam Lawrence、Steve Fenton、Gregory Hyman和Kristen Brown,他們編輯并發(fā)行了這本書。
Christian Ciceri
我要感謝Ekaterina Novoseltseva和Apiumhub(https://apiumhub.com)給我寫這本書的機(jī)會(huì),這一直是我的夢(mèng)想。感謝全球軟件架構(gòu)峰會(huì)(https://gsas.io)讓我認(rèn)識(shí)了所有這些軟件架構(gòu)師,他們推動(dòng)著我前進(jìn),并引發(fā)了有趣的討論。感謝VYou App(https://www.vyou-app.com/en)讓我能創(chuàng)新和實(shí)施新的軟件架構(gòu)指標(biāo)。我還要感謝我的貓,它總是陪在我身邊,在任何情況下都支持著我。
Dave Farley
感謝Apiumhub和O’Reilly的所有人,是他們將我和其他人組織起來(lái),讓出版這本書成為可能。
Neal Ford
感謝Ekaterina Novoseltseva和Apiumhub的其他人為實(shí)現(xiàn)這一目標(biāo)所做的工作。感謝我的雇主Thoughtworks和所有同事,他們對(duì)技術(shù)世界的熱情和投入總是讓我感到驚訝。最后,感謝我的妻子Candy忍受了讓我遠(yuǎn)離她和我們的小貓的寫作工作。
Andrew Harmel-Law
感謝我的妻子和孩子們對(duì)我的包容,感謝我在Thoughtworks的同事們給我的啟發(fā),讓我將方法整理為合乎邏輯的結(jié)論。
如果我沒(méi)有機(jī)會(huì)在一個(gè)真正理解并信任我的組織中將這些觀點(diǎn)付諸實(shí)踐,那么我在本書中提出的觀點(diǎn)可能只是不完整的理論。感謝在Open GI(https://opengi.co.uk,一家專門為英國(guó)和愛(ài)爾蘭保險(xiǎn)行業(yè)提供SaaS的公司,也是我文中的那個(gè)客戶)和我一起工作的每一個(gè)人。特別感謝我的開(kāi)發(fā)伙伴和共事者Pete Hunter,他可以立即明白我們正在做的事情,并堅(jiān)定不移地支持它、堅(jiān)持不懈地改進(jìn)它(因?yàn)槲覀兠恳徊蕉际沁@樣合作的),他還教會(huì)了我很多關(guān)于如何讓其發(fā)揮作用的知識(shí)。
最后,感謝Ekaterina Novoseltseva和Apiumhub邀請(qǐng)我參與本書的寫作,并回答我的問(wèn)題。
Michael Keeling
我衷心地感謝Anastas Stoyanovsky、Colin Dean、George Fairbanks、Joe Runde和Ricky Kotermanski,他們都幫助審閱了本書早期章節(jié)的草稿。此外,我還要感謝我所有的同事,無(wú)論是現(xiàn)在的還是以前的,很榮幸能和他們一起工作。像本書中這樣的經(jīng)驗(yàn)報(bào)告只能由敢于冒險(xiǎn)、敢于嘗試新想法的團(tuán)隊(duì)來(lái)撰寫。永遠(yuǎn)不要停止尋找讓自己變得比現(xiàn)在更棒的方法!
Marie,我的女王,謝謝你支持我完成這樣的寫作項(xiàng)目。致Owen,謝謝你。致Finn,干杯!
Carola Lilienthal
我要感謝我職業(yè)生涯中有幸與其共事過(guò)的所有偉大的科學(xué)家和計(jì)算機(jī)科學(xué)家。他們中的許多人是我在WPS(Workplace Solutions)公司的同事,以及我在會(huì)議上遇到的、在講座和討論中向他們學(xué)習(xí)過(guò)的人。我還要感謝我的家人,當(dāng)我需要寫一本書或一篇文章時(shí),他們總是會(huì)鼓勵(lì)和支持我。
Jo?o Rosa
如果沒(méi)有妻子Kary的支持,我的任何項(xiàng)目都不可能實(shí)現(xiàn)。她和我們美麗的小寶貝是我生活的中心。謝謝他們!特別感謝Xebia在這段旅程中對(duì)我的支持。分享知識(shí)是我們的基因。我還要感謝我們的技術(shù)審稿人Ruth Malan、Anna Shipman、Steve Pereira和Nick Tune;感謝Apiumhub鼓勵(lì)我挑戰(zhàn)自己去撰寫一章;感謝Fai Fung、Thijs Wesselink和Kenny Baas-Schwegler審閱所寫章節(jié)草稿的早期版本。最后,致所有這里未能提到的各位:我的記性有點(diǎn)差,可能記不住所有人的名字,但他們以各種方式影響著我的職業(yè)生涯,對(duì)此我心存感激。
Alexander von Zitzewitz
我要感謝我的妻子Charmaine、我的兒子們,以及hello2morrow這個(gè)偉大的團(tuán)隊(duì),他們一直支持著我,用智慧、優(yōu)秀的建議和極大的耐心支持我的項(xiàng)目。如果沒(méi)有他們的持續(xù)支持,我在這本書中的工作成果和生活中的其他成就都不可能實(shí)現(xiàn)。
Rene Weiss
這對(duì)我來(lái)說(shuō)是一件非常特別的事情,因?yàn)檫@是我第一次為一本書做貢獻(xiàn)。我在職業(yè)生涯中遇到過(guò)很多激勵(lì)過(guò)我的人。我想在這里介紹其中的兩位,因?yàn)樗麄儗?duì)我對(duì)軟件架構(gòu)的實(shí)際看法產(chǎn)生了重大影響。這兩位是來(lái)自embARC(德國(guó))的Stefan Toth和Stefan Zo?rner,他們是偉大的軟件架構(gòu)師、講師和教練。在和他們一起工作的過(guò)程中,我接觸到了演進(jìn)式架構(gòu)的概念,這顆“種子”最終形成了本書我所負(fù)責(zé)的這一部分的內(nèi)容。如果你有機(jī)會(huì)在會(huì)議上見(jiàn)到他們,或者拿到他們的一本書(目前只有德語(yǔ)版),建議大家接觸一下。
最后,我要感謝我的女朋友兼搭檔Anna。在我的職業(yè)生涯中,她一直支持著我的工作和想法,沒(méi)有她,就不會(huì)有我今天的成就。謝謝她!
Eoin Woods
我要感謝我的家人一直以來(lái)對(duì)我所有耗時(shí)的專業(yè)項(xiàng)目的支持。我還要感謝Chris Cooper-Bland和Nick Rozanski,他們對(duì)我負(fù)責(zé)的這一章進(jìn)行了廣泛而深入的審閱,使我能夠不斷改進(jìn)它。我們的技術(shù)審稿人和O’Reilly的優(yōu)秀團(tuán)隊(duì)為這本書的質(zhì)量做出了巨大貢獻(xiàn),感謝他們。最后,感謝我在Endava的同事,他們創(chuàng)造了一個(gè)大學(xué)般的工作環(huán)境,同時(shí)也不斷鼓勵(lì)我挑戰(zhàn)自己,讓我“盡我所能做到最好”。
- MacTalk 跨越邊界
- App草圖+流程圖+交互原型設(shè)計(jì)教程
- 移動(dòng)Web實(shí)現(xiàn)指南:面向移動(dòng)設(shè)備的網(wǎng)站優(yōu)化、開(kāi)發(fā)和設(shè)計(jì)
- 中國(guó)軟件工程師:工作、生活與觀念
- Unity 2017經(jīng)典游戲開(kāi)發(fā)教程:算法分析與實(shí)現(xiàn)
- 軟件開(kāi)發(fā)大講堂·從入門到精通-第一輯(套裝共5冊(cè))
- 分布式應(yīng)用系統(tǒng)架構(gòu)設(shè)計(jì)與實(shí)踐
- OpenGL ES 2.0游戲開(kāi)發(fā)(下卷)
- Intel Quartus Prime數(shù)字系統(tǒng)設(shè)計(jì)權(quán)威指南:從數(shù)字邏輯、Verilog HDL 到復(fù)雜數(shù)字系統(tǒng)的實(shí)現(xiàn)
- OpenGL ES 2.0游戲開(kāi)發(fā)(上卷)
- Unity游戲案例開(kāi)發(fā)大全
- 架構(gòu)啟示錄
- 指尖世界 移動(dòng)App界面設(shè)計(jì)之道
- Spring源碼深度解析
- 安卓Frida逆向與協(xié)議分析