Entropy in software systems – managing complexity

In the science of thermodynamics, the concept of Entropy represents a “measure of disorder”.  According to this concept “Systems evolve toward a state of maximum entropy”.

This notion has a parallel in software engineering, “Software systems evolve toward a state of maximum complexity”.

Desktop computing started in a simple way.  The platform consisted of a simple processor, a simple single-tasking single-user operating system and a number of simple programming languages.  As software applications evolved things became increasingly complex, slowing down the progress. So something had to be done.

The three main players in the theatre we call the software business are the hardware manufacturer, the customer and the programmer.   From the beginning programmers have been on the back foot.  Customers pay the fees; therefore they set the rules which continually demand more for less.  Hardware manufacturers use automation and robotics to continually deliver more for less.  Programmers are usually the meat in the sandwich and after a lifetime staring at their computer display, end up with a sign around their neck which reads “will work for food”.

From time to time there are exceptions when programmers turn a good original idea into reality and, attracting a large number of users, make untold fame and fortune.  But more often good ideas are ruined with poor implementation, and are abandoned.  Let us face it; programming is no longer about algorithmic elegance or design magnificence or even speed of execution.  In today’s computing environment, programming is about managing complexity.

Over the years, many solutions for managing complexity have been proposed.  Some have originated in academia. Others have come from the marketplace. Design Patterns, Modelling Languages, Function Point Analysis, Object Oriented Programming, Reusable Code, Libraries and Frameworks, Visual Design Tools and Rapid Application Development; just to name a few.

Many of these initiatives seek to “hide” the complexity. Others simply “shift” it.  A drag-and-drop visual form designer “hides” the underlying API calls to the Operating System.  Object Oriented Languages make programming efficient but present a steep learning curve.  Languages like Java and C# may be easy to learn but are difficult to master due to the sheer size of their libraries.  During a career that may span three decades, most programmers are forced to start from scratch several times and learn entire new technologies from the ground up.

One of the most successful efforts to make life easier and more productive for the programmer has been the advent of Visual Integrated Development Environments.  The revolution triggered by Visual Basic and Delphi not only allowed experienced programmers to leverage their considerable skills in computing to create stunning and sophisticated applications, but also allowed power users with business savvy to develop a galaxy of useful, stable, well-presented and indeed marketable applications and become good programmers in the process.

The web applications space today resembles the desktop environment of the early 90’s.  However, while a bewildering plethora of languages, frameworks and libraries written by experienced programmers for other experienced programmers is on offer, few are providing true visual Web IDEs suitable for both experienced programmers and power users alike.

If independent developers wish to repeat the commercial successes of their 90’s counterparts, time is of essence.  The emergence of Web OS and the growing demand for web business applications makes it imperative for developers to choose the right tool and master its use ready to surf on the incoming wave.  In choosing the right tool they must remember one universal rule: “Software systems evolve toward a state of maximum complexity”.  Will their platform of choice allow them to cope with the ever increasing complexity of the system they wish to develop?

One Response to “Entropy in software systems – managing complexity”

July 26th, 2017
Khalid Elbarjaj says:

Therefore I believe it would be a wise decision to integrate UML modeling into the IDE which would drive Morfik in a more complete WEB IDE lifecycle management product. At the same time it would force Morfik to adhere to UML supported standards which I believe would be a plus. You would have your application consisting of reusable packages and objects. And you could in one view have a complete overview of your project in packages and zoom in to different packages based on uif/business logic/interfacing/DB. A mature CAD approach for software development. Something Mr. Aram is already familiar with.

I would and I believe many developers would really appreciate this specifically as you mentioned “Software systems evolve toward a state of maximum complexity”.

Leave a Reply

Fields marked by an asterisk (*) are required.