敏捷軟件開發(珍藏版) Agile Software Development: Principles, Patterns, and Practices

Robert C. Martin 鄢倩 徐進 譯

立即出貨

  • 敏捷軟件開發(珍藏版)-preview-1
  • 敏捷軟件開發(珍藏版)-preview-2
  • 敏捷軟件開發(珍藏版)-preview-3
敏捷軟件開發(珍藏版)-preview-1

買這商品的人也買了...

相關主題

商品描述

《敏捷軟件開發(珍藏版)》作為敏捷軟件開發的里程碑之作,重點介紹了敏捷軟件開發的原則、模式和實踐。
全書共6部分30章4個附錄,以場景化方式闡述了什麽敏捷軟件開發的核心,強調了工程實踐是敏捷軟件開發的重要基石。
本書的寫作風格詼諧幽默,巧妙地通過通俗易懂和畫面感十足的的表述漫畫來幫助讀者理解可能枯燥晦澀的專業技術要點。
《敏捷軟件開發(珍藏版)》適合真正想要通過敏捷方式來提升軟件開發技能以及及時交付軟件價值的所有讀者閱讀和參考。

作者簡介

Robert C. Martin

業內人士尊稱的“鮑勃大叔”(Uncle Bob),是國際知名的軟件工程師和導師,一位有五十多年健康編碼經驗的程序員。
cleancoders.com聯合創始人和Uncle Bob諮詢公司創始人,主要提供軟件諮詢、技能培訓和視頻教學服務。
他在專業技術領域具有較深的造詣。
除了擔任C++ Report雜誌的總編輯,他還發表了大量有影響力的文章,受邀在許多國際性軟件大會上發表演講。
他是SOLID五大原則的奠基人,是《敏捷宣言》聯合簽署人並擔任過敏捷聯盟第一屆主席。
他擅長的主題有軟件匠藝、敏捷軟件開發和測試驅動開發等。
馬丁是個終生學習者,52年出生的他,還在學習飛行駕駛員。

 

 

譯者簡介

鄢倩

ThoughtWorks中國區區塊鏈事業部的技術負責人,《架構整潔之道》技術審校者。
作為活躍在技術一線的技術顧問,他一直在為多家通信和金融企業提供基於敏捷精益原則的轉型服務,
在雲服務系統中指導和實施DDD、持續集成和持續交付等技術實踐。
在公司內部,還以技術負責人的身份帶領團隊交付軟件、攻關技術難點以及培養團隊工程師文化。
鄢倩致力於幫助企業接入區塊鏈生態和引領商業變革,他的主要興趣領域是區塊鏈、領域驅動設計和微服務架構等方向。

 

 

徐進

ThoughtWorks軟件開發工程師。
在汽車和電商領域有豐富的軟件開發經驗。
對敏捷開發流程和相關敏捷實踐有深入的理解,對面向對象編程範式和軟件設計模式有深入的研究與實踐。
徐進的主要興趣點在於基礎設施即代碼、微服務與雲原生技術領域的演進和發展。

目錄大綱

簡明目錄
第I 部分 敏捷開發
第1 章 敏捷實踐 003
第2 章 極限編程實踐 011
第3 章 計劃 023
第4 章 測試 029
第5 章 重構 039
第6 章 一次編程活動 055
第II 部分 敏捷設計
第7 章 什麽是敏捷設計 109
第8 章 單一職責原則(SRP) 121
第9 章 開放- 關閉原則(OCP) 127
第10 章 里氏替換原則(LSP) 141
第11 章 依賴倒置原則(DIP) 161
第12 章 接口隔離原則(ISP) 171
第III 部分 薪水支付系統
第13 章 命令模式和主動對象模式 191
第14 章 模板方法模式和策略模式:繼承和委托 203
第15 章 外觀模式和中介者模式 219
第16 章 單例模式和單狀態模式 225
第17 章 空對象模式 239
第18 章 案例學習:薪水支付系統(一) 243
第19 章 案例學習:薪水支付系統(二) 257
第Ⅳ部分 打包薪水支付系統
第20 章 包的設計原則 317
第21 章 工廠模式 339
第22 章 薪水支付系統(三) 347
第Ⅴ部分 氣象站案例
第23 章 組合模式 369
第24 章 觀察者模式:回歸為模式 373
第25 章 抽象服務器,適配器和橋接模式 397
第26 章 代理模式和 STAIRWAY TO HEAVEN 模式:管理第三方API 409
第27 章 案例學習:氣象站 443
第Ⅵ部分 ETS 案例
第28 章 訪問者模式 483
第29 章 狀態模式 525
第30 章 ETS 框架 554
附錄
附錄A UML 表示法(一):CGI 示例 584
附錄B UML 表示法(二):統計多路復用器 611
附錄C 兩家公司的諷刺故事 633
附錄D 源碼即設計 649


第I 部分 敏捷開發
第1 章 敏捷實踐 003
敏捷聯盟 004
敏捷宣言 004
敏捷軟件開發宣言 004
個體交互優先於過程和工具 005
可以工作的軟件優先於面面俱到的文檔 005
客戶合作優先於合同談判 006
響應變化優先於遵循計劃 007
原則 007
小結 010
參考文獻 010

