第一部分 基于组件开发概述 1
第1章 基于组件开发:尝试管理混沌 3
1.1 软件开发的问题 3
1.1.1 软件难以维护 3
1.1.2 应用集成的需要 4
1.1.3 表示方式的改变 7
1.1.4 技术的变化 7
1.1.5 重复不必要的工作 7
1.2 改进软件开发方面的进展 8
1.2.1 提高产能的工具 8
1.2.2 复用 11
1.2.3 灵活性 13
1.2.4 企业范围的信息模型 13
1.3 基于组件开发的承诺 14
1.4 基于组件开发的可行性 15
第2章 什么是组件 17
2.1 定义组件 17
2.1.1 组件是预先构建的 17
2.1.2 组件是黑盒, 只能通过其接口访问 19
2.1.3 组件是可分离的 19
2.1.4 组件组装和部署 19
2.1.5 组件上下文环境 20
2.1.6 支持技术 20
2.1.7 组件的定义 20
2.2 组件粒度 20
2.3 组件环境 22
2.3.1 互操作性 22
2.3.2 不同技术之间的互操作性 22
2.3.3 组件模型 23
2.3.4 包装现有的应用 24
2.3.5 平台无关性 25
2.3.6 服务提供 25
2.4 组件和它们在整体中的位置 26
2.5 部署组件 27
2.5.1 定制和配置 27
2.5.2 组装:把组件粘在一起 27
2.5.3 处理改动 29
2.6 组件模型 30
2.6.1 COM和MTS 31
2.6.2 CORBA 31
2.6.3 Enterprise JavaBeans和JavaBeans 32
2.7 组件规范 33
第3章 从整体观点来看组件 35
3.1 与基于模型开发的关系 36
3.2 需求规格和设计复用 37
3.3 与面向对象技术的关系 38
3.4 软件基础设施和开发自动化 39
3.5 区分不同类型组织的需求 39
3.6 基于组件开发不适用之处 40
3.7 基于组件开发的局限性 41
第二部分 规划过程 43
第4章 在组织中定位组件 45
4.1 基于组件开发初始阶段的范围和负责人 45
4.2 跨越组织部门协调软件 46
4.2.1 使软件结构与组织相符 47
4.2.2 变更管理 47
4.2.3 使用公共的软件解决方案与复用组件 48
4.3 内部市场模型 48
4.3.1 为何与内部市场有关 49
4.3.2 内部市场模型要关注的问题 50
第5章 软件架构和基础设施 53
5.1 架构考虑的两个方面 53
5.1.1 技术架构 54
5.1.2 应用架构 55
5.2 技术环境问题 56
5.2.1 可以互操作的组件的图景 57
5.2.2 实际中的组件互操作 61
5.3 软件基础设施问题 63
5.4 应用架构问题 65
5.4.1 可分离性与架构领域的定义 65
5.4.2 不同领域的组件之间的交互 67
5.4.3 分层的可选项 67
5.4.4 使用事件来控制点到点的通信 68
5.4.5 在实践中使用分层 70
第6章 定义组件 71
6.1 分层的架构 71
6.1.1 业务逻辑层 72
6.1.2 表示层 73
6.1.3 数据访问层 74
6.1.4 分层与工作流 74
6.1.5 事务边界 77
6.1.6 分布问题 77
6.1.7 分层架构和J2EE 78
6.2 组件类型 80
6.2.1 业务组件 80
6.2.2 应用组件 83
6.2.3 数据访问组件 84
6.2.4 工具组件 84
6.3 包装与适配器 84
6.3.1 包装 84
6.3.2 适配器 86
6.4 定义组件范围 87
6.4.1 业务组件 87
6.4.2 应用组件 92
6.4.3 数据访问组件 94
6.5 组件规格说明 94
6.5.1 组件接口基础 95
6.5.2 客户组件与组件组装 95
6.5.3 组件规格说明 96
6.5.4 定义服务 96
第7章 实践基于组件开发 99
7.1 定义基于组件开发初始阶段的范围和预期的好处 100
7.1.1 采用基于组件方式的关键驱动力 100
7.1.2 不要采用基于组件开发的情况 101
7.1.3 采用组件的初始阶段的范围 101
7.2 定义组件蓝图 101
7.2.1 确定业务过程 102
7.2.2 创建一个业务对象模型 102
7.2.3 形成一个组件蓝图 103
7.3 审查当前系统 107
7.3.1 创建当前系统的详细目录 107
7.3.2 评估组件化的恰当性 108
7.4 建立一个架构框架 109
7.4.1 技术环境 109
7.4.2 软件基础设施和开发标准 111
7.4.3 组件模型 112
7.5 组织结构上的考虑 112
7.6 项目规划 113
第8章 项目规划的实用研究 115
8.1 应用集成和更新 115
8.1.1 为什么还要保留遗留应用 115
8.1.2 如何管理遗留应用 116
8.2 集成软件包 119
8.3 外包 120
第9章 基于组件开发的组织 121
9.1 组织基于组件开发 121
9.1.1 优点示范中心 121
9.1.2 将组件开发与组装分离 122
9.1.3 基于应用项目的组件开发 123
9.1.4 技术架构和基础设施 124
9.2 组织规划 124
9.3 组织组件获取和组装 125
第三部分 组件构建与组装 127
第10章 获取组件 129
10.1 筛选候选组件 130
10.1.1 寻找组件 130
10.1.2 初选候选组件 130
10.1.3 正式评估 130
10.1.4 拜访参考顾客 132
10.1.5 选择一个候选对象 132
10.2 评估符合程度并确定改动之处 133
10.2.1 评估符合程度 133
10.2.2 确定改动之处 135
10.3 获取组件 136
第11章 设计组件 139
11.1 为复用而设计 140
11.1.1 为复用而通用化 141
11.1.2 影响复用的设计原则 142
11.2 创建定制点 143
11.2.1 委托 143
11.2.2 参数化/扩展点 144
11.2.3 继承 144
11.3 处理更改 144
11.4 包装已有的软件 145
第12章 组装组件 147
12.1 定制组件 148
12.2 与可复用的组件接口 148
12.3 强制实现组件限制条件 149
12.3.1 不同的期望 149
12.3.2 非直接依赖关系 150
12.3.3 处理影响其他组件的事件 151
12.4 处理功能和数据的不匹配 151
12.4.1 冗余 152
12.4.2 处理数据不匹配 152
12.4.3 组件与数据库间的映射 153
12.4.4 冗余数据 154
12.4.5 重复的记录 155
12.4.6 数据分布 155
12.5 管理组件间的关系 156
12.5.1 跨组件边界维护的关系的类型 156
12.5.2 关系的表示 159
12.5.3 标识有关系的对象 162
12.5.4 管理有关系的对象的删除 163
12.5.5 双向导航 164
12.6 管理跨越组件边界的事务 165
12.6.1 控制的位置 166
12.6.2 对关键事务的设计方法 166
第13章 测试. 认证并维护一个组件目录 169
13.1 创建回归测试包 169
13.2 组件认证 170
13.3 维护一个组件目录 170
13.3.1 组件目录的位置 171
13.3.2 组件目录条目 171
13.3.3 组件检索 171
13.3.4 组件度量标准 172
第四部分 案例研究 173
第14章 使用组件管理混沌 175
14.1 公司 175
14.2 挑战 175
14.3 为变更而组织 176
14.4 建模的挑战 177
14.5 第二次浪潮 177
14.6 组件浪潮 178
14.7 组件蓝图 179
14.8 技术挑战 179
14.9 管理软件变化 180
14.10 结论 180
词汇表 181
参考文献 189
索引 191