书籍详情
Clouds to Code中文版:使用UML、设计模式和C++进行应用程序开发的案例研究
作者:(美)Jesse Liberty著;徐锋译
出版社:电子工业出版社
出版时间:2005-05-01
ISBN:9787121005695
定价:¥45.00
购买这本书可以去
内容简介
本书通过完整展现真实大型项目(Crisis·Call)的开发全过程,详尽阐述和研究在软件开发中进行分析\设计和实现的原则与实践.全书内容精当、组织严谨,如实地描述和分析真实项目开发中的方方面面,毫不掩饰:作者见解独到、精辟,充分展现其深厚的开发经验和软件工程智慧。对于项目经理、系统设计师以及广大开发人员,本收是不可多得的经验汇集与实践参考书。Original English language edition published by Apress L.P.,2560 Ninth street, Suite 219,Berkeley, CA94710 USA. Copyright©2003by Apress L.P. simplified Chinese-language edition copyright© 2005by Pubishing House of Electronics Industry.All rights reserved.
作者简介
Jesse Liberty是Liberty Associates有限公司的创始人及总裁。该公司主要提供面向对象分析、设计和编辑的培训、咨询及导师服务。Jesse Liberty是六本与面向对象编辑和C++相关书籍的作者,曾是AT&T、施乐和PBS的著名软件工程师和体系构架师,花旗银行技术冲副总。徐锋:高级程序员,系统分析员,中国系统分析员顾问团(CSAI)华东区首席顾问,《程序员》杂志社专栏作者,厦门方元软件工程有限公司创始人。具有丰富的技术管理、需求分析、体系结构设计、软件开发、市场策划的从业经验。现在致力于系统分析与设计、需求工程、软件过程改进等领域的研究。近期在《程序员》杂志上开设的“实战OO”专栏及《开发高手》杂志上开设的“大话Design”专栏,深入浅出地、实例化地讲述了基于软件建模技术的面向对象开发过程,受到众多读者好评,两度入选“读者最喜欢的文章”。
目录
第0章 导言(Introduction) 1
0.1 本书针对谁 1
0.2 研究案例 2
0.3 应用的历史经验 4
0.4 软件开发哲学 5
第1章 软件开发业务(The Business of Software) 7
1.1 时间 7
1.1.1 设置现实的进度表 8
进度安排的规则 8
在无充足信息时创建进度表 9
1.1.2 分配进度 12
1.2 金钱 13
1.3 团队规模 15
1.3.1 增长太快 18
退化向平庸 21
1.3.2 这有谁知道如何进行博弈 21
适当地嘉奖开发人员 22
组建团队 23
1.4 无我编程 23
1.4.1 客户驱动编程 24
不要开发, 去买 25
1.4.2 市场驱动开发 26
1.4.3 Visual Basic不是为胆小鬼准备的 27
1.4.4 让微软和网景为你编程 28
1.4.5 让自己受制于管理 29
1.4.6 让自己受制于进度表 29
挑战需求 30
1.4.7 可用性测试 34
1.4.8 使其运转起来 36
1.5 孩子, 小心胡话 36
1.5.1 当必须开会时 37
分析与设计会议 37
议题驱动的会议 37
团队组建会议 38
设计与代码评审 39
1.6 雇佣优秀的人 41
1.6.1 如何面试 42
考核技能 43
1.6.2 如何应聘 45
表明你想要这份工作 45
聆听 45
绝对诚实 46
扭转局面 46
1.7 更好地管理 47
1.7.1 给开发人员提供办公室 47
1.7.2 对程序员嘘寒问暖 48
所有权 48
评审 49
技术专家或管理人员 50
一个激进的建议 50
一个不同的愿景 51
在更大的项目中会怎样 52
子组队 52
1.8 实现技术 53
1.8.1 使用源码控制 54
1.8.2 保存日志 55
1.8.3 知道什么时候结束一天的工作 56
1.8.4 采用一种代码风格并一直使用 57
1.8.5 适当地使用注释 59
1.8.6 编排源代码 60
1.9 加入社区 61
1.10 面向对象的分析与设计 62
第2章 概念化(Conceptualization) 65
2.1 初始阶段 65
2.1.1 路线图 66
任务的合理大小 66
第一张进度表 67
概念化, 分析与设计 67
初始阶段如何排序 68
实现, 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 创建上下文关系图 79
2.5.2 用例场景 81
2.6 创建需求文档 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
区分呼叫的优先级 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
操作系统 135
编程语言 136
微软完整解决方案 137
4.1.2 经验教训 137
封装 138
4.1.3 Internet应用开发 140
4.2 集中于高层设计 140
4.2.1 外呼 140
从数据库中取一个号码给呼叫虚拟机 141
体系结构可伸缩性 143
4.2.2 调度呼叫 144
适于呼叫 145
倾向性 145
优先级 145
节流阀 145
4.2.3 外呼体系结构 146
队列存在哪 147
处理重呼 147
处理紧急呼叫 148
4.3 呼叫客户端设计 149
4.3.1 处理灾难性失效 150
呼叫服务器失效 151
数据库失效 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
系统做出呼叫 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
中心区保护 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
数据库问题 196
5.3.3 呼入 197
预加工报告者(reporter) 198
原型 198
5.4 系统监控 198
5.5 数据库表 199
5.5.1 数据库表Job 199
5.5.2 数据库表call 200
5.5.3 设计其他表 201
5.6 快照(SnapShot) 201
5.7 进程间通信 201
5.8 组件分解 203
5.9 重访用例 204
5.9.1 体现到CRC卡 205
5.10 为实现做好准备 209
第6章 实现(Implementation) 213
6.1 构建基础 213
6.2 修补的开始 214
6.3 构建基础设施 216
6.3.1 用户界面 216
6.3.2 装配数据库 218
6.3.3 构建队列 222
6.4 进行呼叫的基础 225
6.4.1 呼叫和多任务 226
6.5 构建流程引擎 229
6.5.1 标识基本元素 230
6.5.2 用C++实现流程 232
6.6 将客户端从服务端分离 234
6.6.1 测试服务器 235
6.6.2 测试客户端 236
6.6.3 在数据库中管理呼叫队列 240
6.6.4 源代码控制 241
6.6.5 重新思考分发算法 241
6.6.6 从队列中获取呼叫 246
6.6.7 测试呼叫客户机 250
6.7 构建数据库队列 250
6.7.1 辅助性函数 255
6.8 下一步 258
第7章 开始冻结功能(Getting to Feature Freeze) 261
7.1 稳步前进 261
7.2 区分优先级 262
7.2.1 呼叫调度 262
重新洗牌 263
折中方案 265
我们如何为V1版编码 266
后倾向任务 267
恰到好处编程 267
7.2.2 按时实现V1 267
为功能指定优先级 268
7.2.3 其他优先级 270
报表和表格 271
7.2.4 硬件 277
数据库和呼叫服务器 277
呼叫工作站 278
7.2.5 功能剪裁 279
7.2.6 设计和代码评审 280
7.3 重建流程 281
7.3.1 预加工流程 283
实现流程 287
重用性 289
完成预加工 290
7.4 进程间通信设计 291
7.4.1 COM的哲学 291
7.4.2 路线图和指南 292
7.4.3 抽象级别 292
7.5 在COM中实现IPC 293
7.5.1 取回接口 294
命名接口 295
7.5.2 如何让服务器成为一个COM对象 296
7.5.3 类对象 297
7.5.4 实现紧急呼叫管理 298
管理引用计数 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 实现Web页 319
8.3.1 构建数据仓库 320
8.3.2 ASP页面 322
8.3.3 将其一起放入报表 324
打印报表 325
8.4 使用咨询多么有效 329
8.5 功能剪裁 330
8.5.1 我们剪裁什么 330
8.6 如何继续设计 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 实现设计 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 从头到尾的软件开发过程 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 实现或构建阶段 368
A.3.4 移交:测试与交付 369
A.3.5 开发周期 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 数字电话 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>
0.1 本书针对谁 1
0.2 研究案例 2
0.3 应用的历史经验 4
0.4 软件开发哲学 5
第1章 软件开发业务(The Business of Software) 7
1.1 时间 7
1.1.1 设置现实的进度表 8
进度安排的规则 8
在无充足信息时创建进度表 9
1.1.2 分配进度 12
1.2 金钱 13
1.3 团队规模 15
1.3.1 增长太快 18
退化向平庸 21
1.3.2 这有谁知道如何进行博弈 21
适当地嘉奖开发人员 22
组建团队 23
1.4 无我编程 23
1.4.1 客户驱动编程 24
不要开发, 去买 25
1.4.2 市场驱动开发 26
1.4.3 Visual Basic不是为胆小鬼准备的 27
1.4.4 让微软和网景为你编程 28
1.4.5 让自己受制于管理 29
1.4.6 让自己受制于进度表 29
挑战需求 30
1.4.7 可用性测试 34
1.4.8 使其运转起来 36
1.5 孩子, 小心胡话 36
1.5.1 当必须开会时 37
分析与设计会议 37
议题驱动的会议 37
团队组建会议 38
设计与代码评审 39
1.6 雇佣优秀的人 41
1.6.1 如何面试 42
考核技能 43
1.6.2 如何应聘 45
表明你想要这份工作 45
聆听 45
绝对诚实 46
扭转局面 46
1.7 更好地管理 47
1.7.1 给开发人员提供办公室 47
1.7.2 对程序员嘘寒问暖 48
所有权 48
评审 49
技术专家或管理人员 50
一个激进的建议 50
一个不同的愿景 51
在更大的项目中会怎样 52
子组队 52
1.8 实现技术 53
1.8.1 使用源码控制 54
1.8.2 保存日志 55
1.8.3 知道什么时候结束一天的工作 56
1.8.4 采用一种代码风格并一直使用 57
1.8.5 适当地使用注释 59
1.8.6 编排源代码 60
1.9 加入社区 61
1.10 面向对象的分析与设计 62
第2章 概念化(Conceptualization) 65
2.1 初始阶段 65
2.1.1 路线图 66
任务的合理大小 66
第一张进度表 67
概念化, 分析与设计 67
初始阶段如何排序 68
实现, 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 创建上下文关系图 79
2.5.2 用例场景 81
2.6 创建需求文档 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
区分呼叫的优先级 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
操作系统 135
编程语言 136
微软完整解决方案 137
4.1.2 经验教训 137
封装 138
4.1.3 Internet应用开发 140
4.2 集中于高层设计 140
4.2.1 外呼 140
从数据库中取一个号码给呼叫虚拟机 141
体系结构可伸缩性 143
4.2.2 调度呼叫 144
适于呼叫 145
倾向性 145
优先级 145
节流阀 145
4.2.3 外呼体系结构 146
队列存在哪 147
处理重呼 147
处理紧急呼叫 148
4.3 呼叫客户端设计 149
4.3.1 处理灾难性失效 150
呼叫服务器失效 151
数据库失效 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
系统做出呼叫 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
中心区保护 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
数据库问题 196
5.3.3 呼入 197
预加工报告者(reporter) 198
原型 198
5.4 系统监控 198
5.5 数据库表 199
5.5.1 数据库表Job 199
5.5.2 数据库表call 200
5.5.3 设计其他表 201
5.6 快照(SnapShot) 201
5.7 进程间通信 201
5.8 组件分解 203
5.9 重访用例 204
5.9.1 体现到CRC卡 205
5.10 为实现做好准备 209
第6章 实现(Implementation) 213
6.1 构建基础 213
6.2 修补的开始 214
6.3 构建基础设施 216
6.3.1 用户界面 216
6.3.2 装配数据库 218
6.3.3 构建队列 222
6.4 进行呼叫的基础 225
6.4.1 呼叫和多任务 226
6.5 构建流程引擎 229
6.5.1 标识基本元素 230
6.5.2 用C++实现流程 232
6.6 将客户端从服务端分离 234
6.6.1 测试服务器 235
6.6.2 测试客户端 236
6.6.3 在数据库中管理呼叫队列 240
6.6.4 源代码控制 241
6.6.5 重新思考分发算法 241
6.6.6 从队列中获取呼叫 246
6.6.7 测试呼叫客户机 250
6.7 构建数据库队列 250
6.7.1 辅助性函数 255
6.8 下一步 258
第7章 开始冻结功能(Getting to Feature Freeze) 261
7.1 稳步前进 261
7.2 区分优先级 262
7.2.1 呼叫调度 262
重新洗牌 263
折中方案 265
我们如何为V1版编码 266
后倾向任务 267
恰到好处编程 267
7.2.2 按时实现V1 267
为功能指定优先级 268
7.2.3 其他优先级 270
报表和表格 271
7.2.4 硬件 277
数据库和呼叫服务器 277
呼叫工作站 278
7.2.5 功能剪裁 279
7.2.6 设计和代码评审 280
7.3 重建流程 281
7.3.1 预加工流程 283
实现流程 287
重用性 289
完成预加工 290
7.4 进程间通信设计 291
7.4.1 COM的哲学 291
7.4.2 路线图和指南 292
7.4.3 抽象级别 292
7.5 在COM中实现IPC 293
7.5.1 取回接口 294
命名接口 295
7.5.2 如何让服务器成为一个COM对象 296
7.5.3 类对象 297
7.5.4 实现紧急呼叫管理 298
管理引用计数 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 实现Web页 319
8.3.1 构建数据仓库 320
8.3.2 ASP页面 322
8.3.3 将其一起放入报表 324
打印报表 325
8.4 使用咨询多么有效 329
8.5 功能剪裁 330
8.5.1 我们剪裁什么 330
8.6 如何继续设计 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 实现设计 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 从头到尾的软件开发过程 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 实现或构建阶段 368
A.3.4 移交:测试与交付 369
A.3.5 开发周期 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 数字电话 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>
猜您喜欢