第0章 導言(Introduction) 1
0.1 本書針對誰 1
0.2 研究案例 2
0.3 應用的歷史經驗 4
0.4 軟件開發(fā)哲學 5
第1章 軟件開發(fā)業(yè)務(The Business of Software) 7
1.1 時間 7
1.1.1 設置現(xiàn)實的進度表 8
進度安排的規(guī)則 8
在無充足信息時創(chuàng)建進度表 9
1.1.2 分配進度 12
1.2 金錢 13
1.3 團隊規(guī)模 15
1.3.1 增長太快 18
退化向平庸 21
1.3.2 這有誰知道如何進行博弈 21
適當?shù)丶为勯_發(fā)人員 22
組建團隊 23
1.4 無我編程 23
1.4.1 客戶驅動編程 24
不要開發(fā), 去買 25
1.4.2 市場驅動開發(fā) 26
1.4.3 Visual Basic不是為膽小鬼準備的 27
1.4.4 讓微軟和網景為你編程 28
1.4.5 讓自己受制于管理 29
1.4.6 讓自己受制于進度表 29
挑戰(zhàn)需求 30
1.4.7 可用性測試 34
1.4.8 使其運轉起來 36
1.5 孩子, 小心胡話 36
1.5.1 當必須開會時 37
分析與設計會議 37
議題驅動的會議 37
團隊組建會議 38
設計與代碼評審 39
1.6 雇傭優(yōu)秀的人 41
1.6.1 如何面試 42
考核技能 43
1.6.2 如何應聘 45
表明你想要這份工作 45
聆聽 45
絕對誠實 46
扭轉局面 46
1.7 更好地管理 47
1.7.1 給開發(fā)人員提供辦公室 47
1.7.2 對程序員噓寒問暖 48
所有權 48
評審 49
技術專家或管理人員 50
一個激進的建議 50
一個不同的愿景 51
在更大的項目中會怎樣 52
子組隊 52
1.8 實現(xiàn)技術 53
1.8.1 使用源碼控制 54
1.8.2 保存日志 55
1.8.3 知道什么時候結束一天的工作 56
1.8.4 采用一種代碼風格并一直使用 57
1.8.5 適當?shù)厥褂米⑨?59
1.8.6 編排源代碼 60
1.9 加入社區(qū) 61
1.10 面向對象的分析與設計 62
第2章 概念化(Conceptualization) 65
2.1 初始階段 65
2.1.1 路線圖 66
任務的合理大小 66
第一張進度表 67
概念化, 分析與設計 67
初始階段如何排序 68
實現(xiàn), a測試和b測試 68
2.2 前景和角色 69
2.2.1 QA角色 71
2.2.2 誰設計界面 71
2.3 第一次會議 72
2.3.1 充實概念 73
外呼處理各階段 73
易貶值的信息 74
外呼與投票 74
2.4 Hypotenuse的軟件 75
2.5 理解Use Case模型 77
2.5.1 創(chuàng)建上下文關系圖 79
2.5.2 用例場景 81
2.6 創(chuàng)建需求文檔 82
2.6.1 Interchange公司的需求 82
2.6.2 不是馬上需要全部內容 84
2.6.3 Crisis?Call客戶簽約功能需求 84
負載管理 86
2.6.4 預加工功能需求 86
2.6.5 生產階段功能需求 87
2.6.6 加工后階段功能需求 88
2.6.7 運營部功能需求 89
天下無新事 89
2.6.8 銷售和市場部功能需求 90
增加新用戶 90
檢查端口時間 92
2.6.9 管理功能需求 93
2.7 可視化設計 94
2.7.1 Internet功能需求 95
2.7.2 為分析做好準備 96
第3章 分析(Analysis) 99
3.1 深度演練 99
3.1.1 簽約階段分析 100
反光鏡 100
構想 101
客戶 101
3.1.2 預加工階段分析 103
編號 105
3.1.3 生產階段分析 106
呼叫流程 106
區(qū)分呼叫的優(yōu)先級 109
分析與設計 115
選擇正確的電話線 115
轉接呼叫 116
3.1.4 加工后階段和MIS分析 116
3.2 參與者和用例 117
3.3 對象 118
3.4 CRC卡 120
3.4.1 填充CRC卡 122
3.5 過程總結 127
3.6 轉到設計 128
第4章 高層設計(High-Level Design) 131
4.1 平臺探究 131
4.1.1 選擇平臺 132
語音卡 132
語音卡軟件 132
操作系統(tǒng) 135
編程語言 136
微軟完整解決方案 137
4.1.2 經驗教訓 137
封裝 138
4.1.3 Internet應用開發(fā) 140
4.2 集中于高層設計 140
4.2.1 外呼 140
從數(shù)據(jù)庫中取一個號碼給呼叫虛擬機 141
體系結構可伸縮性 143
4.2.2 調度呼叫 144
適于呼叫 145
傾向性 145
優(yōu)先級 145
節(jié)流閥 145
4.2.3 外呼體系結構 146
隊列存在哪 147
處理重呼 147
處理緊急呼叫 148
4.3 呼叫客戶端設計 149
4.3.1 處理災難性失效 150
呼叫服務器失效 151
數(shù)據(jù)庫失效 151
呼叫虛擬機失效 151
4.4 呼叫流程設計 152
4.4.1 與流程相匹配 154
4.4.2 Caller對象設計 155
Call對象 156
4.5 快照(Snapshot)設計 157
4.6 處理呼入 158
4.7 預加工 160
4.7.1 使用觀察者設計模式 161
4.7.2 關于任務管理器的討論 163
任務驗證 163
任務修改 164
主動對象 vs. 被動對象 167
4.8 Internet網站設計 168
4.8.1 使用窗體 168
4.8.2 IDC 168
4.9 完成高層設計 169
4.10 驗證用例 169
4.10.1 標識關鍵用例 169
客戶簽約 170
客戶初始化和管理任務 170
系統(tǒng)做出呼叫 173
客戶或管理者獲取報告 176
4.11 設計評審 176
第5章 低層設計(Low-Level Design) 179
5.1 開始 180
5.2 呼叫服務器 180
5.2.1 scheduler對象 181
向呼叫隊列添加呼叫 181
ODBC和MFC 187
中心區(qū)保護 188
5.2.2 Dispatcher對象 189
呼叫隊列 189
5.2.3 呼叫工作站管理器 189
5.2.4 任務管理器 190
5.2.5 重新考慮隊列管理器 190
5.3 呼叫工作站 193
5.3.1 本地呼叫隊列和本地呼叫隊列管理器 194
5.3.2 外呼 195
呼叫者 195
呼叫報告器 196
數(shù)據(jù)庫問題 196
5.3.3 呼入 197
預加工報告者(reporter) 198
原型 198
5.4 系統(tǒng)監(jiān)控 198
5.5 數(shù)據(jù)庫表 199
5.5.1 數(shù)據(jù)庫表Job 199
5.5.2 數(shù)據(jù)庫表call 200
5.5.3 設計其他表 201
5.6 快照(SnapShot) 201
5.7 進程間通信 201
5.8 組件分解 203
5.9 重訪用例 204
5.9.1 體現(xiàn)到CRC卡 205
5.10 為實現(xiàn)做好準備 209
第6章 實現(xiàn)(Implementation) 213
6.1 構建基礎 213
6.2 修補的開始 214
6.3 構建基礎設施 216
6.3.1 用戶界面 216
6.3.2 裝配數(shù)據(jù)庫 218
6.3.3 構建隊列 222
6.4 進行呼叫的基礎 225
6.4.1 呼叫和多任務 226
6.5 構建流程引擎 229
6.5.1 標識基本元素 230
6.5.2 用C++實現(xiàn)流程 232
6.6 將客戶端從服務端分離 234
6.6.1 測試服務器 235
6.6.2 測試客戶端 236
6.6.3 在數(shù)據(jù)庫中管理呼叫隊列 240
6.6.4 源代碼控制 241
6.6.5 重新思考分發(fā)算法 241
6.6.6 從隊列中獲取呼叫 246
6.6.7 測試呼叫客戶機 250
6.7 構建數(shù)據(jù)庫隊列 250
6.7.1 輔助性函數(shù) 255
6.8 下一步 258
第7章 開始凍結功能(Getting to Feature Freeze) 261
7.1 穩(wěn)步前進 261
7.2 區(qū)分優(yōu)先級 262
7.2.1 呼叫調度 262
重新洗牌 263
折中方案 265
我們如何為V1版編碼 266
后傾向任務 267
恰到好處編程 267
7.2.2 按時實現(xiàn)V1 267
為功能指定優(yōu)先級 268
7.2.3 其他優(yōu)先級 270
報表和表格 271
7.2.4 硬件 277
數(shù)據(jù)庫和呼叫服務器 277
呼叫工作站 278
7.2.5 功能剪裁 279
7.2.6 設計和代碼評審 280
7.3 重建流程 281
7.3.1 預加工流程 283
實現(xiàn)流程 287
重用性 289
完成預加工 290
7.4 進程間通信設計 291
7.4.1 COM的哲學 291
7.4.2 路線圖和指南 292
7.4.3 抽象級別 292
7.5 在COM中實現(xiàn)IPC 293
7.5.1 取回接口 294
命名接口 295
7.5.2 如何讓服務器成為一個COM對象 296
7.5.3 類對象 297
7.5.4 實現(xiàn)緊急呼叫管理 298
管理引用計數(shù) 302
7.5.5 處理一個緊急呼叫 303
客戶端 303
服務端 306
7.5.6 使其運行起來 309
7.6 異常處理 309
7.6.1 你運行正常嗎 313
7.7 進入終點直道 314
7.7.1 功能凍結——是一個缺陷還是遺漏的功能 315
第8章 交付1.0版(Delivering Version 1.0) 317
8.1 最后接觸 317
8.2 那些倒胃口的事 318
8.3 實現(xiàn)Web頁 319
8.3.1 構建數(shù)據(jù)倉庫 320
8.3.2 ASP頁面 322
8.3.3 將其一起放入報表 324
打印報表 325
8.4 使用咨詢多么有效 329
8.5 功能剪裁 330
8.5.1 我們剪裁什么 330
8.6 如何繼續(xù)設計 332
8.6.1 設計遵從需求 332
8.6.2 平臺決策 332
全微軟解決方案 332
Visual Voice 333
編程語言 333
8.6.3 全組件體系結構 334
呼叫隊列 335
呼叫虛擬機體系結構 336
任務管理器 337
評估修改 337
8.6.4 實現(xiàn)設計 338
8.7 中途換馬 338
8.7.1 使用Visaul Voice ActiveX控件 339
8.7.2 在Artisoft的一天 341
呼叫轉移 342
閃爍信號(WinkStart) 345
8.8 設計和代碼評審 346
8.8.1 評審CRC卡 352
8.8.2 用例評審 354
8.9 交付 357
8.10 歷程回顧 358
8.11 致謝 359
附錄A 分析和設計基礎(Fundamentals of Analysis and Design) 361
A.1 從頭到尾的軟件開發(fā)過程 361
A.2 面向對象的分析與設計 362
A.2.1 控制復雜度 363
A.2.2 面向對象vs.結構化 364
A.3 過程 366
A.3.1 概念化或初始階段 366
A.3.2 細化階段 367
分析 367
設計 367
A.3.3 實現(xiàn)或構建階段 368
A.3.4 移交:測試與交付 369
A.3.5 開發(fā)周期 369
A.4 方法學 369
A.5 工具和技術 370
A.5.1 Rational Rose 370
A.5.2 CRC卡 370
A.6 休息一下 371
附錄B 資源(RESOURCES) 373
B.1 書籍 373
B.1.1 C++ 373
B.1.2 COM 373
B.1.3 數(shù)字電話 374
B.1.4 MFC 374
B.1.5 面向對象分析. 設計與編程 374
B.1.6 Tcl 375
B.1.7 Web編程 375
B.2 雜志 375
B.3 網站 376
</font>