關(guān)于我們
書(shū)單推薦
新書(shū)推薦
|
編程卓越之道(卷3):軟件工程化 讀者對(duì)象:適合所以即將要學(xué)編程語(yǔ)言及正在學(xué)習(xí)代碼的朋友,通過(guò)閱讀本書(shū)你可以獲取到卓越的編程素養(yǎng),
本書(shū)深入介紹了從開(kāi)發(fā)方法、生產(chǎn)力到面向?qū)ο蟮脑O(shè)計(jì)需求和系統(tǒng)文檔的方方面面。通過(guò)本書(shū),你將學(xué)習(xí)到:為什么遵循軟件匠藝模型可以讓你做到最好;如何利用可追溯性來(lái)加強(qiáng)文檔的一致性;如何通過(guò)用例分析來(lái)創(chuàng)建自己的UML需求;如何利用IEEE文檔標(biāo)準(zhǔn)開(kāi)發(fā)出更好的軟件。通過(guò)對(duì)高質(zhì)量軟件開(kāi)發(fā)中技能、態(tài)度和道德方面的深入講解,本書(shū)揭示了如何將工程原理應(yīng)用于編程的正確方法。在這個(gè)過(guò)程中,Hyde不僅會(huì)教給你規(guī)則,還會(huì)告訴你什么時(shí)候該打破規(guī)則。他不僅會(huì)啟發(fā)你認(rèn)識(shí)什么是最佳實(shí)踐,同時(shí)還會(huì)讓你發(fā)現(xiàn)適合自己的最佳實(shí)踐。本書(shū)中包含了大量的資源和示例,它是你編寫(xiě)代碼的首選指南,將讓你從同行中脫穎而出。
Randall Hyde是The Art of Assembly Language(《匯編語(yǔ)言的編程藝術(shù)》)和Write Great Code(《編程卓越之道》)第1~3卷(均由No Starch Press出版),以及Using 6502 Assembly Language和P-Source(由Datamost出版)的作者。他也是Microsoft Macro Assembler 6.0 Bible(由Waite Group出版)一書(shū)的合著者。在過(guò)去的40年里,Hyde一直從事嵌入式軟件/硬件工程師的工作,為核反應(yīng)堆、交通控制系統(tǒng)和其他電子設(shè)備開(kāi)發(fā)相關(guān)指令集。他還在加州理工大學(xué)波莫納分校和加州大學(xué)河濱分校教授計(jì)算機(jī)科學(xué)課程。
張若飛,曾任多家互聯(lián)網(wǎng)金融公司CTO,在宜人貸、雅虎北研、金山云等知名公司擔(dān)任架構(gòu)師。十余年互聯(lián)網(wǎng)研發(fā)及技術(shù)管理經(jīng)驗(yàn),對(duì)搭建海量數(shù)據(jù)、大型分布式系統(tǒng)有豐富經(jīng)驗(yàn)。著有十余本技術(shù)譯著,包括《Grails權(quán)威指南》《給大忙人看的JavaSE 8》《代碼不朽:編寫(xiě)可維護(hù)軟件的十大原則》《面向可伸縮架構(gòu)》《云原生Java》等書(shū),總計(jì)400余萬(wàn)字。
第 1 部分 個(gè)人軟件工程
1 軟件開(kāi)發(fā)的比喻 ................................................................................................. 2 1.1 什么是軟件 .......................................................................................................... 2 1.1.1 軟件不是被制造出來(lái)的 ........................................................................... 3 1.1.2 軟件不會(huì)磨損 ........................................................................................... 3 1.1.3 大多數(shù)軟件都是定制化的 ....................................................................... 3 1.1.4 軟件可以很容易升級(jí) ............................................................................... 4 1.1.5 軟件不是一個(gè)獨(dú)立的實(shí)體 ....................................................................... 4 1.2 與其他領(lǐng)域的相似性 ........................................................................................... 4 1.2.1 程序員像藝術(shù)家一樣 ............................................................................... 4 1.2.2 程序員像建筑師一樣 ............................................................................... 5 1.2.3 程序員像工程師一樣 ............................................................................... 6 1.2.4 程序員像工匠一樣 ................................................................................... 7 1.2.5 究竟是藝術(shù)家、建筑師、工程師還是工匠 ........................................... 7 1.3 軟件工程 .............................................................................................................. 8 1.3.1 一個(gè)正式的定義 ....................................................................................... 9 1.3.2 項(xiàng)目規(guī)模 ................................................................................................. 10 1.3.3 軟件工程的問(wèn)題 ..................................................................................... 12 1.4 軟件匠藝 ............................................................................................................ 13 1.4.1 教育 ......................................................................................................... 13 1.4.2 學(xué)徒階段 ................................................................................................. 14 1.4.3 軟件熟練工 ............................................................................................. 15 1.4.4 大師級(jí)工匠 ............................................................................................. 15 1.4.5 軟件匠藝的不足 ..................................................................................... 16 目錄 XXI 1.5 通往卓越編程的道路 ......................................................................................... 16 1.6 獲取更多信息 .................................................................................................... 17 2 生產(chǎn)力 ............................................................................................................. 18 2.1 什么是生產(chǎn)力 .................................................................................................... 18 2.2 程序員生產(chǎn)力與團(tuán)隊(duì)生產(chǎn)力的比較 ................................................................. 19 2.3 工時(shí)和實(shí)際時(shí)間 ................................................................................................ 20 2.4 概念復(fù)雜性和范圍復(fù)雜性 ................................................................................. 21 2.5 預(yù)測(cè)生產(chǎn)力 ........................................................................................................ 22 2.6 度量指標(biāo),以及我們?yōu)槭裁葱枰鼈?............................................................. 23 2.6.1 可執(zhí)行文件大小度量指標(biāo) ..................................................................... 24 2.6.2 機(jī)器指令度量指標(biāo) ................................................................................. 24 2.6.3 代碼行數(shù)度量指標(biāo) ................................................................................. 25 2.6.4 語(yǔ)句數(shù)量度量指標(biāo) ................................................................................. 25 2.6.5 功能點(diǎn)分析 ............................................................................................. 26 2.6.6 McCabe 圈復(fù)雜度度量指標(biāo) ................................................................... 26 2.6.7 其他度量指標(biāo) ......................................................................................... 27 2.6.8 度量指標(biāo)的問(wèn)題 ..................................................................................... 28 2.7 我們?cè)鯓硬拍苊刻鞂?xiě)出 10 行代碼 ................................................................... 29 2.8 估計(jì)開(kāi)發(fā)時(shí)間 .................................................................................................... 30 2.8.1 估計(jì)小型項(xiàng)目的開(kāi)發(fā)時(shí)間 ..................................................................... 30 2.8.2 估計(jì)中型項(xiàng)目和大型項(xiàng)目的開(kāi)發(fā)時(shí)間 ................................................. 31 2.8.3 估計(jì)開(kāi)發(fā)時(shí)間的問(wèn)題 ............................................................................. 32 2.9 危機(jī)模式項(xiàng)目管理............................................................................................. 33 2.10 如何提高工作效率 ........................................................................................... 34 2.10.1 合理選擇軟件開(kāi)發(fā)工具 ....................................................................... 34 2.10.2 管理開(kāi)銷(xiāo) ............................................................................................... 36 2.10.3 設(shè)置明確的目標(biāo)和里程碑 ................................................................... 37 2.10.4 練習(xí)自我激勵(lì) ....................................................................................... 37 2.10.5 集中注意力,消除干擾 ....................................................................... 38 2.10.6 如果你覺(jué)得無(wú)聊,那么就做點(diǎn)別的事情 ........................................... 39 2.10.7 盡可能自立 ........................................................................................... 39 XXII 編程卓越之道(卷 3):軟件工程化 2.10.8 識(shí)別何時(shí)需要幫助 ............................................................................... 40 2.10.9 克服士氣低落 ....................................................................................... 40 2.11 獲取更多信息 ................................................................................................... 41 3 軟件開(kāi)發(fā)模型................................................................................................... 42 3.1 軟件開(kāi)發(fā)生命周期............................................................................................. 42 3.2 軟件開(kāi)發(fā)模型 .................................................................................................... 45 3.2.1 非正式模型 ............................................................................................. 46 3.2.2 瀑布模型 ................................................................................................. 47 3.2.3 V 模型 ..................................................................................................... 49 3.2.4 迭代模型 ................................................................................................. 50 3.2.5 螺旋模型 ................................................................................................. 52 3.2.6 快速應(yīng)用程序開(kāi)發(fā)模型 ......................................................................... 54 3.2.7 增量模型 ................................................................................................. 56 3.3 軟件開(kāi)發(fā)方法論 ................................................................................................ 57 3.3.1 傳統(tǒng)的(預(yù)測(cè)型)方法論 ..................................................................... 57 3.3.2 自適應(yīng)型方法論 ..................................................................................... 57 3.3.3 敏捷開(kāi)發(fā) ................................................................................................. 58 3.3.4 極限編程 ................................................................................................. 60 3.3.5 Scrum ....................................................................................................... 73 3.3.6 功能驅(qū)動(dòng)開(kāi)發(fā) ......................................................................................... 74 3.4 卓越程序員的模型和方法論 ............................................................................. 77 3.5 獲取更多信息 .................................................................................................... 77 第 2 部分 UML 4 UML 和用例介紹 .............................................................................................. 80 4.1 UML 標(biāo)準(zhǔn) ........................................................................................................... 80 4.2 UML 用例模型 ................................................................................................... 81 4.2.1 用例圖的元素 ......................................................................................... 81 4.2.2 用例包 ..................................................................................................... 84 目錄 XXIII 4.2.3 用例包含 ................................................................................................. 84 4.2.4 用例泛化 ................................................................................................. 85 4.2.5 用例擴(kuò)展 ................................................................................................. 87 4.2.6 用例故事 ................................................................................................. 88 4.2.7 用例場(chǎng)景 ................................................................................................. 95 4.3 UML 系統(tǒng)邊界圖 ............................................................................................... 97 4.4 除用例以外 ........................................................................................................ 97 4.5 獲取更多信息 .................................................................................................... 98 5 UML 活動(dòng)圖 ..................................................................................................... 99 5.1 UML 活動(dòng)狀態(tài)符號(hào) ........................................................................................... 99 5.1.1 開(kāi)始和結(jié)束狀態(tài) ................................................................................... 100 5.1.2 活動(dòng) ....................................................................................................... 100 5.1.3 狀態(tài) ....................................................................................................... 101 5.1.4 轉(zhuǎn)移 ....................................................................................................... 101 5.1.5 條件 ....................................................................................................... 102 5.1.6 合并點(diǎn) ................................................................................................... 104 5.1.7 事件和觸發(fā)器 ....................................................................................... 105 5.1.8 分叉和合并(同步) ........................................................................... 107 5.1.9 調(diào)用符號(hào) ............................................................................................... 108 5.1.10 分區(qū) ..................................................................................................... 108 5.1.11 注釋和注解 ......................................................................................... 110 5.1.12 連接器 ................................................................................................. 110 5.1.13 其他活動(dòng)圖符號(hào) ................................................................................. 111 5.2 擴(kuò)展 UML 活動(dòng)圖 ............................................................................................ 111 5.3 獲取更多信息 .................................................................................................. 113 6 UML 類(lèi)圖 ...................................................................................................... 114 6.1 UML 中的面向?qū)ο蠓治雠c設(shè)計(jì) ..................................................................... 114 6.2 類(lèi)圖中的可見(jiàn)性 .............................................................................................. 116 6.2.1 公共的類(lèi)可見(jiàn)性 ................................................................................... 116 6.2.2 私有的類(lèi)可見(jiàn)性 ................................................................................... 117 XXIV 編程卓越之道(卷 3):軟件工程化 6.2.3 受保護(hù)的類(lèi)可見(jiàn)性 ............................................................................... 118 6.2.4 包級(jí)別的類(lèi)可見(jiàn)性 ............................................................................... 118 6.2.5 不支持的可見(jiàn)性類(lèi)型 ........................................................................... 119 6.3 類(lèi)屬性 .............................................................................................................. 120 6.3.1 屬性可見(jiàn)性 ........................................................................................... 120 6.3.2 屬性派生值 ........................................................................................... 120 6.3.3 屬性名稱(chēng) ............................................................................................... 121 6.3.4 屬性數(shù)據(jù)類(lèi)型 ....................................................................................... 122 6.3.5 操作數(shù)據(jù)類(lèi)型(返回值) ................................................................... 122 6.3.6 屬性多重性 ........................................................................................... 123 6.3.7 屬性初始值 ........................................................................................... 123 6.3.8 屬性字符串 ........................................................................................... 124 6.3.9 屬性語(yǔ)法 ............................................................................................... 124 6.4 類(lèi)操作 .............................................................................................................. 125 6.5 UML 的類(lèi)關(guān)系 ................................................................................................. 126 6.5.1 類(lèi)的依賴(lài)關(guān)系 ....................................................................................... 127 6.5.2 類(lèi)的關(guān)聯(lián)關(guān)系 ....................................................................................... 127 6.5.3 類(lèi)的聚合關(guān)系 ....................................................................................... 129 6.5.4 類(lèi)的組合關(guān)系 ....................................................................................... 130 6.5.5 關(guān)系特性 ............................................................................................... 131 6.5.6 類(lèi)的繼承關(guān)系 ....................................................................................... 140 6.6 對(duì)象 .................................................................................................................. 140 6.7 獲取更多信息 .................................................................................................. 141 7 UML 交互圖 ................................................................................................... 142 7.1 時(shí)序圖 .............................................................................................................. 142 7.1.1 生命線(xiàn) ................................................................................................... 143 7.1.2 消息類(lèi)型 ............................................................................................... 143 7.1.3 消息標(biāo)簽 ............................................................................................... 145 7.1.4 消息序號(hào) ............................................................................................... 145 7.1.5 守衛(wèi)條件 ............................................................................................... 146 7.1.6 迭代 ....................................................................................................... 147 目錄 XXV 7.1.7 長(zhǎng)延遲和時(shí)間約束 ............................................................................... 148 7.1.8 外部對(duì)象 ............................................................................................... 149 7.1.9 激活條 ................................................................................................... 150 7.1.10 分支 ..................................................................................................... 150 7.1.11 可選流 ................................................................................................. 152 7.1.12 對(duì)象的創(chuàng)建和銷(xiāo)毀 ............................................................................. 153 7.1.13 時(shí)序片段 ............................................................................................. 154 7.2 協(xié)作圖 .............................................................................................................. 173 7.3 獲取更多信息 .................................................................................................. 174 8 其他 UML 圖 .................................................................................................. 175 8.1 組件圖 .............................................................................................................. 175 8.2 包圖 .................................................................................................................. 178 8.3 部署圖 .............................................................................................................. 179 8.4 合成結(jié)構(gòu)圖 ...................................................................................................... 181 8.5 狀態(tài)圖 .............................................................................................................. 185 8.6 關(guān)于 UML 的更多信息 .................................................................................... 187 8.7 獲取更多信息 .................................................................................................. 188 第 3 部分 文檔 9 系統(tǒng)文檔 ........................................................................................................ 190 9.1 系統(tǒng)文檔類(lèi)型 .................................................................................................. 191 9.2 可追溯性 .......................................................................................................... 193 9.2.1 建立文檔可追溯性的方法 ................................................................... 193 9.2.2 標(biāo)簽格式 ............................................................................................... 194 9.2.3 需求/反向可追溯性矩陣 ...................................................................... 200 9.3 確認(rèn)、驗(yàn)證和審查........................................................................................... 204 9.4 通過(guò)文檔降低開(kāi)發(fā)成本 ................................................................................... 205 9.4.1 通過(guò)確認(rèn)降低成本 ............................................................................... 205 9.4.2 通過(guò)驗(yàn)證降低成本 ............................................................................... 206 XXVI 編程卓越之道(卷 3):軟件工程化 9.5 獲取更多信息 .................................................................................................. 207 10 需求文檔 ...................................................................................................... 209 10.1 需求的來(lái)源和可追溯性 ................................................................................. 209 10.1.1 建議的需求格式 ................................................................................. 210 10.1.2 好需求的特點(diǎn) ..................................................................................... 211 10.2 設(shè)計(jì)目標(biāo) ........................................................................................................ 218 10.3 系統(tǒng)需求規(guī)范文檔 ......................................................................................... 218 10.4 軟件需求規(guī)范文檔 ......................................................................................... 219 10.4.1 介紹 ..................................................................................................... 221 10.4.2 總體描述 ............................................................................................. 222 10.4.3 具體需求 ............................................................................................. 224 10.4.4 支持信息 ............................................................................................. 229 10.4.5 軟件需求規(guī)范示例 ............................................................................. 230 10.5 創(chuàng)建需求 ........................................................................................................ 240 10.6 用例 ................................................................................................................ 242 10.6.1 啟用/禁用調(diào)試模式 ............................................................................ 244 10.6.2 啟用/禁用以太網(wǎng) ................................................................................ 244 10.6.3 啟用/禁用 RS-232 ............................................................................... 246 10.6.4 啟用/禁用測(cè)試模式 ............................................................................ 246 10.6.5 啟用/禁用 USB ................................................................................... 246 10.6.6 讀取撥碼開(kāi)關(guān) ..................................................................................... 247 10.7 根據(jù)用例創(chuàng)建 DAQ 軟件需求 ...................................................................... 247 10.8 (從 SRS 中選擇的)DAQ 軟件需求 .......................................................... 248 10.9 用需求信息更新可追溯性矩陣 ..................................................................... 252 10.9.1 通過(guò)審查驗(yàn)證的需求 ......................................................................... 253 10.9.2 通過(guò)測(cè)試驗(yàn)證的需求 ......................................................................... 255 10.10 獲取更多信息 .............................................................................................. 255 11 軟件設(shè)計(jì)描述文檔 ........................................................................................ 256 11.1 IEEE Std 1016-1998 和 IEEE Std 1016-2009 ................................................ 257 11.2 IEEE 1016-2009 的概念模型 ......................................................................... 257 目錄 XXVII 11.2.1 設(shè)計(jì)關(guān)注點(diǎn)和設(shè)計(jì)利益相關(guān)方 ......................................................... 257 11.2.2 設(shè)計(jì)觀點(diǎn)和設(shè)計(jì)元素 ......................................................................... 258 11.2.3 設(shè)計(jì)視圖、設(shè)計(jì)覆蓋和設(shè)計(jì)原理 ..................................................... 270 11.2.4 IEEE Std 1016-2009 的概念模型 ....................................................... 273 11.3 SDD 所需內(nèi)容 ................................................................................................ 275 11.3.1 SDD 標(biāo)識(shí) ............................................................................................ 275 11.3.2 設(shè)計(jì)利益相關(guān)方和設(shè)計(jì)關(guān)注點(diǎn) ......................................................... 276 11.3.3 設(shè)計(jì)視圖、設(shè)計(jì)觀點(diǎn)、設(shè)計(jì)覆蓋和設(shè)計(jì)原理 .................................. 276 11.4 SDD 的可追溯性和標(biāo)簽 ................................................................................ 276 11.5 建議的 SDD 大綱 ........................................................................................... 277 11.6 SDD 文檔示例 ................................................................................................ 278 11.7 用設(shè)計(jì)信息更新可追溯性矩陣 ..................................................................... 293 11.8 創(chuàng)建軟件設(shè)計(jì) ................................................................................................. 293 11.9 獲取更多信息 ................................................................................................... 294 12 軟件測(cè)試文檔 ............................................................................................... 295 12.1 Std 829 中的軟件測(cè)試文檔 ........................................................................... 295 12.1.1 流程支持 ............................................................................................. 296 12.1.2 完整性級(jí)別和風(fēng)險(xiǎn)評(píng)估 ..................................................................... 297 12.1.3 軟件開(kāi)發(fā)測(cè)試級(jí)別 ............................................................................. 299 12.2 測(cè)試計(jì)劃 ........................................................................................................ 300 12.2.1 主測(cè)試計(jì)劃 ......................................................................................... 300 12.2.2 級(jí)別測(cè)試計(jì)劃 ..................................................................................... 302 12.2.3 級(jí)別測(cè)試設(shè)計(jì)文檔 ............................................................................. 304 12.3 軟件審查列表文檔 ......................................................................................... 305 12.3.1 SRL 大綱示例 ..................................................................................... 306 12.3.2 SRL 文檔示例 ..................................................................................... 306 12.3.3 將 SRL 項(xiàng)添加到可追溯性矩陣中 .................................................... 310 12.4 軟件測(cè)試用例文檔 ......................................................................................... 310 12.4.1 STC 文檔中的介紹 ............................................................................. 313 12.4.2 詳細(xì)說(shuō)明 ............................................................................................. 314 12.4.3 其他 ..................................................................................................... 317 XXVIII 編程卓越之道(卷 3):軟件工程化 12.4.4 軟件測(cè)試用例文檔示例 ..................................................................... 318 12.4.5 用 STC 信息更新 RTM 文檔.............................................................. 327 12.5 軟件測(cè)試過(guò)程文檔 ......................................................................................... 327 12.5.1 IEEE Std 829-2009 軟件測(cè)試過(guò)程 ..................................................... 329 12.5.2 軟件測(cè)試過(guò)程的大綱擴(kuò)展 ................................................................. 329 12.5.3 STP 文檔中的介紹 ............................................................................. 332 12.5.4 測(cè)試過(guò)程 ............................................................................................. 334 12.5.5 其他 ..................................................................................................... 337 12.5.6 索引 ..................................................................................................... 337 12.5.7 STP 文檔示例 ..................................................................................... 338 12.5.8 用 STP 信息更新 RTM 文檔 .............................................................. 344 12.6 級(jí)別測(cè)試日志 ................................................................................................ 345 12.6.1 級(jí)別測(cè)試日志文檔中的介紹 ............................................................. 346 12.6.2 詳細(xì)說(shuō)明 ............................................................................................. 346 12.6.3 術(shù)語(yǔ)表 ................................................................................................. 347 12.6.4 關(guān)于測(cè)試日志的一些注釋 ................................................................. 347 12.7 異常報(bào)告 ........................................................................................................ 351 12.7.1 異常報(bào)告文檔中的介紹 ..................................................................... 352 12.7.2 詳細(xì)說(shuō)明 ............................................................................................. 353 12.7.3 對(duì)異常報(bào)告的幾點(diǎn)建議 ..................................................................... 354 12.8 測(cè)試報(bào)告 ........................................................................................................ 355 12.8.1 主測(cè)試報(bào)告的簡(jiǎn)要介紹 ..................................................................... 356 12.8.2 級(jí)別測(cè)試報(bào)告 ..................................................................................... 357 12.9 你真的需要這些嗎 ......................................................................................... 358 12.10 獲取更多信息 .............................................................................................. 359 后記:如何設(shè)計(jì)卓越的代碼................................................................................. 360
你還可能感興趣
我要評(píng)論
|