第一部分 系统开发项目环境第1章 系统分析和设计方法的环境 3
1.1 系统分析和设计框架 4
1.2 参与者——系统关联人员 5
1.2.1 系统所有者 5
1.2.2 系统用户 5
1.2.3 系统设计人员 7
1.2.4 系统构造人员 7
1.2.5 系统分析员 8
1.2.6 外部服务提供者 11
1.2.7 项目经理 12
1.3 现代信息系统的企业驱动力 12
1.3.1 经济全球化 12
1.3.2 电子商务和电子业务 13
1.3.3 安全和隐私 14
1.3.4 协作与合伙经营 14
1.3.5 知识产权管理 14
1.3.6 持续改进和全面质量管理 15
1.3.7 业务过程重构 15
1.4 信息系统的技术推动力 15
1.4.1 网络和因特网 15
1.4.2 移动和无线技术 17
1.4.3 对象技术 17
1.4.4 协作技术 17
1.4.5 企业应用软件 18
1.5 一个简单的系统开发过程 20
1.5.1 系统启动 22
1.5.2 系统分析 22
1.5.3 系统设计 22
1.5.4 系统实现 22
1.5.5 系统支持和持续改进 23
第2章 信息系统构件 27
2.1 产品——信息系统 27
2.2 信息系统架构框架 29
2.2.1 “知识”构件 31
2.2.2 “过程”构件 33
2.2.3 “通信”构件 35
2.3 网络技术和IS构件 37
第3章 信息系统开发 43
3.1 系统开发过程 45
3.1.1 能力成熟度模型 46
3.1.2 系统生命周期和系统开发方法 47
3.1.3 系统开发基本原理 48
3.2 系统开发过程 51
3.2.1 项目确定 51
3.2.2 FAST项目阶段 53
3.2.3 跨生命周期活动 60
3.2.4 顺序开发和迭代开发 62
3.3 选择开发路线和策略 63
3.3.1 模型驱动开发策略 63
3.3.2 快速应用开发策略 67
3.3.3 商用应用软件包实现策略 69
3.3.4 混合策略 72
3.3.5 系统维护 72
3.4 自动化工具和技术 74
3.4.1 计算机辅助系统工程 74
3.4.2 应用开发环境 76
3.4.3 过程和项目管理器 77
第4章 项目管理 81
4.1 什么是项目管理 82
4.1.1 项目失败的原因 83
4.1.2 项目管理知识体系 84
4.2 项目管理生命周期 88
4.2.1 活动1——协商范围 88
4.2.2 活动2——确定任务 89
4.2.3 活动3——估计任务工期 91
4.2.4 活动4——说明任务之间的依赖关系 92
4.2.5 活动5——分配资源 93
4.2.6 活动6——指导团队工作 96
4.2.7 活动7——监督和控制进展 96
4.2.8 活动8——评估项目结果和经验 102
第二部分 系统分析方法第5章 系统分析 109
5.1 什么是系统分析 110
5.2 系统分析方法 111
5.2.1 模型驱动分析法 111
5.2.2 加速系统分析法 113
5.2.3 需求获取法 114
5.2.4 业务过程重构法 115
5.2.5 FAST系统分析策略 115
5.3 范围定义阶段 115
5.3.1 任务1.1——列出问题和机会 117
5.3.2 任务1.2——协商项目的初步范围 119
5.3.3 任务1.3——评估项目价值 120
5.3.4 任务1.4——计划项目进度表和预算 120
5.3.5 任务1.5——汇报项目计划 120
5.4 问题分析阶段 121
5.4.1 任务2.1——研究问题领域 123
5.4.2 任务2.2——分析问题和机会 125
5.4.3 任务2.3——分析业务过程 126
5.4.4 任务2.4——制定系统改进目标 127
5.4.5 任务2.5——修改项目计划 127
5.4.6 任务2.6——汇报调查结果和建议 128
5.5 需求分析阶段 128
5.5.1 任务3.1——定义需求 130
5.5.2 任务3.2——排列需求的优先次序 131
5.5.3 任务3.3——修改项目计划 131
5.5.4 任务3.4——交流需求陈述 131
5.5.5 持续不断的需求管理 131
5.6 逻辑设计阶段 132
5.6.1 任务4.1a——结构化功能需求 132
5.6.2 任务4.1b——建立功能需求的原型(可选) 132
5.6.3 任务4.2——验证功能需求 132
5.6.4 任务4.3——定义验收测试用例 133
5.7 决策分析阶段 134
5.7.1 任务5.1——确定候选方案 134
5.7.2 任务5.2——分析候选方案 138
5.7.3 任务5.3——比较候选方案 138
5.7.4 任务5.4——修改项目计划 139
5.7.5 任务5.5——推荐一种系统方案 140
5.8 系统分析的未来 140
第6章 需求获取的调查研究技术 145
6.1 需求获取简介 146
6.2 需求获取过程 147
6.2.1 发现和分析问题 147
6.2.2 获取需求 148
6.2.3 归档和分析需求 148
6.2.4 需求管理 150
6.3 调查研究技术 150
6.3.1 对现有文档、表和文件进行抽样 150
6.3.2 调研和实地访问 152
6.3.3 观察工作环境 152
6.3.4 调查表 154
6.3.5 面谈 155
6.3.6 如何进行面谈 156
6.3.7 获取原型 160
6.3.8 联合需求计划 160
6.4 调查研究策略 164
第7章 使用用例建模系统需求 169
7.1 用例建模概述 169
7.2 用例建模的系统概念 171
7.2.1 用例 171
7.2.2 参与者 171
7.2.3 关系 172
7.3 需求用例建模过程 173
7.3.1 第1步:确定业务参与者 174
7.3.2 第2步:确定业务需求用例 174
7.3.3 第3步:构造用例模型图 176
7.3.4 第4步:记录业务需求用例描述 177
7.4 用例和项目管理 180
7.4.1 分级和评估用例 180
7.4.2 确定用例依赖关系 181
第8章 数据建模和分析 185
8.1 数据建模简介 186
8.2 数据建模的系统概念 187
8.2.1 实体 187
8.2.2 属性 188
8.2.3 关系 190
8.3 逻辑数据建模过程 197
8.3.1 战略数据建模 198
8.3.2 系统分析期间的数据建模 198
8.3.3 对系统设计的考虑 199
8.3.4 数据建模的自动化工具 199
8.4 如何构造数据模型 200
8.4.1 获取实体 200
8.4.2 上下文数据模型 202
8.4.3 基于键的数据模型 203
8.4.4 泛化层次体系 205
8.4.5 具有完整属性的数据模型 205
8.5 分析数据模型 207
8.5.1 好的数据模型的标准 208
8.5.2 数据分析 208
8.5.3 规范化举例 209
8.6 将数据需求映射到地点 214
第9章 过程建模 219
9.1 系统建模简介 220
9.2 过程建模的系统概念 222
9.2.1 外部代理 222
9.2.2 数据存储 223
9.2.3 过程概念 223
9.2.4 数据流 227
9.3 逻辑过程建模的过程 233
9.3.1 战略系统规划 233
9.3.2 用于业务过程重构的过程建模 233
9.3.3 系统分析期间的过程建模 234
9.3.4 对系统设计的考虑 234
9.3.5 用于过程建模的调查研究和信息收集 234
9.3.6 用于过程建模的计算机辅助系统工程 235
9.4 如何构造过程模型 236
9.4.1 上下文数据流图 236
9.4.2 功能分解图 238
9.4.3 事件响应或用例清单 238
9.4.4 事件分解图 240
9.4.5 事件图 240
9.4.6 系统图 243
9.4.7 基本图 243
9.4.8 完成规格说明 245
9.5 系统模型的同步 251
9.5.1 数据模型和过程模型的同步 251
9.5.2 过程分布 251
第10章 使用UML进行面向对象分析和建模 257
10.1 面向对象分析概述 258
10.2 对象建模的历史 258
10.3 对象建模的系统概念 258
10.3.1 对象、属性、方法和封装 258
10.3.2 类、泛化和特化 259
10.3.3 对象/类关系 261
10.3.4 消息和消息发送 263
10.3.5 多态性 264
10.4 UML模型图 264
10.5 对象建模过程 265
10.5.1 建模系统的功能性描述 265
10.5.2 构造分析用例模型 266
10.5.3 建模用例活动 272
10.5.4 构造活动图指南 273
10.5.5 绘制系统顺序图 274
10.5.6 构造系统顺序图指南 276
10.5.7 发现和确定业务对象 276
10.5.8 组织对象并确定其关系 281
第11章 可行性分析和系统方案建议 289
11.1 可行性分析和系统方案建议 289
11.1.1 可行性分析——逐步投入法 290
11.1.2 系统分析——范围定义阶段的检查点 291
11.1.3 系统分析——问题分析阶段的检查点 291
11.1.4 系统设计——决策分析阶段的检查点 291
11.2 可行性的6个准则 291
11.2.1 运行可行性 292
11.2.2 文化(或者政治)可行性 292
11.2.3 技术可行性 292
11.2.4 进度可行性 293
11.2.5 经济可行性 293
11.2.6 法律可行性 293
11.2.7 底线 293
11.3 成本效益分析技术 293
11.3.1 系统将花费多少 293
11.3.2 系统将提供什么收益 295
11.3.3 建议的系统合算吗 295
11.4 候选系统的可行性分析 298
11.4.1 候选系统矩阵 298
11.4.2 可行性分析矩阵 301
11.5 系统方案建议 302
11.5.1 书面报告 302
11.5.2 正式汇报 304
第三部分 系统设计方法第12章 系统设计 311
12.1 什么是系统设计 311
12.2 系统设计方法 311
12.2.1 模型驱动方法 311
12.2.2 快速应用开发 316
12.2.3 FAST系统设计策略 316
12.3 系统设计之内部开发——“构造”方案 316
12.3.1 任务5.1——设计应用架构 316
12.3.2 任务5.2——设计系统数据库 318
12.3.3 任务5.3——设计系统接口 320
12.3.4 任务5.4——打包设计说明 321
12.3.5 任务5.5——修改项目计划 321
12.4 系统设计之集成商用软件——“购买”方案 321
12.4.1 任务4.1——研究技术评价准则和选项 322
12.4.2 任务4.2——向供应商征求建议(或报价) 324
12.4.3 任务5A.1——验证供应商的声明和性能 325
12.4.4 任务5A.2——评价和分级供应商建议 325
12.4.5 任务5A.3——签订合同并听取供应商汇报 325
12.4.6 购买决定对剩余生命周期阶段的影响 326
第13章 应用架构和建模 331
13.1 应用架构 332
13.2 物理数据流图 332
13.2.1 物理过程 333
13.2.2 物理数据流 335
13.2.3 物理外部代理 337
13.2.4 物理数据存储 337
13.3 信息技术架构 338
13.3.1 分布式系统 338
13.3.2 数据架构——分布式关系数据库 346
13.3.3 接口架构——输入、输出和中间件 347
13.3.4 过程架构——软件开发环境 351
13.4 系统设计的应用架构策略 353
13.4.1 企业应用架构策略 353
13.4.2 战术应用架构策略 353
13.5 建模信息系统应用架构 353
13.5.1 绘制物理数据流图 353
13.5.2 前置条件 354
13.5.3 网络架构 354
13.5.4 数据分布和技术确定 355
13.5.5 过程分布和技术确定 356
13.5.6 人/机边界 356
第14章 数据库设计 363
14.1 常规文件和数据库 364
14.1.1 常规文件的优缺点 364
14.1.2 数据库的优缺点 365
14.2 系统分析员的数据库概念 365
14.2.1 字段 365
14.2.2 记录 366
14.2.3 文件和表 366
14.2.4 数据库 367
14.3 数据库设计的前置条件——规范化 372
14.4 常规文件设计 372
14.5 现代数据库设计 372
14.5.1 数据库设计的目标和前置条件 372
14.5.2 数据库模式 373
14.5.3 数据完整性和访问完整性 376
14.5.4 角色 377
14.5.5 数据库分布和复制 377
14.5.6 数据库原型 379
14.5.7 规划数据库容量 379
14.5.8 数据库结构生成 379
14.6 数据库设计的前景 381
第15章 输出设计和原型化 387
15.1 输出设计概念和指南 387
15.1.1 输出的分布和观众 387
15.1.2 输出的实现方法 389
15.2 如何设计和原型化输出 393
15.2.1 用于输出设计和原型化的自动化工具 393
15.2.2 输出设计指南 395
15.2.3 输出设计过程 395
15.2.4 基于Web的输出和电子业务 402
第16章 输入设计和原型化 409
16.1 输入设计概念和指南 409
16.1.1 数据收集、数据录入和数据处理 409
16.1.2 输入方法和实现 411
16.1.3 输入设计的系统用户问题 413
16.1.4 内部控制——输入数据的编辑 414
16.2 输入设计的GUI控件 415
16.2.1 常用GUI输入控件 416
16.2.2 高级输入控件 419
16.3 如何设计和原型化输入 419
16.3.1 输入设计和原型化的自动化工具 419
16.3.2 输入设计过程 420
16.3.3 基于Web的输入和电子业务 423
第17章 用户界面设计 429
17.1 用户界面设计概念和指南 429
17.1.1 计算机用户的类型 429
17.1.2 人的因素 430
17.1.3 人类工程学指南 431
17.1.4 对话语气和词汇 431
17.2 用户界面技术 432
17.2.1 操作系统和Web浏览器 432
17.2.2 显示器 432
17.2.3 键盘和指点设备 433
17.3 图形用户界面风格 433
17.3.1 窗口和框 433
17.3.2 菜单驱动的界面 434
17.3.3 指令驱动的界面 440
17.3.4 提问-回答对话 440
17.3.5 用户界面设计的特殊考虑 441
17.4 如何设计用户界面 444
17.4.1 用于用户界面设计和原型化的自动化工具 444
17.4.2 用户界面设计过程 444
第18章 使用UML进行面向对象设计和建模 453
18.1 设计面向对象系统 454
18.1.1 实体类 454
18.1.2 接口类 454
18.1.3 控制类 455
18.1.4 持续类 455
18.1.5 系统类 455
18.1.6 设计关系 455
18.1.7 属性和方法可见性 455
18.1.8 对象责任 456
18.2 面向对象设计过程 456
18.2.1 精炼用例模型 457
18.2.2 建模支持用例情境的类交互、行为和状态 457
18.2.3 修改对象模型以反映实现环境 466
18.3 对象复用和设计模式 468
18.4 设计模式 469
18.4.1 策略模式 470
18.4.2 适配器模式 470
18.4.3 对象框架和组件 471
18.5 其他UML设计图和实现图 472
第四部分 系统分析和设计完成后的工作第19章 系统构造和实现 479
19.1 什么是系统构造和实现 479
19.2 构造阶段 479
19.2.1 任务6.1——构建和测试网络(如果需要) 479
19.2.2 任务6.2——构建和测试数据库 481
19.2.3 任务6.3——安装和测试新软件包(如果需要) 482
19.2.4 任务6.4——编写和测试新程序 482
19.3 实现阶段 483
19.3.1 任务7.1——进行系统测试 483
19.3.2 任务7.2——准备转换计划 483
19.3.3 任务7.3——安装数据库 485
19.3.4 任务7.4——培训用户 485
19.3.5 任务7.5——转换到新系统 486
第20章 系统运行和支持 491
20.1 系统运行和支持的上下文 491
20.2 系统维护 493
20.2.1 任务8.1.1——验证问题 494
20.2.2 任务8.1.2——对程序进行基准测试 495
20.2.3 任务8.1.3——研究和调试程序 496
20.2.4 任务8.1.4——测试程序 496
20.3 系统恢复 497
20.4 技术支持 497
20.5 系统改进 498
20.5.1 任务8.4.1——分析改进请求 499
20.5.2 任务8.4.2——快速修复 499
20.5.3 任务8.4.3——恢复现有物理系统 499
20.6 系统退役 501
词汇表 504