MDA The Next Iteration…

This is a food for Thought post…


MDA?  Search Google and you get one list for the term.  Search Bing for a slightly different list.   That sounds like an association for a medical condition.   The Object Management Group is pretty hot on MDA.   Other than that, doesn’t seem to be a very hot topic. 

What is it doing in a technical blog?  Did you know that Gartner stated that MDA would be the way of the future for development?  OK, before going further, MDA = Model Driven Architecture for the purposes here.  Yes, there was a big hype about it a few years back.  It didn’t really materialize. 

My first real exposure to MDA came while I was working for Care (CAR-AY) Technologies headquartered in Spain.  I worked for the US Branch out of San Jose.  They have a product called the Olivanova Programming Machine.  Generates code in C# or Java.           

This tool is a very interesting application of MDA and has specific niche situations where it is very practical.  In their model, the “engine” that generates the code is housed back in Spain.  The application sends out the model to the engine and the code is returned basically ready to run. 

The technology is popular in Europe but has only had limited success in the US.  Many of the companies that were presented this technology were skeptical of code generators and even more skeptical of having to send their code offsite.

The Next Iteration

Why is this the next iteration?  MDA and code generators have been around the edges for sometime now.  Talk to many appdevs and they’ll tell you with confidence that no “machine” can write code like they can.

I’d agree with them…  A machine will write the same code, the same way every time.  A person… not so much.  History books will probably look back at this time when machines took over the task of programming machines… no not in “Terminator” parlance but in typical, boring, industrial revolution style.

Forces for change

People are the root cause here.  Let me put down just a few reasons…

  1. People get bored –> repetition has never been a highly valued trait
  2. People make mistakes –> to err is human and when a human is at the hands of a computer…to err is to err on a grand scale
  3. People are costly –> between the cost of corrections, complexity etc.  A well conceived code generator…
  4. The number of software projects that fail…

We’ve been at this computer game for the past 60 or so years with serious intent.  In the past 10 years or so, the pace of technology has been going fast than the average person can assimilate. 

I’m sure we reached the point some time ago where companies started holding back just so the latest revision, the last released version, had enough time out there to recoup the investment.


Back to MDA

MDA in the US hasn’t really been adopted.  At least, not as a primary way of developing code.  But, as Gartner predicted, it is here and is becoming more and more prominent.


They’re everywhere from SharePoint to Drupal, pre-assembled code parts little the code-scape.  But these aren’t MDA, they’re just frameworks.  No code is generated, it’s just pre-written into objects…

Frameworks are a model… they are a balsa model airplane.  Let me ‘splain…

  1. Pre-cut parts –> things like ribs are already die cut.  You just have to pop ‘em out and glue ‘em to the spars
  2. Finishing –> you get to choose what color to paint your model.  You can go old fashioned and do the sanding, painting and polishing route OR you can cover the model with pre-finished plastic
  3. Options –> add on parts are available, you can adapt other items to the model, etc.

Sound a little like a framework to me.

MDA Tools

Like Olivanova, Together, Rational Software Architect, Visual Studio Ultimate, etc. You get pre-assembled parts that snap together.  Draw pictures, use UML.  Different from the frameworks in that your choices for variation are reduced.  Typically, variation’s going to cost you money.  The more flexible the product the more it costs but you are still giving up control.

Erector Set & Legos

As a kid, I loved erector sets.  Completely flexible.  You could build anything.  Legos to.  These must have been good toys because they have stood the test of time.  But what does this have to do with MDA and Code Generation?

For MDA to be successful, you need a tool that is completely flexible where you can build your own assembly items.  Where a designer crafts a solution and the software generates the blocks.  To that end, it seems that Microsoft is running towards that goal.  More and more of their tools are model based with code being generated behind the scenes.  The more Visual Studio progresses the more it seems that the “plumbing” code will be generated by the IDE.

When will MDA Be a force to Contend with?

I think you’ll see it first with mobile devices.  Talk about a platform that lends itself to the mobile paradigm.  Small formats (a 4” screen is no 20” monitor), formats that have to be flexible to go from detached (mobile mode) to attached (big screen mode) and bandwidth.  This means that coding for the specific unit is critical (although as memory and storage capacity continues to grow, there will be less focus here) and even if the phone or tablet can handle a large app, waiting for it to download is still an issue.  Granted, you can get around some of that with a workstation connected to a high speed connection then attach the unit or the unit itself will support a high speed internet connection.

Will a complete divorce from custom code occur?

Will programmers be reduced to assembly line workers?

The irony is MDA is being adopted.  Kind of like the debit card was adopted.  You’d be hard pressed to find someone today who doesn’t think their debit card isn’t a necessary evil.  Convenient and more secure than cash…  but there was a time, not that long ago, when the very concept was overwhelmingly rejected.

It was through enticements here, discounts there and slow adoption (almost grass roots) that changed the perception of the debit card. 

If that can happen with such a personal item, software development with it’s external pressures of accuracy, time to deliver, etc. will adopt MDA architecture.  It will be required just to compete.

I guess if you don’t call it MDA and call it something else…

Published by


Originally, this was a pretty darn boring post. Kinda like... Well I won't go there. Perhaps its still on the robotic side but... I could say I like music. Safe, generic and non-comittal. Or, I could say that I've been having a blast tuning up my old guitars, getting blisters on my fingers and turning the amp up past 2. Amazaing what a little overdrive and a half pressed wahwah pedal can do for a sound. Get that cool "Money for Nothin" vibe happening. I get a real kick out of reading old Sci Fi. Reading Asimov's vision about the future is really entertaining now. When he wrote much of the material, the items that were futuristic were day to day tools I used in the early part of my career. Microfiche and the like. I also remember that upstart Microsoft and MS DOS...and can you say Lotus 123? So maybe this is a little better than "I like to read and play music". My career is focused on Team Leadership and Technology. Both share the attributes of continual growth and education. Currently, I manage a team of 4 programmers as direct reports. I've been in this role since 08/2007. Prior to that, I was the team lead (on site) for integration with the customer. Customers ranged from local government to manufacturing and medical. Teams ranged in size from one to six additional team members. On the other side is technology. I've been keeping current with .net technologies focusing on C# and Sharepoint (2007/2010). Specialties Team Building and Management Technical Staff Recruiting Microsoft Visual Studio 7 through 2010 (VB.NET and C#.NET) Microsoft SQL Server 6.5-2008R2 (DTS, TSQL, SSIS, SSAS, and SSRS ) SharePoint 2010 (Office Integration, InfoPath, Site Management and planning) Windows Server 2008 R2 AD DS PowerShell Techology analysis Puchasng and working with vendors Microsoft licensing management and compliance Business Systems Analysis Traning plans Mentoring Training coordination.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s