面向對象軟體工程

面向對象軟體工程

《面向對象軟體工程》一書是由美國作者StephenR.schach(沙赫查)撰寫的著作,由機械工業出版社於2009年出版發行。

基本信息

內容簡介

該書從面向對象范型出發對軟體工程進行重新演繹,全面、系統、清晰地介紹了面向對象軟體工程的基本概念、原理、方法和工具,通過實例說明了面向對象軟體開發的整個過程。是一部值得推薦的經典之作。

《面向對象軟體工程》分為兩個部分:第一部分介紹了面向對象軟體工程的基本理論;第二部分以工作流的形式介紹了軟體生命周期。

《面向對象軟體工程》特色

●包括面向對象生命周期模型、面向對象分析、面向對象設計,以及面向對象軟體的測試和維護。

●討論了文檔、維護、復用、可移植性、測試和CASE工具等的重要性。

●包括了能力成熟度模型(CMM)和人員能力成熟度模型(P-CMM)的內容。

●與語言無關。實例代碼對於C++和Java語言背景的讀者同樣清晰。

●包括600餘篇當前熱點研究文章、經典文獻和書籍的參考文獻。

●包含2個用於說明完整軟體生命周期的運行實例,還有7個較小的實例,分別用於突出說明特定的主題。

●包括5種類型的習題,分別是概念理解、項目分析、課程設計、論文研讀和實例修改。

面向對象軟體工程方法具有下述4個特點:

(1) 把對象作為融合了數據及在數據上的操作行為的統一軟體構架,用對象分解取代了傳統方法的功能分解

(2) 把所有對象都劃分為類。每個類定義了一組數據和一組操作,類是對具有相同數據和相同操作的一組相似對象的定義

(3) 按照父類與子類的關係,把若干個相關類組成一個層次結構的系統。下層派生類自動擁有上層基類中定義的數據和操作,這種現象稱為繼承

(4) 對象彼此之間僅能通過傳送訊息互相聯繫,對象的所有私有信息都被封裝在該對象內,不能從外界直接訪問,這就是封裝性

作者簡介

StephenR.Schach,1972年獲魏茲曼科學院理科碩士學位,1973年獲開普敦大學套用數學博士學位,任教於美國范德比爾特大學計算機科學系。他著有多部有關軟體工程、面向對象軟體工程、面向對象系統分析與設計的教材。他還在國際上廣泛講授軟體工程方面的課程,包括復用、CASE和面向對象范型等。

圖書目錄

出版者的話

譯者序

前言

第一部分面向對象軟體工程簡介

第1章面向對象軟體工程的範疇3

1.1歷史方面4

1.2經濟方面6

1.3維護方面6

1.3.1現代軟體維護觀點8

1.3.2交付後維護的重要性9

1.4需求、分析和設計方面10

1.5團隊開發11

1.6沒有計畫階段的原因12

1.7沒有測試階段的原因12

1.8沒有文檔階段的原因13

1.9面向對象范型13

1.10術語15

1.11道德規範問題17

本章回顧18

延伸閱讀材料18

習題19

參考文獻20

第2章軟體生命周期模型23

2.1理想軟體開發23

2.2Winburg小型案例研究23

2.3Winburg小型案例研究經驗25

2.4TealTractors公司小型案例研究25

2.5疊代與增量26

2.6Winburg小型案例研究再探28

2.7疊代和增量的風險及其他29

2.8管理疊代與增量31

2.9其他生命周期模型31

2.9.1邊寫邊改生命周期模型32

2.9.2瀑布生命周期模型32

2.9.3快速原型生命周期模型33

2.9.4開源生命周期模型34

2.9.5敏捷過程35

2.9.6同步穩定生命周期模型37

2.9.7螺旋生命周期模型38

2.10生命周期模型的比較40

本章回顧41

延伸閱讀材料41

習題42

參考文獻43

第3章軟體過程46

3.1統一過程47

3.2疊代與增量48

3.3需求工作流49

3.4分析工作流50

3.5設計工作流51

3.6實現工作流52

3.7測試工作流52

3.7.1需求製品53

3.7.2分析製品53

3.7.3設計製品53

3.7.4實現製品53

3.8交付後維護54

3.9退役55

3.10統一過程的階段55

3.10.1初始階段56

3.10.2細化階段57

3.10.3構造階段58

3.10.4移交階段58

3.11一維與二維生命周期模型對比59

3.12改進軟體過程60

3.13能力成熟度模型60

3.14軟體過程改進的其他方面62

3.15軟體過程改進的成本與收益62

本章回顧64

延伸閱讀材料64

習題65

參考文獻65

第4章軟體團隊68

4.1團隊組織68

4.2民主團隊方式69

4.3主程式設計師團隊方式70

4.3.1《紐約時報》項目71

4.3.2主程式設計師團隊方式的不切實際性72

4.4超越主程式設計師和民主團隊72

4.5同步-穩定團隊73

4.6敏捷過程團隊74

4.7開源編程團隊74

4.8人力資源能力成熟度模型75

4.9選擇合適的團隊組織75

本章回顧76

延伸閱讀材料76

習題77

參考文獻77

第5章軟體工程工具79

5.1逐步求精79

5.2成本-效益分析法82

5.3軟體度量83

5.4CASE84

5.5CASE的分類85

5.6CASE的範圍86

5.7軟體版本88

5.7.1修訂版89

5.7.2變體89

5.8配置控制89

5.8.1交付後維護期間的配置控制91

5.8.2基線91

5.8.3產品開發過程中的配置控制91

5.9建造工具92

5.10使用CASE技術提高生產力93

本章回顧93

延伸閱讀材料93

習題94

參考文獻95

第6章測試97

6.1質量問題97

6.1.1軟體質量保證98

6.1.2管理獨立性98

6.2基於非執行的測試99

6.2.1走查99

6.2.2管理走查100

6.2.3審查100

6.2.4走查和審查的對比102

6.2.5評審的優缺點102

6.2.6審查的度量方法102

6.3基於執行的測試103

6.4應該測試什麼103

6.4.1實用性104

6.4.2可靠性104

6.4.3健壯性104

6.4.4性能105

6.4.5正確性105

6.5測試與正確性證明106

6.5.1正確性證明的例子106

6.5.2正確性證明小型實例研究108

6.5.3正確性證明和軟體工程109

6.6由誰來完成基於執行的測試111

6.7測試何時停止112

本章回顧112

延伸閱讀材料112

習題113

參考文獻114

第7章從模組到對象117

7.1什麼是模組117

7.2內聚119

7.2.1偶然性內聚119

7.2.2邏輯性內聚120

7.2.3時間性內聚120

7.2.4過程性內聚121

7.2.5通信性內聚121

7.2.6功能性內聚121

7.2.7信息性內聚121

7.2.8內聚示例122

7.3耦合122

7.3.1內容耦合122

7.3.2公共耦合123

7.3.3控制耦合124

7.3.4印記耦合125

7.3.5數據耦合125

7.3.6耦合示例126

7.3.7耦合的重要性126

7.4數據封裝127

7.4.1數據封裝和開發128

7.4.2數據封裝和維護129

7.5抽象數據類型133

7.6信息隱藏134

7.7對象135

7.8繼承、多態和動態綁定137

7.9面向對象范型139

本章回顧140

延伸閱讀材料141

習題141

參考文獻142

第8章可復用性和可移植性144

8.1復用的概念145

8.2復用的障礙146

8.3復用案例研究147

8.3.1雷錫恩飛彈系統部門147

8.3.2歐洲航天局148

8.4對象和復用149

8.5在設計和實現過程中的復用149

8.5.1設計復用149

8.5.2套用架構150

8.5.3設計模式151

8.5.4軟體體系結構152

8.5.5基於組件的軟體工程153

8.6關於設計模式的更多內容153

8.6.1FLIC小型案例研究153

8.6.2適配器設計模式154

8.6.3橋接設計模式154

8.6.4疊代器設計模式155

