In addition to our IIoT software and consulting, inno-focus has also stood for the implementation of complex individual software for years. Here we present one of our methods that helps to handle large amounts of code while keeping error rates as low as possible. Meta-programming describes the method of developing programs, which in turn can generate large amounts of code quickly and reliably.
What is meta programming?
It is not uncommon for us to come across situations in our development projects in which it would be necessary to write large amounts of code, for example to generate different views or data outputs that are basically always similar, but also have differences. Writing the necessary code by hand ties up human resources, costs a lot of time and, ultimately, a lot of money for the customer. In such cases, it may be more efficient to invest time in creating one or more programs, which then generate much of the code based on the customer-specified requirements.
Once written, these programs reduce error rates by delivering reproducible results. This principle can be used for all tier levels of an application: database, backend and frontend. Furthermore, the tool created relieves the developer of the work of manually writing boiler-plate code. This refers to repetitive code segments that do not or hardly differ from each other.
Instead, the development can concentrate more on the business logic and thus significantly advance the project progress. Meta-programming is suitable for large projects with a static data model, which should be the case in most cases. There are more suitable procedures for dynamic data models.
In a current customer project we work with meta-programming. The so-called “Model Editor”, a piece of software that writes data models for the backend, comprises around 57,000 lines of code. That sounds like a lot, but we currently estimate the total scope of the finished backend to be well over a million lines of code, so we can assume massive savings in time and resources, which in the end will also convince the customer.