Backbutton Frameworks ©




Rapid Application Development


with Application Generators

Model

View

Controller

Mission Statement

This website describes,from my perspective, the concepts and technologies required for building commercial applications successfully using frameworks with particular focus on the MVC paradigm where the Controller pertains to the Enterprise Architecture, View refers to ReactJS and Model in the form of a RDBMS Database.

Incidentally this website is hosted on a Raspi 4 with 8GB RAM, in which case if I use the I/O pins then the I/O pins would be the Model . The model can be used to open and close the window curtains from the other side of the planet. This is the power of Application Development using frameworks.

Enterprise Architecture

When you know the concepts you will ask good question then you shall find agreeable answers


who is Dave Gray ?

Problem

What is Industrial-Strength Software ?

Source: Object Orientated Analysis and Design with Applications;Grady Booch [IBM][Second Edition]

" A dying star on the verge of collapse, a child learning how to read , white blood cells rushing to attack a virus:these are but a few of the objects in the physical world that involves truly awsome complexity. Software may also involve elements of great complexity; however , the complexity we find here is of a fundamentally different kind. Einstein argued that there must be simplified explanations of nature , because GOD is not capricious or arbitrary. No such faith comforts the software engineer.

We do realise that some software systems are not complex. These are largely forgettable applications that are specified, constructed, maintained and used by the same person, usually the amateur programmer or the professional developer working in isolation. This is not to say that all such systems are crude and inelegant, nor do we mean to belittle their creators. Such systems tend to have a very limited purpose and a very short life span. We can afford to throw them away and replace them with entirely new software rather than attempt to reuse them , repair them , or extend their functionality. Such applications are generally more tedious than diffcult to develop ; consequently, learning how to design them does not interest us.

Instead, we are interested in more in the challenges of developing what we call Industrial-Strength Software. Here we find applications that exhibit a very rich set of behaviours , as for example , in reactive system that drive or driven by events by the physical world , and for which time and space are a scarce resource;applications that maintain the integrity of hundreds of thousands of records of information while allowing concurrent updates and queries ; and systems for the command and control of real world entities, such as routings of air or railway traffic. Software system such as these tend to have a long life span , and over time , many users come to depend on the proper functioning. In the real world of Industrial-Strength software we also find frameworks that simplify the creation of domain-specific applications, and programs that mimic some aspect of human intelligence. Although such applications are generally products of research and development they are no less complex , for they are the means and artifacts of incremental and exploratory development.

The distinguishing characteristics of Industrial-Strength software is that it is intensely difficult , if not impossible, for a developer to comprehend all the subtleties of design. Stated in blunt terms, the complexity of such systems exceeds the human intellect capacity. Alas , this complexity we speak of seems to be essential property of all large software systems. By essential we mean that we may master this complexity, but we can never make it go away. Certainly , there will always be geniuses among us, people of extraordinary skill who can do the work of a handful of mere mortal developers. ... "

Solution

Keeping it Simple

Source Grady Booch
" The United States Department of defence (DOD) is perhaps the largest user of computers in the world. By the mid-1970s, software development for its systems had reached crisis proportions: projects were often late, over budget and they often failed to meet their stated requirements. It was evident that the problems would only worsen as software development costs continued to rise exponentially. To help resolve these problems which were further compounded by the proliferation of hundreds of different languages. The DOD sponsored the development of a single, common high order programming language. The winning design was originally called the Green Language (so called because of its team colour code during the competition), later renamed Ada.

" Poor quality software cost an estimated $2.84 trillion in the US alone in 2018 " Source CISQ: [Consortium for IT Software Quality ].
https://www.it-cisq.org/the-cost-of-poor-quality-software-in-the-us-a-2018-report/The-Cost-of-Poor-Quality-Software-in-the-US-2018-Report.pdf " Despite the fact there are only two golden rules for good quality software this is a remarkable achievement

The takeaway here is, if we try to learn as many technologies as possible, this approach will be counterproductive, the best approach is to keep it simple, be selective.

