Connected devices and electronic control systems have revolutionized the vehicles and the driving experience as such. However, not only the final products but also the process of automotive software development has undergone a dramatic change. Now, traditional development methodology fails to meet the market needs and is ousted by a viable alternative – model-based software development.
What is the meaning and the relevance of the model-based design? This is one of the common questions to ask an automotive IT consulting company, and we are eager to give a comprehensible answer to it.
Current Automotive Software Development Needs
Modern automotive systems are packed with electronic control systems starting from engine control units and finishing with in-vehicle infotainment. This is mainly achieved with the help of embedded systems, developed around a central processor or control unit. The number and complexity of embedded systems continuously increase and pose new challenges to the automotive engineers and developers:
- Complexity: The market competition drives the demand for more complex embedded systems that would be able to complete more tasks
- Customization: Engineers need to make hardware and software more customizable to increase the product range and allow systems’ application in various solutions
- Compliance: The developed products should be innovative, yet compliant with strict standards and regulations
- Affordability: The common task is to reduce development and testing costs to increase the competitive edge of a final product
- Time to market: Innovative solutions are now rather common on the market, which places additional pressure on automotive developers to bring the product to the market as soon as possible and gain the advantage of the first mover.
Development Methodologies Compared
To see how model based development methodology can help to tackle these challenges, it is necessary to understand how it differs from a traditional software development methodology used in automotive.
Traditionally, development progressed from software to model and, eventually, to a physical prototype, and software was given a primary focus. In model-based design, the key focus is given to the mathematical model that takes part in simulation or system-testing on each stage of development. When the model has undergone a necessary number of iterations, the code is automatically generated and incorporated into a microprocessor.
The Use of Computer Modeling Techniques
In a traditional design methodology, computer modeling techniques are used only in the first stage of development to create a controller design. Thus, this design is implemented in the programming language and the resulting controller is integrated with a plant model, which further takes part in simulation and controller adjustment.
In model-based software development, computer modeling is used throughout the design process. Graphical design and simulation tools like Matlab, Simulink, and Stateflow allow creating a mathematical model of a component and the entire system as one dynamic system. This allows testing and perfecting the model before the actual code or prototype are created.
Another notable difference is that traditional methodology carries out testing on the final stage of development after a controller is simulated and adjusted. Contrary to that, in model-based design, the reaction of the system to the model alterations are seen right away. Thus, the functionality of a component is tested synchronously with the development process.
Why Model-Based Design?
We have mentioned in one of our recent articles that model-based design is a fundamental change, which makes some companies resist the change. However, we, in FPT Software, think that this transition is inevitable. Here are the top advantages of model-based software development that prove the methodology is here to stay:
The methodology cuts the time for the development of sketches, mockups, and prototypes. Design tools allow easier manipulation with a model and automate many processes, including testing, documentation and code generation. On top of this, the generated models, simulation blocks and even vehicle tests can be saved and reused in the process of development of other components. All these factors have a dramatic impact on the overall effectiveness of the development team.
The great advantage of the model-based design is that it eliminates the need for coding. Considering that modern cars now need around 100 million lines of code, the change reduces development time and cost dramatically and results in fewer coding errors.
- Change Management
Block-oriented workflow and the ability to test the model functionality in a system early in the development process makes it easier to spot issues and make changes. Since the code is generated after the model is validated, manufacturers avoid wasting time and resources on coding components that are based on erroneous specifications. This way, the model-based design allows making major changes even in the late stages of product development.
This methodology reduces documentation cost and errors, as system documentation is generated automatically from a model description. Since both documentation and the actual code stem from a single model description, the implementation phase is easier and more consistent.
The great idea behind a model-based design is that it continuously looks at how an individual component affects the functionality of the system as a whole. Such focus on the multiple dependencies makes the performance of the system more reliable. Multiple simulations, continuous testing and automatic code generation contribute to system reliability too.
Despite certain challenges to model-based design, this approach to automotive software development is definitely preferred over a traditional approach focused on code generation. It allows to increase the development time, reduce the cost, and make the system more complex yet reliable – this is what the market requires of automotive IT consulting now.