Javascript is not enabled! Please turn on Javascript to use this site.

Model Driven Software Development

Model driven software development is not new - attempts have been made to generate software from graphical and textual models for over three decades now. However, recently - say, since the mid 1990's - things have started to pick up. In the past 5 years, many efforts have been made by the software engineering community and the industry of tool vendors to come up with solutions that actually allow improvements in software development productivity by means of code generation from models.

I strongly believe that this approach can be used to

  • Improve quality of software by further reducing manual coding
  • Improve productivity of software engineers by automating repetitive work
  • Reduce operational error by automatic reuse of proven code

A comparison I like to make is that between the guitar builder and the software engineer. Wood work on guitars is very sensitive to error - one wrong cut and the whole piece that was supposed to become a neck or body for a guitar becomes useless. Over time, builders have continued to build quality instruments by hand, but started using jigs, routers and even CNC machines to automate repetitive and error prone tasks. This makes me wonder why in software engineering many of us still mostly try to handcraft every single line of code.

Experience

I have experience using some of the available tools in small and larger products in various areas, and I continue to develop that experience, putting it to use in software development.

Currently, I have experience with the following:

  • Model Driven Development general concepts
  • Domain Specific Language development with MetaEdit+
  • Domain Specific Language development with XText

In the coming period, I will continue expanding this experience, while also looking into new directions:

  • Web development using Java Spring Roo (which I will be presenting in a workshop at CG2010)
  • Web development using WebDSL

MDSD tooling index

I am in the process of creating an index of MDSD tooling and technology - using popularity of these on various internet locations as the basis. The initial set of tools and technologies is listed below, feel free to contact me via e-mail in case you think a tool should be added to (or maybe even removed from) the list.

Planning

The initial version of the index will be published some time in 2010. After that, a monthly or bi-monthly update, with a short comment by myself or an invited expert will be published.

Acknowledgement

The inspiration for this index comes from the Tiobe Index of programming languages, which has been published by Paul Jansen for a couple of years now. The algorithm will be slightly different, and possibly I will work in categories (to separate full MDSD tools from partial solutions and supporting technology), but let's put credit where credit's due.