圖書簡介
全書共9章,分別是第1章認識軟體架構,第2章架構與架構師的作用,第3章軟體架構的描述與可視化,第4章從需求到架構,第5章軟體架構設計的參考模型,第6章軟體架構的概要設計與實現,第7章基於接口、組件和SOA的架構設計與實現,第8章基於MVC設計模式的架構設計與實現,第9章基於關鍵需求的架構設計、驗證與評審。
目錄
第1章認識軟體架構1
1.1軟體架構與軟體工程1
1.1.1軟體產業的工業化與現代化1
1.1.2軟體系統的複雜性2
1.1.3克服“軟體危機”的進程3
1.1.4現代軟體產業發展的時代特徵4
1.1.5國內軟體產業發展的問題6
1.1.6軟體架構與軟體工程課程的關係7
1.1.7本課程的參考書7
1.2軟體架構概述8
1.2.1軟體架構的定義8
1.2.2軟體架構的視角9
1.2.3軟體架構的表示方法10
1.2.4架構的一般特性10
1.2.5統一過程(RUP)的架構13
1.3感受身邊的架構存在13
1.3.1電燈開關控制系統的架構13
1.3.2滑鼠接口的架構14
1.4兩個小程式的架構分析15
1.4.1兩個小程式15
1.4.2“歡迎”程式的實現過程16
1.4.3小程式的架構實現小結19
1.5實踐與思考19
1.5.1實踐題19
1.5.2思考題20
第2章架構與架構師的作用21
2.1架構是需求將如何被實現的描述22
2.1.1檔案傳輸軟體的架構描述與分析22
2.1.2檔案傳輸軟體的新需求及其改進方案25
2.1.3架構描述表達了系統必須實現的需求26
2.1.4架構描述表達了軟體系統的實現結構27
2.2架構提供滿足關鍵屬性需求的方案29
2.2.1汽車控制系統架構演變的案例分析29
2.2.2軟體系統的關鍵質量屬性需求33
2.2.3關鍵質量屬性需求與系統功能的正交性34
2.3架構是軟體疊代開發的框架36
2.3.1架構是軟體疊代開發的框架36
2.3.2軟體產品開發對架構的依賴39
2.4架構是軟體過程管理的基礎40
2.4.1軟體過程可視性與軟體架構40
2.4.2軟體過程管理的基本內容42
2.4.3微軟VSTS的軟體過程跟蹤47
2.4.4將架構的關鍵構件設定為基線51
2.5軟體過程對架構的反作用52
2.5.1需求影響架構53
2.5.2系統設計影響架構54
2.5.3軟體過程影響架構55
2.5.4組織影響架構56
2.5.5架構的反作用56
2.6軟體架構師的作用、任務與責任58
2.6.1架構師的作用58
2.6.2架構師的任務與責任58
2.6.3從編碼工程師到架構師59
2.7實踐與思考60
2.7.1實踐題60
2.7.2思考題60
第3章軟體架構的描述與可視化61
3.1架構描述與UML架構視圖61
3.1.1架構描述的基本考慮63
3.1.2基於UML4+1的軟體架構視圖64
3.2繪製軟體架構視圖68
3.2.1用Visio2007繪製架構視圖68
3.2.2用RationalRose2003繪製架構視圖72
3.2.3用VS2010繪製架構視圖73
3.2.4架構師的思考76
3.3使用RationalRose逆向分析工具分析架構77
3.3.1RationalRose逆向分析工具概述77
3.3.2對C++項目進行架構逆向分析78
3.3.3“歡迎”程式架構的逆向分析82
3.3.4架構師的思考83
3.4用微軟VS2010逆向分析工具分析架構86
3.4.1微軟VS2010逆向分析工具概述86
3.4.2使用VS2010對五子棋程式進行架構逆向分析90
3.4.3“五子棋”系統架構的逆向分析94
3.4.4架構師的思考99
3.5架構設計階段的軟體工程文檔101
3.5.1系統設計規範的內容101
3.5.2規範系統設計活動過程101
3.5.3規範設計的製品104
3.5.4需要編寫哪些架構視圖和文檔105
3.5.5透過架構視圖表現架構設計的核心內容106
3.6實踐與思考108
3.6.1實踐題108
3.6.2思考題108
第4章從需求到架構109
4.1架構師的需求過程110
4.1.1現代軟體工程的需求過程110
4.1.2需求獲取階段與架構師的關注點111
4.1.3需求分析階段與架構師的關注點114
4.1.4需求處理階段與架構師的關注點116
4.1.5需求評審階段與架構師的關注點119
4.2需求轉換的面向過程方法121
4.2.1理解需求模型的概念與意義122
4.2.2面向過程的需求建模方法123
4.2.3面向過程的需求轉換124
4.2.4面向過程的變換流與事物流轉換125
4.2.5採用變換流方法的案例分析128
4.2.6採用UC矩陣方法的案例分析132
4.2.7面向過程需求轉換方式的弊端135
4.3認識和理解需求分析的OMT模型138
4.3.1面向過程與面向對象的區別138
4.3.2基於UML用例的業務建模139
4.3.3基於UML的類與對象建模140
4.3.4基於UML的動態建模146
4.3.5基於UML的功能建模147
4.3.6電梯控制系統的OMT模型描述與分析148
4.4面向對象的需求轉換方法150
4.4.1面向對象轉換的一般概念150
4.4.2從需求模型到物理架構152
4.4.3從需求模型到開發和運行架構155
4.4.4從需求模型到邏輯架構和數據架構155
4.4.5電梯控制系統的5個架構分析158
4.5ATM擴展項目的需求轉換過程163
4.5.1ATM基本系統163
4.5.2ATM擴展的需求獲取166
4.5.3ATM擴展需求的現狀與對策分析169
4.5.4ATM擴展需求的架構規劃178
4.5.5ATM擴展需求的架構設計與平衡181
4.6軟體架構師的需求參與184
4.6.1需求與架構銜接階段的角色扮演184
4.6.2架構師參與需求深度的“底線”185
4.6.3需求與架構平衡的“底線”185
4.7實踐與思考186
4.7.1實踐題186
4.7.2思考題187
第5章軟體架構設計的參考模型188
5.1傳統系統設計的基本思路和思想方法189
5.1.1傳統系統設計的思路189
5.1.2抽象與求精的設計方法194
5.1.3模組松耦合與強內聚的追求198
5.2兩種典型軟體系統的架構模式分析202
5.2.1開放式系統互連參考模型架構的層次模式202
5.2.2作業系統架構的層次模式205
5.2.3兩種系統架構模式的比較與借鑑208
5.3其他典型軟體架構模型及其參考意義209
5.3.1流程處理系統209
5.3.2客戶/伺服器系統210
5.3.3層狀系統212
5.3.4三級和多級系統212
5.3.5團聚和串列法213
5.3.6代理214
5.3.7聚合和聯邦系統215
5.4實踐與思考216
5.4.1實踐題216
5.4.2思考題216
第6章軟體架構的概要設計與實現217
6.1軟體架構概要設計的任務與過程217
6.1.1系統概要設計的任務217
6.1.2系統概要設計的意義218
6.1.3面向結構的系統概要設計過程219
6.1.4面向對象的系統概要設計過程220
6.2軟體系統概要設計的子系統設計222
6.2.1子系統的含義與特性222
6.2.2子系統所包含的內部組件223
6.2.3基於網路拓撲結構的子系統劃分225
6.2.4基於責任層次的子系統劃分229
6.2.5基於狀態轉換的子系統劃分232
6.2.6子系統的其他劃分方法236
6.2.7子系統劃分中的關注點分離237
6.2.8將子系統分配到硬體238
6.3電梯控制系統的概要設計與實現240
6.3.1需求模型中的子系統劃分與疑問240
6.3.2選擇適合電梯控制系統的架構模型241
6.3.3電梯控制子系統劃分的關鍵因素與分離點243
6.3.4根據實時與並發特性劃分子系統245
6.3.5將邏輯子系統與物理子系統對應起來246
6.3.6電梯控制系統的實現與測試驗收247
6.3.7電梯控制系統概要設計效果的檢驗251
6.4實踐與思考252
6.4.1實踐題252
6.4.2思考題252
第7章基於接口、組件和SOA的架構設計與實現253
7.1接口設計與實現254
7.1.1接口的基本概念254
7.1.2抽象類繼承與接口繼承257
7.1.3面向接口編程與面向接口設計260
7.1.4面向接口設計的實現案例與分析262
7.1.5理解面向接口的設計273
7.2軟體架構設計的模式與風格275
7.2.1設計模式275
7.2.2風格276
7.2.3框架276
7.2.4行業套用框架277
7.2.5模式、風格與框架的區別277
7.3面向對象的設計模式278
7.3.1從軟體架構到設計模式278
7.3.2創建型設計模式279
7.3.3創建型設計模式套用實例分析288
7.3.4設計模式的選擇與運用思路294
7.4組件與組件的運用295
7.4.1組件概念與COM組件的基本特性295
7.4.2使用普通DLL實現的應用程式案例300
7.4.3使用WMP的COM組件實現媒體播放器302
7.4.4理解WMP組件的對象模型304
7.4.5一般COM組件的實現與使用307
7.4.6使用ATL工具開發COM組件320
7.4.7基於組件的架構設計326
7.5基於SOA的分散式系統設計體驗331
7.5.1SOA的概念與架構設計331
7.5.2VSTS分散式系統設計器介紹338
7.5.3定義組件的提供者340
7.5.4定義對組件提供者終節點的控制341
7.5.5定義組件之間的連線343
7.5.6應用程式的實現343
7.6實踐與思考349
7.6.1實踐題349
7.6.2思考題349
第8章基於MVC設計模式的架構設計與實現350
8.1面向對象的MVC設計模式351
8.1.1圖形化與互動式套用的可變需求351
8.1.2MVC組件的作用和運行機制353
8.1.3MVC架構的設計和實現步驟356
8.1.4MVC的更進一步發展357
8.1.5對MVC模式的評價359
8.2基於MVC的Struts套用框架360
8.2.1整合進Struts的相關技術361
8.2.2兩種Struts架構模型363
8.2.3Struts的構成與MVC角色364
8.3搭建一個簡單的Struts應用程式366
8.3.1準備Struts架構開發環境366
8.3.2最簡單的登錄系統的功能需求369
8.3.3搭建一個基於Struts的登錄系統369
8.3.4登錄系統Struts架構的執行過程376
8.3.5實現MVC模式的Struts架構內部機制分析376
8.4SSH架構技術的特點與集成383
8.4.1Spring框架技術與特點384
8.4.2Hibernate框架技術與特點387
8.4.3SSH框架的集成396
8.4.4搭建基於MyEclipse的SSH框架398
8.5開發一個基於SSH架構的登錄系統404
8.5.1SSH架構的各層模組及其任務404
8.5.2Hibernate層的實現404
8.5.3Spring層的實現407
8.5.4Struts層的實現409
8.5.5運行SSHLogin系統411
8.5.6SSHLogin系統各層的實現與分析412
8.5.7SSHLogin系統邏輯架構的總結416
8.6醫藥管理系統分析與SSH架構二次開發419
8.6.1醫藥管理系統的業務背景與需求419
8.6.2醫藥管理系統的架構分析423
8.6.3二次開發的需求與分析431
8.6.4二次開發的邏輯架構設計432
8.6.5二次開發的實現435
8.6.6醫藥管理系統二次開發的總結441
8.7實踐與思考446
8.7.1實踐題446
8.7.2思考題446
第9章基於關鍵需求的架構設計、驗證與評審447
9.1理解架構設計中的關鍵需求448
9.1.1質量屬性需求的一般概念448
9.1.2幾個常見的質量屬性需求454
9.1.3質量屬性需求的場景描述456
9.2基於關鍵需求的架構設計對策458
9.2.1應對關鍵需求的對策思路458
9.2.2可用性戰術459
9.2.3可修改性戰術462
9.2.4性能戰術463
9.2.5易用性戰術464
9.3基於關鍵需求的架構設計465
9.3.1關鍵需求產生的背景和理由465
9.3.2與架構設計有關的約束與限制469
9.3.3影響架構設計的關鍵機制471
9.3.4基於關鍵屬性驅動的架構設計472
9.4架構設計的驗證473
9.4.1架構設計驗證的基本概念473
9.4.2軟體架構驗證的實踐475
9.4.3使用VS2010進行層驗證476
9.4.4驗證MyPlyer程式的架構483
9.5架構的集成測試484
9.5.1集成測試的概念484
9.5.2模擬集成測試體驗486
9.5.3測試StockBroker系統組件之間的操作490
9.6架構設計與評審493
9.6.1針對關鍵質量屬性需求的架構設計評審493
9.6.2針對5個基本架構的架構評審494
9.6.3對一個架構評審案例的點評495
9.7電梯控制系統的架構設計實現與評審503
9.7.1理解學生項目的架構設計評審要求504
9.7.2原有電梯控制系統的架構分析505
9.7.3基於“並發性”的關鍵需求與效果預期505
9.7.4針對“並發性”需求的架構設計與實現506
9.7.5電梯控制系統架構設計的評審意見508
9.8實踐與思考510
9.8.1實踐題510
9.8.2思考題510
參考文獻511
第1部分C#語言基礎
第1章緒論31.1.NETFramework簡介3
1.1.1公共語言運行庫4
1.1.2.NETFramework類庫5
1.2VisualStudio2008簡介5
1.2.1主視窗6
1.2.2選單欄和工具列6
1.2.3編輯器和Windows窗體設計器視窗7
1.2.4工具箱視窗7
1.2.5解決方案資源管理器視窗9
1.2.6屬性視窗9
1.2.7生成和調試工具9
1.3第一個C#程式10
1.3.1創建第一個控制台應用程式10
1.3.2創建第一個WinForm應用程式13
1.3.3創建第一個Web應用程式15
1.4MSDNLibrary的使用18
1.5.NET套用開發過程19
習題20
第2章C#語言基礎22
2.1C#簡介22
2.2變數23
2.2.2變數和常量25
2.2.3變數類型27
2.2.4變數類型之間的轉換28
2.2.5裝箱和拆箱28
2.2.6變數作用域30
2.3數組31
2.3.1一維數組31
2.3.2多維數組32
2.4集合33
2.4.1集合的選擇33
2.4.2常見集合的套用34
2.5字元串37
2.5.1初始化字元串37
2.5.2使用字元串37
2.6語句、運算符和表達式40
2.6.1選擇語句40
2.6.2循環語句41
2.6.3跳轉語句43
2.6.4運算符和表達式43
習題46
第3章C#面向對象編程基礎49
3.1類49
3.1.1聲明類50
3.1.2對象的聲明50
3.1.3繼承51
3.1.4構造函式53
3.1.5析構函式57
3.2方法57
3.2.1方法聲明57
3.2.2方法的修飾符58
3.2.3方法的參數和方法的調用58
3.2.4方法重載59
3.3命名空間60
3.3.1聲明命名空間60
3.3.2訪問命名空間61
3.3.3別名61
3.4結構63
3.5枚舉65
3.6接口66
習題69
第4章進程、執行緒與同步71
4.1基本概念71
4.2多執行緒實例72
4.3進程管理73
4.3.1獲取進程信息73
4.3.2進程操作75
4.4執行緒管理77
4.4.1前台執行緒與後台執行緒77
4.4.2執行緒基本操作78
4.4.3Volatile關鍵字79
4.4.4執行緒外控制項訪問79
4.4.5執行緒池82
4.5執行緒同步84
4.5.1執行緒優先權84
4.5.2執行緒同步84
4.5.3Lock語句85
4.5.4BackgroundWorker控制項86
4.6小結89
習題89
第5章異常處理91
5.1異常實例91
5.2C#異常處理過程93
5.2.1checked與unchecked語句94
5.2.2異常處理語句95
5.2.3throw語句96
5.3通用異常類97
5.4自定義異常類97
5.5小結99
習題99
第2部分WinForm應用程式開發
第6章Windows用戶界面和常用控制項1036.1Windows窗體和控制項簡介103
6.1.1控制項簡介103
6.1.2理解Windows窗體104
6.1.3開發簡單的Windows窗體項目107
6.1.4使用窗體屬性影響窗體形態107
6.1.5窗體常用的事件108
6.2常見窗體控制項109
6.2.1Button控制項109
6.2.2TextBox控制項110
6.2.3Label控制項110
6.2.4LinkLabel控制項111
6.2.5CheckBox控制項111
6.2.6RadioButton控制項111
6.2.7ListBox控制項111
6.2.8ComboBox控制項112
6.2.9PictureBox控制項112
6.2.10作為容器的控制項113
6.2.11使用主選單114
6.2.12用狀態欄提供反饋114
6.3多文檔窗體115
習題120
第7章檔案流和數據流操作122
7.1檔案簡介122
7.2Directory類和DirectoryInfo類123
7.3File類和FileInfo類124
7.4檔案流FileStream126
7.5StreamReader類和StreamWriter類131
7.5.1StreamReader類131
7.5.2StreamWriter類131
7.6BinaryReader類與BinaryWriter類135
7.7MemoryStream流138
習題140
第8章TCP網路編程142
8.1TCP網路編程概念142
8.1.1網路的分層概念142
8.1.2TCP/IP的工作機制144
8.2常見網路類145
8.2.1IPAddress類145
8.2.2IPEndPoint類146
8.2.3IPHostEntry類146
8.2.4Dns類146
8.2.5Socket類148
8.2.6TcpListener類與TcpClient類150
8.3NetworkStream類152
8.4同步TCP編程154
8.4.1伺服器端程式154
8.4.2客戶端程式162
8.5異步TCP編程168
8.5.1基於事件的異步方式168
8.5.2使用IAsyncResult設計模式的異步操作169
8.5.3異步TCP網路編程170
習題171
第9章即時聊天工具綜合開發實訓173
9.1綜合項目陳述173
9.1.1系統總體目標173
9.1.2系統總體模組設計173
9.1.3資料庫設計174
9.1.4關鍵技術174
9.2服務端設計177
9.2.1服務端窗體設計177
9.2.2獲取好友等信息列表的BuildXml類180
9.2.3檢查好友信息CheckTalk類182
9.2.4訊息處理HandleMsg類184
9.2.5配置IP和連線埠信息IpandPort類185
9.2.6用戶管理ManageUser類185
9.2.7資料庫基本操作Mydao類190
9.2.8用戶信息MyUser類191
9.2.9用戶登錄UserLogin類193
9.2.10用戶許可權UserPower類193
9.2.11用戶註冊類UserRegister類194
9.3客戶端設計開發195
9.3.1客戶端登錄模組設計195
9.3.2客戶端註冊模組設計198
9.3.3客戶端個人信息修改模組設計201
9.3.4客戶端傳送信息模組設計203
9.3.5客戶端“查找/添加好友”模組設計211
9.3.6客戶端MyQQ主窗體模組設計213
9.3.7客戶端類簡要介紹214
習題218
第3部分Web應用程式開發
第10章Web站點構建技術22110.1個人網站的創建與發布221
10.1.1創建網站221
10.1.2發布網站223
10.1.3複製網站227
10.2頁面定位與布局方法229
10.3母版頁230
10.3.1母版頁基本概念230
10.3.2母版頁的使用231
10.4CSS樣式使用234
10.5JavaScript使用236
10.5.1JavaScript腳本位置237
10.5.2DOM結構238
10.6小結239
習題239
第11章ASP.NET資料庫套用開發241
11.1ASP.NET伺服器控制項241
11.1.1HTML伺服器控制項和ASP.NET伺服器控制項241
11.1.2驗證控制項242
11.1.3資料庫控制項243
11.2Web常用對象及Global.asax檔案246
11.2.1實例:線上人數統計246
11.2.2Request對象和Response對象247
11.2.3Application對象和Session對象249
11.2.4Global.asax介紹251
11.3WebForm中的Page252
11.3.1頁面代碼模型252
11.3.2頁面事件分析253
11.4網頁的切換與數據傳遞254
11.4.1網頁切換254
11.4.2數據傳遞254
11.5ASP.NET資料庫套用關鍵技術255
11.5.1保存連線255
11.5.2驗證與授權256
11.5.3ASP.NET快取258
11.5.4典型代碼段260
11.6實例:線上論壇261
11.6.1首頁——登錄和註冊262
11.6.2信息瀏覽266
11.6.3文章搜尋267
11.6.4話題發表及回復268
10.6.5修改發表內容272
習題278
第12章網上花店系統綜合開發實訓280
12.1項目介紹280
12.1.1系統功能280
12.1.2系統總體模組設計281
12.1.3資料庫設計281
12.1.4關鍵技術284
12.2網站前台設計287
12.2.1網上花店主頁287
12.2.2鮮花藝術287
12.2.3鮮花詳情289
12.2.4購物車292
12.2.5填寫訂單294
12.3網站後台設計297
12.3.1訂單管理模組設計297
12.3.2鮮花管理模組設計299
12.3.3“我的賬戶”模組設計301
習題302
參考文獻303