There are several advantages of having such a simulation. First, the simulation itself is the proof of concept of the UML model and creates the possibility of detecting mismatches between the UML model and the real system. This is one of the main challenges at the early stages of the project. Another challenge is the ability to efficiently roll out modifications to the abstract model at later stages of the project when the software implementation has already been started or even completed. The code generation localizes changes in the abstract model to the integration code between the generated code and the business logic. This means that modifications to the abstract model that break the generated code will be identified at compilation time as syntax errors, and only the integration code needs to be fixed.
Second, the simulation delivered to the project participants integrates their components within the system, because this simulation is a running sample and demonstrates to the developers how the system works.
How do the typical project activities work properly? The developer of one device that communicates with one or several other devices can immediately use the simulation of other devices during the software development instead of waiting for a delivery from other project participants. The tester can directly start to implement device-specific tests against the simulation. In addition, the project group of the car manufacturer can begin to create a set of acceptance and production tests directly after completing work on the simulation.
In addition, if a simulation is built on a tool that virtualises network communications, then all project members can work even if the hardware devices are not stable yet or available at all. In this case, the firmware developers who work on the evaluation boards may use firmware components which are capable of connecting to the virtual networks provided by this tool. At this point, the firmware is capable of communicating with the simulation. It enables the firmware and hardware tests to be developed in parallel. This means that the simulation of the system containing components that communicate with each other over networks is the key to parallelizing work on the project.