Skip to content

Why innovating fast in software requires the use of Model Driven Software Engineering

Society's willingness to adopt new technologies is increasing. Consequently, there is an increasing need to introduce innovations at a faster pace and at lower cost. There are essentially two ways to achieve these goals: increasing development efficiency and/or shortening the development cycle. While a 10% increase in efficiency will yield respectable cost savings, a 10% reduction in cycle time will increase revenue by a much larger margin. In other words, no efficiency improvement will surpass cycle time reduction. Model-driven software engineering results in both cycle time reduction and efficiency improvements and is therefore essential for rapid innovation in software.

Limitations of code centric software engineering

Conventional, code-centric software engineering uses empirical, trial-and-error techniques to determine product quality. Writing code manually is highly error-prone. To prevent these errors from spreading to the released product, traditional software development teams conduct a large number of unit, integration and system tests. These take up valuable time, especially when they uncover errors, which must then be fixed. Unfortunately, most software systems are so complex that it is neither technically nor economically possible to fully test them, and as a result, defects end up with customers. The trend toward increasing system complexity only exacerbates these problems.

One way to reduce cycle time is to use more efficient methods to create software. Automation can greatly streamline otherwise error-prone and time-consuming manual processes. Automated code verification, validation and generation significantly shortens the development cycle and has the added benefit of completely eliminating the vast majority of software errors. The time saved can be spent designing new features or even entirely new products.

The benefits of MDE

Model-driven engineering (MDE) is a way of developing software by automatically generating computer programs from models rather than writing them by hand. It focuses on capturing at an abstract level all the issues related to a specific problem domain, rather than the computer concepts needed to implement it.

By hiding unnecessary details, MDE keeps complexity manageable and makes understanding and communicating about a software system easier and less error prone. Software is automatically generated from verified and validated models, further reducing the likelihood of errors. Furthermore, by decoupling a problem domain from the underlying implementation details, the life span of a software system is dramatically extended and it can evolve with technological advances. MDE thus greatly increases productivity and product quality and reduces both product lifecycle management costs and total cost of ownership.

Horizontal and vertical MDE

MDE comes in different flavors, depending on the domains covered. The two main categories are "horizontal" and "vertical. Horizontal MDE refers to the use of modeling tools and techniques that enable MDE in a wide range of markets and applications, from watch software development to medical systems. Horizontal MDE tools provide the ability to rapidly develop algorithms, control applications, data models, user interfaces, and much more. Several commercial tools are available for horizontal MDE that offer economies of scale and reduce the cost of using MDE while delivering a factor of 3-5 increase in efficiency and 99% reduction in customer reported defects. Examples include tools from Mathworks, Verum and Cordis.

Vertical MDE refers to modeling a very specific, niche problem domain. In this case, the trick is to capture the specific concepts that architects, engineers and other stakeholders use to communicate with each other about the domain. At a very high level of abstraction, the concepts unique to the domain and the relationships between them are captured and converted into formal, well-defined, so-called domain-specific languages (DSLs) that stakeholders can use to communicate as they would with shop floor jargon.

The advantage of vertical MDE is that it ultimately results in efficiency gains by a factor of 10 or more and greatly extends the life of the IP it captures. Decoupling IP from the details of its implementation also makes it easier to adopt new technologies. The downside of vertical MDE is that a custom DSL must be developed for each domain being modeled, greatly increasing adoption costs and creating secondary challenges such as the ongoing development and maintenance of the DSL itself.

Adoption of MDE

Whether horizontal or vertical, applying MDE is a step-by-step process. The starting point is usually in a part of an existing software system where a problem has surfaced, or where functionality needs to be optimized. Indicators of MDE adoption include increasing quality problems in the field, decreasing predictability of software development, decreasing feature output, and customer/engineering team dissatisfaction.

Introducing MDE into an existing software system depends heavily on your engineering team's ability to break down the system into subsystems. MDE can and should only be introduced incrementally into existing software, subsystem by subsystem, starting with the subsystems that are most amenable to re-engineering and best able to justify the long-term investment.

Horizontal MDE should be considered for all complex cyber-physical systems and should be applied primarily to those areas of the system where there is algorithmic or behavioral complexity. Vertical MDE should be applied when you have complex, unique IP captured in software that is core to the long-term viability of your business.

The extent to which MDE should be adopted depends on the ROI you experience. MDE can be used to facilitate much of the software development lifecycle, but not all. Commercially available horizontal MDE tools have a lower investment threshold and therefore lead to a faster ROI and can be used on a larger scale. The cost of developing a DSL to support vertical MDE can be very high, limiting its use to those areas of a system where the ROI is clearly justified.

Key success factors

Although the introduction of MDE ultimately reduces development cycle time, companies are often deterred by the upfront investment. First, the introduction of MDE requires taking resources away from conventional software engineering. The short-term consequence is an exacerbation of the pain, namely through a further delay in feature delivery. Another difficulty is that the gains do not come all at once, but gradually over a period of one to two years, and in some cases the rewards are not visible after one project. Therefore, the introduction of MDE should be driven by the business strategy and not just treated as a process improvement.

MDE causes some companies to view it as a kind of silver bullet. Some engineers expect everything to be a walk in the park, now that all code is automatically generated and no human intervention is needed. This is not the case. MDE should be seen as the gun that fires the silver bullet: it will work as long as it is handled by someone who wants to use it properly.

Another criticism of MDE that is often made by software engineers to delay its adoption is that it does not yet provide a holistic, homogeneous solution to the engineering of complete software systems and will likely not be adopted for another decade or more. However, it does provide enough of a solution to deliver tremendous value to companies willing to adopt it. In other words, there is no technical reason not to adopt MDE in those areas where it provides a solution and many business reasons why MDE should and must be adopted. There are now many software problems that are so complex that they cannot be addressed without model-driven tools and techniques if engineers want to produce reliable and robust solutions within a realistic timeframe.

MDE in practice

In recent years, ASML has made great strides in the use of both horizontal and vertical MDE. For example, Altran plays a major role in the development of DSLs where ASML's software architects and engineers write specifications and Altran's software factory then implements them. The DSLs are developed for different layers in the software architecture. They are used to automatically generate, validate, and to some extent verify the production software for ASML's Twinscan systems.

Start-up Liteq, now part of Kulicke & Soffa, applied MDE to develop the complete control and application software for the Liteq 500, a lithographically advanced semiconductor manufacturing system. Using Verum's software design tools, a small team of engineers realized a large, complex software system that was both reliable and robust. They dealt with the uncertainties of third-party software, dealt with the requirements that arose over time, reduced the amount of testing they performed, and considered themselves better engineers as a result. They accomplished all this while achieving more than 2.5 times the productivity improvement throughout the product development cycle compared to a conventional code-based development approach.

HTSC

HTSC

The High Tech Software Cluster is a partnership of over 30 innovative software companies, research organizations and educational institutions that support you in making the digitization of your business affordable and practical.

Read more
Sign up for our newsletter and receive updates.