MENU

Metrics using MetaFactory for in-house projects

Reply

Metrics using MetaFactory for in-house projects

In this article I want to share the metrics of two systems we developed with MetaFactory, based on the same architecture. For the IoT 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. The event application contains approximately 3.000 lines of business logic and the enriched data model consists of 2.000 lines. We could reuse 85 % of the coding instructions of the IoT back office application. Next we had to develop approx. 775 lines of specific coding instructions. The application contains about 43.000 lines (Java, Javascript, html and json included).

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:

  1. We enter the requirements
  2. We draw a business flow
  3. Specify the business rules and data set
  4. Add some technical constraints

And then….…

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:

MetaFactory metrics

Image 1: MetaFactory metrics

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.

The event application consists of CRM functionality, event participation registration, invoicing and preparation of the events. This project was build using the same architecture therefore a lot of the coding instructions were (re) usable. This project contains approximately 3.000 lines of business logic and the enriched data model consists of 2.000 lines. The patterns for data entry were identical to the back office application. The patterns to communicate with the Internet of Things devices were of course not applicable so we could reuse 85 % of the coding instructions. Next we had to develop approx. 775 lines of specific coding instructions. The application contains about 43.000 lines (Java, Javascript, html and json included).

MetaFactory vs traditional engineering

Image 2: MetaFactory vs traditional engineering

Conclusions

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!



Leave a comment