Current software re-use strategies are mostly limited to programming language and run-time mechanisms. While object-oriented design, pattern languages and aspect-oriented design signify major advances in terms of managing software complexity, they are still limited in terms of producing re-usable software components. As implementation particulars are added to the equation, such as the operating system, the programming language, the information storage and distribution model, the options for re-use dramatically decline. Abstracting these differences and incompatibilities away in software, leads to increasingly far fetched artifacts that are very far removed from the original problem domain.
Blueprinter generates Ajax powered, GIS enabled web interfaces, backed by spatially enabled, service-oriented and cloud compatible back-end systems.
Generating code from problem domain specific blueprints, brings re-use possibilities that are much further removed from implementation details than current software re-use strategies. The implementation particulars are delegated away to the code generator back-end.
To take an example from accounting: once the 'account' type is implemented in Java as a Java class, persisted to an Oracle database using the Hibernate object-relational mapping tool, communicated using Java Serialization using 'RMI' or a 'JMS' message bus, it will be of very little use in a system implemented in C++, persisted to a DB2 database and distributed over IIOP in a CORBA environment. With code-generation in mind, things like programming language, distribution and persistence model become subordinate concerns. Code generators can deal with these differences, preserving the essence of the information solution being modeled.
Introducing Aivolution Blueprinter
Aivolution Blueprinter breaks the functionality of information systems up in three main orthogonal aspects: presentation, representation and distribution. For each aspect, different framework targets can be selected:
- presentation: GWT web-based interface, Java Swing, SWT based desktop user interface, ...
- distribution: asynchronous publish/subscribe over JMS, synchronous SOAP, XML-RPC, JSON-RPC, RMI, DCOM, CORBA, ...
- representation: JSON, XML, SQL (Oracle, PostgreSQL, MySQL, SAP, ...)