This post originated from an RSS feed registered with Agile Buzz
by Steven Kelly.
Original Post: Domain-Specific Modeling: MDD that works
Feed Title: Steven Kelly on DSM
Feed URL: http://www.metacase.com/blogs/stevek/stevek-rss.xml
Feed Description: Domain-Specific Modeling: A Toolmaker Perspective
Long time no blog. Aside from working on the next version of MetaEdit+ (about which more in a later post), I've been speaking at a variety of events. The first, back in November, was for the members of the International Association of Architects: a webcast on Domain-Specific
Modeling: MDD that works. (The link
will take you to the webcast, which was recorded live.) The format worked
surprisingly well, even for the
question and
answer session: the participants could submit questions via the webcast chat tool, and Juha-Pekka picked a selection of them to ask me at the end. Something that was asked later was the size of the domain: with DSM, this is never something as broad as "embedded systems", or even "mobile phones". Normally it will be much narrower, e.g. a particular family or product line of mobile phones from a particular manufacturer, or then home and auto insurance policies in the EU. Making things no broader than necessary is one of the keys to high productivity with your DSM language, and also to making it easier to build the language: stick to what you are experts in, and follow YAGNI to avoid creating extra work for yourself.
One thing that struck me when preparing for the talk was that we often show graphs of how productivity increased in various DSM cases, but we don't normally have time to provide the details of each case. The cases studies are, however, available (see table below): some even with the modeling languages and generators publicly available. Most importantly, some of the cases obtained their productivity figures with scientifically rigorous experiments; not many companies have time for that, but those experiments serve to confirm the validity of engineers' estimates in other cases.
Productivity figures can seem a little abstract, so in the talk I looked at
the in terms of something more concrete. Imagine that you can build one product
in a certain time by coding. How much more can you build if you apply various
kinds of modeling? In a previous post we already saw how with normal UML, you
can actually build less than with manual coding. With MDA, the tool
vendors' own figures range from 22% extra (Obeo:
average cost reduction of an MDA
project is 18% => 22% productivity increase) to 35% extra (OptimalJ:
30–40%).
You can see from the red bars on MDA1 and MDA2 below just how little you get for
your investment in tools and training — not to mention the long term nightmare
of trying to maintain CIM, PIM, PSM and code in synch with only semi-automatic
support. The productivity results for DSM tell a very different story: 5–10x
faster, and completely automatic code generation.
But what is the cost of creating your own DSM language and generator? After
all, the MDA tool vendors promise to provide those, so that's an extra cost for
DSM. Here are the figures in person days for the cases above. I think they speak
for themselves: 2–3 weeks by one person is so small it makes you cry. How many
companies out there could spend 2–3 weeks to make themselves 5–10x faster?
Of course those figures demand good tools: all those cases are with MetaEdit+. Your mileage will definitely vary with other tools — and what's worse, because they make you do more work, your brain power will be directed away from creating the best possible language. At the end of the day, it's the size of the productivity improvement for the modelers that counts the most. If you can make 10 modelers 6x faster rather than 5x faster, that's worth 10 extra person years per year. With MetaEdit+, you're far more likely to get those extra person years, and you're sure to get your language ready faster. When we see the first case with GMF or DSL Tools making it into the 5 10x range, we can look at this topic again...