hide all comments

DSM

Who defines the automation?

August 27, 2007 11:08:27 +0300 (EEST)

I was surprised that the panel at Code Generation 2007 on the “next few years” did not address one of the most relevant topics when moving from coding to model driven development: Who defines the modeling languages and code generators for your domain?

We basically have three alternatives: you do it yourself, tool vendor provides it, or you hire an external consultant. We conducted a market research on this recently and found that over 40% thought they would deliver it by themselves. I see also that this is often the best choice: you have then the full control and possibilities for gaining competitive advantage. I’ve found these to be crucial especially for embedded industry. Furthermore, if you are already working in the domain you usually have the best experience and knowledge about your products making you the best candidate for creating the DSM solution.

Having already an applicable tool can naturally be considered the best, but then you are doing the same than some others in your domain are already doing. Moreover, most of the modeling tools available today, however, can’t produce other than code skeletons and if they address behavior, logic, etc. it is not always of production quality. There is still a place for simulation though When it comes to code generation capabilities best tools here are usually those targeting a specific need (protocol design, UI design etc.). Based on the study made by the market research company about 24% of the respondents expected tool vendors to provide the automation.

About 18% of the respondents expected that external consultants deliver the automation for them. External consultants can be especially beneficiary if you master the problem domain but need help in the tool implementation part. Still you need to ask are you ready to outsource your domain knowledge? Who will support and maintain your capability to deliver software when the inevitable need raise to modify your automation?

Last group of respondents did not know the answer for their case. Total number of the respondents was 111. I’ll see that here more empirical studies are needed, and if you have further figures please let me know.

Comments

Anecdotal experience

[Peter Bell] August 27, 2007 16:46:24 +0300 (EEST)

I don't have any figures, but I thought I'd share an anecdote. While I primarily develop an in-house SPL, I occasionally consult for other businesses, helping them to develop their own system for generating applications. I my experience, there are many companies that would like to take a DSM approach, but who simply don't know where to start and don't necessarily have developers capable of creating a collection of models and associated generators/framework code from scratch. I also see many companies give up on DSM because they had little experience, created an inelegant set of models and decided that based on their experience, DSM "doesn't work". I think this is a particularly acute problem in the "web scripting" space where there are many developers using scripting languages like ColdFusion or PHP who do not have a deep understanding of software engineering.

In such cases, I have found that during a fairly brief consulting engagement I've been able to help a company to develop a collection of core models, providing training and consulting in the process of developing and updating models so they can evolve their models in-house over time. I am not convinced whether such an approach will work in the long term or whether the models will just slowly decay over time, but I think the biggest issue is one of providing accessible training (made relevant by working on their problem domain) to teach developers how to create and maintain their models. 

 

 

Need for consulting and training

[Juha-Pekka] September 06, 2007 11:07:39 +0300 (EEST)

I totally agree with you that consulting and training should be available. Although we have seen customers to define their languages and generators without any additional support from us, help in the beginning is useful in many ways: support organizational change, get first results quickly, teach users to model, show practices that are already working, etc. At MetaCase we provide training at two levels, for language and generator definition and for modeling. We also engage to actual language definition work (turnkey solution) and modeling work if needed.

How about combining things?

[Angelo Hulshout] September 07, 2007 15:20:32 +0300 (EEST)

Juha-Pekka, this is spot on - an issue that requires attention. We've been promoting DSM to customers and potential customers for over a year now, and run into similar issues as you and Peter describe here. People don't see the need, fear the initial investment or give up after a single experiment.

However, an approach like the one I presented at Code Generation 2007, which is actually a mix of what you mention in you blog post might just work.

> you do it yourself, tool vendor provides it, or you hire an external consultant

We offer a solution for Service Creation in IP based telecommunications, VoIP, which include a framework, a DSL and a code generator. It's a solution for a rather specific domain, that can be used by different parties - while not having to delve into the details of the language definition and the code generator. On top, we offer consultancy, training and initial implementation services, with the aim in mind that at some point the user's own development organisation is able to take over some of the work...

How about combining things? (continued)

[Angelo Hulshout] September 07, 2007 15:23:32 +0300 (EEST)

(Sorry - I clicked submit instead of preview, and wasn't finished yet)

Based on this model, we are now thinking about similar solutions for other domains. Define a DSL, a code generator, maybe some other things as well and get the solution out there for different parties in a domain.

As I read on Martijn's blog, such 'shrink-wrap' solutions may not offer 8 of 15 times increases in productivity - instead it may be 3-6 or whatever, but it will get the message of DSM out there...

Who defined automation...

[Juha-Pekka] September 07, 2007 22:51:26 +0300 (EEST)

I believe that multiple parties are needed to define the automation -- just like the figures of the market research show. To be honest, I was surprised to see that so many claimed to define it by themselves. On the other hand, tools like Labview, Matlab family etc. show that tool vendors can also create ready solutions, or solutions that need just a little bit customization. While looking just the technology side, I see that often the best party to define the automation is the one who also owns the main pieces of the underlying platform (framework, libraries, components). They have usually also a business interest to do so.

Nobody is all-knowing

[Angelo Hulshout] September 08, 2007 22:06:50 +0300 (EEST)

> I believe that multiple parties are needed to define the automation

 That is absolutely true. I should have added that in the solution I described for VoIP providers that the language used is based on input from the initial providers the idea was discussed with. The framework and code generator came from the software development side, but the match was made through exchange of ideas by all parties involved.