Warning
Avoid any framework accompanied by expensive and exclusive training as it will lead to a dead end career with little opportunity to master the skill. Been there done that! job description which says "full training will be given" can be interpreted as 'somebody in charge' chose the wrong technology

Commercial Experience

Training Ground began with a two year HND course in computing. This was a change of careers from accountancy to computers. The intention was to keep up to date with Industrial skills. The presumption of this course is that it would give me skills in basic understanding of computers. The course designer, Mr Dimitri had other ideas. He was training software engineers. C on unix was the third programming language.

The first language was pascal followed by 68k Assembly language. Pascal is meant to be an introductory language into programming , however when the concepts of programming also new, Pascal is not so easy. It was when I did a project in C using my previous career knowledge in accountancy that I realised I had an understanding of computer programming. A career in programming is unlike any other career because every thing you do is an original creation, It is the furthest you get from a career as a factory worker on a production line where you are performing one repeated task on a production line. It was this the thought of this originality that appealed to me to become an application developer. I have no talent in painting so this is my alternative to becoming an artist, this is my equivalent to an artist taking a blank canvas and creates something unique from his imagination.

Junior Software Engineer;

Smiths Aerospace and defence is my first commercial training ground as junior software engineer. Smiths aerospace and defence produce original, inventive creations of bespoke hardware & software solutions. The solutions are employed in aircrafts so an approach called best practices is followed. A programming language called ADA was used on the project. I was one of three junior software engineers employed to do unit tests.

The project was called Aircraft Fuel Management system. My exposure to the system began at a unit testing level. This level of exposure hides a proper level of understanding of the system. I was curious to find out what Fuel Managment System actually meant so I approached the Technical Lead, who had been working this project for the last four and half years, for a Level 0. He didn't have one so he drew me one.


Componentisation

The Project Tech Lead also pointed to three other members of his team who assisted him, an 'A' level mathematician, a firmware Programmer and a phD student documentating the software following the code completion. Documenting the software was a client requirement. This made up the technical project hierarchy not including the hardware engineer and the Project Manager. In this environment the use of third party APIs are not permitted so the relevant experts are to assist the Tech Lead.

In the e-commerce world where the use of third party APIs are permitted the Application Developer takes on the role of the Tech Lead because he is permitted to use third APIs and Tools to assist him to develop an application.

best practice

I asked the technical Lead was, are there any project in C ? , I am good at C from College. He replied don't mention that word here again. What word I asked ? he replied C. See you made me say it again.

Software Maintenance

My curiousity led me to be taken off the unit testing and moved on to finding fault in an engine monitoring system. well , okay it wasn't just this question, I unintentionally got the contract tester sacked because I understood programming concepts better than he thought I did and he did not follow best practices. The engine monitoring system had gone through all the tests, it was live with project closed and the technical lead having left the company. I was tasked to find the fault which came to light two months later. I was given the code and asked to do a code walthrough to find the fault as described in the fault report. The software was written in Pascal. It was exactly what I needed at that point in my career, exposure to a complete system, especially one using best practices. The coding wasn't much more different than that of my C programming project in the HND course.

The next project I was meant to be working on for the next five years was unfortunately cancelled. The idea was later taken up by Airbus. That's life in Information Technology.

Application Developer @ bytel

bytel was a software house focused on building a single product called SMS customer care and Billing system for the telecom industry, with a team of 10-11 developers and 250 table database. There was no competive threat because the product was feature rich and mature built using feedback from customers. Any competitor wishing to start from scratch would have an impossible task to compete. At the top of the technical hierarchy was "one of the top 10 database experts in the world".

Business Knowledge

I was given a bug report to fix a bug in the billing system. The manager also gave me the home telephone number of the senior contractor. He said if I have any issues I should call him. Curiously I called him and told him I have been tasked to fix a bug in the billing system. He asked if I had worked on it before. I replied No. His response Oh My God they gave you that!

I then looked to my left. I was looking at programmers from India, tasked with migrating from one 4GL to another 4GL. They had been working on it in India for 12 months. The whole team migration team came with the software because it wasn't working.

