下表显示的是这些角色彼此之间如何进行交互,这些角色执行时需要哪些技能,以及这些执行专业人员可以使用哪些工具:
项目角色 | 执行的任务 | 协助人员 | 必备技能 | 支持工具 |
SOA 架构师 | 解决方案轮廓 需求分析 体系结构决策 组件建模 操作建模 |
所有其他的组员 | 一般 IT 体系结构 J2EE 技术 XML、XML Schema Web 服务概念与平台、最佳实践 |
UML 编辑器、office 系列工具 |
服务建模人员 | 接口契约设计 WSDL 编辑(自顶向下、自底向上、中间相遇) |
商业分析员 SOA 架构师 服务开发人员 |
WSDL XML Schema 和名称空间 J2EE 技术 |
WSDL 编辑器、Java 到 WSDL 生成器 |
流程流设计人员 | 业务流程建模 将原子服务组装成链(流程) |
服务建模人员 商业分析员 SOA 架构师 |
BPEL4WS、WSDL | 图形流建模工具、BPEL4WS 生成器 相应的运行时间支持 |
服务开发人员 | 服务提供者编码 服务请求者编码 提供 SOAP 头处理程序(如果需要的话) 代码文档化 |
SOA 架构师 服务建模人员 互操作性测试人员 |
J2EE、XML、SOAP、WSDL | IDE 中的 Web 服务向导 WSDL 到 Java 的生成器 |
互操作性测试人员 | WSDL 检查 SOAP 信封追踪 一致性测试 故障诊断 |
服务开发人员(请求者端和提供者端) | SOAP、WSDL、WSI Basic Profile Version 1.0 | TCP/IP 通道和监视器 WSI 测试工具 |
UDDI 管理员 | UDDI 建模 UDDI 植入 UDDI 管理 |
SOA 架构师、服务建模人员 | UDDI 数据模型和 API知识数据库设计与管理 | UDDI 浏览器 UDDI4J |
识别角色是有帮助的,但是最关键的是找到具备适当技能的合适人员。不要低估这项工作的重要性。从技术上讲,Web 服务通常是轻量级且相当简单的;这是它们强大的一个方面。采用 Web 服务,孤立的异类系统之间的协作就必以前容易得多。然而,随着这些新的机会的出现,也会带来一些以往没有出现过的错误。Web 服务项目对于您的组织来说或许是一种 新的项目,但是很有可能它们将不是一种 更简单的项目。建议您召集具备在不同平台上工作的经验的专业人员。这对于您的 SOA 架构师来说尤为重要。如果您的组内没有这样的人选,您可以找一些辅助(业余)的副架构师来填补这个空缺,这样做也是可行的。
人员到角色的分派
每个角色都负责整个项目的一个不同方面。前面我们说过,一个人通常可以戴几顶帽子,换句话说,担当多个角色。如果各种具备渊博知识和多方面技能的人在一起工作,就会减少项目的风险。在有些情况下,只有这样的各种人开展有目的的合作才会揭示项目至关紧要的问题并且提出合理的解决方案。在另一方面,通信开销会随着每个新组员的加入而增加。没有单一且简单的答案来解决角色到人员映射的难题。关于应该如何着手处理这个问题存在许多不同的意见和争论(甚至本文的两位作者也没有达成一致的意见!)。
我们不继续这些争论,现在让我们来看一个小例子。考虑下面的场景:我们虚构一家来自保险业的公司,这家公司决定构建一组新的 mid-office 业务应用程序来用于风险和策略管理,这不可避免地涉及两种不同的后端系统。两种后端系统都已经作为 J2EE 应用程序构建好了 —— 一个使用 EJB ,另一个只使用 Servlet、JSP 和 JDBC 来连接到它的客户和契约数据库。
在已启动的开发项目的初始阶段,会将上面定义的角色分派到组员。除了 Web 服务的特定活动之外,还要确定和分派标准的项目任务和角色。下表列出的是这项工作分解训练的结果:
组员 | 分派的角色 | 协助人员 | 实际任务 | 所选择的工具 |
1 | 项目管理员 | (所有组员) | 项目规划 正在进行的项目的管理 |
电子表格、项目管理软件 |
2 | 商业分析员 | 3 | 问题领域分析 | 流程建模工具、office 系列 |
3 | SOA 架构师 服务建模人员 Web 服务的知识转移服务商 |
(所有组员) | 软件和系统体系结构 用于服务调用的 WSDL 模型 |
Rational XDE、WebSphere Studio Application Developer 从其他项目中获取的经验。 |
4a | 服务开发人员 (单元)测试人员 |
3、5、6 | 风险和策略管理服务请求者(客户端)的开发 | WebSphere Studio Application Developer |
4b | 服务开发人员 (单元)测试人员 |
3、5、6 | 两种服务提供者实现(EJB、非 EJB)的开发 | WebSphere Studio Application Developer |
5 | 测试人员 互操作性测试人员 |
3、6 | 集成并连接由 4a 与 4b 开发的组件 | JUnit、WSI 一致性测试工具 TCP/IP 通道监视器 |
6 | 服务部署人员 系统管理员 数据库管理员 UDDI 管理员 |
3、4、5 | 负责整个运行时体系结构 | J2EE 部署工具、Ant 产品的特定管理 GUI |
除了项目管理员和商业分析员以外,所有其他的组员都戴了多顶帽子。而且根本没有分派属于额外角色的流程流建模人员,因为在这个场景中它是不需要的。 同时需要注意的是,这个例子是相当简单的;在实际项目中,需要有更大的项目组。根据我们成功的经验,在核心组的大小最好为 7 到 10 个的范围内。这完全取决于您所处的场景;为了避免您的工作分解结构由于过于复杂而变得难以处理,您可以将项目分解成几个阶段。换句话说,要确保项目按计划循序渐进地进行。这可以让项目组成员有机会学习这项工作并减少项目风险。