Metrics using MetaFactory for in-house projects
In an ideal world
In an ideal world we would have an advanced application generator and create enterprise software easily and projects are effortless. Because:
- We enter the requirements
- We draw a business flow
- Specify the business rules and data set
- Add some technical constraints
5. We generate the enterprise application and done!
In this article we show you how software development is going to change and productivity will increase, if this new class of advanced generators like MetaFactory will take off.
Practice what you Preach
In the last year we have been creating software with our own MetaFactory tool and we have practiced what we preach. We are using MetaFactory to improve productivity in fixed price projects!
In this article I want to share the metrics of two systems we developed, based on the same architecture; a Back-office for an Internet of Things application to support smart building automation and a work flow system for a company organizing racing events. The architecture comprises of AngularJS, Spring Boot, Spring Rest and Spring Data with JPA2 and we are using MetaFactory, FreeMarker and IntelliJ as development environment.
First lets explain how MetaFactory works
Software applications consist of specific modules (e.g. business rules) and for a larger part of software full of patterns and recurring code. For the latter we create coding instructions and control these coding instructions via an enriched data model. MetaFactory has hooks to link application specific code and generates the rest of the modules in Java and AngularJS based on the coding instructions and the enriched data model.
Thru this mechanism the programmer can write his programs, transforms specific written code to coding instructions when he identifies repeatable patterns. Existing code instructions and/or the enriched data model can be expanded and tweaked to tune the generated Java and AngularJS modules until the team is satisfied with the code quality and the test results of the programs.
The coding instructions are related to the choice made by the project team in terms of technology stack, look and feel of the data entry screens, general mechanisms to link the software with other available tools etc. The ratio for handwritten code and recurring patterns can be depicted as in image 1:
The metrics of these two projects
For the back office application, we had 2.000 lines of business logic, 1.000 lines of enriched data model description and 7.100 lines of coding instructions generating 39.000 lines of Java and AngularJS code. We estimated that the effort of programming the model description thru the enriched data-model and the coding instructions takes double the effort of traditional engineering. The metrics are shown in the picture below and the savings are substantial. Besides the savings on development we claim that the maintainability of projects using MetaFactory is at least three times better simply because the number of lines to maintain is less than 30%! For the details see image 2.
Software departments developing large scale enterprise applications, software organizations developing a product or organizations developing custom specific projects can benefit enormously from MetaFactory, because most of the software development is automated using MetaFactory. This working method creates software that is much better maintainable. Future software development will be accelerated, because controlling the development by re-using and tweaking existing coding instructions gives a huge productivity leap.
MetaFactory is a challenge for programmers. It requires a new level of abstraction from software engineers just as object oriented programming did. It is a challenge, but it certainly pays off!