One of the possible automation methods is code generation. It provides the ability to create ready-to-use program code directly from the UML model or from an exchange format. This generated code works together with a framework and implements a public visible interface of the business logic of the component. It helps to rapidly build a prototype application.
A prototype application is a skeleton with the default (dummy) implementation of the interfaces. Existing software may be integrated into this skeleton. Another possibility is to extend the skeleton with functionality that simulates the behavior of the specified device or component.
Simulation of Device Behavior
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 shows the developers how the system works.
Now, let’s check the typical project activities. 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