




这是由 Grady Booch 于 2006 年 12 月 7 日主持的一个实时在线技术交流的对话记录。在其中,他讨论并回答了与两天前发布的 IBM Rational 软件(IBM Rational Software Delivery Platform Desktop products V7)中的桌面开发工具、SOA 的价值和 Eclipse 的作用等方面相关的问题。(了解本次在线交流的 详细信息。)
Grady Booch:大家好。感谢大家今天下午参加这次关于 IBM Rational 最新发行版的技术交流——不过,可能您在其他时区,则现在不是下午。正如您所知道的,在今年早些时候,我们发布了一组团队产品。本周发布的 Caspian 发行版(这是我们的内部名称)是我们桌面产品的代表。今天和我一起主持这次技术交流的还有 Brian Bryson,他可以回答有关 ASQ [自动化软件质量]方面的任何细节问题,以及 Steve Weaver,他可以回答有关我们的 ADC [分析、设计、构造]产品方面的细节问题。
传言说我使用 IBM ViaVoice 来将语音转换为文本并不是事实,虽然我的确在我的 Mac 上运行 ViaVoice……它非常悦耳。
我想首先简单谈一下我们的发行版主题,然后开始回答大家的提问,我希望这次技术交流能满足大家的需要。让我们从 SOA 开始……
我必须承认,我觉得过去几个月来有关 SOA 的新闻有点好玩。我之所以觉得好玩,一方面是因为,面向服务的体系结构毫无疑问的确可以增加价值——尤其是对于面临着解决联合共同用户体验问题的组织,尽管后台有各种各样的系统。当组织通过收购而发展时,问题就复杂化了,上述系统的复杂性进一步增加。那么,如何将这些系统集合在一起呢?
我还应该提到的是,组织通常拥有一些 Web 化的资产和非 Web 化的资产——主要是遗留系统。SOA,即面向服务的体系结构,为我们提供了统一此类系统的手段。然而,仅使用 SOA 并不能解决所有的问题,虽然在您阅读某些期刊后,感觉似乎的确会如此。
Bill Higgins:SOA 似乎只是一组适用于分布式计算环境的有关信息隐藏和封装的最佳实践。您认为它还有更多的内涵吗?
Grady Booch:Bill 揭示了一个有趣的主题,顺便说一下,我并没有付钱请他提这个问题!看一下我 10 月份在博客上写的有关面向服务的体系结构(是不是有点像骗人的万灵油?)的文章(这里我就不重复了)[http://www.booch.com/architecture/blog.jsp?archive=2006-10.html]。该博客已镜像到 developerWorks 上,地址为 http://www.ibm.com/developerworks/blogs/page/gradybooch。本质上,正如 Bill 所言,并不存在任何关于 SOA 的根本性的新东西,至少本质上不是新的,SOA 实际上只是一种消息传递模式。
然而,还是有一些不同之处。我将带大 S 的 SOA 与带小 s 的 SOA 进行区分——大 S 是经典的 Web 服务,而小 s 是某个系统贡献的真正服务,它们在一组 API 中明确列出,允许您传递消息/对象和从该系统发起/得到某种行为。然而,人们实现服务的方法存在某些区别。同样,它仍然要求集中于基础——即集中于良好的体系结构。关于体系结构的主题可能需要花几个小时来讨论。
Jeff Butler:我似乎觉得它只是带着尖顶帽的销售人员贩卖的另一种“伪劣产品”。空口许诺,在必须交付真正的东西时却溜走了。
Grady Booch:哦,我认为没有那么坏,Jeff,但是人们必须明白一些宣传因素,这就是我倾向于强调 SOA 中的 A [PodCast:新版本 Rational 软件交付平台如何增强 SOA 中的“A”] 的原因……请来点鼓乐……
让我将它简要描述为设定系统中的最重要设计决策的问题——即,所有体系结构都是设计,但是并非所有设计都是体系结构。如果您承认体系结构非常重要,尤其是承认它是 SOA 的基础,承认 SOA 实际上是一种体系结构设计模式,那么由此可以得出结论:提供工具——同时包括 ADC 和 ASQ 工具——同样也存在价值。(好了,让我喘一口气,使我的手指休息一会儿)。我还有一些内容要谈,不过到目前为止,大家有什么问题吗?
如果没有问题,我将为你们准备一些问题……这是我从 Bill Higgins 在昨天的技术交流中学到的一个诀窍。如果你们没有参加昨天的交流,请阅读 Bill 的谈话文本 [http://www.ibm.com/developerworks/java/chat/higgins.html]。它将改变您的生活!
Bill Higgins:Grady,是什么在过去几年来导致人们对 SOA 产生了浓厚的兴趣?它是技术驱动的还是市场驱动的?
Grady Booch:我认为它是事物发展的必然结果。曾经有一段时期,各个组织忙于 Web 化 (Webify) 他们的系统(如果“google”是一个动词,那么我当然也可以使“Webify”成为一个动词)。在此期间,各个团体设法获得合适的体系结构来将过去对客户不可见的功能置于在线。因此,随着 Web 标准和最佳实践的发展而存在技术“推动”,还存在着象征需要此类访问的客户的业务“拉动”。大多数组织都完成了较易访问的资产的 Web 化,现在最引人注目的潮流是使较难访问的资产变得可访问——即传统上处于非以 Web 为中心的遗留系统中的资产。所以,体系结构问题就是……如何做?
当然,此类异类系统之间的连接并不新鲜。远程过程调用、文件共享、FTP 等全都是众所周知的机制,诸如 CICS 等消息传递机制或诸如 CORBA 及其后继者最近所展示的机制也是如此。如果您有以 Web 为中心的系统,并且您希望通过防火墙传递消息,好了,这就是 SOA 的起源。我们如今看到的 Web 服务实际上解决的是使用标准 Web 协议来通过防火墙传递消息的问题——即带大 S 的 SOA。这就是我认为人们当今在为 SOA 而努力的原因,也是为什么支持它们的工具现在是如此及时的原因。
在我的演讲中,我使用这个可视辅助工具——它就是我的手——并且我指出了 Ajax 在这些日子以来如此火热的原因是它处理系统边缘的构件。
(顺便说一下,Ajax 是 Bill 昨天的技术交流的主题[http://www.ibm.com/developerworks/java/chat/higgins.html]。)如果您将我在该可视辅助工具中的手指视为需要联合的竖井,则 SOA 提供了将它们绑定在一起的粘合物。
但是人们必须谨慎地设计消息。我看到太多组织的 SOA 实现方法失败了,因为他们只是随意地放置服务,而忽略了所传递消息的语义。因此,这是一个重要的设计决策,一个体系结构决策(并且是我们的建模工具的最新发行版所重点针对的方面之一,即服务的建模)。我还必须提到上述服务的测试。好了,我的话就到这里。
Michael O'Connell:Grady,我曾经听到有人问起:Eclipse 如何适应该体系结构?
Ferran Rodenas:Grady,我是 Ferran Rodenas。我想提两个一般问题:关于 SOA 的最大顾虑是什么和 Rational 工具集如何帮助缓解那些顾虑?它只是技术变更,或者同时还是组织变更?
Grady Booch:我想知道当前在专心地尝试实现某种程度的服务的组织有多少……
Ferran,您好。好的,我认为存在四个问题。至于 Ferran 有关 SOA 的最大顾虑的问题:我的体验是组织未能理解正确的体系结构——以及导致该体系结构的过程——是正确使用 SOA 的前提。至于工具,请稍等一会儿,让 Steve 和 Brian 插话,并提供有关支持 SOA 的 V7 发行版的细节,然后我将返回到您的问题的组织部分。
Brian Bryson:非常高兴在此介绍测试方面的内容,我将把这个解释留给我尊贵的伙伴 Steve Weaver 先生。
Grady Booch:请继续。
Steve Weaver:Brian,您先请。
Brian Bryson:在测试方面,我们始终将测试划分为两大类……黑盒和白盒。“盒”指的是系统……在黑盒测试中,您无法拥有对系统内部工作原理的可见性。自然而然地,我们会想到在“白盒”中您拥有可见性。在黑盒方面,体系结构是……(Grady,不要抨击我谈到这点)不相关的。我们测试用户所看到的系统。用户看不到系统内部如何工作。基本上,我们提供输入,并验证系统输出是否符合预期。多年来,我们一直在使用这种方式——无论系统是如何构建的——无论是否为 Web 化的。
Grady Booch:我没有抨击权利!并且您是正确的……的确,我将要说的是,最佳的体系结构完全对用户不可见……因为它们应该是那样的……每当体系结构的骨干暴露出来的时候,一定是开发团队犯了严重错误。
Brian Bryson:小伙子,我很高兴听到您这样说。在黑盒方面——QA 团队关注的重点的 90% 都在这方面——SOA 是没有希望的。这没有什么奇怪的。现在,有趣的事情在白盒方面,您在这方面的确 可以看到具体的操作。在白盒测试中,您可以看到服务调用,看到返回内容,可以随心所欲地处理 WSDL。这里,SOA 测试将需要新的技术。作为此发行版的一部分,我们推出了一个新的 SOA 测试产品的 Beta/技术预览版,它可以准确地做这些事情。我们实际上是在此发行版之前不久推出该产品的,并且我们已经收到了大量的反馈。
良好的测试同时需要黑盒和白盒……我们同时在这两方面做了大量的工作。如果有人对了解我们的新技术的 Beta 版感兴趣,请通过 bbryson@ca.ibm.com 与我联系。
Grady Booch:感谢 Brian。Steve,您能否提一下我们在此发行版中提供的一些建模功能?
Steve Weaver:当然可以。在建模方面,我们将软件服务的 UML 概要添加到了 RSA 中,还添加了一个服务建模模板。我们还通过 RUP 将 SOA 的流程指导添加到了流程顾问中。此外,从开发的角度看,我们通过创建崭新的 Web 服务向导,允许您非常容易地构建自顶向下和自底向上的 Web 服务,来改进我们的 Web 服务开发工具。真正关键的一点是,简化新功能的大量使用——易用性是此发行版的主要方面。Grady,该您了。
Grady Booch:谢谢 Steve。Ferran,您还提到了组织影响的问题……在 Jim Coplien 的图书 Organizational Patterns of Agile Software Development 中,他和合著者描述了许多常见结构和超高效团队的实践。使我产生共鸣的一组模式是那些架构师模式和体系结构模式,例如“组织遵循位置”、“组织遵循市场”、“开发人员控制流程”、“架构师控制产品”,而我始终最喜欢的是“架构师还参与实现”。这些模式——我沿用了 Jim 的 PLOP 1 文章中的这些模式名称,尽管它们在组织模式书籍中可能稍有变化——反映了超高效团队的观念,这些团队拥有这样的双星组织:架构师和产品经理紧密合作,然后所有涉众以他们为中心各自分工合作。
我的观点是,如果您已经确定了组织的基础结构,则转向 SOA 并不是革命性的。但是如果您还没有确定组织结构,您将需要重新考虑如何架构以正确实现 SOA。只是将服务扔到某个遗留平台上并查看它们适合在何处工作,这是真正糟糕的 SOA 实现方法。
Bill Higgins:您通过相关图书和文章来推广面向对象的软件开发是相当有影响力的。您如何看待 OO 与 SOA 之间的关系?
Grady Booch:我的回答是一切都归结为基础。我发现超高效团队之间只存在少数共同的原则,这是不太高效的团队所没有的——集中于构建简洁的抽象、关注点之间具有很好的分离、职责平均分布和对简单性的强烈推动。这些特点同时是 OO 和构建良好体系结构的核心,无论使用服务与否。
Frodenas:好的,我还有另一个与您的最后一个意见有关的问题,但是在 Michael 的问题之后:Eclipse 如何适应 SOA?
Grady Booch:简短的回答是 Rational 已使得体系结构决策基于我们在 Eclpipse 平台上的所有面向桌面的工具。由于是开放源代码,该平台为开发人员体验提供了设计良好的基础。过去几年来,我们一直在将我们的工具转向该平台,而此 V7 发行版实际上代表了该项工作的继续成熟。(最好的体系结构是随时间而发展的。)这是公平(虽然有点简短)的评价吧,Brian/Steve?
Steve Weaver:是的,很公平。
Brian Bryson:您的回答也适用于测试方面。
Chris Fagyal:Grady,您好,我是 Chris Fagyal,来自明尼阿波利斯的 BAE Systems。我想详述一下 Eclipse 问题,并讨论一些其他值得关注的方面:Java 与 C++。对于作为 Java 环境来开发的 Eclipse,我想知道 Caspian 如何缓解并解决一直存在于 Eclipse 中(从而存在于 RSA 中)的一些 C++ 问题。似乎所有最辉煌和最好的技术都是纯 Java,或者对于 C++ 来说很难做到。IBM 如何使用 Caspian 以及将来如何处理这种不均衡?
Grady Booch:BAE……哦,我听说过你们……
Chris Fagyal:您多年前到访过 United Defense……我阅读过您为我们写的论文。
Grady Booch:哦,是的,我想起来了。
Chris Fagyal:您当时在场。
Grady Booch:但是您现在告诉这里的所有人我到访过 United Defense,恐怕我必须杀掉所有知道这一点的人……您知道,这涉及到国家安全。
Bill Higgins:<退出
Chris Fagyal:*吃吃的笑*
Michael O'Connell: <躲闪>
Grady Booch:我们 (IBM) 继续竭尽全力地投资于 Eclipse 的 C++ 方面,但是我必须要说的是,我个人对 Eclipse 在该语言方面的情况并不是很熟悉。我自己仅使用 Eclipse(在 Mac 上!)来做 Java 工作。但是我可以通过联系我的 Eclipse 同事来为您获得恰当的答案。Steve,您是否有更确切的答案?
Steve Weaver:Chris,答案是我们在此 Eclipse 版本中提供的 C++ 支持要稳健得多——我们在利用 CDT v3。并且我们还同等地引入了用于 Java 的建模支持。
Chris Fagyal: CDT v3 仍然缺少许多 Java 中的最佳特性……实时可视跟踪、代码检查功能,等等。
Steve Weaver:您说的不错,但是我们将来会构建更多功能的框架——例如代码检查现在就是一个可自定义框架的一部分,该框架允许我们相当容易地构建 C++ 代码规则。我想您会发现 C++ 体验现在变得与 Java 体验更加相似。
Grady Booch:Chris,你们是否主要使用 C++?
Chris Fagyal:至少我在 BAE 参与的项目 Future Combat Systems 是使用 C++,并且还将持续 6-8 年……至少我们摆脱了 Ada 的黑暗时代。
Grady Booch:现在。Ada 帮助产生了 C++,后者又帮助产生了 Java。哦,那么您认识 Alex Bell 吧?
Chris Fagyal: 我知道他……我在 BAE 的一个朋友直接与他一起工作。我阅读过他的有关“因 UML 而死”的论文和你们的反应。
Grady Booch:呵呵,是的,那是一篇有趣的文章。(不好意思提到了一位名人,不过 Alex 是波音方面的架构师——我想应该没有弄错——专门研究未来的战斗机系统……
Chris Fagyal:是的,BAE 方面是 Scott Edgerton……
Grady Booch:……作为纳税人和公民,我希望你们取得成功。感谢你们所做的一切!(我对为救了我的命的 CT 扫描仪编写软件的人们说了同样的话。)
Chris Fagyal:Steve:感谢您的输入。我将在今年夏天的 RUC 上更多地联系你们。Grady:谢谢。
Grady Booch:当然。
Chris Fagyal:那是一个漫长的过程,但一切都会好起来的。但愿会在明年的 RUC[Rational 用户大会]上看到您,Grady。去年我们错过了。
Grady Booch:对不起,我将再次缺席 RUC……那是我的结婚 30 周年纪念日。顺便说一下,虽然稍微有点离题,但是我这些日子以来与游戏业进行了大量的合作,该社区更喜欢使用 C/C++。他们现在也是刚转向 Eclipse(当然,只是其中的一部分人)。
Grady Booch:还有其他 SOA/产品问题吗?还有五分钟时间我们就必须结束谈论了。
Frodenas:一个更特定的问题,在大型机(在我的案例中为 IMS/PLI/DB2)上,我们使用了范例“屏幕-事务-屏幕”。将这更改为 SOA 兼容的形式是非常困难的,因为您无法重用大多数遗留代码。并且如果您尝试重用它们,程序会变得非常低效(MIPS 消耗!)。对它进行 Web 化会更容易。此外,还有大量的组织行为需要更改。您有何建议吗?(并且求助于 IGS [IBM Global Services] 不是有效的回答。)
Grady Booch:求助于 IGS。唔,错误的答案。我要问的第一个问题是体系结构问题:您为何希望在该级别使用 SOA?这是我前面在谈到 Ajax/SOA 组合时所表达的意思。SOA 能够在该基础结构中提供许多凝聚能力,而 Ajax 能够贡献边缘构件的动力,但是我需要更多地了解您的体系结构。
Rbhagat:RAD7 是否可与 WID 6 一起工作?
Steve Weaver:暂时不能。WID 和 RAD7 基于不同的 Eclipse 版本,因此它们不能共享一个 Eclipse Shell。
Rbhagat:谢谢。
Bill Higgins:Grady,作为您的 Handbook of Software Architecture 的一部分,您是否研究过任何系统,从而为您提供了对 SOA 计划所尝试解决的问题的认识?
Grady Booch:实际上还没有,Bill。我已开始深入研究的几个系统都是将 SOA 用作体系结构机制。有一个恰好是银行系统,但迄今为止也就仅此而已。所以,为部分地回答您的问题,可以说我迄今为止为编写该手册而研究过几个大规模使用 SOA 的系统,但是对许多人来说,随着他们系统的发展,他们可以考虑将 SOA 作为理想的体系结构模式。的确,如今大多数组织都是如此——处在该决策点的风口浪尖上。
Michael O'Connell:还有问题吗?
Frodenas:Grady,我还有最后一个问题,是否有任何开发并将 Rational 工具集与中央元数据存储库集成的计划?您知道,重用、更深入的影响分析……
Grady Booch:好的,我们或许应该与 Grant Larsen 进行讨论,他在致力于资产管理器。简短的回答是……要说的太多了。
Chris Fagyal:你们中是否有任何人对 Jazz 的发展和未来有何见解?使用双关语来说,去年在 RUC 上的一个小时长的讲座使我“兴奋不已”。
Grady Booch:关于 Jazz 的发展和未来……这是 Bill 负责的开发团队部分,并且我正在与 Jazz 团队就协作方面进行一些合作。即将推出的一期 Dr. Dobbs Journal 将有一篇我撰写的关于协作的评论,它将告诉您我的一些想法,并且 alphaWorks [http://www.alphaworks.ibm.com/] 正在启动一个 CDE(协作开发环境)部分,其中有一篇更长的文章。所以,您不妨去那里看看。
Michael O'Connell:看来我们的 60 分钟时间已经到了。Grady,再次非常感谢您今天花时间回答大家的问题。感谢大家参加今天的技术交流。
Grady Booch:祝所有人愉快!
参考资料
学习
|