本書深入探討了軟件設計中的核心問題:如何將複雜的軟件系統分解為可以相對獨立實現的模塊(例如類和方法),從而降低其複雜性並提高開發效率。本書首先介紹了軟件設計中的基本問題,即複雜性的本質。其次,討論了有關如何處理軟件設計過程的“哲學”問題,如通用設計的重要性、與《代碼整潔之道》中設計哲學的對比,以及如何將重要的東西和不重要的東西區分開等內容。最後,總結了在軟件設計過程中應遵循的一系列設計原則,以及一系列識別設計問題的警示信號。
本書適合軟件工程師、計算機科學專業的學生、教育者、對軟件設計和開發感興趣的自學者和技術管理者閱讀。通過應用本書中的思想,讀者可以最大限度地降低大型軟件系統的複雜性,從而更快地以更低的成本編寫軟件,並構建更易於維護和增強的系統。
約翰·奧斯特豪特(John Ousterhout),斯坦福大學計算機科學教授,美國國家工程院院士,曾任加州大學伯克利分校的計算機科學教授;獲得了包括ACM軟件系統獎、ACM Grace Murray Hopper獎、美國國家科學基金會總統青年研究者獎和加州大學伯克利分校傑出教學獎等多項榮譽;聚焦于與構建軟件系統的基礎設施相關的廣泛主題,包括分佈式系統、操作系統、存儲系統、開發框架和編程語言;在工業界有14年的經驗,創辦了Scriptics 和Electric Cloud兩家公司;Tcl腳本語言的創建者,並且以分佈式操作系統和存儲系統的相關工作而聞名。
茹炳晟,騰訊Tech Lead(技術經理),騰訊研究院特約研究員,騰訊集團技術委員會委員,中國計算機學會(CCF)TF研發效能SIG主席,“軟件研發效能度量規範”團體標準核心編寫專家,中國商業聯合會互聯網應用技術委員會智庫專家,中國通信標準化協會TC608雲計算標準和開源推進委員會雲上軟件工程工作組副組長,國內外各大技術峰會的聯席主席、出品人和Keynote演講嘉賓,公眾號“茹炳晟聊軟件研發”主理人。著有技術暢銷書《測試工程師全棧技術進階與實踐》和《現代軟件測試技術之美》等,譯有《現代軟件工程》和《DevOps 實踐指南(第2版)》等。
王海鵬,1994年畢業於華東師範大學,獲物理學理學學士學位和英國語言文學學士學位;是獨立咨詢顧問、培訓講師、譯者和軟件開發者;擁有30年的軟件開發經驗,專註于軟件架構和方法學研究,致力於提高軟件開發的品質與效率;翻譯了20余本軟件開發相關圖書,內容涵蓋敏捷方法學、需求工程、UML建模和測試等多個領域。