Click here to Skip to main content
Click here to Skip to main content
Technical Blog

Continuous thinking: why a 4GL should be avoided to start a new app

, 1 Jun 2011 CPOL
Rate this:
Please Sign up or sign in to vote.
IntroductionAs an avid member of the DDD/CQRS discussion group, somebody asked me what I meant with the following sentence:it looks a lot like a 4GL, and I assume we all know what that means...Since I tend to think my answer formulated my ideas pretty well, I decided to post it on my blog too; I hop

Introduction

As an avid member of the DDD/CQRS discussion group, somebody asked me what I meant with the following sentence:

it looks a lot like a 4GL, and I assume we all know what that means...

Since I tend to think my answer formulated my ideas pretty well, I decided to post it on my blog too; I hope this might help some of you to avoid the 4GL pitfall...

Why should a business avoid writing apps in a 4GL ?

This was my answer:

WARNING: This might be a bit off-topic here, but I do want to clarify my **PERSONAL** opinion on 4GLs.

[AD MODE]As an independent consultant one of my key specializations is brownfield migrations (together with non-communicating teams).[/AD MODE]

Having seen numerous examples, I think most of these homegrown x-year old+ MSAccess or similar applications are usually the perfect example of why one should respect the SOLID principles.

Here a typical evolution of a 4GL app:
There is a business need for a small piece of software (think CRUD client list), which does not need to do a lot. So someone drags and drops a CRUD app together in a few hours/days/weeks depending on the scope... Everybody is thrilled and excited about the custom piece of software, which was developed in a fraction of the time, it is custom built, cheaper,[Add the obvious here],....

Unfortunately, an app is bound to grow more complicated as the business is evolving, f.e. "Could you add products/quotes/","except for this and that this should do that", ...

After some time, such an app is also bound to have "user hacks" (i.e. changing a field's meaning to work around a limitation for example, because it would cost to much to implement the change), so when this specific coworker is on holiday nobody knows how to work with the app...
Educating new users/software devs might also become quite a steep hill to climb.

I usually get consulted by the time the app has been growing for about 3 to 10 years into an unmaintainable behemoth with a massive amount of implicit business knowledge in it, where a single change might break everything or take numerous days to implement,

Unfortunately, there is no nearby river available to clean this kind of Augeas stable. I do not intend to describe the whole process we need to go through, but I can assure you it takes a lot of time/effort/resources, and requires quite a lot of engagement from both the management and the software team.

A business in this kind of situation needs to handle this problem, better sooner then later, because it is bound to constrain the business growth/evolution sooner or later.

[sarcastic mode] If you do decide to implement an app in a 4GL, please send me your coordinates, and I will give you a call in about a year or 3 [/sarcastic mode]

Conclusion

In my honest opinion, a 4GL should never be used to implement business logic; if you do break this rule, you are bound to get into problematic situations sooner or later; in case you do decide on using a 4GL, I would stongly advise to use it only for the front-end, and respect the SOLID principles.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Tom Janssens
Founder Core bvba
Belgium Belgium
Tom Janssens, owner of Core, a software and consultancy company.
Father of two sons named Quinten & Matisse, and married to a beautiful woman named Liesbeth.
 
Blog: http://tojans.me
Github: http://github.com/ToJans
Twitter: http://twitter.com/ToJans
LinkedIn: http://www.linkedin.com/in/tomjanssens

Comments and Discussions

 
-- There are no messages in this forum --
| Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.150301.1 | Last Updated 1 Jun 2011
Article Copyright 2011 by Tom Janssens
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid