內容簡介
本書是作者在多年從事軟件工程、軟件設計模式課程教學實踐基礎上編寫的。全書共分為8章,通過大量的實例,介紹了實用軟件工程學的原理及設計模式的相關知識,根據軟件開發“工程化”思想,系統地講授了軟件工程學、軟件設計過程、23種先進的設計模式、軟件測試方法、軟件項目管理、應用技術和實用工具等相關知識。全書采用社會所需實際案例為基線,以案例、項目式教學思路貫穿始終,根據需要安排了多個任務和子任務,讀者可以通過實踐掌握課程所學內容。書后配有適量的思考題和練習題,使讀者能夠在學習過程中提高操作能力和實際應用能力。
本書可作為高等院校學生學習軟件工程、軟件設計模式、軟件體系結構設計等課程的教材,也可以作為讀者自學的參考書。
前 言
21世紀是信息社會,信息技術已經滲透到社會的各行各業。隨著計算機應用技術的不斷發展,軟件工程學也滲入軟件研發的各個環節中。實用軟件工程是一門將理論和知識應用于實踐的工程,它借鑒了傳統工程的原則和方法,講解了常用的23種設計模式,以求高效地開發高質量軟件。近年來,大多數高等院校,無論是理工科還是文科專業都將軟件工程作為計算機應用技術類課程的必修課或選修課。
軟件工程是軟件開發組織根據所要開發的軟件特點及項目自身的特點,選擇適合的軟件設計模式,把各種軟件工程學原理的特性和軟件設計模式有機地結合起來,充分利用它們的優點,回避缺陷,有效地提高軟件質量的過程。
本書是軟件開發方法體系的完整體現,有別于傳統軟件工程學,增加了許多實際軟件開發過程中需要的實用方法技術,填補了傳統軟件工程的設計薄弱環節。
全書共分為8章,各章的主要內容安排如下。
第1章主要介紹軟件工程學的基本概念、理論和基礎知識。
第2章主要介紹軟件設計過程基本原理、軟件設計建模工具UML,以及軟件設計環境Visio、PowerDesigner、Violet等。
第3章主要介紹23種先進的設計模式,體現23種設計模式在軟件開發過程中的重要設計地位和作用。
第4章主要介紹在面向對象程序設計語言Java中實現23種設計模式的方法和實踐。
第5章主要介紹面向對象技術。面向對象技術是一種以對象為基礎,以事件或消息驅動對象執行相應的消息處理函數的程序設計技術。
第6章主要介紹各種行之有效的軟件測試方法和技術。
第7章主要介紹23種設計模式在實際應用中的原則和分類。
第8章主要介紹軟件工程控制活動中的質量保證、配置管理和項目管理的基本知識。
本書以學習、應用為目的,以案例貫穿始終,系統地講授了軟件工程學和軟件設計模式,各章均以項目分配任務形式編排,有助于提高學生的實操和實際應用能力。
本書由白文榮主編,在本書策劃和編寫的過程中,得到了清華大學出版社的大力支持,在此表示衷心的感謝。
由于作者水平有限,書中難免存在錯誤和不足之處,敬請廣大讀者批評指正。
為了方便教師教學和學生自主學習,本書配有電子教案、案例源代碼、安裝軟件等,若有需要,可從清華大學出版社網站下載。
編 者
目錄
項目1 軟件工程概述 1
任務1 問題的提出 3
任務要求 3
知識儲備 3
任務實施 7
任務2 軟件工程概述 8
任務要求 8
知識儲備 8
任務實施 10
任務3 面向對象的幾個基本原則 11
任務要求 11
知識儲備 11
任務實施 13
任務4 軟件項目的生命周期 13
任務要求 13
知識儲備 14
任務實施 15
任務5 軟件項目的開發模型 15
任務要求 15
知識儲備 15
任務實施 24
任務6 軟件工程學的基本原則 24
任務要求 24
知識儲備 24
任務實施 25
上機實訓:機票預訂系統 26
項目小結 27
習題 27
項目2 軟件設計過程 29
任務1 洞悉軟件設計過程 30
任務要求 30
知識儲備 30
任務實施 31
任務2 面向對象軟件設計工具UML 32
任務要求 32
知識儲備 32
任務實施 39
任務3 軟件設計過程管理 54
任務要求 54
知識儲備 54
任務實施 55
上機實訓:商品銷售系統 60
項目小結 61
習題 61
項目3 軟件設計模式 63
任務1 創建型模式 64
任務要求 64
知識儲備 64
任務實施 65
任務2 結構型模式 92
任務要求 92
知識儲備 92
任務實施 92
任務3 行為型模式 135
任務要求 135
知識儲備 135
任務實施 136
上機實訓:小動物模式的應用 212
項目小結 213
習題 213
項目4 設計模式案例 217
任務1 命令模式 218
任務要求 218
知識儲備 218
任務實施 219
任務2 觀察者模式 220
任務要求 220
知識儲備 220
任務實施 221
任務3 裝飾模式 224
任務要求 224
知識儲備 224
任務實施 224
任務4 策略模式 226
任務要求 226
知識儲備 226
任務實施 226
任務5 適配器模式 229
任務要求 229
知識儲備 229
任務實施 229
任務6 責任鏈模式 231
任務要求 231
知識儲備 231
任務實施 232
任務7 外觀模式 234
任務要求 234
知識儲備 234
任務實施 234
任務8 迭代器模式 236
任務要求 236
知識儲備 236
任務實施 237
任務9 中介者模式 238
任務要求 238
知識儲備 238
任務實施 239
任務10 工廠方法模式 241
任務要求 241
知識儲備 242
任務實施 242
任務11 抽象工廠模式 244
任務要求 244
知識儲備 244
任務實施 245
任務12 生成器模式 248
任務要求 248
知識儲備 248
任務實施 249
任務13 原型模式 251
任務要求 251
知識儲備 252
任務實施 252
任務14 單件模式 254
任務要求 254
知識儲備 254
任務實施 254
任務15 組合模式 255
任務要求 255
知識儲備 256
任務實施 256
任務16 橋接模式 259
任務要求 259
知識儲備 259
任務實施 260
任務17 狀態模式 261
任務要求 261
知識儲備 261
任務實施 262
任務18 模板方法模式 264
任務要求 264
知識儲備 264
任務實施 264
任務19 代理模式 266
任務要求 266
知識儲備 266
任務實施 267
任務20 享元模式 268
任務要求 268
知識儲備 268
任務實施 269
任務21 訪問者模式 271
任務要求 271
知識儲備 271
任務實施 272
任務22 備忘錄模式 274
任務要求 274
知識儲備 274
任務實施 275
任務23 解釋器模式 278
任務要求 278
知識儲備 278
任務實施 278
上機實訓:工廠方法模式的應用 283
項目小結 283
習題 283
項目5 面向對象技術概述 287
任務1 傳統方法學 288
任務要求 288
知識儲備 288
任務實施 289
任務2 面向對象方法學 296
任務要求 296
知識儲備 296
任務實施 301
任務3 面向對象程序設計語言 301
任務要求 301
知識儲備 301
任務實施 302
上機實訓:學校運動會模型 307
項目小結 308
習題 309
項目6 軟件測試方法 311
任務1 軟件測試概述 312
任務要求 312
知識儲備 312
任務實施 314
任務2 軟件測試方法 316
任務要求 316
知識儲備 317
任務實施 320
任務3 軟件測試管理 331
任務要求 331
知識儲備 331
任務實施 331
任務4 測試工具簡介 338
任務要求 338
知識儲備 338
任務實施 338
上機實訓:軟件測試方法 345
項目小結 346
習題 347
項目7 設計模式的原則和分類 349
任務1 設計模式的原則 350
任務要求 350
知識儲備 350
任務實施 351
任務2 設計模式的分類 351
任務要求 351
知識儲備 351
任務實施 353
上機實訓:觀察者模式 355
項目小結 356
習題 356
項目8 軟件項目管理 357
任務1 軟件項目管理導論 358
任務要求 358
知識儲備 358
任務實施 361
任務2 項目管理流程及方法 362
任務要求 362
知識儲備 363
任務實施 370
上機實訓:項目管理工具Project 2010的
應用 376
項目小結 380
習題 380
參考文獻 385