PolyGenesis is an open source solution for Multilingual Automatic Programming, allowing developers to focus on solving the Domain Problem Space.
In the modern era, business applications should be able to adapt fast. They should be user-friendly and well tested. Source code should be qualitative and consistent. Integration to infrastructure should be interchangeable.
Not all businesses are there yet, for a variety of reasons. In some teams, each developer follows his/her own coding style due to the lack of constraint mechanisms. There is not always enough time for adequate testing, as the time-to-market is more important to the business. A lot - if not most of the - time is spent on implementing the various layers with repetitive work and less time is spent on the domain model.
PolyGenesis is a novel approach to automatic programming, inspired by Domain-Driven Design and Hexagonal/Ports-Adapters Architecture, aiming to solve the above problems. The various layers and technologies are modeled and instantiated with the proper values. Generators use templates combined with the PolyGenesis models to produce consistent and reliable source code.
It all starts with the Thing, Function and Goal definitions. Developer input is provided via Annotations at existing APIs or DSL. Once Goals are defined, the Deducers are in charge of instantiating the Technology Models. The Generators define templates and are fed by the Technology Models, in order to produce source code. The whole process is orchestrated by the Creator.