Thursday, March 29, 2007

IA: Model-Driven Architecture

What is MDA?

MDA provides the ability to automatically and systematically turn a diagram or model into a functional program with very little to no coding involved in the transition.

Principles and Value Proposition

The goal of MDA is to separate business and application logic from the underlying platform technology. Platform independant models (PIM) of an application or integrated system's business functionality behavior, built using UML or another modeling standard associated with OMG, can be realized through MDA on any given platform, open or proprietary, and even Web Services, .NET, JEE, CORBA, and others.

The business and technical aspects of an application don't have to be tied together anymore, each can develop at its own pace without slowing the pace of the other.

"OMG focuses Model-driven architecture on forward engineering, i.e. producing code from abstract, human-elaborated specifications. OMG's ADTF (Analysis and Design Task Force) group leads this effort. With some humour, the group chose ADM (MDA backwards) to name the study of reverse engineering. ADM decodes to Architecture-Driven Modernization. The objective of ADM is to produce standards for model-based reverse engineering of legacy systems . KDM (Knowledge Discovery Metamodel) is the furthest along of these efforts, and describes information systems in terms of various assets (programs, specifications, data, test files, database schemas, etc.)."

"An MDA tool is a tool used to develop, interpret, compare, align, measure, verify, transform, etc. models or metamodels."
Bézivin, J, Gérard, S, Muller, P-A, and Rioux, L (2003). "MDA components: Challenges and Opportunities

MDA Tool Types

  • Creation Tool: A tool used to elicit initial models and/or edit derived models.
  • Analysis Tool: A tool used to check models for completeness, inconsistencies, or error and warning conditions. Also used to calculate metrics for the model.
  • Transformation Tool: A tool used to transform models into other models or into code and documentation.
  • Composition Tool: A tool used to compose (i.e. to merge according to a given composition semantics) several source models, preferably conforming to the same metamodel.
  • Test Tool: A tool used to "test" models as described in Model Based Testing.
  • Simulation Tool: A tool used to simulate the execution of a system represented by a given model. This is related to the subject of model execution.
  • Metadata Management Tool: A tool intended to handle the general relations between different models, including the metadata on each model (e.g. author, date of creation or modification, method of creation (which tool? which transformation? etc.)) and the mutual relations between these models (i.e. one metamodel is a version of another one, one model has been derived from another one by a transformation, etc.)
  • Reverse Engineering Tool: A tool intended to transform particular legacy or information artifact portfolios into full-fledged models.

Pasted from <>

A list of MDA tool vendors can be found at:

Optimal J

I decided to do a little research on Optimal J. OptimalJ takes business models and transforms them into working Java EE applications, currently it is working on making the application compatible with .NET. It provides UML 2.0 diagram support to quickly visualize design artifacts in a few quick steps, and quickly generate documentation from these diagrams in PDF and HTML format.

OptimalJ uses the Domain Process Model to define and describe application flow and control. The Domain Process Model is a logical progression, starting with a defining structure and behavior definition that is then unified into predictable and repeatable sequences.

OptimalJ’s UID is a rich WYSIWYG editor that is used by UI designers to build screens rapidly from a comprehensive palette of widgets. The OptimalJ UID also enables designers to graphically orchestrate the flow of an application at the presentation layer.

The Karolinska University Hospital did a comprehensive research project on MDA tools to find out which one was the best.

The following tools were evaluated:
  • Optimal J
  • Arcstyler
  • Constructor
  • Codagen Architect
  • Objecteering
  • Ameos
  • Together Architect
  • MDE Studio

Optimal J came out as the top tool, particularly for its Platform Specific Model transformation capabilities

Personal Application

I have accepted a job with Hewlett Packard as an IT Programmer/Analyst. The most I know so far about the position I will be filling is that I will be working with an internal website making sure that the necessary tools exist for the employees to get their jobs done. A Model Driven Architecture tool could easily be one of the tools that the employees are in need of, or it could be used to develop the applications that would help them to more easily complete their job.

An MDA tool seems to be more of use to an upper level employee, someone who is in charge of the analysis and design of a systems implementation in the organization. This management position would likely have some sort of technical background, or at least understanding of how an application should be modeled. I could definitely see myself in a similar position years down the road, where I could be responsible for such decisions.

The fact that a business model can be the focus of your organization's efforts, instead of having to limit or alter it due to restrictions or complexities in coding structures will be greatly minimized with the implementation of MDA.

No comments: