Software and system development needs to seriously grow up- and fast. It urgently needs to become far more rigorous and dependable if it’s to have any chance of meeting critical 21st century process engineering requirements. Model-Based Development- MBD might be the answer.
Two factors have conspired to transform it from adolescence to maturity.
Firstly, the rapidly increasing complexity of modern computer systems, applied more frequently in life critical contexts.
Secondly, the relentless pace of change driving process and system obsolescence.
The increasing complexity of modern computer software threatens to place an upper limit on our capacity to improve and optimise the primary processes governing our civilisation. Modern society is built around the delivery of precise real-time processes and services, which must increasingly meet critical benchmarks of efficiency, integrity, transparency and adaptability.
Even generic applications such as operating software, office management and resource planning systems etc, require hundreds of software engineers to develop and maintain them. But that degree of complexity ramps up exponentially for larger automated systems covering the range of enterprise, government and scientific applications- supply chains, production and process control, social and media software, communications, space, energy, engineering transport and disaster management services.
Complex software systems also need to constantly evolve to meet the latest shift in business and environmental pressures and practice. As a result, errors and poor quality performance built into early versions can quickly compound, with the system ending up in gridlock and malfunctioning.
Even worse, the problem is escalating as computer scientists and engineers push the boundaries of the possible; seeking to integrate diverse applications across multiple platforms, while at the same time implementing advanced solutions incorporating augmented reality, intelligent agents and location-based awareness. The problems of complexity and change can only get worse as solutions are required relating to the next generation of super systems managing global warming impacts, smart AI and sensor-embedded infrastructure and ecosystem evolution.
But there’s light at the end of the tunnel and it revolves around implementing Model-Based Development- MBD methods, incorporating mathematically verifiable design and testing.
MBD, as its name suggests, creates models of the required functions linked to a specific domain, which refers to a particular knowledge field, such as a manufacturing, telephone networks or weather monitoring. Software design therefore starts with high-level domain characteristics and properties, rather than a set of generic computing functions. In the MBD paradigm, the domain expert can review the model and point out missing functionality or essential links between elements within the system, without needing to understand sophisticated programming techniques.
The methodology depends primarily on the use of domain specific modelling languages that can be used to simulate and authenticate a system graphically before building it- as is common for current CAD systems. The use of such languages allows developers to create a formal model of the system, run it on a workstation and analyse its performance with automated tools. Finally code and test cases can be generated and automatically verified. Use of such tools in the software development lifecycle has the potential for substantial payoff, by avoiding many costly process malfunctions and reworking iterations.
Generic modelling languages such as UML are in wide use, but often result in large, complex models while Domain Modelling languages can incorporate relevant business rules and design concepts related specifically to the domain in a much more compact form.
Control system engineering and science provide the role model for this approach, based on formal logic and algorithms developed over many years. Although formal software and mathematical methods have been used for safety and security critical systems in applications such as nuclear power, chemical plants, space and defence they have not achieved widespread use in commercial or industrial software engineering. However this is likely to change as several key trends now begin to make this a more practical proposition.
First there is growing acceptance of model-based development for the design of embedded systems using toolsets such as MATLAB Simulink. This allows for rapid prototyping and design verification of test control and signal processing, particularly in avionics and electronic automotive systems.
Second is the growing power of formal verification tools, particularly model checkers. This software examines all possible combinations of input/output states and is therefore much more likely to find design errors than traditional testing.
The entire system is mapped and developers then can create the code and integrate it. Software development and maintenance is accelerated because the programmers have a clear idea of all the required functionality and how it relates to other elements in the system before coding.
Finally there is also much less risk of catastrophic programming errors, because engineers can detail the links between software elements beforehand, similar to CAD technology. If a component is missing or has been overlooked, it can be easily added to the model in a later step.
With the growing acceptance of MBD techniques, software development might finally have come of age.