The more software your business ‘owns’, the more it will spend on maintenance, hurting the ability to innovate. Maintenance cost is a function of quality and inventory. This is the central point in the gardeners dilemma.
So what can teams do to control maintenance cost? Three things:
- Write less code
- Write better code
- Reduce code
Under the right conditions, model based development, can help doing exactly this. A well defined domain specific langague (DSL), helps to be consise and prevents mistakes early. You will right less code of higher quality, resulting in lower cost of development and maintenance.
A good example of such a DSL is the ComMA language. During my time at Philips and FEI, it was an articulated need of system & software architects to understand if the implementation of a component was matching the interface definition. Most interface definition technologies allow for syntactical checking, but most mistakes during system software integration, are made with respect to semantics, behavior and timing. Together with TNO-ESI, we developed a solution. ComMA is component interface definition language not only capturing the syntax, but also the behaviorial and temporal contraints. Using generators, ComMA can be used to generate documentation, code and tests. As of 2020, ComMA finds broader adoption in the Dutch High Tech Industries, read about it in this article in bits&chips.
Domain specific languages are not a silver bullet. A lot of real world systems problems are best coded using a tradional language. If you want to maximize your teams life time productivity, the same rules apply: be brief, be consise, work with the highest quality. Make sure that your team has a code down ambition!