MDA目前在以下领域得到了应用: *银行业 *保险业 *公共企业(特别在金融管理领域) *嵌入式系统 *后勤保障系统
您将会看到,MDA确在其中起到了作用。
MDA的流程 MDA的实现主要集中在以下3个步骤:
1 首先,您用UML对您的应用领域进行高度抽象的建模,这个模型和实现它的技术(或者底层技术)完全没有关系。这个模型我们称之为平台无关模型(PIM)。
2 然后,PIM将被转换为一个或多个平台相关模型(PSM)。这个翻译的过程一般是自动实现的。PSM将用一个特定的实现技术来描述您的系统。它将用到这种技术所提供的种种架构,比如EJB, 数据库模型, COM组件
等等。
3 最后,PSM将被翻译成 源代码
。因为每个PSM已经完全依靠某种特定的技术,这个步骤一般是比较简单的。
MDA流程中最难的一步,是从PIM生成一个PSM。它要求您对您要应用的基础技术具有丰富且巩固的知识,另一方面,源模型(PIM)必须具备自动生成PSM所要求的足够信息量。
通过模板生成:MDA-light?!
在MDA的实际应用当中,一个较容易的实现是通过模板(我们称之为MDA-light)。这样,平台相关模型这一步可以说是被跳过了,您可以直接从高度抽象的PIM生成源代码。您将继续在MDA-light的基础上进行真正意义的编程:您必须在源代码,而不是UML,编写细致的应用逻辑。
* 业界(甚至是整个世界)一个被广泛接受的事实是:只有变化是永恒的。技术永远在革新。这在中间件领域尤其明显,当然还有数据库技术, 操作系统
,甚至是编程语言都经常变化。这些技术明显比应用领域的基本概念要变化的快。
* 如果您在某一特定的应用领域工作,在这个领域中的项目都具有一定的相似性。整个 应用程序
族或者不同的项目都属于同一个应用领域,那么,MDA或者生成流程将特别适合于您 。
* 您对建模的投资将更加持久的有效--远长于您目前实现它所应用的技术。这将更有利于保护您的投资。 * 您具有了技术上的灵活性。 * 您将不再受技术或应用所具有的不同变化周期的影响--在MDA的帮助下,您可以中立的保持两方面的多样性。
* MDA意味着更多的"组装"而不是"开发"--在为一个应用建立PIM的时候,您基本上没有技术上的 周旋
空间。这对于今天的很多开发人员来说,还是难以想象的。 * 软件开发的创造性在一定程度上减弱了。开发人员常常觉得,就一种新技术展开争论,在技术的前沿工作,是十分吸引人的。可是在MDA流程下,大量的工作是建立模型,这和具体的技术相距甚远,但符合OMG的建议。 * 潜在的不成熟性。UML2.0还在幼年时代。MDA工具出现的时间也相对很短。这里还隐藏了很多风险。
* 数据和应用程序的移植:目前在商业领域经常需要面对的问题是,大量的数据和应用程序如何向新的,MDA为基础的系统中移植。纯粹的MDA流程将把数据模型和数据库表结构看成是技术细节。它们不应该对平台无关模型(PIM)层产生任何影响--那么,您的MDA工具或生成器也负责生成 数据库脚本
吗?
* 软件维护:编制不同的发行版本, 补丁
或者升级,是对目前正在运行的程序进行维护的重要组成部分。MDA怎么处理这些问题呢?每次进行一次全新的安装?
* 投资报酬率(Return-on-Investment):从什么样的环境和系统开始计算?从应用MDA的第二个项目?还是从第五个开始?
* 购买 软件架构
还是自主开发?
* 生成器和相关工具造成了对其生产商的依赖--这种对生产商的依赖是我们以往一直极力避免的。
* 企业应用整合(EAI):高度的抽象,听起来不错--但是对于已经在运转的应用系统,怎么得到这种抽象呢?
您可以看到--潜在很多实际问题(其回答都具有重要的意义)。这些问题正是我们创立openMDA