The application developers, the contractors who worked on the software from design working divided into sub domains had been terminated. The ones with the business knowledge were all gone.

Sub Domain

Following the OMG remarks I advised the manager that it would have been a better approach to use previous contractors because they had business knowledge of each sub domain comparatively the outsourced developers may have skills in the two tools but without the business knowledge success would be unlikely.

From these experiences I have chosen Reactjs because it is the manageable side of JavaScript, microservices because it is based on the idea of breaking up a business domain into manageable sub domians and of course start any project with Database Design.

Following these experiences I have chosen Reactjs because it the manageable version of JavaScript and the micro Software Engineer;

It was at Logsys Solutions I finally had the opportunity I had been waiting for. Digitising a paper based system. The Technical Lead was chosen because of his long term exposure to Visual Basic. I didn't have long term experience in any one technology but short term exposures at many technologies. His approach to the MVC model was to start with creating screens. Seeing this View first approach led me to realise I had out grown this company.

Concepts

Learning Curve
Human resources Manager arranged a career development between the three company developers who were not senior application developers and the project Manager. His career advice was that the technology learning curve flattens out into a plateau,you will remain as junior if you do not focuse beyond the technology. I did believe him about the curve flattening because I had that same feeling at College about C when I did the project using my prior business knowledge from a previous career in accountancy.

One of the other developers objected to the term junior used to describe an application developer fluent in an application development framework. The project Manager was also relatively junior amongst the Technical staff Heirachy

Database Desgn
The second meeting HR arranged was between us three and a "top 10 database expert in the world." There were no arguments or disagreements this time, just quiet listening and absorbing of knowledge. He covered alot more ground than covered in College. The tutor only covered RDBMS & SQL. I later discovered what I had learned from him and more by reading professional Database product Documentation.

Application Performance
I also met another kind of database expert, whilst keeping each other company during smoking a cigarette outside the office in slough. He has been called in due to customers beginning to notice sluggish behaviour. I expressed my curiousity, he explained to me the steps he was going to take.

DataBase Designs

When you know the concepts you will find what you are looking for.
seek and you shall find !


Modern MVC

Model View Controller is a popular design pattern for e-commerce Applications. There are two approaches to building applications to meet the stated requirements . One is to begin with the model , this involves using the services of a data analyst(s) to extract ERDs and business rules from the agreed upon specification. The other is to start with the View .

Java EE microprofile was extracted from Java EE, it was born out of the idea of standarisation and making enterpise applications simpler. Although Java EE MicroProfile is not as popular Spring.io mainly because Spring.io was first to market. Java EE microprofile is supported by multiple vendors major corporations like including IBM and Oracle representing millions of Dollars investments. A number of good reasons to invest for an Application Developer.

Although Java EE has its own technology to use for the View layer, the popular trend is to use JavaScript based frameworks like ReactJS or Angular , ViewJS.

Model

View

Controller

Enterprise Web Architectures

The middle architectural diagram was published in 1999, source Credits: Professional Java Server Programming, wrox press.

Career Highlight

I consider drawing the conclusion that the KIS architecture (i.e. connection pooling , load balancing) is flawed then finding the J2EE architecture, an enterprise architecture as the one more suitable for e-commerce web application as my career highlight. Althought It also meant I had start again with a new set of skills, with one major difference.This time I would be starting knowing the concepts.

The diagram on the right represents a very popular paradigm known as microservices. It has pretty much the same components as the original J2EE MVC architecture, except the core controller is a client server API. Hence one can use it not just as for microservices projects but also for 'macro-services' or even a monolith.

A Source code illustration of the duplicity existing in Java EE indicated by the orange ellipse in the above diagram.

Stability, simplicity

The Initial phase or the objective of API framework developers is to build a functional framework to meet the requirements, the second phase is to rework it so that it is both Stable and simple to use by Application Developers. That is the evolution cycle all frameworks follow.


Java EE quirks

