注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)Google軟件工程

Google軟件工程

Google軟件工程

定 價(jià):¥148.00

作 者: [美]提圖斯·溫特斯,[美]湯姆·曼什雷克,[美]海勒姆·賴特
出版社: 中國(guó)電力出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

購(gòu)買(mǎi)這本書(shū)可以去


ISBN: 9787519864705 出版時(shí)間: 2022-03-01 包裝: 平裝-膠訂
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 596 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  你將學(xué)習(xí)到軟件組織在設(shè)計(jì)、架構(gòu)、編寫(xiě)和維護(hù)代碼時(shí)應(yīng)牢記的三個(gè)基本原則:時(shí)間如何影響軟件的可持續(xù)性,以及如何使代碼隨著時(shí)間的推移而具有韌性。模如何影響工程組織內(nèi)軟件實(shí)踐的可行性。在評(píng)估設(shè)計(jì)和開(kāi)發(fā)決策時(shí),一位典型的工程師需要做出哪些權(quán)衡。

作者簡(jiǎn)介

  作者介紹 Titus Winters,谷歌高級(jí)軟件工程師,他是谷歌C代碼庫(kù)的領(lǐng)導(dǎo)者:2億5000萬(wàn)行代碼,每月成千上萬(wàn)名不同的工程師在這些代碼上工作。Tom Manshreck,在谷歌軟件工程部擔(dān)任技術(shù)作家。他是C Library Team的成員,負(fù)責(zé)開(kāi)發(fā)文檔,開(kāi)展培訓(xùn)課程以及為Abseil,谷歌的開(kāi)源C代碼,編寫(xiě)文檔。Hyrum Wright是谷歌的一名軟件工程師,他領(lǐng)導(dǎo)著谷歌自動(dòng)化變更工具團(tuán)隊(duì)。Hyrum對(duì)谷歌代碼庫(kù)的編輯比公司歷史上任何其他工程師都要多。 譯者介紹 陳軍,江湖稱號(hào)“軍少”,深圳敏捷社區(qū)發(fā)起人,騰訊T12工程效能專家,現(xiàn)主要從事研發(fā)效能提升工作,多年軟件工程方法和技術(shù)實(shí)踐經(jīng)驗(yàn)。周代兵,華為軟件工程專家,有多年輔導(dǎo)團(tuán)隊(duì)?wèi)?yīng)用軟件工程方法和技術(shù)提升研發(fā)能力實(shí)踐經(jīng)驗(yàn)。邱棟,東南大學(xué)軟件工程博士,華為軟件工程技術(shù)專家,有多年軟件工程技術(shù)研究和實(shí)踐經(jīng)驗(yàn),研究方向包括軟件架構(gòu)分析與評(píng)估,智能化軟件工程等。

圖書(shū)目錄