8.6.5抽象工廠設計模式156

8.7設計模式的範疇159

8.8設計模式的優點和缺點159

8.9復用和交付後的維護160

8.10可移植性161

8.10.1硬體的不兼容性161

8.10.2作業系統的不兼容性162

8.10.3數值計算軟體的不兼容性162

8.10.4編譯器的不兼容性163

8.11為什麼需要可移植性165

8.12實現可移植性的技術166

8.12.1可移植的系統軟體166

8.12.2可移植的套用軟體166

8.12.3可移植數據167

8.12.4基於Web的應用程式167

本章回顧168

延伸閱讀材料168

習題169

參考文獻170

第9章計畫與估算174

9.1計畫活動與軟體過程174

9.2估算項目周期和成本175

9.2.1產品規模的衡量標準176

9.2.2成本估算技術178

9.2.3中級COCOMO180

9.2.4COCOMOII182

9.2.5跟蹤周期和成本估算183

9.3估算探討183

9.4軟體項目管理計畫的組成184

9.5軟體項目管理計畫框架185

9.6IEEE軟體項目管理計畫186

9.7對測試進行計畫188

9.8培訓需求188

9.9文檔標準189

9.10計畫和估算的CASE工具189

9.11測試軟體項目管理計畫190

本章回顧190

延伸閱讀材料190

習題191

參考文獻192

第二部分軟體生命周期工作流

第10章需求工作流196

10.1確定什麼是客戶所需196

10.2需求工作流概述197

10.3域的理解197

10.4業務模型198

10.4.1訪談198

10.4.2其他技術198

10.4.3用例199

10.5初始需求200

10.6對套用域的初始理解:MSG基金會實例研究200

10.7初始業務模型:MSG基金會實例研究202

10.8初始需求:MSG基金會實例研究204

10.9需求工作流繼續:MSG基金會實例研究205

10.10修訂需求:MSG基金會實例研究206

10.11測試工作流:MSG基金會實例研究211

10.12什麼是面向對象的需求217

10.13快速原型218

10.14人為因素218

10.15復用快速原型219

10.16需求工作流的CASE工具220

10.17需求工作流的度量220

10.18需求工作流的挑戰220

本章回顧221

延伸閱讀材料222

習題222

參考文獻223

第11章分析工作流224

11.1規格說明文檔224

11.2非形式化規格說明225

11.3小型案例研究的正確性證明回顧226

11.4分析工作流227

11.5實體類的提取228

11.6電梯問題228

11.7功能建模:電梯問題案例研究229

11.8實體類建模:電梯問題案例研究230

11.8.1名詞提取230

11.8.2CRC卡片232

11.9動態建模:電梯問題案例研究233

11.10測試工作流:電梯問題案例研究235

11.11提取邊界類和控制類237

11.12初始功能建模:MSG基金會案例研究238

11.13初始類圖:MSG基金會案例研究239

11.14初始動態建模:MSG基金會案例研究240

11.15修訂實體類:MSG基金會案例研究242

11.16提取邊界類:MSG基金會案例研究243

11.17提取控制類:MSG基金會案例研究243

11.18用例實現:MSG基金會案例研究243

11.18.1EstimateFundsAvailableforWeek用例244

11.18.2ManageanAsset用例248

11.18.3UpdateEstimatedAnnualOperatingExpenses用例251

11.18.4ProduceaReport用例252

11.19類圖增量:MSG基金會案例研究256

11.20軟體項目管理計畫:MSG基金會案例研究257

11.21測試工作流:MSG基金會案例研究257

11.22統一過程中的規格說明文檔257

11.23更多關於參與者和用例的內容258

11.24支持分析工作流的CASE工具259

11.25分析工作流的挑戰259

本章回顧259

延伸閱讀材料260

習題260

參考文獻262

第12章設計工作流264

12.1面向對象設計264

12.2面向對象設計:電梯問題案例研究268

12.3面向對象設計:MSG基金會案例研究270

12.4設計工作流272

12.5測試工作流:設計273

12.6測試工作流:MSG基金會案例273