Although the framework developers are working to make it simple at the same time they are making counter productive efforts to make it complicated.For example we the application developers need to be aware JAX-RS is the name of specification, however there are multiple Implementations i.e. jersey , Jboss RestEasy , Apache CXF etc. The JDBC API specification is called JPA, it also has many Implementations i.e. Eclipse Link , Hibernate.io ,ibatis. The Application developer need to be skilled in only one of these implementations to do their job therefore only needs to focus on one. If we try to make comparisons between the very many implementations then we will end up getting nothing done.



This demo is another version of the shopping cart senario, conceptually speaking. The technology stack is comprehensive, using all the components needed to build a commercial application. The technology stack is comprised of Apache webserver, Apache mod_proxy as the cluster loadbalancer,reverse proxy,gateway, Jakarta EE compliant application server, JSF , CDI , multilingual functionality, running on a Raspberry Pi 4 hardware for fun. The only component I haven't implemented is the JPA API and a database. This is because it was developed for raspi running on micros sd card. Micro SD card are made for storage, not for write operations, the SD Card will likely crash unlike a ssd drive which is design for write operations.

All the components usually found in any GUI application can be found in the demo. It is important to keep in mind when using GUI components, our number one criteria is end user familiarity, creating a feeling of comfort for the end user, otherwise we risk the danger of the end user concluding 'this is too complicated' , we will lose our end user user unless they have a compelling reason to remain.

Motivation for Microservices

Microservices paradigm is another approach to solve our above mentioned Problem by simplify the stated requirements for the application developer(s), making the stated requirements simple enough to "fit inside one developer's head ". This means that microservices project structure will be forced to have atleasts two phases. The design and analysis phase where the domain is broken down into sub domains, preferably begining with a database design.

Origin of Frameworks

The process of producing Jakarta EE web based application frameworks involves, the API developers working together in collaboration as vendors. The designs are worked out for them by technical committees. See LRA specification solution section for supporting evidence of the hierarchy.

Java Enterprise Commercial Frameworks

Familiar language

Java programming language is a combination of C , Ada and OOP therefore Java is not a new language but a familiar language. It is a familiar language to reduce the steepness of the learning curve.

Java is an interpretive language consequently the disadvantage is a slight degradation in performance, the advantage on the other hand is one can trace a bug even if that is outside your code.The advantage outweigh the disadvantage.

Java from ground up

What this actually means is that Java was aimed at two types of audience. The Application Developer and the Tool Buider. For examples Reflection is a feature in the Java programming language. It allows an executing Java program to examine or "introspect" upon itself, and manipulate the internal properties of the program. For example, it is possible for a Java class to obtain the names of all its members and display them. The ability to examine and manipulate a Java class from within itself may not sound like very much, but in other programming languages this feature simply doesn't exist. For example, there is no way in a Pascal , C or C++ program to obtain information about the functions defined within that program , hence Java is from Ground Up. Reflection is an example of a feature for the Tool Builder not the Application developer.

An Application developer should keep in mind, it takes time for Tool Builders, who are also just programmers to design, build , stabilise , make feature rich, especially feature rich (product maturity), document their products ready for Application developers' use.

Let's see what the Tool Builders have for us but before that, what is the lesson in the DOD report when it says the software crisis was "compounded by the proliferation of hundreds of different languages" ?

Did I go around the word wide web to find these tools or attend Java conferences ? No, I bought a book which listed them all. That's what I call a good book. It was the sixth one on the same subject

How can I be certain there is commercial future in Microservices worth investing my time when I do not know any insider in the Industry ? The list below represents Massive financial investment in producing feature rich technology stack by a large group of companies.

Is there a way I can be more sure ? The product documentation is the last stage of software development. Documentation follows coding completion. They are comprehensive and accurate.

A small selection of Microprofile application generators, you can begin prototyping by going to the button marked ... :

.. get started Microprofile .

.. get started Oracle's Helidon .

.. get started IBM's OpenLiberty .

.. get started kumuluzEE.

.. get started Payara fish .

.. get started Quarkas.

.. get started Community's SmallRye.

.. get started Spring.

