MDA

Will MDD Ever Come to Fruition? by Ivar Jacobson

I am often asked the question: “will MDD ever be successful and will the tools ever really be put in place to support it?” and I was recently asked this again, so here are my thoughts.  

The following is solely my opinion and can be argued or agreed with, but it comes from 15+ years of experience building application and data modeles, modeling tools including ERwin, Rational Rose and other tools, writing 2 books on UML and working directly with clients who are modeling. 

Model Driven Development in concept is great, but to date the tools and the people who would have to use them have not been able to keep up with the concepts.  There are some very good tools on the market like Telelogic Tau, Rational RoseRT and a few others which do a fairly complete job of generating the needed code, but this is usually focused in the "systems" space and has not translated well to IT as it is based on state's and generating the logic from those states, etc.   

On the IT side, we do have similar concepts, but they start from business process models using tools like WebSphere Business Modeler and similar tools from BEA for example which connect to Business Process runtime engines and generate the connection points of existing applications to automate communication and business process execution.   

This all said, the uptake MDD has not been that of other areas for what I believe are 3 reasons: 

1.      Developers are developers because they want to write code and don't see models as being complete enough nor for their role to build models beyond simple architecture structures.

2.      Most projects today are starting with something already in production and therefore doing modeling of the architectures, use cases and processes are quite good to understand what needs to be done, how it connects together and prioritize work, but it makes it difficult to generate a system that is only a piece to connect up or an update.

3.      I believe #3 can stand on its own, but also lends itself to the first 2 comments and that is the creation of a "Black Box".  Using MDD tools creates a black box effect where runtime generation, transformations and other constructs are managed by a proprietary engine which is difficult to alter and manage. 

a.      For Developers, they often think they can do it better and faster and don’t want to rely on something they cannot touch. 

b.      Because of the black box approach, it is often requires a rewrite of the engines that have already been put into place for the existing systems causing added cost that nobody is willing to fund. 

We have tried in the past similar types of technologies which few have been successful as well.  Runtime Data Access is a great example where tools and companies popped up in the late 90's which created object-to-data mapping and automated the creation of the runtime access at what they claimed to be much faster and cheaper than doing it yourself.  Yes, this was good at least in theory, but few bought into it.  Why?  Black box approach, hard to test, developers think they can write faster algorithms, management doesn't trust something they cannot see, etc.  This is very similar to MDD and its lack of success in my opinion.   

That all said, I do have some collegues who are using MDD on some very interesting projects building components for airplanes for example which they feel are quite successful, but these also seem to be few and far between.

UML by Ivar Jacobson

October 30, 2003

The largest conference on object technology is OOPSLA. The first OOPSLA conference was in 1986 and I have attended all of them but one. And, I have presented papers, or given tutorials or been on panels each time. Last year I decided not to go there. I wanted to break the rule (to go to OOPSLA) so that I wouldn't become a slave under it. This year the conference took place in Los Angeles, or more precisely in Anaheim - the home of Disneyland.

OOPSLA is a meeting-place for pioneers in software technology from all over the world. Everywhere there are friends from many years back, and we really get together and discuss what we are doing, what we want to do, what we think is hot and what we need to change.

This year I participated in two panels, one on Reuse and Repositories, another on Model Driven Architecture. The most interesting and passionate one was the one on MDA. Much thanks to my friend Dave Thomas (also on the advisory board of Jaczone) who dared to question the UML as well as MDA, as envisioned by OMG, in a very direct way.

Dave: "UML is currently a language with no conventional syntax, and not even a comprehensive standard way for tool interchange (XMI is both awkward and inconsistently implemented). UML was designed by committee, most of whom are methodologists and hence have little experience with language design. UML lacks a simple semantic account as an executable language. There is no published semantic account although proponents claim it is well defined via action semantics."

In general (not only from Dave) I understand the critique against UML as follows. UML is designed by people who have no experience from traditional language design, which means that the language is a mess. Even worse, they have no experience of real software development but they come from the methodology camp with no real software product background. These people have never developed any real software.

Of course, in a setting like OOPSLA Dave's words fell in very good soil. It was a very popular standpoint.

