Are You Using OMG's Model-Driven Architecture?
Mazzaroth queries: "Over the last few years, system architects saw many middleware and language eras. RPC, CORBA, .Net, EJB/J2EE (with WebLogic, WebSphere, and the zillion of other apps servers), XML/SOAP, Java, C++, C#, to name a few. More recently, an effort has been initiated to isolate application's architecture from the middleware particularities: Model-Driven Architecture (MDA). The idea is pretty good. This will eventually allow me to model the application, deploy it on .NET, then change my mind and go for WebLogic instead for instance. Even if the number of software engineering tools supporting MDA is quite limited for now, I would like to get feedback from people using an MDA approach to develop their application. What are the drawbacks, difficulties and limitations of MDA? What would be required in UML to better support MDA? What percentage of code can actually be generated? Can you share your experience?"
Oh, sure. Great idea. What happens when other companies jump on the bandwagon, and write their own layer that does this. Then you'll need another layer to make you independant of those. we can go on like this for ever. There will never be a magic bullet for this problem. You have to make a decision, and live with the fact that some day it will be obsolete.
A very good proyect..., but is very difficult to bring into production.
Even in java, is hard to take an j2ee application developed in websphere and relocate in bea weblogic...
All these cross-platform, cross-language, cross-vendor schemes are the perpetual motion machines of the software world.
I'm working on a large project at a big blue colored company in which we use UML models coupled with a code generator to target EJB deployment. Let's just say getting the models and code generator correct for ONE distributed architecture is bad enough. I don't want to think about trying to get it working for multiple deployment platforms.
And let's face it, the idea of writing your EJB and then deploying it on any EJBServer using any DB backend is a pipedream as well. So consider the problems with that, then imagine multiplying them by the number of different distributed architectures you want to support...forget it.
What's the point of all this anyway? Abstraction isn't always needed... the appropriate platform, code for it, optimize for it, test on it. Don't target 5 when you only need 1.
Blah blah blah failed idea blah blah unrealistic ivory tower academic fantasy blah blah cleaner in LISP yadda UNIX did this thirty years ago blah blah you should be using Python instead blah blah engineering methodologies are all crap blah blah no silver bullet blah blah C++ is for ninnies blah blah just start coding blah blah you should be using UML blah blah UML is worthless shite yadda yadda my company tried this and now I'm unemployed yackety schmackety snake oil blah blah this is the next revolution in software engineering yadda yadda that's a one-liner in Perl blah de blah there's no such thing as cross-platform blather blather the OMG ran over my dog, I wouldn't trust them mumble mumble you really should be reading the book by Hungadunga et. all babble babble duh, it's called the "Eggs Over-Easy" Pattern, stupid! burble snork why aren't you using W3C-standard XMLXSSTYXJW-XYZZY Transubstantiations? blah blah blah...
There, that should about cover it!
--
CPAN rules. - Guido van Rossum
Personally I think it is a great idea. It will completely distance the "programmer" from the implementation of the program, meaning ordinary marketing jerks and total morons will be able to design, write, and maintain sophisticated programming systems.
Me? I'm off to the Caymans. Bye.
Great idea! But we need a good name for it. I propose "off-centerware" to commemmorate its 'not quite in the middle, nor at the edges' nature.
Well we didn't do everything MDA claims but we did abstract out our middleware. Our goal was to keep middleware from occupying so much of day to day development. By defining our middleware relationships in XML we were able to generate tons of code. In practice we abstracted EJBs but in theory it wouldn't be too difficult to generate different wrappers for SOAP or some other middleware.
It wouldn't be hard to recreate but I am trying to open source the existing code. The company I worked for while writing it has been liquidated and the code was never listed as an asset. I think it is fair game for anyone with a copy.
I worked with a tool called the MDE that is ahead of the MDA model. It utilized UML and generator files tied to the model and generated 96 to 97% of the source code. We could generate a j2ee and windows dna application using the same model. In my opinion, there is no better way to develop cookie-cutter software.
"...da onlee bitches I hump be models..."
I am very small, utmostly microscopic.
I tried MDA, it didn't really do anything for me. But MDMA has changed my life. I can really crank out the code now, our team is much closer. And when we get to that final push, everything dances and whirls together like never before.
Feel it closing in.