Model Driven Architecture |
Translate This Page To: Deutsche Francaise Espanol Italiana Português Russian Chinese Korean |
What is Model Driven Architecture (MDA)? What is MDA all about?
The following essay gives a synopsis of MDA and its objectives that is intended to provide a simplified explanation of the subject.
The Object Management Group (OMG) has been supporting a progressive initiative called "Model Driven Architecture" (MDA). Though the details of its realization can be complex, the basic principles that drive MDA are very simple. MDA is founded upon the simple objective to make software designs easily portable between different operating platforms. The general idea is to develop an abstract business model for the problem domain that a software system addresses using a modeling tool that represents the model in an operating platform independent notation, such as the Unified Modeling Language (UML). The objective is to represent the software system in a manner that can then be transformed or mapped to particular operating platforms with minimal customization imposed on the software designer(s). This allows the software designer to focus their efforts on a business model that will outlast the technologies that realize the business model in a software system as operating platform technologies evolve over time. The objective is to separate as much of the application from the technology specifics that constitute the operating platforms. The business model is separated from the technological details of the software system so that the business model can be reused without modifications when it is mapped to different operating platforms.
Java and XML developers will be familiar with these ideas because both of these technologies share similar objectives with MDA. Both Java and XML provide a means of specifying operating platform-independent details of a software system that allow these details to easily be ported to different operating platforms. Java provides a programming language that is easily portable to different operating systems that run on different types of machines, provided that a Java Virtual Machine (JVM) has been developed that provides the adaptation of Java to the specific operating platforms that the Java source code is ported. XML provides a text-based representation of data that is easily portable to different operating platforms, as well. Both Java and XML provide constructs for ensuring that strong typing can be preserved.
In order to understand MDA and what it attempts to achieve, software designers must implicitly understand the different types of operating platforms that a business model may need to be mapped. Some obvious operating platforms are listed below:
Hardware Platform: IBM PC (x86), IBM RS-6000, HP Apollo, Sun Microsystems RISC
Operating System Platform: Microsoft Windows NT, XP, CE; UNIX, AIX, VxWorks
Windowing Platform: MS Windows, X-Windows
Database / Data Storage Platform: Oracle, Sybase, DB2, Paradox, FoxPro, MS Access
Transaction Management Platform: MTS
Middleware Platform: CORBA, COM, DCOM, COM+, MSMQ, MQ-Series
Middleware is an interesting operating platform in the context in MDA because one of the purposes of middleware is to facilitate cross-platform operability. Cross-platform operability allows components on different operating platforms on different machines to interoperate in a collaborative manner within a distributed software system. But, cross-platform operability is not the same as cross-platform portability that facilitates the porting of software to different operating platforms so that the same components can not only operate with components on other operating platforms, but the same components can be easily ported to these different operating platforms allowing them to operate on the different operating platforms.
The Java paradigm includes the constructs that provides the services related to each of these operating platforms. The Java paradigm provides a combination of class libraries and application servers that facilitate the portability of the software developed in the Java programming language to different operating platforms. However, there are some compromises that were made in the Java paradigm. For example, the Java framework provides its own middleware that is based upon the CORBA and is not portable to other middleware platforms. Java also provides its own transaction management and is not portable to specific transaction management platforms. Because the Java J2EE specifications for application servers provide only specifications for application servers and not an implementation, there are different application servers that can be utilized for Java applications that utilize an application server.
Another twist to the Java paradigm is that Microsoft has developed a similar technology called .NET ("dot net") based upon Microsoft technologies including Windows, MTS, and the C# programming language. Reconsidering the original objectives of MDA, it becomes apparent that in order to map the business model to different technologies, the business model must be independent of Java and .NET if it is to be mapped to either of these two different development platforms. And because the Java and .NET paradigms are based upon different programming languages, to be fully portable the optimal MDA realization must facilitate portability between different programming languages.
From this, it becomes apparent that a fully portable MDA model must be portable to the following types of platforms, in addition to those listed above:
So, these concepts bring to light the objectives of MDA, but they do not shed light on the details of how it is achieved. In reality, there are currently only varying degrees of realization of this optimal MDA model. Part of the reason for this is that the abstractions required to realize a fully portable MDA model have not been clearly defined or standardized for general use. And, the defintion of these abstractions is a large part of the MDA initiative. MDA modeling is based in large part on the definition of meta constructs that facilitate the mapping of a platform-neutral business model to the specific technological platforms that are used to realize the business model in a software system.
|