views:

66

answers:

3

I am currently facing a situation where I as an advocate of test driven development have to compete with an advocate of model driven software development (MDSD) / model driven architecture (MDA).

In my opinion, code generation is a valuable tool in my toolbox and I make heavy use of templates and automation when needed. I also create diagrams in UML when I think this helps to understand the inner working or to discuss architecture on the white board. However, I strongly doubt that creating software via UML (creating statecharts and sequence diagrams to create working code not only skeletons of code) is more efficient for multi tier applications (database layer, business/domain layer and a Gui, maybe even distributed). It seems to me when it comes to MDSD, the CASE tooling suddenly isn't just a tool anymore but it is the thing to satisfy: As I see it, on the one hand, MDSDevelopers profit from the higher abstraction UML gives them but at the same time they are struggling with modifing the codegenerator/template/engine to fullfill their needs which might be easily implemented (and tested) if used another tool out of their toolbox (VisualStudio, Eclipse,...).

All this makes me wonder if there has been a success story (suceess being that the product was rolled out in time, within the budged and with only few bugs and parts of the software have been reused later on) for a real world application which fullfills this creteria and has been developed using a strict model driven approach:

  • it has nothing to do with the the Object Management Group (OMG) or with consultants related to MDSD/MDA/SOA/
  • the application is not related to Business Process Modelling and is not a CASE tool itself
  • the application is actively used by end user
  • it has at least three tiers, including a user interface which goes beyond displaying raw table values and is not one of the common MDA/MDSD examples ("how to model a coffee machine, traffic light, dishwasher").
+2  A: 

A tiny, but nevertheless useful testimonial on the use of MDSD has been posted on the Model Driven Software Network:

http://www.modeldrivensoftware.net/profiles/blogs/viva-mdd-follow-up-building-a?xg_source=activity

It is a relatively small app being developed, but still a good example of MDSD in action.

More success stories are listed at Metacase's site (http://www.metacase.com/cases/index.html). Metacase sells MetaEdit+, which implements DSM (Domain-Specific Modeling). DSM is just a form of MDSD.

I am also developing ABSE (Atom-Based Software Engineering), another form of MDSD, very close to DSM. ABSE is outlined at http://www.abse.info.

Rui Curado
+1 Thanks for your answer. Maybe you know more details about this project. E.g. How many people are involved, how long did it take to complete a first version, are requirements also held in the model, what kind of diagrams/UML were used (e.g. were statecharts involved to create behaviour code?)?
tobsen
@tobsen I don't have that information, but you can nevertheless ask directly to Peter Adriaenssens in the forum...
Rui Curado
+1  A: 

You could also take a look at the slides from previous Code Generation conferences. Several of these talks were from successful case studies e.g. http://www.codegeneration.net/cg2009/slides.php

Mark Dalgarno
Thanks for the link, I will definitely have a look. However, I just googled some of the names/companies and all of the ones I tried came back to companies involved in the creation of MDSD-Tools. I really need independent proof that building an real-world application is possible beyond embedded software with MDSD. Maybe you can point out one talk which fulfills this?
tobsen
Evangelizing Code Generation: A Case Study of Incremental Adoption (Brooke Hamilton) PDF (3.00 Mb) from 2008. http://www.codegeneration.net/conference/sessions/slides/bernier.pdf IIRC this was from the financial domain. The 'Putting it all together' talk from the same year was also from the financial domain IIRC.See also http://www.slideshare.net/HeikoB/mastering-differentiated-mdsd-requirements-at-deutsche-boerse-ag from Code Generation 2009.FWIW not everyone uses UML. Google 'Domain-Specific Languages' or 'Domain-specific Modeling- for alternative approaches.
Mark Dalgarno
+1  A: 

I used MDA and code generation on an embedded system project using 4 processors connected via CAN. We had over 20 axes of motion and many, many sensors. The system was highly robust and maintainable as the mechanical components were evaluated and modified.

We worked in the models and generated code so the models were always up-to-date. We did a careful domain analysis to achieve subject matter isolation. The motor control required very high performance and so was not modeled or generated. Our network drivers were also hand-coded, and we wrote interfaces that allowed bridge services to send events to any service anywhere in the system as needed (although this was tightly controlled so as to minimize interprocessor dependencies).

Using the method took a bit of discipline, but having working models was great because they can be reviewed by non-software types.

Version control and differencing of the models was a bit of a challenge but we had a small, localized team so we were able to avoid merge issues.

The good people at Pathfinder Solutions (our tool vendor) can help mentor you through the project.

Bruce
Thanks for your answer, but has is at least three tiers, including a user interface? From your description, it seems that you created some kind of robot / embedded software for it?! Sounds really interesting!
tobsen
It had a user interface, but there isn't much gain in modeling the UI since they are not generally state-based. A tool like Enterprise Architect from Sparx is very good at capturing simple class structures such as a UI might use. My colleague uses it for code generation as well, but I never have.
Bruce