第2 章 極限編程實踐 011
極限編程實踐 011
客戶團隊成員 012
用戶故事 012
短交付周期 013
驗收測試 014
結對編程 014
測試驅動開發 015
集體所有權 015
持續集成 015
可持續的開發速度 016
開放的工作空間 016
規劃游戲 017
簡單設計 017
重構 018
隱喻 019
小結 020
參考文獻 020
詳細目錄
目 錄XXIII

第3 章 計劃 023
初探 024
探究、分解和速度 024
發布計劃 025
迭代計劃 025
任務計劃 026
迭代中點 027
迭代 027
小結 027
參考文獻 028

第4 章 測試 029
測試驅動開發(TDD) 029
測試先行設計的示例 030
測試隔離 032
意外獲得的解耦 034
驗收測試 034
驗收測試的示例 035
意外獲得的架構 037
小結 037
參考文獻 038

第5 章 重構 039
素數生成器:一個簡單的重構示例 040
最後再讀一遍 049
小結 053
參考文獻 054

第6 章 一次編程活動 055
保齡球比賽 056
小結 104

第II 部分 敏捷設計
第7 章 什麽是敏捷設計 109
軟件出了什麽錯 110
設計的臭味—腐壞軟件的氣味 110
是什麽誘發了軟件的腐壞 113
敏捷團隊不允許軟件腐壞 113
Copy 程序 114
敏捷開發人員如何知道要做什麽 119
保持盡可能好的設計 119
小結 120
參考文獻 120

第8 章 單一職責原則(SRP) 121
單一職責原則(SRP) 122
什麽是職責 123
分離耦合的職責 124
持久化 125
小結 125
參考文獻 126

第9 章 開放- 關閉原則(OCP) 127
開放- 關閉原則(OCP) 128
描述 128
關鍵是抽象 128
Shape 程序 130
違背OCP 130
設計糟糕 133
遵循 OCP 133
是的,前面是在逗你玩兒呢 134
預測變化和“自然的”結構 135
放置“鉤子” 135
吃一塹,長一智 136
刺激變化 136
使用抽象獲得顯式封閉性 136
使用“數據驅動”的方法獲取封閉性 138
小結 140
參考文獻 140

第10 章 里氏替換原則(LSP) 141
里氏替換原則(LSP) 141
一個違背 LSP 的簡單例子 142
正方形和矩形,一個更不容易察覺的違背OCP 的例子 143
真正的問題 147
有效性並非本質屬性 148
IS-A 是關於行為的 148
基於契約的設計 149
在單元測試中制定契約 150
一個實際的例子 150
動機 150
問題 152
不符合 LSP 的解決方案 153
符合 LSP 的解決方案 154
用提取公共部分的重構手法代替繼承 155
啟發式規則和習慣用法 158
派生類中的退化方法 158
從派生類中拋出異常 159
小結 159
參考文獻 159

第11 章 依賴倒置原則(DIP) 161
依賴倒置原則(DIP) 161
層次化 162
倒置的接口所有權 163
依賴於抽象 164
一個簡單的例子 165
找出潛在的抽象 166
暖爐示例 167
動態多態性和靜態多態性 169
小結 170
參考文獻 170

第12 章 接口隔離原則(ISP) 171
接口污染 171
分離客戶端就是分離接口 173
客戶端接口施加的反作用力 173
ISP:接口隔離原則 174
類接口和對象接口 174
通過委托來隔離 175
使用多重繼承隔離接口 176
示例:ATM 的用戶界面的例子 177
多參數形式(Polyad)和單參數形式(Monad) 183
對客戶端進行分組 183
改變接口 184
小結 184
參考文獻 184

第III 部分 薪水支付系統
第13 章 命令模式和主動對象模式 191
第14 章 模板方法模式和策略模式:繼承和委托 203
第15 章 外觀模式和中介者模式 219
第16 章 單例模式和單狀態模式 225
第17 章 空對象模式 239
第18 章 案例學習:薪水支付系統(一) 243
第19 章 案例學習:薪水支付系統(二) 257
第Ⅳ部分 打包薪水支付系統
第20 章 包的設計原則 317
第21 章 工廠模式 339
第22 章 薪水支付系統(三) 347
第Ⅴ部分 氣象站案例
第23 章 組合模式 369
第24 章 觀察者模式:回歸為模式 373
第25 章 抽象服務器,適配器和橋接模式 397
第26 章 代理模式和 STAIRWAY TO HEAVEN 模式:管理第三方API 409
第27 章 案例學習:氣象站 443
第Ⅵ部分 ETS 案例
第28 章 訪問者模式 483
第29 章 狀態模式 525
第30 章 ETS 框架 554
附錄
附錄A UML 表示法(一):CGI 示例 584
附錄B UML 表示法(二):統計多路復用器 611
附錄C 兩家公司的諷刺故事 633
附錄D 源碼即設計 649