Apache Webserver along with Tomcat Application Server websites may also be worth a visit. At the apache website finding the get started button is a bit more involved, it is Freeware. For this website you may need to get a book to guide you.

The Java EE specifications for the above architectural blueprint in its current form can be found at the Jakarta EE. These specifications contain the Tool Vendor stated requirements . Of course the ever changing specification needs a work bench. The work bench is called glassfish

There is one easy way to find out the popularity of a Software Application Tool. You don't have to read any reviews or visit any conferences. Simply try out the product. The more bugs you find in the documentation, the more bugs you have to fix in the setup and startup phase of the software, the less helpful the error handler, the less popular the product. If the product was popular then other developers would have pointed out these anomolies and they would have been fixed.

Is there a need to place trust in the commercial vendors ? not if you are going to "Protoype! Protoype! Protoype!". You can do this by clicking the get started button provided. If you do go down the prototyping route you are at risk of reaching the plateau, taking you, the application developer, to the expert level.

I can't say how difficult the learning curve is for a complete beginner without any guidance but someone with five years experience + 2 years HND Computing, like me, this is part of the GIG economy. A bit more challenging than delivering pizzas,another GIG economy.

spring boot -v- microprofile

Jakarta EE effort on microservices began in July 2016 when a group of dozen vendors came together and decided to put together a solution for microservices Paradigm. The Jakarata EE based effort is called microprofile.


Comparative Analysis by Emily Jiang, IBM MicroProfile Consultant from the IBM R&D laboratory

Personally I do not have any desire for comparisons because my concern and focus is whether my chosen architecture meets the concepts I know. I prefer to spend time on becoming more comfortable on my chosen set of technologies.

Geeks -v- Engineers

The first time I came across a geek was at College. He was the other person apart from me, who could do programming, I think he was looking for a formal qualification. He said something I neevr forgot, he said he sometimes names his variables after his favourite start wars characters. The next time I came across geek was at bytel. I believe his role was around software build and version control. Geeks normally code all hours of the day and night.

The first time I came across an Engineer's work was at Smiths aerospace. It happened when the source code written in Pascal was given to me to find the bug. It was amazing the organisation which went into the way the code was written. You could immediately see this person work from 9 am to 5 pm. He knew exactly where he left off the day before so he could continue from that point the next day.He worked to a plan. Reactjs and its component based approach is something an engineer like him would favour, meanwhile vanilla Javascript is definitely for the Geek.

Reactjs was devised by facebook. My guess is that the motivation for Reactjs project was probably due to their Vanilla Java script based website became unmaintainable. The code was too complex to analyse for the purpose of fixing and adding features so the facebook engineers came up with a framework which made it simpler and easier to maintin their website. More often than not an Application developers will end up as maintainers on existing projects in their careers.

My guess is motivation for microservices is the same as motivation for reactjs, an endeavour for make enterprise applications simpler

Applying KISSSS © to the Stated Requirements

Analysis and Design of Applications is Always relevant
How to build commercial grade Industrial Strength Application using Microprofile
A good and accurate source material on the concepts of Microservices the Paradigm.

Security Consideration

Port 80 & 443 is open to all, for both innocent access and vicious attack therefore security is a consideration for data protection (Database). Consequences when security is not taken seriously as a consideration. I think it is safe to assume the data taken was residing in a database. A DBA, who used to go on sites, and myself did joke over the discovery that many Oracle databases do still have their the default username & password scott tiger unchanged. I wonder ?

Application Developer's Production Rate

How much can a developer's skills be worth if the developer is an application developer using one of the above mentioned application generators ?

Let's take this Shark Tank App as an example. The App is called BricksAndAgent. It is a property maintenance application. The Billionaire's son invested $750,000 in Software development cost. He wants now $250,000 for 10% equity from the sharks, which he gets, thereby making the app a $1 Million dollar app.

With a database design in hand, I would estimate it would take an application developer 3 months (add 20% contingency) to churn out a duplicate application with some enhancements thrown in. ssssh...
projection for month 5; unemployed looking for another GIG.