《個體軟件過程》(簡稱“PSPi”)是Watts S.Humphrey于1997年特地為美國大學一年級學生編寫的教科書。書中描述了很多資深的軟件工程師解決軟件工程問題的方法,特別是有關軟件項目計劃和軟件質量控制方面的先進方法,并提供了很多練習來幫助讀者掌握這些方法。
美國Embry-Riddle航空大學計算機科學系以《個體軟件過程》初稿為教材,為該系一年級學生講授了這門課程,經驗證明,這對造就學生成為合格的軟件專業人員很有幫助。每章之后還附有習題,以幫助讀者復習與掌握該章的主要內容。因為《個體軟件過程》是在兩個學期的計算機科學或軟件工程導論課程中使用,所以《個體軟件過程》的內容分成兩部分,在第一學期中講授時間管理(前10章),在第二學期中講授質量問題(后10章)。
《個體軟件過程》實用性與可讀性較強,可作為高等學校計算機軟件工程課程的教材,也可作為工程技術人員自學個體軟件過程的教材,是進行軟件過程改善和能力成熟度模型SW-CMM評估的重要參考資料!秱體軟件過程》同樣適用于軟件開發項目經理、程序員和一般編程愛好者在開發軟件時參考。
除了設計和編寫軟件應用程序外,軟件工程師面臨的主要挑戰之一是管理軟件地程,使工作更為高效和富有成果。 在這本簡要介紹有效軟件工程實用基本原理的著作中,作者Watts Humphrey為廣大的學生和專業程序員等讀者群提供了個體軟件過程方面的知識。Watts Humphrey著名的軟件工程專家,其著作Managing the Soft ware Process影響深遠!秱體軟件過程》以實際訓練的方式提供了一些實用的練習,讀者可以用來豐富時間管理和質量保證方面的經驗并提高技能,這將有助于他們完成令人滿意的工作,并能更好地應用專業編程知識,在職業生涯中獲得更大的成功。 《個體軟件過程》包括以下內容: 通過培養工作習慣和提高個人軟件管理技術,使各級水平的軟件工程師(從學生到經驗豐富的專業人員)的工作更高效和富有成果; 來自世界頂級軟件過程和軟件質量專家的建議和指導; 提高個人技能的實用練習; 教員指導材料——詳細內容見書中。
如果你正在學習成為一個軟件工程師,這本書就是為你寫的。書中描述了很多資深的工程師解決軟件工程問題的方法,并提供了很多練習來幫助你掌握這些方法。每章描述了一個不同的主題,當你做完作業規定的練習之后,你將掌握這個技能。完成每個練習中的例題,對檢查自己的學習情況很有幫助。
一、為什么我要寫本書?開發軟件產品不僅是將程序設計指令匯集在一起,并使其能在一臺計算機上運行,而且要求在商定的費用和進度下滿足用戶的需求。為此,軟件工程師需要始終如一地在計劃的費用下、按進度開發出高質量的程序。本書向你展示如何進行這些工作,介紹個體軟件過程(PSP),這是用規范化的個人實踐從事高級軟件工程的指南。
PSP將向你展示如何制訂計劃并跟蹤你的工作,并指出怎樣始終如一地生產高質量的軟件產品。使用PSP也將向你提供工作有效性的數據并識別出自己的優勢和弱點。PSP猶如運動場上的秒表和測距器,要對參賽做出明智的判定,需要通過度量來了解自己的擅長以及哪些地方需要改善。就像一個田徑隊,軟件工程也有許多專業,軟件工程師需要各種技能和才干。為了事業的成功,需要了解和提高自己的技能和能力,并在工作中充分利用自己獨特的才能。PSP幫助你實現這一點。
二、使用:PSP通過使用:PSP,你將對專業軟件工程師經過多年的試驗和失敗所開發(研究、探索)出來的各種技能和方法進行實踐。在前人經驗的基礎上前進,將會學得更快,而且可以避免重復前人所犯的錯誤。作為一個專業人員,關鍵是要了解別人已經做過什么,并注意吸取他們的經驗和教訓。
漢弗萊(Watts S.Humphrey),是位知名作者,在軟件開發過程和軟件過程改進方面著有多本影響深遠的圖書:Man-aging the Software Process(1989)、A Disciplinge for Software Engineering(1995)、Managing Tech-nical People(1997)。Humphrey曾長期在舊M公司擔任高級軟件開發經理。獲得了大量的軟件開發過程方面的經驗,目前是卡內基梅隆大學軟件工程研究所的研究員,就軟件質量和軟件過程方面的主題著書立說、提供 咨詢,并在世界各地發表這方面的演講。
第1章 軟件工程師的任務 1
1.1 什么是軟件工程 1
1.2 為什么工程質量很重要 1
1.3 個體軟件過程 2
1.4 高質量工作的規范 2
1.5 高質量工作的重要性 3
1.6 如何提高工作質量 3
1.7 過程改進的步驟 4
1.8 本書的策略 5
1.9 總結 5
1.10 練習1 5
第2章 時間管理 7
2.1 時間管理的邏輯原理 7
2.2 了解時間的使用情況 8
2.3 工程記事本 9
2.4 工程記事本的設計 9
2.5 工程記事本示例 10
2.6 總結 12
2.7 練習2 13
第3章 時間跟蹤 15
3.1 為什么要跟蹤時間 15
3.2 記錄時間數據 15
3.3 跟蹤時間 16
3.4 使用標準的時間記錄日志 17
3.5 處理中斷 19
3.6 跟蹤已完成的任務 19
3.7 在工程記事本中登記時間日志 21
3.8 時間記錄的提示 21
3.9 總結 22
3.10 練習3 22
第4章 階段計劃與產品計劃 23
4.1 階段計劃和產品計劃 23
4.2 周活動總結表 24
4.3 總結每周的時間分配 26
4.4 計算階段時間和工作效率 28
4.5 使用周活動總結表 31
4.6 總結 32
4.7 練習4 32
第5章 產品計劃 33
5.1 產品計劃的必要性 33
5.2 產品計劃的用途 33
5.3 什么是產品計劃 34
5.4 產品計劃 34
5.5 制訂小型任務的計劃 35
5.6 術語定義 35
5.7 作業編號日志 35
5.8 關于使用作業編號日志的幾點建議 40
5.9 使用產品的時間和效率數據 40
5.10 總結 41
5.11 練習5 41
第6章 產品規模 43
6.1 產品計劃過程 43
6.2 規模度量 43
6.3 使用規模度量的注意事項 44
6.4 程序規模 45
6.5 其他的規模度量方法 46
6.6 程序規模估計 47
6.7 較大規模的估計 48
6.8 在作業編號日志中使用規模度量的方法 50
6.9 總結 53
6.10 練習6 54
第7章 管理好時間 55
7.1 時間管理的要素 55
7.2 活動分類 55
7.3 收集活動的時間數據 56
7.4 時間分配的評價 56
7.5 做出時間安排 56
7.6 找出更多的時間 58
7.7 制訂基本規則 58
7.8 設定時間分配的優先級 61
7.9 管理好時間安排 63
7.10 關于管理可變動的時間的幾點建議 64
7.11 時間管理的目標 64
7.12 總結 65
7.13 練習7 65
第8章 承諾的管理 67
8.1 什么是承諾 67
8.2 認真制訂承諾 68
8.3 承諾的一個示例 69
8.4 工業中的示例 70
8.5 處理沒有完成的承諾 71
8.6 管理承諾的重要性 71
8.7 不對承諾進行管理的后果 72
8.8 管理承諾的方法 72
8.9 總結 73
8.10 練習8 74
第9章 進度管理 75
9.1 進度管理的必要性 75
9.2 Gantt圖 76
9.3 制訂項目進度表 77
9.4 檢查點 77
9.5 跟蹤項目計劃 79
9.6 跟蹤掙值 81
9.7 總結 84
9.8 練習9 84
第10章 項目計劃 85
10.1 項目計劃的必要性 85
10.2 項目計劃總結表 85
10.3 項目總結 88
10.4 程序規模 89
10.5 開發階段的時間 91
10.6 估計的準確性 92
10.7 總結 93
10.8 練習10 93
第11章 軟件開發過程 95
11.1 為什么使用過程 95
11.2 一些定義 95
11.3 過程腳本 96
11.4 檢查點和階段 98
11.5 更新的項目計劃總結表 98
11.6 一個計劃的示例 101
11.7 累計時間值計算的示例 104
11.8 總結 107
11.9 練習11 107
第12章 缺陷 109
12.1 什么是軟件質量 109
12.2 缺陷和質量 109
12.3 什么是缺陷 110
12.4 缺陷與Bug 111
12.5 缺陷類型 112
12.6 了解缺陷 113
12.7 缺陷記錄日志 113
12.8 統計缺陷個數 116
12.9 使用缺陷記錄日志 117
12.10 更新的PSP過程 117
12.11 總結 123
12.12 練習12 123
第13章 缺陷查找技術 125
13.1 個人對產品質量的承諾 125
13.2 發現缺陷的步驟 125
13.3 發現和修復缺陷的方法 126
13.4 代碼復查 127
13.5 為什么要盡早發現缺陷 127
13.6 發現和修復缺陷的費用 128
13.7 利用代碼復查發現缺陷 129
13.8 編譯前的復查 130
13.9 編譯與測試缺陷的數據 131
13.10 更新后的PSP項目計劃總結表 132
13.11 其他種類的代碼復查 137
13.12 總結 137
13.13 練習13 138
第14章 代碼復查檢查表 139
14.1 檢查表的用途 139
14.2 代碼復查檢查表的示例 139
14.3 使用代碼復查檢查表 142
14.4 建立個人檢查表 143
14.5 改進檢查表 147
14.6 編碼標準 150
14.7 總結 152
14.8 練習14 152
第15章 缺陷預測 153
15.1 缺陷率 153
15.2 缺陷數據的使用 154
15.3 缺陷密度 155
15.4 缺陷率的預測 155
15.5 缺陷估計 156
15.6 更新的項目計劃總結表和示例 157
15.7 登入實際的數據 164
15.8 總結 165
15.9 練習15 165
第16章 缺陷排除的經濟效益 167
16.1 高質量工作的必要性 167
16.2 缺陷排除問題 168
16.3 缺陷排除時間 168
16.4 缺陷引入和排除的經驗 168
16.5 節省缺陷排除時間 170
16.6 在PSP項目計劃總結表中每小時缺陷數的計算 171
16.7 缺陷排除效益的計算 175
16.8 提高缺陷排除率 176
16.9 減少缺陷引入率 177
16.10 總結 177
16.11 練習16 178
第17章 設計缺陷 179
17.1 設計缺陷的本質 179
17.2 識別設計缺陷 180
17.3 什么是設計 181
17.4 設計過程 181
17.5 設計缺陷的起因 182
17.6 設計缺陷的影響 183
17.7 設計表達 183
17.8 總結 187
17.9 練習17 187
第18章 產品質量 189
18.1 質量第一 189
18.2 測試 189
18.3 過濾器概念 190
18.4 仔細工作的好處 191
18.5 缺陷排除效益的計算 192
18.6 最終的缺陷排除效益的估計 194
18.7 100%過程效益的好處 194
18.8 缺陷排除效益的經驗 195
18.9 原型方法 196
18.10 總結 197
18.11 練習18 197
第19章 過程質量 199
19.1 過程度量 199
19.2 缺陷排除中的矛盾 199
19.3 缺陷排除策略 200
19.4 質量的成本 201
19.5 質量成本的計算 201
19.6 質檢/過失比 205
19.7 改進復查的效率 208
19.8 質量成本的精確計算 208
19.9 總結 210
19.10 練習19 210
第20章 個人對質量的承諾 211
20.1 質量的重要性 211
20.2 低質軟件的危險正在增長 211
20.3 制訂個人質量承諾 212
20.4 個人的目標 213
20.5 成就的回報 213
當計劃已文檔化且記錄了實際所花費的時間,就能很容易地把實際的結果與原來的計劃相比較,然后就能發現計劃中存在哪些錯誤以及如何改進作計劃的過程。制訂準確計劃的關鍵就是要堅持制訂計劃,并把每個計劃與實際的結果相比較,然后就會知道如何才能制訂出更好的計劃。
為了管理好時間,首先制訂時間分配計劃。然后按照計劃去做,知道如何去作一個較好的計劃是比較容易的,能真正按照計劃去實施才是最困難的。世界上未能實施的計劃的示例數不勝數,譬如節食或戒煙。
開始的時候,按照計劃進行工作可能比較困難。你可能會有很多借口,最常見的就是這份計劃作得不好。但只有按照計劃去做,你才可能知道它的優劣。按照預先制訂的計劃進行工作會有兩點好處:第一,了解計劃中還存在哪些錯誤,有助于更好地計劃下一個項目。第二,按照計劃好的方式完成工作。這看起來好像不重要,但是事實上軟件工程中的許多錯誤都是由于考慮不周、粗心大意或是不注意細節而造成的。在很多情況下,已經知道了合適的方法并且也作了詳細的說明,但就是沒有得到實施。因此,學會制訂可行的計劃是重要的,但是學會實際執行這些計劃才是最關鍵的。
按照計劃進行工作的另一個更加微妙的好處就是它實際上在改變你的工作方式。有了計劃,就不用浪費時間去考慮下一步要干什么,它會幫助你把精力集中在所做的事情上,很少分心,從而提高了工作效率。
2.2 了解時間的使用情況
進行時間管理的實踐,第一步要了解現在是如何利用時間的,為此需要遵循下面幾個步驟。