目錄
序 1
前言 3
部分 理論
第1 章 什么是軟件工程 13
時(shí)間與變化 15
海勒姆定律18
案例:哈希排序 18
為什么目標(biāo)不是“沒(méi)有變化”呢 20
規(guī)模與效率 21
阻礙規(guī)模化的政策 22
促進(jìn)規(guī)?;恼?24
案例:編譯器升級(jí) 24
左移思想 26
權(quán)衡與成本 28
案例:白板筆 29
決策投入 30
案例:分布式構(gòu)建 30
案例:時(shí)間與規(guī)模的博弈 32
數(shù)據(jù)驅(qū)動(dòng)的決策 32
軟件工程VS 編程 33
小結(jié) 34
本章要點(diǎn) 34
第二部分 文化
第2 章 如何更好地參與團(tuán)隊(duì)合作 37
隱藏代碼 37
天才神話 38
隱藏有害 40
及早檢測(cè) 41
巴士系數(shù) 41
小步快跑 42
拒絕隱藏 44
一切為了團(tuán)隊(duì) 44
社交的三大支柱 45
三大支柱的重要性 46
謙虛、尊重和信任 46
無(wú)指責(zé)的回顧文化 50
谷歌范兒(Googley) 52
小結(jié) 53
本章要點(diǎn) 53
第3 章 知識(shí)共享 55
學(xué)習(xí)的挑戰(zhàn) 55
知識(shí)共享的哲學(xué) 57
設(shè)定基調(diào):心理安全 58
導(dǎo)師制 58
大型群體的心理安全 59
不斷充實(shí)知識(shí) 60
提問(wèn) 60
理解上下文61
擴(kuò)大提問(wèn)渠道:向社區(qū)提問(wèn) 62
群聊 62
郵件列表 63
YAQS:?jiǎn)柎鹌脚_(tái) 63
分享你的知識(shí):你總有可以教別人的地方 64
Office Hours 64
技術(shù)講座與課程 64
文檔 65
代碼 67
組織知識(shí)發(fā)展 68
培養(yǎng)知識(shí)分享的文化 68
建立規(guī)范的信息源 70
讓信息流動(dòng)73
可讀性:通過(guò)代碼評(píng)審規(guī)范化指導(dǎo) 74
什么是可讀性流程 74
為什么需要可讀性流程 75
小結(jié) 78
本章要點(diǎn) 78
第4 章 平等工程 79
人類的偏見(jiàn) 80
理解多樣性的必要性 82
建立多元文化能力 82
使多樣性具有可操作性 84
拒絕單一的方式 85
挑戰(zhàn)既定流程 86
價(jià)值觀與成果 87
保持好奇心,向前推進(jìn) 88
小結(jié) 88
本章要點(diǎn) 89
第5 章 團(tuán)隊(duì)領(lǐng)導(dǎo)的藝術(shù) 91
經(jīng)理和技術(shù)主管(或兩者兼任) 91
工程經(jīng)理 92
技術(shù)主管 92
技術(shù)主管經(jīng)理 92
從個(gè)人貢獻(xiàn)者到領(lǐng)導(dǎo)者 93
需要擔(dān)心的是……嗯,一切 94
仆人式領(lǐng)導(dǎo)95
工程經(jīng)理 96
“經(jīng)理”是一個(gè)令人厭惡的詞 96
如今的工程經(jīng)理 96
反模式 98
反模式:雇用平庸的人 98
反模式:忽視低績(jī)效員工 99
反模式:忽視“人”的問(wèn)題 100
反模式:做老好人 101
反模式:打破招聘門(mén)檻 102
反模式:像對(duì)待孩子一樣對(duì)待你的團(tuán)隊(duì) 102
積極的模式 103
拋棄“自我”意識(shí) 103
成為一名禪師 104
成為催化劑106
移除障礙 106
成為老師和導(dǎo)師 107
設(shè)定清晰的目標(biāo) 107
坦誠(chéng) 108
追蹤幸福感109
出乎意料的問(wèn)題 110
其他提示和技巧 111
對(duì)待人像植物一樣 113
內(nèi)在激勵(lì)和外在激勵(lì) 114
小結(jié) 115
本章要點(diǎn) 115
第6 章 大規(guī)模團(tuán)隊(duì)領(lǐng)導(dǎo)力 117
總是在做決策 118
飛機(jī)的故事 118
識(shí)別盲點(diǎn) 119
識(shí)別關(guān)鍵的權(quán)衡 120
決策,然后迭代 120
總是不在場(chǎng) 122
你的使命:建立一個(gè)“自驅(qū)”的團(tuán)隊(duì)123
劃分問(wèn)題空間 123
總是在擴(kuò)展 126
成功的循環(huán)127
重要VS 緊急 128
學(xué)會(huì)放棄 130
保護(hù)你的精力 131
小結(jié) 133
本章要點(diǎn) 133
第7 章 度量工程生產(chǎn)力 135
為什么要度量工程生產(chǎn)力 135
鑒別:它值得度量嗎 137
根據(jù)目標(biāo)和信號(hào)來(lái)選擇有意義的指標(biāo) 141
目標(biāo) 142
信號(hào) 144
指標(biāo) 145
使用數(shù)據(jù)驗(yàn)證指標(biāo) 145
采取行動(dòng)并跟蹤結(jié)果 150
小結(jié) 150
本章要點(diǎn) 150
第三部分 流程
第8 章 風(fēng)格指南與規(guī)則 155
為什么要有規(guī)則 156
創(chuàng)建規(guī)則 157
指導(dǎo)原則 157
風(fēng)格指南 165
修改規(guī)則 168
流程 169
風(fēng)格仲裁者170
例外情況 170
指南 171
應(yīng)用規(guī)則 173
錯(cuò)誤檢查工具 174
代碼格式化工具 175
小結(jié) 177
本章要點(diǎn) 177
第9 章 代碼評(píng)審 179
代碼評(píng)審流程 180
谷歌如何進(jìn)行代碼評(píng)審 181
代碼評(píng)審的好處 184
代碼正確性185
代碼理解 187
代碼一致性187
心理和文化方面的好處 188
知識(shí)共享 189
代碼評(píng)審實(shí)踐 190
禮貌而專業(yè)190
小的變更 191
清晰的變更描述 193
評(píng)審者數(shù)量少化 193
盡可能的自動(dòng)化 194
代碼評(píng)審類型 194
綠地代碼評(píng)審 194
行為變更、改進(jìn)和優(yōu)化 195
缺陷修復(fù)和回滾 195
重構(gòu)和大規(guī)模變更 196
小結(jié) 197
本章要點(diǎn) 197
第10 章 文檔 199
什么是文檔 200
為什么需要文檔 200
像代碼一樣對(duì)待文檔 202
了解文檔的讀者 204
讀者的類型205
文檔類型 206
參考文檔 207
設(shè)計(jì)文檔 210
新手教程 210
概念文檔 212
著陸頁(yè)面 213
文檔評(píng)審 214
文檔的哲學(xué) 216
WHO,WHAT,WHEN,WHERE 和WHY 216
開(kāi)頭,中間和結(jié)尾 217
優(yōu)秀文檔的要素 217
丟棄文檔 218
什么時(shí)候需要技術(shù)文檔工程師 219
小結(jié) 219
本章要點(diǎn) 220
第11 章 測(cè)試概述 221
為什么要寫(xiě)測(cè)試 222
“Google Web Server”的故事 223
當(dāng)今開(kāi)發(fā)速度下的測(cè)試 224
編寫(xiě),運(yùn)行,響應(yīng) 224
測(cè)試代碼的好處 227
設(shè)計(jì)測(cè)試套件 228
測(cè)試粒度 229
測(cè)試范圍 233
碧昂絲規(guī)則235
代碼覆蓋率236
谷歌規(guī)模下的測(cè)試 237
大型測(cè)試套件的陷阱 238
谷歌測(cè)試的歷史 239
入職培訓(xùn)課240
測(cè)試認(rèn)證 241
“馬桶測(cè)試” 241
如今的測(cè)試文化 242
自動(dòng)化測(cè)試的局限性 243
小結(jié) 244
本章要點(diǎn) 244
第12 章 單元測(cè)試 245
可維護(hù)性的重要性 246
防止脆弱的測(cè)試 247
努力做到不更改測(cè)試 247
通過(guò)公共API 進(jìn)行測(cè)試 248
測(cè)試狀態(tài),而不是交互 252
編寫(xiě)清晰的測(cè)試 253
使測(cè)試完整簡(jiǎn)潔 254
測(cè)試行為,而不是方法 255
不要把邏輯放進(jìn)測(cè)試 260
編寫(xiě)清晰的失敗信息 261
測(cè)試與代碼共享:DAMP,而不是DRY 263
共享值 265
共享設(shè)置 267
共享helper 和驗(yàn)證 269
定義測(cè)試基礎(chǔ)設(shè)施 270
小結(jié) 270
本章要點(diǎn) 270
第13 章 測(cè)試替身 273
測(cè)試替身對(duì)軟件開(kāi)發(fā)的影響 274
谷歌的測(cè)試替身 274
基本概念 275
測(cè)試替身的示例 275
縫(Seams) 276
模擬(Mocking)框架 277
使用測(cè)試替身的技術(shù) 279
偽造(Faking) 279
打樁(Stubbing) 279
交互測(cè)試 280
實(shí)際實(shí)現(xiàn) 281
實(shí)際實(shí)現(xiàn)比隔離更好 281
如何決定何時(shí)使用實(shí)際實(shí)現(xiàn) 283
偽造(Faking) 285
為什么偽實(shí)現(xiàn)(Fakes)如此重要286
什么時(shí)候?qū)憘螌?shí)現(xiàn) 286
偽實(shí)現(xiàn)的保真度 287
偽實(shí)現(xiàn)應(yīng)該被測(cè)試 288
如果沒(méi)有偽實(shí)現(xiàn)怎么辦 288
打樁 289
過(guò)度使用打樁的危險(xiǎn)性 289
何時(shí)使用打樁合適 291
交互測(cè)試 292
狀態(tài)測(cè)試優(yōu)于交互測(cè)試 292
何時(shí)使用交互測(cè)試合適 293
交互測(cè)試的實(shí)踐 294
小結(jié) 296
本章要點(diǎn) 296
第14 章 較大型的測(cè)試 299
什么是較大型的測(cè)試 299
保真度 300
單元測(cè)試中的常見(jiàn)問(wèn)題 301
為什么不要有較大型的測(cè)試 303
谷歌的較大型的測(cè)試 304
較大型的測(cè)試和時(shí)間 305
谷歌規(guī)模下的較大型的測(cè)試 306
大型測(cè)試的結(jié)構(gòu) 308
被測(cè)系統(tǒng)(SUT) 309
測(cè)試數(shù)據(jù) 314
驗(yàn)證 315
較大型的測(cè)試的類型 316
一個(gè)或多個(gè)交互二進(jìn)制文件的功能測(cè)試 316
瀏覽器和設(shè)備測(cè)試 317
性能、負(fù)載和壓力測(cè)試 317
部署配置測(cè)試 318
探索性測(cè)試318
A/B 差異回歸測(cè)試 319
用戶驗(yàn)收測(cè)試(UAT) 321
探針和金絲雀分析 321
災(zāi)難恢復(fù)與混沌工程 322
用戶評(píng)估 324
大型測(cè)試和開(kāi)發(fā)者工作流 325
編寫(xiě)大型測(cè)試 325
運(yùn)行大型測(cè)試 326
大型測(cè)試的所有權(quán) 329
小結(jié) 330
本章要點(diǎn) 330
第15 章 棄用 331
為什么棄用 332
為什么棄用很難 333
將棄用融入設(shè)計(jì) 335
棄用的類型 336
建議性棄用336
強(qiáng)制性棄用337
棄用警告 338
棄用流程的管理 339
流程負(fù)責(zé)人340
里程碑 340
棄用的工具341
小結(jié) 342
本章要點(diǎn) 343
第四部分 工具
第16 章 版本控制與分支管理 347
什么是版本控制 348
為什么版本控制很重要 349
集中式版本控制系統(tǒng)VS 分布式版本控制系統(tǒng) 351
真實(shí)來(lái)源 354
版本控制VS 依賴管理 356
分支管理 356
分支等同于在制品 357
開(kāi)發(fā)分支 358
發(fā)布分支 359
谷歌的版本控制 360
單一版本 361
場(chǎng)景:多個(gè)可用版本 362
“單一版本”規(guī)則 363
(幾乎)沒(méi)有長(zhǎng)周期的分支 363
發(fā)布分支呢365
單一代碼倉(cāng)(Monorepos) 365
版本控制的未來(lái) 367
小結(jié) 369
本章要點(diǎn) 370
第17 章 代碼搜索 371
Code Search 的用戶界面 372
如何使用Code Search 373
在哪里 373
做什么 374
如何用 374
為什么 375
誰(shuí)以及何時(shí)375
為什么需要一個(gè)單獨(dú)的Web 工具 375
規(guī)模 375
無(wú)需設(shè)置即可瀏覽全局代碼 376
專業(yè)化 377
與其他開(kāi)發(fā)工具集成 377
開(kāi)放API 379
規(guī)模對(duì)設(shè)計(jì)的影響 379
搜索查詢延遲 380
索引延遲 381
谷歌的實(shí)現(xiàn) 382
搜索索引 382
排序 383
權(quán)衡 387
完整性:代碼庫(kù)的Head 387
完整性:所有結(jié)果VS 相關(guān)的結(jié)果 387
完整性:Head VS 分支 VS 所有歷史 VS 工作空間 388
表達(dá)性:Token VS 子串 VS 正則表達(dá)式 389
小結(jié) 390
本章要點(diǎn) 391
第18 章 構(gòu)建工具與構(gòu)建哲學(xué) 393
構(gòu)建系統(tǒng)的目的 393
沒(méi)有構(gòu)建系統(tǒng)會(huì)發(fā)生什么 395
但是我只需要一個(gè)編譯器 395
用shell 腳本來(lái)拯救 396
現(xiàn)代構(gòu)建系統(tǒng) 397
一切都是為了依賴 397
基于任務(wù)的構(gòu)建系統(tǒng) 398
基于制品的構(gòu)建系統(tǒng) 402
分布式構(gòu)建408
時(shí)間,規(guī)模,權(quán)衡 412
處理模塊和依賴 413
使用細(xì)粒度依賴與1:1:1 規(guī)則 413
小化模塊可見(jiàn)性 414
管理依賴 414
小結(jié) 419
本章要點(diǎn) 420
第19 章 Critique:谷歌的代碼評(píng)審工具 421
代碼評(píng)審工具的原則 421
代碼評(píng)審流程 423
通知 424
步:創(chuàng)建一個(gè)變更 425
差異比較 425
分析結(jié)果 426
緊密的工具集成 428
第二步:請(qǐng)求評(píng)審 429
第三步和第四步:理解和評(píng)論變更 430
評(píng)論 430
了解變更狀態(tài) 432
第五步:批準(zhǔn)變更(評(píng)價(jià)變更) 434
第六步:提交變更 435
提交后:跟蹤歷史 436
小結(jié) 437
本章要點(diǎn) 438
第20 章 靜態(tài)分析 439
有效靜態(tài)分析的特點(diǎn) 440
可擴(kuò)展性 440
易用性 440
讓靜態(tài)分析發(fā)揮作用的關(guān)鍵經(jīng)驗(yàn) 441
關(guān)注開(kāi)發(fā)者的體驗(yàn) 441
讓靜態(tài)分析成為核心開(kāi)發(fā)者工作流的一部分 442
賦予用戶貢獻(xiàn)的權(quán)力 442
Tricorder: 谷歌的靜態(tài)分析平臺(tái) 443
集成的工具444
集成反饋渠道 445
建議的修復(fù)446
按項(xiàng)目定制447
預(yù)提交 448
編譯器集成448
編輯和瀏覽代碼時(shí)的分析 449
小結(jié) 450
本章要點(diǎn) 450
第21 章 依賴管理 451
為什么依賴管理這么難 453
沖突的需求和菱形依賴 453
引入依賴 455
兼容性承諾455
引入時(shí)的注意事項(xiàng) 457
谷歌如何處理引入的依賴 459
從理論上講,依賴管理 460
沒(méi)有變化(又名靜態(tài)依賴模型) 461
語(yǔ)義化版本號(hào) 462
綁定分發(fā)模式 463
Live at Head 464
SemVer 的局限性465
SemVer 可能過(guò)度約束 466
SemVer 可能過(guò)度承諾 467
動(dòng)機(jī) 468
小版本選擇 469
那么,SemVer 有效嗎 470
資源無(wú)限的依賴管理 471
導(dǎo)出依賴 473
小結(jié) 477
本章要點(diǎn) 477
第22 章 大規(guī)模變更 479
什么是大規(guī)模變更 480
誰(shuí)來(lái)處理LSC 481
原子變更的障礙 483
技術(shù)限制 483
合并沖突 483
“沒(méi)有鬧鬼的墓地” 484
異構(gòu)性 484
測(cè)試 485
代碼評(píng)審 487
LSC 的基礎(chǔ)設(shè)施 489
政策與文化489
代碼庫(kù)分析490
變更管理 491
測(cè)試 491
語(yǔ)言支持 491
LSC 流程 493
授權(quán) 493
變更創(chuàng)建 494
切片與提交494
清理 498
小結(jié) 498
本章要點(diǎn) 498
第23 章 持續(xù)集成 499
CI 的概念 501
快速反饋循環(huán) 501
自動(dòng)化 503
持續(xù)測(cè)試 505
CI 的挑戰(zhàn) 511
封閉測(cè)試 512
谷歌的CI 515
CI 案例研究:Google Takeout 518
但是我無(wú)力做CI 524
小結(jié) 525
本章要點(diǎn) 525
第24 章 持續(xù)交付 527
持續(xù)交付在谷歌的習(xí)語(yǔ) 528
速度是一項(xiàng)團(tuán)隊(duì)運(yùn)動(dòng):如何將部署分解為可管理的單元 529
隔離評(píng)估變更:特性開(kāi)關(guān) 530
力求敏捷:建立發(fā)布火車(chē) 531
沒(méi)有一個(gè)二進(jìn)制是完美的 531
趕上你的發(fā)布期限 532
質(zhì)量與聚焦用戶:只發(fā)布有用的功能 533
左移:更早地做出數(shù)據(jù)驅(qū)動(dòng)的決策 534
改變團(tuán)隊(duì)文化:建立發(fā)布規(guī)則 535
小結(jié) 536
本章要點(diǎn) 537
第25 章 計(jì)算即服務(wù) 539
馴服計(jì)算環(huán)境 540
將瑣事自動(dòng)化 540
容器化與多租戶 542
總結(jié) 545
為托管計(jì)算編寫(xiě)軟件 545
為失效設(shè)計(jì)架構(gòu) 545
批處理VS 服務(wù) 547
管理狀態(tài) 549
連接到服務(wù)550
一次性代碼551
CaaS 隨時(shí)間和規(guī)模的演化 552
抽象容器 552
一個(gè)服務(wù)統(tǒng)御余眾 555
提交的配置557
選擇計(jì)算服務(wù) 558
集中化與定制化 559
抽象層次:Serverless 561
公有云VS 私有云 565
小結(jié) 566
本章要點(diǎn) 567
后記 569

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)