軟件工程最佳實踐 (Software Engineering Best Practices: Lessons from Successful Projects in the Top Companies)

(美)Capers Jones 吳舜賢 / 楊傳輝 / 韓生亮

商品描述

本書的最佳實踐來自作者所研究的超過600家全球知名軟件公司和30餘個美國大型政府組織,是軟件行業半個世紀以來全球範圍內軟件工程實踐的精華。本書從軟件工程的宏觀層面,對比各種軟件工程實踐,剖析優劣,洞悉軟件工程的是非與成敗,揭露各種軟件工程實踐的偽真理,深刻指出軟件項目中存在的各種問題的實質,為並給出中肯的改進建議和解決方案。

本書深入地探討了其他軟件文獻中很少涵蓋的如下軟件工程主題:為什麼軟件行業開發出了超過2500種之多的編程語言;軟件質量傳統定義的諸多問題;“代碼行數”和“平均缺陷成本”等違反標準經濟學假設的通用度量指標的種種缺陷。本書指出,數量巨大的“新”項目實際上只不過是遺留應用的替代品,這說明為尋找那些已遺失的初始需求而進行的數據挖掘應該成為軟件項目的標準實踐。本書還討論了諸如如何將裁員和緊縮的危害降至最小等困難的社會工程問題。

本書說明瞭如何有效地使用成熟、可靠的工程過程來規劃、估算、安排進度和管理各種類型的軟件項目。它詳細地闡述了從軟件初始需求到20年的軟件維護之後各種方法,這些方法貫穿軟件整個生命週期的各階段,已被實踐證明是行之有效的。本書各部分受到來自包括IBM、微軟、Unisys和索尼等頂級軟件公司的資深工程師們廣泛、深入地審核和評論。

• 管理敏捷、層級式、矩陣式和虛擬軟件開發團隊

• 使用JAD、QFD、TSP、靜態分析、審查和其他具有出色成功案例記錄的方法優化軟件質量

• 使用高速功能性度量指標評估軟件項目的生產力和軟件質量水平

作者簡介

Capers Jones,目前是Namcook Analytics公司的合夥創始人、副總裁兼首席技術官。他還是軟件生產力研究所(SPR)的創始人和前總裁。Capers獲得了SPR首席科學家的榮譽稱號。他還是軟件質量世界大會的主題演講人,是國際功能點用戶組(IFPUG)的終身會員。他獲得了IFPUG終身會員的榮譽。Capers還曾被信息技術軟件質量聯盟(CISQ)評為“傑出顧問”(Distinguished Advisor)。Capers的研究囊括了軟件質量評估、質量度量、軟件成本與進度估算以及軟件度量指標。Capers的著作包括如下:《Patterns of Software Systems Failure and Success》、《Applied Software Measurement,Third Edition》、《Software Quality: Analysis and Guidelines for Success》、《Estimating Software Costs,Second Edition》以及《Software Assessments, Benchmarks and Best Practices》。

目錄大綱

前言
第1章軟件最佳實踐的介紹和定義1
1.1什麼是“最佳實踐”?如何進行評估5
1.2軟件開發、部署以及維護的多種路徑7
1.3軟件部署的路徑9
1.4維護和部署的路徑10
1.5軟件開發、部署以及維護的量化12
1.6軟件工程中的關鍵主題14
1.7方法、實踐以及社會學因素的總排名18
1.8總結28
參考文獻28

