![](/c49/99/10033956784471.jpg)
店鋪:機械工業出版社官方旗艦店 出版社:機械工業出版社 ISBN:9787111683940 商品編碼:10033956784471 品牌:機械工業出版社(CMP) 頁數:200 字數:1000 審圖號:9787111683940 作者:羅傑
"![baecf198635367d9.jpg](https://img10.360buyimg.com/cms/jfs/t1/180445/28/6295/377762/60b0bd82E6c4ef32e/baecf198635367d9.jpg) 內容介紹 本書的各個版本一直都是軟件專業人士熟悉的讀物,在國際軟件工程界享有無可質疑的*威地位。它在全面而繫統、概括而清晰地介紹軟件工程的有關概念、原則、方法和工具方面獲得了廣大讀者的好評。此外,本書在給出傳統的、對學科發展具有深刻影響的方法時,又適當地介紹了當前正在發展的、具有生命力的新技術。 目錄 出版者的話 譯者序 前言 作者簡介 第1章 軟件與軟件工程 1 1.1軟件的本質 3 1.1.1定義軟件 4 1.1.2軟件應用領域 5 1.1.3遺留軟件 6 1.2定義軟件工程學科 6 1.3軟件過程 7 1.3.1過程框架 7 1.3.2普適性活動 8 1.3.3過程的適應性調整 9 1.4軟件工程實踐 9 1.4.1實踐的精髓 9 1.4.2通用原則 10 1.5這一切是如何開始的 12 1.6小結 13 習題與思考題 13 *一部分軟件過程 第2章過程模型 16 2.1通用過程模型 16 2.2定義框架活動 18 2.3明確任務集 19 2.4過程評估與改進 19 2.5慣用過程模型 20 2.5.1瀑布模型 20 2.5.2原型開發過程模型 21 2.5.3演化過程模型 23 2.5.4統一過程模型 25 2.6產品和過程 26 2.7小結 27 習題與思考題 28 第3章敏捷和敏捷過程 29 3.1什麼是敏捷 30 3.2敏捷及變更成本 30 3.3什麼是敏捷過程 31 3.3.1敏捷原則 31 3.3.2敏捷開發戰略 32 3.4Scrum 32 3.4.1Scrum團隊和制品 34 3.4.2衝刺規劃會議 34 3.4.3每日Scrum會議 34 3.4.4衝刺評審會議 35 3.4.5衝刺回顧 35 3.5其他敏捷框架 35 3.5.1XP框架 36 3.5.2看板法 37 3.5.3DevOps 38 3.6小結 39 習題與思考題 40 第4章推薦的過程模型 41 4.1需求定義 44 4.2初步體繫結構設計 44 4.3資源估算 45 4.4*次原型構建 46 4.5原型評價 48 4.6繼續與否的決策 49 4.7原型演化 50 4.7.1新原型範圍 51 4.7.2構建新原型 51 4.7.3測試新原型 51 4.8原型發布 52 4.9維護發布軟件 52 4.10小結 54 習題與思考題 55 第5章軟件工程的人員方面 56 5.1軟件工程師的特質 56 5.2軟件工程心理學 57 5.3軟件團隊 58 5.4團隊結構 59 5.5社交媒體的影響 60 5.6全球化團隊 60 5.7小結 61 習題與思考題 61 *二部分建模 第6章指導實踐的原則 64 6.1核心原則 65 6.1.1指導過程的原則 65 6.1.2指導實踐的原則 66 6.2指導每個框架活動的原則 67 6.2.1溝通原則 67 6.2.2策劃原則 69 6.2.3建模原則 71 6.2.4構建原則 72 6.2.5部署原則 75 6.3小結 76 習題與思考題 77 第7章理解需求 78 7.1需求工程 79 7.1.1起始 79 7.1.2獲取 79 7.1.3細化 80 7.1.4協商 80 7.1.5規格說明 80 7.1.6確認 81 7.1.7需求管理 81 7.2建立根基 82 7.2.1確認利益相關者 82 7.2.2識別多重觀點 82 7.2.3協作 82 7.2.4*次提問 83 7.2.5非功能需求 84 7.2.6可追溯性 84 7.3獲取需求 84 7.3.1協作收集需求 84 7.3.2使用場景 87 7.3.3獲取工作產品 88 7.4開發用例 88 7.5構建分析模型 91 7.5.1分析素 92 7.5.2分析模式 93 7.6協商需求 94 7.7需求監控 95 7.8確認需求 95 7.9小結 95 習題與思考題 96 第8章需求建模——一種推薦的方法 97 8.1需求分析 98 8.1.1總體目標和原理 98 8.1.2分析的經驗原則 99 8.1.3需求建模原則 99 8.2基於場景建模 100 8.2.1參與者和用戶概要文件 100 8.2.2創建用例 100 8.2.3編寫用例 103 8.3基於類建模 105 8.3.1識別分析類 105 8.3.2定義屬性和操作 107 8.3.3UML類模型 108 8.3.4類–職責–協作者建模 110 8.4功能建模 112 8.4.1過程視圖 112 8.4.2UML順序圖 113 8.5行為建模 114 8.5.1識別用例事件 114 8.5.2UML狀態圖 115 8.5.3UML活動圖 116 8.6小結 118 習題與思考題 119 第9章設計概念 120 9.1軟件工程中的設計 121 9.2設計過程 123 9.2.1軟件質量指導原則和屬性 123 9.2.2軟件設計的演化 124 9.3設計概念 125 9.3.1抽像 125 9.3.2體繫結構 126 9.3.3模式 126 9.3.4關注點分離 127 9.3.5模塊化 127 9.3.6信息隱蔽 128 9.3.7功能獨立 128 9.3.8逐步求精 129 9.3.9重構 129 9.3.10設計類 130 9.4設計模型 132 9.4.1設計建模原則 133 9.4.2數素 134 9.4.3體繫結素 134 9.4.4接素 134 9.4.5構件素 136 9.4.6部署素 136 9.5小結 137 習題與思考題 138 第10章體繫結構設計——一種推薦的方法 139 10.1軟件體繫結構 140 10.1.1什麼是體繫結構 140 10.1.2體繫結構的重要性 140 10.1.3體繫結構描述 141 10.1.4體繫結構決策 141 10.2敏捷性和體繫結構 142 10.3體繫結構風格 143 10.3.1體繫結構風格的簡單分類 144 10.3.2體繫結構模式 147 10.3.3組織和求精 148 10.4體繫結構考慮要素 148 10.5體繫結構決策 149 10.6體繫結構設計 150 10.6.1繫統在上下文中的表示 150 10.6.2定義體繫結構原型 151 10.6.3將體繫結構細化為構件 152 10.6.4描述繫統實例 153 10.7評估候選的體繫結構設計 153 10.7.1體繫結構評審 155 10.7.2基於模式的體繫結構評審 155 10.7.3體繫結構的一致性檢查 156 10.8小結 156 習題與思考題 157 第11章構件級設計 158 11.1什麼是構件 158 11.1.1面向對像的觀點 159 11.1.2傳統的觀點 159 11.1.3過程相關的觀點 161 11.2設計基於類的構件 162 11.2.1基本設計原則 162 11.2.2構件級設計指導方針 165 11.2.3內聚性 165 11.2.4耦合 167 11.3實施構件級設計 168 11.4專用的構件級設計 173 11.4.1WebApp的構件級設計 173 11.4.2移動App的構件級設計 173 11.4.3設計傳統構件 174 11.4.4基於構件的開發 174 11.5構件重構 176 11.6小結 176 習題與思考題 177 第12章用戶體驗設計 178 12.1用戶體素 179 12.1.1信息體繫結構 179 12.1.2用戶交互設計 180 12.1.3可用性工程 180 12.1.4可視化設計 181 12.2黃金規則 181 12.2.1把控制權交給用戶 182 12.2.2減輕用戶的記憶負擔 182 12.2.3保持界面一致 183 12.3用戶界面的分析和設計 184 12.3.1用戶界面分析和設計模型 184 12.3.2過程 185 12.4用戶體驗分析 186 12.4.1用戶研究 186 12.4.2用戶建模 187 12.4.3任務分析 189 12.4.4工作環境分析 190 12.5用戶體驗設計 190 12.6用戶界面設計 191 12.6.1應用界面設計步驟 191 12.6.2用戶界面設計模式 193 12.7設計評估 193 12.7.1原型審查 194 12.7.2用戶測試 195 12.8可用性和可訪問性 195 12.8.1可用性準則 196 12.8.2可訪問性準則 198 12.9傳統軟件UX和移動性 199 12.10小結 199 習題與思考題 200 第13章移動設計 201 13.1挑戰 202 13.1.1開發因素 202 13.1.2技術因素 202 13.2移動開發生命周期 204 13.2.1用戶界面設計 205 13.2.2經驗教訓 206 13.3移動體繫結構 208 13.4環境感知App 208 13.5Web設計金字塔 209 13.5.1WebApp界面設計 209 13.5.2美學設計 210 13.5.3內容設計 211 13.5.4體繫結構設計 211 13.5.5導航設計 212 13.6構件級設計 214 13.7移動性與設計質量 214 13.8移動設計的*佳實踐 216 13.9小結 217 習題與思考題 218 第14章基於模式的設計 219 14.1設計模式 220 14.1.1模式的種類 220 14.1.2框架 222 14.1.3描述模式 222 14.1.4機器學習和模式發現 223 14.2基於模式的軟件設計 223 14.2.1不同環境下基於模式的設計 223 14.2.2用模式思考 224 14.2.3設計任務 225 14.2.4建立模式組織表 226 14.2.5常見設計錯誤 226 14.3體繫結構模式 227 14.4構件級設計模式 227 14.5反模式 229 14.6用戶界面設計模式 230 14.7移動設計模式 231 14.8小結 232 習題與思考題 232 第三部分質量與安全 第15章質量概念 234 15.1什麼是質量 234 15.2軟件質量 235 15.2.1質量因素 236 15.2.2定性質量評估 237 15.2.3定量質量評估 237 15.3軟件質量困境 238 15.3.1“足夠好”的軟件 238 15.3.2質量的成本 239 15.3.3風險 241 15.3.4疏忽和責任 242 15.3.5質量和安全 242 15.3.6管理活動的影響 242 15.4實現軟件質量 243 15.4.1軟件工程方法 243 15.4.2項目管理技術 243 15.4.3機器學習和缺陷預測 243 15.4.4質量控制 244 15.4.5質量保證 244 15.5小結 244 習題與思考題 244 第16章評審—一種推薦的方法 246 16.1軟件缺陷對成本的影響 247 16.2缺陷的放大和消除 247 16.3評審度量及其應用 248 16.4不同形式評審的標準 250 16.5非正式評審 250 16.6正式技術評審 251 16.6.1評審會議 252 16.6.2評審報告和記錄保存 252 16.6.3評審指導原則 253 16.7產品完成後評估 254 16.8敏捷評審 254 16.9小結 255 習題與思考題 255 第17章軟件質量保證 257 17.1背景問題 258 17.2軟件質量保證的要素 258 17.3軟件質量保證的過程和產品特征 259 17.4軟件質量保證的任務、目標和度量 260 17.4.1軟件質量保證的任務 260 17.4.2目標、屬性和度量 261 17.5軟件質量保證的形式化方法 262 17.6統計軟件質量保證 263 17.6.1一個普通的例子 263 17.6.2軟件工程的六西格瑪 264 17.7軟件可靠性 265 17.7.1可靠性和可用性的測量 265 17.7.2使用人工智能對可靠性進行建模 266 17.7.3軟件安全 267 17.8ISO 9000質量標準 267 17.9軟件質量保證計劃 268 17.10小結 269 習題與思考題 269 第18章軟件安全性工程 270 18.1軟件安全性工程的重要性 270 18.2安全生命周期模型 271 18.3安全開發生命周期活動 272 18.4安全需求工程 273 18.4.1SQUARE 273 18.4.2SQUARE過程 273 18.5誤用例、濫用例及攻擊方式 275 18.6安全性風險分析 276 18.7威脅建模、優先級排序和緩解 277 18.8攻擊面 278 18.9安全編碼 278 18.10測量 279 18.11安全過程改進和成熟度模型 280 18.12小結 281 習題與思考題 281 第19章軟件測試—構件級 282 19.1軟件測試的策略性方法 282 19.1.1驗證與確認 283 19.1.2軟件測試組織 283 19.1.3宏觀 284 19.1.4測試完成的標準 286 19.2規劃和記錄保存 286 19.2.1“腳手架”的作用 287 19.2.2高效測試 288 19.3測試用例設計 288 19.3.1需求和用例 290 19.3.2可追溯性 290 19.4白盒測試 290 19.4.1基本路徑測試 290 19.4.2控制結構測試 293 19.5黑盒測試 293 19.5.1接口測試 294 19.5.2等價類劃分 294 19.5.3邊界值分析 295 19.6面向對像測試 295 19.6.1類測試 295 19.6.2行為測試 297 19.7小結 298 習題與思考題 298 第20章軟件測試—集成級 299 20.1軟件測試基礎 300 20.1.1黑盒測試 300 20.1.2白盒測試 300 20.2集成測試 301 20.2.1自頂向下集成 301 20.2.2自底向上集成 302 20.2.3持續集成 303 20.2.4集成測試工作產品 304 20.3人工智能與回歸測試 304 20.4面向對像環境中的集成測試 305 20.4.1基於故障的測試用例設計 306 20.4.2基於場景的測試用例設計 307 20.5確認測試 308 20.6測試模式 309 20.7小結 309 習題與思考題 310 第21章軟件測試—專門的移動性測試 311 21.1移動測試準則 311 21.2測試策略 312 21.3用戶體驗測試相關問題 313 21.3.1手勢測試 313 21.3.2虛擬鍵盤輸入 314 21.3.3語音輸入和識別 314 21.3.4警報和異常條件 315 21.4Web應用測試 315 21.5Web測試策略 316 21.5.1內容測試 317 21.5.2界面測試 318 21.5.3導航測試 318 21.6國際化 319 21.7安全性測試 319 21.8性能測試 320 21.9實時測試 322 21.10測試AI繫統 323 21.10.1靜態測試和動態測試 323 21.10.2基於模型的測試 324 21.11測試虛擬環境 324 21.11.1可用性測試 325 21.11.2可訪問性測試 326 21.11.3可玩性測試 327 21.12測試文檔和幫助設施 327 21.13小結 328 習題與思考題 329 第22章軟件配置管理 330 22.1軟件配置管理概述 331 22.1.1SCM場景 331 22.1.2配置管理素 332 22.1.3基線 333 22.1.4軟件配置項 334 22.1.5依賴性和變更管理 334 22.2SCM中心存儲庫 335 22.2.1一般特征和內容 335 22.2.2SCM特征 336 22.3版本控制繫統 336 22.4持續集成 337 22.5變更管理過程 337 22.5.1變更控制 338 22.5.2影響管理 340 22.5.3配置審核 341 22.5.4狀態報告 341 22.6移動性和敏捷變更管理 341 22.6.1變更控制 342 22.6.2內容管理 343 22.6.3集成和發布 344 22.6.4版本控制 345 22.6.5審核和報告 345 22.7小結 346 習題與思考題 346 第23章軟件度量和分析 347 23.1軟件測量 348 23.1.1測度、度量和指標 348 23.1.2有效軟件度量的屬性 348 23.2軟件分析 348 23.3產品指標 349 23.3.1需求模型的度量 350 23.3.2常規軟件的設計度量 352 23.3.3面向對像軟件的設計度量 353 23.3.4用戶界面的設計度量 355 23.3.5源代碼的度量 357 23.4 測試的度量 357 23.5維護的度量 358 23.6過程和項目度量 359 23.7軟件測量 361 23.8軟件質量的度量 363 23.9制定軟件度量大綱 365 23.10小結 367 習題與思考題 368 第四部分軟件項目管理 第24章項目管理概念 370 24.1管理涉及的範圍 371 24.1.1人員 371 24.1.2產品 371 24.1.3過程 371 24.1.4項目 372 24.2人員 372 24.2.1利益相關者 372 24.2.2團隊負責人 372 24.2.3軟件團隊 373 24.2.4協調和溝通問題 374 24.3產品 375 24.3.1軟件範圍 375 24.3.2問題分解 376 24.4過程 376 24.4.1合並產品和過程 376 24.4.2過程分解 377 24.5項目 378 24.6W5HH原則 379 24.7關鍵實踐 379 24.8小結 379 習題與思考題 380 第25章制定可行的軟件計劃 381 25.1對估算的看法 382 25.2項目計劃過程 383 25.3軟件範圍和可行性 383 25.4資源 384 25.4.1人力資源 384 25.4.2可復用軟件資源 384 25.4.3環境資源 385 25.5數據分析和軟件項目估算 385 25.6分解和估算技術 386 25.6.1軟件規模估算 386 25.6.2基於問題的估算 387 25.6.3基於LOC估算的實例 387 25.6.4基於FP估算的實例 388 25.6.5基於過程估算的實例 389 25.6.6基於用例點估算的實例 390 25.6.7調和不同的估算方法 392 25.6.8敏捷開發的估算 392 25.7項目進度安排 393 25.7.1基本原則 394 25.7.2人員與工作量之間的關繫 394 25.8定義項目任務集 396 25.8.1任務集舉例 396 25.8.2主要任務的細化 397 25.9定義任務網絡 397 25.10進度安排 398 25.10.1時序圖 398 25.10.2跟蹤進度 399 25.11小結 401 習題與思考題 401 第26章風險管理 403 26.1被動風險策略和主動風險策略 404 26.2軟件風險 404 26.3風險識別 405 26.3.1評估整體項目風險 406 26.3.2風險因素和驅動因子 407 26.4風險預測 407 26.4.1建立風險表 407 26.4.2評估風險影響 409 26.5風險細化 410 26.6風險緩解、監測和管理 411 26.7RMMM計劃 413 26.8小結 414 習題與思考題 414 第27章軟件支持策略 416 27.1軟件支持 417 27.2軟件維護 418 27.2.1維護類型 419 27.2.2維護任務 419 27.2.3逆向工程 420 27.3主動軟件支持 422 27.3.1軟件分析的使用 422 27.3.2社交媒體的作用 423 27.3.3支持成本 423 27.4重構 424 27.4.1數據重構 424 27.4.2代碼重構 425 27.4.3體繫結構重構 425 27.5軟件演化 425 27.5.1庫存目錄分析 426 27.5.2文檔重構 427 27.5.3逆向工程 427 27.5.4代碼重構 427 27.5.5數據重構 427 27.5.6正向工程 427 27.6小結 428 習題與思考題 428 第五部分*級課題 第28章軟件過程改進 430 28.1什麼是SPI 431 28.1.1SPI的方法 431 28.1.2成熟度模型 432 28.1.3SPI適合每個人嗎 432 28.2SPI過程 432 28.2.1評估和差異分析 433 28.2.2教育和培訓 434 28.2.3選擇和合理性判定 434 28.2.4設置/遷移 434 28.2.5評價 435 28.2.6SPI的風險管理 435 28.3CMMI 436 28.4其他SPI框架 438 28.4.1SPICE 438 28.4.2TickIT Plus 439 28.5SPI的*資*報率 439 28.6SPI趨勢 439 28.7小結 440 習題與思考題 440 第29章軟件工程新趨勢 442 29.1技術演變 443 29.2作為一門學科的軟件工程 444 29.3觀察軟件工程的發展趨勢 444 29.4識別“軟趨勢” 445 29.4.1管理復雜性 446 29.4.2開放世界軟件 447 29.4.3意外需求 447 29.4.4人纔技能結合 448 29.4.5軟件構造塊 448 29.4.6對“價值”認識的轉變 449 29.4.7開源 449 29.5技術方向 449 29.5.1過程趨勢 449 29.5.2巨大的挑戰 450 29.5.3協同開發 451 29.5.4需求工程 451 29.5.5模型驅動的軟件開發 452 29.5.6基於搜索的軟件工程 452 29.5.7測試驅動的開發 453 29.6相關工具的趨勢 454 29.7小結 455 習題與思考題 455 第30章結束語 456 30.1再論軟件的重要性 457 30.2人員及其構造繫統的方式 457 30.3知識發現 458 30.4願景 459 30.5軟件工程師的責任 460 30.6寫在*後 461 索引 462 在線資源 附錄1UML 簡介 附錄2面向軟件工程師的數據科學 參考文獻
" |