案例A1 Agate公司案例研究——简介 1
A1.1 Agate公司介绍 1
A1.2 现有计算机系统 2
A1.3 使用当前系统的业务活动 2
A1.4 需求总结 3
案例B1 FoodCo公司案例研究——简介 5
B1.1 FoodCo公司介绍 5
B1.2 现如今的FoodCo公司 8
B1.3 建议 11
第1章 信息系统 13
1.1 介绍 13
1.2 信息系统的历史 14
1.3 信息系统现状 16
1.4 何为系统 17
1.4.1 系统思考 18
1.4.2 系统思考的益处 21
1.4.3 信息系统发展过程中的系统 26
1.5 信息与信息系统 27
1.5.1 信息 27
1.5.2 组织中信息系统的工作 27
1.5.3 信息技术 29
1.6 成功战略 30
1.6.1 确认商业战略 30
1.6.2 信息系统的贡献 31
1.6.3 信息系统和信息技术战略 31
1.7 本章小结 33
问题回顾 33
案例研究、练习和项目 33
拓展阅读 34
第2章 信息系统开发面临的挑战 35
2.1 介绍 35
2.2 挑战 36
2.2.1 终端用户的视角 37
2.2.2 客户的视角 39
2.2.3 开发者的视角 41
2.3 出错的原因 42
2.3.1 质量问题 43
2.3.2 生产率问题 45
2.4 道德层面 46
2.4.1 项目内的道德问题 47
2.4.2 更为广泛的道德问题 48
2.5 失败的代价 49
2.6 本章小结 50
问题回顾 50
案例研究、练习和项目 50
拓展阅读 51
第3章 面对挑战 52
3.1 介绍 52
3.2 问题响应 54
3.2.1 质量问题 54
3.2.2 安装和运行问题 55
3.2.3 生产率问题 56
3.3 项目的生命周期 57
3.3.1 瀑布型生命周期模型 58
3.3.2 原型 60
3.3.3 迭代和增量型开发 62
3.4 方法论 62
3.4.1 统一软件开发过程 63
3.4.2 敏捷方法 64
3.5 信息系统开发管理 65
3.6 用户参与 67
3.7 软件开发工具 68
3.7.1 模型和技术支持 68
3.7.2 软件构建 70
3.7.3 使用软件开发工具的益处和困难 71
3.8 本章小结 71
问题回顾 71
案例研究、练习和项目 72
拓展阅读 72
第4章 面向对象 73
4.1 介绍 73
4.2 基本概念 73
4.2.1 对象 74
4.2.2 类和对象 75
4.2.3 类成员 76
4.2.4 一般化和特殊化 78
4.2.5 封装、信息隐藏和消息传递 82
4.2.6 多态 84
4.2.7 对象状态 85
4.3 面向对象的起源 86
4.4 当前的面向对象语言 88
4.5 本章小结 89
问题回顾 90
案例研究、练习和项目 90
拓展阅读 91
第5章 建模的概念 92
5.1 介绍 92
5.2 模型和图 92
5.2.1 模型的含义 93
5.2.2 图 94
5.2.3 模型和图的区别 96
5.2.4 UML中的模型 97
5.2.5 开发模型 98
5.3 绘制活动图 99
5.3.1 活动图的目的 99
5.3.2 活动图的标记法 100
5.4 开发过程 103
5.4.1 基本原则 104
5.4.2 主要活动 105
5.5 本章小结 109
问题回顾 109
案例研究、练习和项目 110
拓展阅读 110
第6章 需求获取 111
6.1 介绍 111
6.2 用户需求 111
6.2.1 当前系统 112
6.2.2 新的需求 113
6.3 事实发现技术 114
6.3.1 背景阅读 114
6.3.2 访谈 115
6.3.3 观察 117
6.3.4 文档抽样 118
6.3.5 调查问卷 119
6.3.6 记住上述技术 121
6.3.7 其他技术 122
6.4 用户参与 122
6.5 文档需求 123
6.6 用例 125
6.6.1 目的 125
6.6.2 标记法 126
6.6.3 使用原型支持用例 130
6.6.4 CASE工具支持 131
6.6.5 使用用例图的业务模型 131
6.6.6 测试和用例 132
6.7 需求获取和建模 132
6.8 本章小结 133
问题回顾 135
案例研究、练习和项目 135
拓展阅读 136
案例A2 Agate公司案例研究——需求模型 138
A2.1 介绍 138
A2.2 需求列表 138
A2.3 执行者和用例 139
A2.4 术语表 144
A2.5 最初架构 144
A2.6 需求建模活动 145
第7章 需求分析 147
7.1 介绍 147
7.2 分析模型 148
7.2.1 分析模型和其他模型的区别 148
7.2.2 好的分析 149
7.3 分析类图:概念和标记法 150
7.3.1 类和对象 150
7.3.2 特性 151
7.3.3 特性和状态 152
7.3.4 实例之间的链接 153
7.3.5 类之间的关联 154
7.3.6 关联和状态 154
7.3.7 多重性 155
7.3.8 操作 156
7.3.9 操作和状态 158
7.3.10 分析类图的稳定性 158
7.4 用例实现 159
7.5 绘制类图 161
7.5.1 健壮性分析 161
7.5.2 分析类stereotype 161
7.5.3 确认类 164
7.5.4 从通信图到类图 168
7.5.5 查找对象和类的其他方法 169
7.5.6 添加和定位特性 173
7.5.7 添加关联 175
7.5.8 确定多重性 175
7.5.9 寻找操作 175
7.5.10 初始操作分配 175
7.6 CRC卡 176
7.7 整合分析类图 178
7.8 本章小结 179
问题回顾 179
案例研究、练习和项目 180
拓展阅读 183
案例A3 Agate公司案例研究——需求分析 184
A3.1 介绍 184
A3.2 用例实现 184
A3.3 整合分析类图 189
A3.4 需求分析活动 189
第8章 完善需求模型 191
8.1 介绍 191
8.2 软件和规范重用 192
8.2.1 为何重用 192
8.2.2 难以重用的原因 192
8.2.3 面向对象对重用的贡献 193
8.3 进一步向结构中添加内容 195
8.3.1 寻找和建模一般化 195
8.3.2 寻找和建模组合 199
8.3.3 组合或聚集与一般化的合并 200
8.3.4 组织分析模型——包和依赖关系 201
8.4 重用软件组件 202
8.4.1 组件的UML标记法 203
8.4.2 基于组件的开发 204
8.4.3 组件建模实例 205
8.5 软件开发模式 207
8.5.1 模式的起源 207
8.5.2 什么是软件模式 208
8.5.3 分析模式 209
8.6 本章小结 211
问题回顾 211
案例研究、练习和项目 211
拓展阅读 212
第9章 对象交互 213
9.1 介绍 213
9.2 对象交互和协作 214
9.3 交互顺序图 215
9.3.1 基本概念和标记法 216
9.3.2 管理顺序图 223
9.3.3 分支 226
9.3.4 延续 227
9.3.5 异步消息 227
9.3.6 时间约束 228
9.3.7 实时系统和并发的建模 229
9.3.8 准备顺序图的指导原则 230
9.4 通信图 230
9.4.1 基本概念和标记法 231
9.4.2 通信图中的信息标签 232
9.5 交互概览图 234
9.6 时序图 236
9.7 模型一致性 237
9.8 本章小结 238
问题回顾 238
案例研究、练习和项目 238
拓展阅读 239
第10章 规范对象操作 240
10.1 介绍 240
10.2 操作规范的角色 241
10.3 合同 242
10.4 描述操作逻辑 243
10.4.1 非算法型方法 243
10.4.2 算法型方法 246
10.5 对象约束语言 251
10.6 创建操作规范 253
10.7 本章小结 255
问题回顾 255
案例研究、练习和项目 256
拓展阅读 256
第11章 规范控制 257
11.1 介绍 257
11.2 状态和事件 258
11.3 基本标记法 259
11.4 深度标记法 264
11.4.1 组合状态 264
11.4.2 并发状态 265
11.4.3 进入和退出伪状态 267
11.4.4 交叉和选择伪状态 268
11.4.5 历史伪状态 268
11.4.6 状态机的特殊化 269
11.5 准备状态机 269
11.5.1 行为型方法 270
11.5.2 生命周期方法 273
11.6 协议型和行为型状态机 273
11.7 一致性检查 274
11.8 质量准则 274
11.9 本章小结 275
问题回顾 275
案例研究、练习和项目 276
拓展阅读 276
案例A4 Agate公司案例研究——深入分析 277
A4.1 介绍 277
A4.2 顺序图 277
A4.3 状态机 278
A4.4 操作规范 280
A4.5 对类图的进一步修订 281
A4.6 需求分析的深入活动 283
第12章 设计 285
12.1 介绍 285
12.2 设计和分析有何不同 285
12.2.1 设计 286
12.2.2 迭代型生命周期中的设计 287
12.3 逻辑设计和物理设计 287
12.4 系统设计和详细设计 289
12.4.1 系统设计 290
12.4.2 详细设计 290
12.5 设计的质量和目标 290
12.5.1 目标和约束 291
12.5.2 设计折中 294
12.5.3 设计中的可衡量目标 295
12.6 本章小结 296
问题回顾 296
案例研究、练习和项目 297
拓展阅读 297
第13章 系统架构 298
13.1 介绍 298
13.2 架构的含义 299
13.3 生成架构模型的原因 301
13.4 对系统架构的影响 302
13.4.1 现有系统 303
13.4.2 企业级架构 304
13.4.3 技术参考架构 305
13.5 架构风格 305
13.5.1 子系统 306
13.5.2 分层和分区 307
13.5.3 MVC架构 311
13.5.4 分布式系统架构 314
13.5.5 架构和开发的组织结构 316
13.6 并发 317
13.7 处理器分配 318
13.8 系统设计标准 319
13.8.1 数据库设计 319
13.8.2 用户界面设计标准 319
13.8.3 构建准则 319
13.9 Agate软件架构 320
13.10 本章小结 321
问题回顾 322
案例研究、练习和项目 322
拓展阅读 322
第14章 详细设计 324
14.1 介绍 324
14.2 在面向对象的详细设计中添加的内容 325
14.3 特性和操作规范 325
14.3.1 特性的数据类型 325
14.3.2 派生特性 326
14.3.3 主操作 327
14.3.4 操作签名 328
14.3.5 可见性 329
14.4 将特性和操作归入类中 331
14.4.1 分配职责 331
14.4.2 接口 332
14.4.3 耦合和内聚 333
14.4.4 Liskov替换原则 336
14.5 设计关联 336
14.5.1 一对一关联 337
14.5.2 一对多关联 338
14.5.3 多对多关联 340
14.5.4 保持类最小 341
14.6 完整性约束 342
14.6.1 引用完整性 342
14.6.2 依赖约束 343
14.6.3 域完整性 344
14.7 设计操作算法 344
14.8 本章小结 345
问题回顾 345
案例研究、练习和项目 346
拓展阅读 346
第15章 设计模式 347
15.1 介绍 347
15.2 软件开发模式 348
15.2.1 框架 348
15.2.2 模式目录和语言 348
15.2.3 软件开发原则和模式 348
15.2.4 模式和非功能性需求 349
15.3 文档模式——模式模板 349
15.3.1 模板内容 349
15.3.2 模板的其他方面 350
15.4 设计模式 350
15.4.1 设计模式的类型 350
15.4.2 创建型模式 351
15.4.3 结构型模式 355
15.4.4 行为型模式 359
15.5 如何使用设计模式 363
15.6 使用模式的优缺点 364
15.7 本章小结 365
问题回顾 365
案例研究、练习和项目 365
拓展阅读 365
第16章 人机交互 367
16.1 介绍 367
16.2 用户界面 368
16.2.1 什么是用户界面 368
16.2.2 对话隐喻 368
16.2.3 直接操纵隐喻 370
16.2.4 良好对话的特征 372
16.2.5 风格指导 374
16.3 用户界面设计方法 375
16.3.1 非正式方法和正式方法 375
16.3.2 实现可使用性 381
16.4 标准和合法需求 382
16.5 本章小结 383
问题回顾 384
案例研究、练习和项目 384
拓展阅读 384
第17章 设计边界类 386
17.1 介绍 386
17.2 表示层结构 387
17.3 为用户界面建立原型 388
17.4 设计类 390
17.5 使用顺序图设计交互 393
17.6 类图回顾 399
17.7 用户界面设计模式 400
17.8 使用状态机建模界面 402
17.9 本章小结 408
问题回顾 409
案例研究、练习和项目 409
拓展阅读 409
第18章 数据管理设计 411
18.1 介绍 411
18.2 持久性 412
18.2.1 持久性需求 412
18.2.2 存储机制概述 412
18.2.3 持久性架构 413
18.3 文件系统 415
18.3.1 文件和记录结构 415
18.3.2 文件的组织方式 416
18.3.3 文件访问 416
18.3.4 文件类型 419
18.3.5 文件使用示例 420
18.4 数据库管理系统 421
18.4.1 文件和数据库 421
18.4.2 数据库的类型 423
18.5 设计关系型数据库管理系统 425
18.5.1 关系型数据库 425
18.5.2 数据建模和规范化 426
18.5.3 将类映射为表 430
18.6 设计对象数据库管理系统 432
18.7 分布式数据库 436
18.8 数据管理类设计 438
18.8.1 分层结构 438
18.8.2 PersistentObject超类 439
18.8.3 数据库代管者框架 441
18.8.4 使用数据管理产品或框架 445
18.9 本章小结 447
问题回顾 447
案例研究、练习和项目 447
拓展阅读 448
案例A5 Agate公司案例——简介 449
A5.1 介绍 449
A5.2 架构 449
A5.3 用例示例 450
A5.4 类图 451
A5.5 顺序图 455
A5.6 数据库设计 458
A5.7 状态机 459
A5.8 设计活动 460
第19章 实现 461
19.1 介绍 461
19.2 软件实现 462
19.2.1 软件工具 462
19.2.2 编程和文档标准 464
19.3 组件图 465
19.4 部署图 467
19.5 软件测试 469
19.5.1 由谁执行测试 469
19.5.2 测试内容 470
19.5.3 测试文档 472
19.6 数据转换 473
19.7 用户文档和培训 474
19.7.1 用户手册 474
19.7.2 用户培训 474
19.8 实现策略 475
19.9 评审和维护 476
19.9.1 下一步骤 476
19.9.2 评审过程和评估报告 477
19.9.3 维护活动 478
19.10 本章小结 480
问题回顾 480
案例研究、练习和项目 481
拓展阅读 481
第20章 软件重用 482
20.1 介绍 482
20.2 为什么要进行重用 482
20.2.1 项目的选择 484
20.2.2 组织的结构 485
20.2.3 重用合适的单元 486
20.2.4 组件标准 487
20.3 为重用规划策略 489
20.3.1 选择视角法 489
20.3.2 RSEB 490
20.4 商用组件 491
20.5 案例研究示例 493
20.6 Web服务 499
20.7 本章小结 501
问题回顾 501
案例研究、练习和项目 501
拓展阅读 502
第21章 软件开发过程 503
21.1 介绍 503
21.2 过程、方法和方法论 504
21.2.1 方法论 504
21.2.2 为何使用方法论 506
21.3 统一软件开发过程 506
21.4 动态系统开发方法 510
21.4.1 Atern生命周期 511
21.4.2 DSDMAtern技术 513
21.4.3 DSDM中的项目选择 514
21.5 Scrum 514
21.6 极限编程 516
21.7 选择方法论时的考虑 517
21.8 硬性与软性方法论 519
21.9 本章小结 521
问题回顾 521
案例研究、练习和项目 522
拓展阅读 522
附录A 标记法汇总 523
附录B 部分解决方案和答案指导 531
术语表 540