第2章50個軟件最佳實踐概述31
2.1最大限度地減少裁員所帶來的危害33
2.2技術人員的積極性和動力35
2.3經理和高管的積極性與動力37
2.4軟件人才的選拔和招聘39
2.5軟件人員的考核以及職業生涯規劃39
2.6軟件應用早期的範圍控制40
2.7軟件應用的外包41
2.8使用承包商和管理顧問44
2.9選擇軟件方法、工具以及做法的最佳實踐45
2.10認證方法、工具以及實踐49
2.11軟件應用的需求54
2.12用戶參與軟件項目55
2.13軟件應用中的行政管理支持56
2.14軟件架構和設計57
2.15軟件項目規劃58
2.16軟件項目的成本估算59
2.17軟件項目的風險分析61
2.18軟件項目的價值分析63
2.19取消或拯救陷入困境的項目64
2.20軟件項目的組織結構65
2.21培訓軟件項目經理67
2.22培訓軟件技術人員69
2.23使用軟件專家69
2.24軟件工程師、專家以及管理人員的認證71
2.25軟件項目中的溝通73
2.26軟件的可重用性74
2.27可重用材料的認證76
2.28編程80
2.29軟件項目管理82
2.30軟件項目的度量和指標82
2.31軟件的基準和基線84
2.32軟件項目的里程碑和成本跟踪86
2.33軟件發布前的變更控制87
2.34配置控制89
2.35軟件質量保證90
2.36審查以及靜態分析92
2.37測試和測試庫的控制95
2.38軟件的安全性分析與控制98
2.39軟件的性能分析100
2.40軟件的國際標準101
2.41軟件中的知識產權保護101
2.42防止病毒、間諜軟件以及黑客103
2.43軟件的部署和定制114
2.44培訓軟件應用的客戶或用戶115
2.45軟件應用部署後的客戶支持116
2.46軟件擔保和召回117
2.47軟件發布後的變更管理118
2.48軟件的維護和功能增強119
2.49軟件應用的更新和發布121
2.50遺留應用的終止或撤銷122
2.51總結123
參考文獻123

第3章2049年的軟件開發和維護預覽133
3.1引言133
3.2需求分析134
3.3設計136
3.4軟件開發138
3.5用戶文檔140
3.6客戶支持140
3.7部署和客戶培訓142
3.8軟件維護和功能增強143
3.9軟件外包146
3.10軟件包評估和收購152
3.11技術選擇和技術轉型154
3.12企業架構和項目組合分析156
3.13軟件學習預覽158
3.14盡職調查160
3.15認證和授權162
3.16軟件訴訟164
3.17總結166
參考文獻167

第4章軟件人員如何學習新技能168
4.1引言168
4.2軟件學習渠道的演變169
4.3軟件工程師當前需要學習哪些技術主題171
4.4軟件工程專家173
4.5軟件專業的種類175
4.6專家與普通軟件人員的大概比率178
4.7評估軟件工程師所使用的學習渠道179
4.8需要額外教育的軟件領域196
4.9軟件學習的新動向197
4.10總結198
4.11軟件管理和技術類主題課程198
參考文獻201

第5章軟件團隊的組織和專業化203
5.1引言203
5.2量化組織結果204
5.3割裂的信息技術和系統軟件世界204
5.4集中辦公與分佈式開發205
5.5軟件專家組織面臨的挑戰207
5.6由小到大的軟件組織結構209
5.7大型公司的專家組織226
5.8總結254
參考文獻255

第6章項目管理和軟件工程257
6.1引言257
6.2軟件規模估算263
6.3軟件進度與問題跟踪296
6.4軟件基準300
6.5總結318
參考文獻318

第7章需求、業務分析、架構及設計322
7.1引言322
7.2軟件需求323
7.3軟件需求方法論及實踐337
7.4業務分析347
7.5軟件架構349
7.6企業架構師352
7.7軟件設計356
7.8總結360
參考文獻361

第8章編程和代碼開發364
8.1引言364
8.2編程語言開發簡史364
8.3我們為什麼會有超過2500種編程語言366
8.4編程語言普及性的探索369
8.5我們到底需要多少種編程語言372
8.6建立一個國家級的編程語言翻譯中心374
8.7為什麼大多數軟件都使用2~15種編程語言377
8.8有多少程序員使用多種編程語言378
8.9源代碼中通常會出現何種類型的缺陷380
8.10軟件缺陷的邏輯和屬性382
8.11軟件源代碼缺陷的預防和去除387
8.12編程缺陷預防方法388
8.13缺陷去除方法396
8.14 “代碼行”度量方法的經濟學問題403
8.15總結415
參考文獻416

第9章軟件質量:軟件工程成功的關鍵419
9.1引言419
9.2軟件質量定義421
9.3軟件質量度量441
9.4軟件缺陷預防453
9.5軟件缺陷去除462
9.6軟件質量專家467
9.7軟件質量的經濟價值479
9.8總結486
參考文獻486