In older versions of DevOps Model RealTime, generation of code and make files were performed by Eclipse plugins within the Model RealTime development environment. But there were some drawbacks with this approach, such as the following:
The workspace model was locked for modifications during the time it took to generate code and make files. If the user attempted any action in Model RealTime which required access to the model, the action would block the user until code generation was completed. For big models this could take a few minutes, and it was hard to cancel this operation. This was primarily a usability problem.
The rules for transforming the model to C++ code had to be relatively straight-forward to ensure a reasonable performance of the code generator. More advanced transformation rules that would require for example pre-processing of the input model, or allocation of non-trivial data structures, were problematic to support since they would impact significantly on the performance and memory consumption of Model RealTime. This problem hence limited what transformation features the code generator could support.
In batch builds it was necessary to launch Model RealTime in headless mode to perform code generation. This process was fairly time-consuming and also did not work well on systems without display capabilities. This problem caused batch builds to sometimes fail or be too slow.
To overcome these problems, Model RealTime has an improved architecture where generation of code and make files can be performed by a stand-alone utility, called the model compiler. This utility is a plain Java program which can run independently of Eclipse. Code generation now takes place outside of the Model RealTime IDE, and the new architecture has solved all of the above mentioned problems.
The model compiler is integrated with the Model RealTime user interface, and although there are some differences compared to the traditional builder (which we now refer to as the classic builder), most things work the same from a user-interface point of view. This means that a user who only runs builds interactively from within Model RealTime does not have to know much about the model compiler. Model RealTime automatically launches it with appropriate arguments when necessary. However, users that need to set-up batch building of Model RealTime models must know how to invoke the model compiler as a stand-alone command-line tool from the build scripts they write.