UML软件工程组织

规则与自由--为何选择 CORBA 和 Java 技术?
Dave Bartlett
顾问,作家和讲师
2000 年 6 月

 

欢迎光临有关 Java 和 CORBA 技术的这一定期栏目。此第一期将概述 Java 和 CORBA 技术,并帮助您决定如何最有效地让它们为您工作。以后的栏目将提供 Java 和 CORBA 编程的内行指导和代码。

在 1855 年,时年 26 岁的 Joshua Chamberlain 是 Bowdoin 大学的修辞学教授,在一次演讲中讲述了规则与自由之间的关系,以及二者之间失衡带来的危害。没有自由的规则是专制,而没有规则的自由是混乱。

公司信息系统部门的管理可能会形成过度的规则或过度的自由。规则过度的一个例子是只适用于一个厂商的管理指令,这样您的系统在扩展时,或在与潜在的公司合作伙伴集成时就会有问题。如果自由过多,个人或者开发小组就会根据他们来选择技术,这样,如果这些技术高手遇到他们“生疏的”优先认股权这样的话题时,扩展或集成又会变得很困难。开发人员可能会受业务环境不断变化的影响。

努力实现环境平衡
多种环境因素在决定我们的系统必须遵守的的规则。存在于一个业务环境中的系统应有足够长的寿命,以为公司和客户创造价值。持续为一个组织创造长期价值的系统必须能够应付经常的变化。合并、并购、新的管理和市场力量在改变系统的环境,以及通过使用该系统完成业务过程的用户的需求。变化是一个常数,必须将它添加到评估方程式中。当然,我们无法预知未来,但我们可以分析趋势并努力设计我们的系统,使之能够接受大量潜在的变化或系统扩展,同时对组织产生的影响又可以尽可能小。

为了做出正确的决策和评估,我们需要理解支配着环境的规则,以及我们的应用程序在该环境中应具有的自由。要理解的最重要的规则是,我们的系统处在不断发展的组织中,无论是在公司、政府还是教育组织中,都是业务问题支配技术问题。许多体系结构和平台评估都将主要问题漏掉了。他们通常会将两项或多项技术并排放在一起,然后比较技术特性列表。在完成的时候,大多数参与者会达成一致,因为他们不愿与评估小组中嗓门最大、最强硬、势力最大的派别争吵。显然,这不是作出选择的最有效方法。

确定关键业务问题
将业务问题转换为对组织需要的实际评估意味着应该着重考虑以下问题:

  • 组织内的技术力量
  • 不抑制程序员的开发环境
  • 不对应用程序构成限制的运行时环境
  • 运行时环境和开发环境的许可证问题和法律问题(可以说是规则的规则)
  • 可找到有经验的开发人员
  • 能找到收费合理、有见地的咨询服务公司
  • 对组织的客户的影响
  • 对厂商或技术合作伙伴的影响
  • 组织的文化和策略
  • 组织的上级管理联盟
  • “大亨们”是否在讨论并购或合并
  • 谁是决策者

这些业务问题通常比其他问题(比如采用每个会话一个线程的并发模型还是每个请求一个线程的并发模型)更重要。您可以走进老板的办公室,向他发表足可以充斥一次软件研讨会的技术观点,但是除非您强调了组织的需要,否则您的观点将显得非常空洞。

走近 CORBA
现在让我们用 CORBA 来解决这些问题。CORBA 是一种开放的行业标准,它由参加“对象管理组织 (OMG)”的 600 多家公司支持。这些公司包括硬件或软件公司、电信公司、金融公司、大学、医药研究所和政府机构。OMG 并不实现它们自己的规范;它们依靠厂商的实现,这些实现有助于将竟争导向到功能、性能、价格和令人鼓舞的质量这些方面。OMG 本身是一个充满生机的、活跃的组织,它的许多官员在各种会议上撰写文章并发表演讲。只要留心观察,您就会发现,他们总在关注将会对他们的组织及您的组织造成影响的各种变化。

除上述优势外,CORBA 还提供了高度的交互操作性。这保证了在不同的 CORBA 产品基础之上构建的分布式对象可以相互通信。因此,大型组织不需要让所有开发工作都使用同一 CORBA 产品。OMG 一直都在辛勤工作,以期通过加强 CORBA 规范来提供更高级别的可移植性。要知道,当厂商分化它们的产品以及开发人员添加限制时,他们往往会忘记源代码的可移植性这回事。应当指出,可移植性比以前的版本中有了实质性的提高,并且随着因特网互操作性协议 (IIOP) 形成强大的用户集团和众多联盟,可移植性将越来越好。

我们很快变会转入 Java 技术的讨论,但我们首先应将语言看作一个整体。信息系统有一个确定的规则,那就是不确定性本身。Java 编程语言可能是今天的语言,但谁知道下一种更好的语言哪一天会使它暗然失色呢?应当知道,就在此时此刻,有人正在他们的车库里加紧编写一种更好的语言。因此,CORBA 的语言无关性有助于您长期遵守信息系统环境中的这一法则。CORBA 支持一种经典的、稳定的对象模型,此模型将继续步入未来。它一直在凭借最新的语言不断发展,并将继续向极好的新语言(如 Python)扩展。

Java 编程语言及其他
此环境中可确定的另一点是它的复杂性,这是我们所不愿看到的,Java 技术正好可以派上用场。它能很好地满足需要,因为它的简单性将有助于使开发免于陷入底层的复杂性中。Java 语言在许多方面隐藏了一些基本的细节,但就整体而言,Java 技术改善从分析、设计到执行的整个过程。

在分析和设计阶段要尽可能统一和明确地表示您的系统和设计模式,这一点极为重要。“统一建模语言 (UML)”事实上已成为表述系统设计的标准语言。UML 的开发是协作方面的一个极好的故事。UML 的标准化过程也相当引人注意。UML 的标准化是通过 OMG 来实现的。OMG 认识到需要一种标准建模语言,以跨语言和环境表示分布式对象模型。Java 对象模型与 CORBA 对象模型几乎完全相同,从而很容易将您的 UML 设计映射到一种实现,同时也很容易将 UML 图映射到“Interface Definition Language (IDL)-to-Java 语言”实现。

经过分析和设计阶段的对象将有一些接口,这些接口定义其他组件将如何访问您的服务。现在需要将那些接口转换为一种实现语言。Java 技术同样使这一步很容易实现。“IDL-to-Java 语言”映射相当直接。Java 语言和 IDL 分别提供一个接口关键字,这个关键字有助于说明用每种语言表示的数据类型之间的紧密关系。Java 技术提供一种从 Java 接口到 IDL 的反向映射。不管选择哪个方向,您都应该用 IDL 表示您的接口;这使您能够使用所有其他语言与 IDL 之间的映射,并为您提供了为了在以后具有更大自由而必需的语言无关性。

体系结构案例
除了设计之外,系统的体系结构也很重要。许多系统体系结构问题涉及对现有系统(数据库、旧有系统、可用对象或可能用其他语言编写的应用程序)的包含。Java 和 CORBA 语言使得可以(而不是禁止)将这些强有力的系统带给更多的用户。这是一种解放 -- 许多系统可能许多年来都在发挥着作用。实际上,当完成将这些系统带入新世纪的所有 Y2K 以前的工作以后,在今后几年它们可能还将存在。由于其编译后的字节码结构,Java 语言将使您很容易创建和分发可移植的对象,而 CORBA 允许您将这些对象与您计算环境的其余部分进行连接和集成。

我并非想用 Java 和 CORBA 技术来排斥 Java 语言的远程方法调用、Enterprise JavaBeans 技术、Microsoft 的 DCOM 甚至 DCE。Java 和 CORBA 语言最自由的方面是,OMG 正在加紧工作,以确保 CORBA 对象能够与大量的对象交互。当然,这些连接中有些较难实现,并且最终可能会很脆弱。请记住,这些类型的连接常常是因体系结构、成本、时间或业务等原因而建立的。

小结

Joshua Chamberlain,带着对规则与自由的见解,在他在 Bowdoin 大学的演讲过后七年加入北方军队。他功勋卓著,并证明是一位有力的领导者,所以格兰特将军选择让他接受北弗吉尼亚军队的正式投降。他向投降的士兵行行军礼以示尊敬的行动,是恢复被四年内战破坏的破碎混乱的联邦系统的新基础中的第一块基石。理解规则和自由的平衡为任何类型的组织中的参与者提供了一个清晰的图像,使他们能够清楚地理解他们所面对的系统和要避免的混乱之间的相互影响。


异构系统环境中的互连和通信应该是我们的目标。我们要选择使用的规则应该允许自由地将现有的系统与新系统一起使用以满足组织的需要。在这个变化的世界中,当变化被强加给您的组织时,这些规则应该提供最大的灵活性。这些规则提供了一个限制我们的自由的操作范围,这样就不易陷入盲目开发的境况。

谢谢您耐着性子读完了本文。我不是修饰学教授,我只是一个程序员,所以在下一期我们将开始讨论一个简单的示例 -- 使用 Java 技术实现 CORBA 客户机和服务器。

参考资料

作者简介
Dave Bartlett 住在宾夕法尼亚州的 Berwyn,他的职业是顾问、自由作家和讲师。他是 Hands-On CORBA with Java 的作者,这是公共开设或为组织内部开设的一个 5 日课程。目前,Dave 正在将课程材料改编为一本书,书名为 Thinking in CORBA with Java,成书之后可以免费下载。Dave 拥有宾州工学硕士学位和商学硕士学位。可以通过 dbartlett@pobox.com 与他联系。

 



版权所有:UML软件工程组织