12.7詳細設計的形式化技術273

12.8實時設計技術274

12.9用於設計的CASE工具274

12.10設計的度量275

12.11設計工作流面臨的挑戰276

本章回顧277

延伸閱讀材料277

習題277

參考文獻278

第13章實現工作流280

13.1選擇程式語言280

13.2良好的編程實踐282

13.2.1使用一致和有意義的變數名282

13.2.2自文檔化代碼的問題283

13.2.3使用參數284

13.2.4為增加可讀性的代碼編排284

13.2.5嵌套的if語句285

13.3編碼標準286

13.4代碼復用286

13.5集成286

13.5.1自頂向下的集成287

13.5.2自底向上的集成288

13.5.3三明治集成288

13.5.4集成技術289

13.5.5集成管理290

13.6實現工作流290

13.7實現工作流:MSG基金會案例研究290

13.8測試工作流:實現290

13.9測試用例的選擇290

13.9.1規格說明測試與代碼測試291

13.9.2規格說明測試的可行性291

13.9.3代碼測試的可行性291

13.10黑盒單元測試技術293

13.10.1等價測試和邊界值分析293

13.10.2功能測試294

13.11黑盒測試用例:MSG基金會案例研究294

13.12玻璃盒單元測試技術296

13.12.1結構測試:語句、分支和路徑覆蓋296

13.12.2複雜性度量297

13.13代碼走查和審查298

13.14單元測試技術的比較298

13.15淨室298

13.16測試中的問題299

13.17單元測試的管理方面內容301

13.18何時重寫而不是調試代碼製品301

13.19集成測試302

13.20產品測試303

13.21驗收測試303

13.22測試流:MSG基金會案例研究304

13.23用於實現的CASE工具304

13.23.1軟體開發全過程的CASE工具304

13.23.2集成開發環境304

13.23.3商業套用環境305

13.23.4公共工具基礎結構305

13.23.5環境的潛在問題306

13.24測試工作流的CASE工具306

13.25實現工作流的度量306

13.26實現工作流面臨的挑戰307

本章回顧307

延伸閱讀材料308

習題309

參考文獻310

第14章交付後維護313

14.1開發與維護313

14.2為什麼交付後維護是必要的314

14.3交付後維護程式設計師要求具備什麼314

14.4交付後維護小型案例研究316

14.5交付後維護的管理317

14.5.1缺陷報告317

14.5.2授權對產品的修改318

14.5.3確保可維護性318

14.5.4反覆維護的問題319

14.6維護問題319

14.7交付後維護技能與開發技能321

14.8逆向工程321

14.9交付後維護期間的測試322

14.10交付後維護的CASE工具323

14.11交付後維護的度量323

14.12交付後維護:MSG基金會案例研究323

14.13交付後維護面臨的挑戰323

本章回顧323

延伸閱讀材料324

習題324

參考文獻325

第15章UML的進一步討論327

15.1UML不是一種方法學327

15.2類圖327

15.2.1聚合328

15.2.2多重性329

15.2.3組合329

15.2.4泛化330

15.2.5關聯330

15.3注釋330

15.4用例圖330

15.5構造型331

15.6互動圖331

15.7狀態圖333

15.8活動圖335

15.9包335

15.10組件圖336

15.11部署圖336

15.12UML圖回顧336

15.13UML和疊代336

本章回顧337

延伸閱讀材料337

習題337

參考文獻337

附錄338

附錄A學期項目:Osric辦公用品和裝飾公司項目338

附錄B軟體工程資源340

附錄C需求工作流:MSG基金會案例研究341

附錄D分析工作流:MSG基金會案例研究341

附錄E軟體工程管理計畫:MSG基金會案例研究341

附錄F設計工作流:MSG基金會案例研究345

附錄G實現工作流:MSG基金會案例研究(C++版)349

附錄H實現工作流:MSG基金會案例研究(Java版)349

附錄I測試工作流:MSG基金會案例研究350

……

相關詞條

相關搜尋

熱門詞條

聯絡我們