While I am not completely positive to everything in UML, I heard nothing really new in Dave's position. To me it was a dejà vue. I have heard the same critique for more than thirty years. I heard it when I introduced component-based development with visual modelling back in 1967. I heard it when we developed SDL that became a world standard in 1976 within telecommunications. And now I hear it again.

I was originally very critical to how we worked with UML 1.0. Some people wanted a very intuitive approach and define the language with basically just a notation, some meta-model diagrams and plain English text. UML 1.0 became hopeless to understand. I advocated that we should apply classical language design techniques. Starting with an abstract syntax, build a static semantic model on top of the syntax, introduce dynamic semantic domains. I didn't suggest that we should define the operational semantics formally. I made this compromise primarily because most people wouldn't understand it and very few people would care. Moreover this wouldn't be different in approach from most other language designs. I have personally done a lot of language design work when we defined SDL and CHILL, I also did it when working with my doctoral thesis. Thus from a practical point of view I couldn't recommend it. Also, I felt comfortable we could add it later.

During the work with UML 1.1 my approach was adopted. We didn't formalize the dynamic semantic domains. We defined the operational semantics textually only.

Thus it is not correct to say that language-design amateurs defined UML. My own thesis was a definition of a modelling language using classical language design techniques.

It is also not true that UML was designed by people with no practical experience from software development. I was not the only one with many years of hard work in real software development. The UML team was also backed by 10,000's of developers working behind the scenes and applying the technologies being proposed. We had reference groups all around the world that helped us understand the needs to satisfy.

This was UML 1.1.

With UML 2.0 the situation changed. A lot of new people entered the scene, and a committee took over. With "a fresh look", they changed everything they didn't like. And they added what their "fresh look" told them should be added. Personally, I was so bored working in a committee so I stayed out of the work almost completely (I had done language designs three times before, so I couldn't feel any excitement). I said "almost" because I had to get involved on one occasion. That was when the committee decided to remove use cases from UML. Well, they removed the kind of use cases we have had, and replaced them with something different…and then they called this new thing use cases. They were so arrogant, that they told me, without a blink, that I had never understood use cases, but now they had got them right. They voted in the committee and agreed to remove our use cases. Luckily, people outside the committee set things straight and put use cases back into UML.

Many members of that committee had never produced any useful software. Some members were really competent, but the politics became a burden. Now the committee took a lot of time, they were delayed by years, and the resulting proposal UML 2.0 is very complex. Still, I am optimistic. The interest for UML is so high and there are so many people that are willing to fix what potentially is broken. Thus, I am convinced without a single doubt that UML will continue to be successful. It represents very much what a good part of the software community wants to have.

However, this part is not in majority. It may today be 20% of the software community. The remaining 80% have not adopted visual modelling at all. Twenty years ago I believe that it was less than 5% that used visual modelling.

Thus I believe the reason UML is criticized have other roots than bad language designs. The critique represents symptoms not the root cause. I believe that the roots of the critique are that some people don't believe in visual modelling as such but that textual languages work better.

The critique is healthy. UML will most certainly become better defined. We will get better and better tools. The tools will make software development less complex, we will be more productive, get higher quality, and get software much faster --- very much thanks to UML and how you can apply UML.

Anyway, it was a very good panel. People love a good fight. Dave was the clear winner, but that was a given. He was playing on home ground.

During the aftermath of the heated discussion, someone said that whether you are for or against UML or MDA rests on religious grounds. That is something I can wholeheartedly agree with. On the other hand, this is what I heard when I introduced components, use cases, … I have been very honest about it. I have never been able to prove that my approach is better than anyone else's. At best, I have been able to make it believable.

With UML and MDA we have a similar situation. It is very much about gut feeling. Either your gut feeling tells you that UML and MDA are good, or it does not. Your way of working will be coloured by your feelings.

Regarding UML, I have absolutely not a single doubt about its long-term success. About MDA, I am very sympathetic. I know that MDD (model-driven development) has been successful and will become even more successful in the future. Whether MDA will be successful is a question of execution, i.e., how well OMG and its members succeed in implementing the vision. I will support them, and I wish them very good luck.