Generated software is a day-to-day fact of life. Many web pages, for instance, are generated and assembled immediately prior to being delivered. Programming IDEs provide functions that generate class and method shells and can refactor and reconstitute code on request. All of them work from two common elements—metadata, in the form of textual, graphical or data models, that define domain and scope, and templates that describe the required output.
Many generative engineering tools support a limited range of languages and output forms. Some are tightly integrated with specific IDEs, limiting their use to supported programming languages. If your requirements do not conform to your tool’s capabilities, then it will be of little or no value to you.
Finally, reusability is a significant concern. Properly designed generative solutions have high reusability rates, which add to the acceleration with which subsequent instances of a solution can be deployed.
Ultimately, generative engineering should be driven by a model abstracting the solution architecture and the minimum amount of specification data and template code necessary to express the application design. While it’s usually neither possible nor desirable to generate all of a solution, the more flexible the generative tools are, the more of it that can be generated. Some generative solutions only automate 10%-20% of an application’s code, which is not enough to overcome the costs of acquiring and employing them.
Codiscent’s generative software engineering solutions are different. We support numerous specification data sources, including Excel spreadsheets, .csv files, database tables and views, XML and our own relational and diagrammatic graphical models. We place no limits, whatsoever, on what you can generate, including any programming language in existence, character data, XML data or text. Our templates contain no imperative code. All of the interactions between the templates and the specifications data are managed by the Generative Engineering Studio and completely hands-off to developers, eliminating the time required to build them and a potential source of errors. The reusability of our solutions is second to none. We have been able to take solutions in C# which required a week to build, for example, and redeploy a second instance of them in under 30 minutes.
Our bottom line is—we have created applications for customers in which we have been able to generate 80% or more of the application code and deliver a production-quality solution in half the time that the customers expected.