|In building a solution, we create a model bridging the problem space and the solution architecture. The model may consist of existing metadata extracted automatically from data repositories or data dictionaries enhanced with enrichment information that expands and completes its description of the problem. Once created, we ensure the logical integrity and comprehensiveness of the model. Then we create templates for each of the component types required for the solution. We merge the model data with the template, generating an instance of each component type, test it and refine the template until the code generated from it meets requirements and performs as specified. Working this way, we minimize the amount of coding and testing needed to produce a solution.When a solution is perfected, we can generate the full inventory of components with the expectation that they will all perform as the prototype did. When we have completed prototyping, testing and generating all of the solution components, we integrate them, producing the deliverable application.
Employing Generative Software Engineering disciplines, we can reduce the coding and testing tasks for a solution to a small fraction of what hand coding would require. Our approach yields astounding gains in productivity, code quality, consistency and architectural conformity.
The diagram, below, depicts a schematic of a Codiscent solution:
The Solution Model consists of the Specification Data in the form of parseable code, the patterns for parsing and automated generator of results that is called the Orchestrator. The Generated Components are combined with Framework Components and integrated with any other required infrastructure components to produce the Application. The Application can be deployed in the production environment without exposing any of the Codiscent tools. The entire solution—the Codiscent tools and the Solution Artifacts—can be managed through the Generative Engineering Studio or a solution Management Center. This allows Codiscent or the customer to modify and re-generate an end-to-end customer’s application efficiently at any time.