Share this blog
- Morfik Discussion Forums rules and guidelines
- MDA Release: The FacebookLike Package
- MDA Release: The Rating Package
- MDA Release: The HTML5 Video Package
- MDA Release: The Accordion Package
- April 2011 (1)
- January 2011 (4)
- December 2010 (2)
- November 2010 (3)
- October 2010 (5)
- September 2010 (4)
- August 2010 (6)
- July 2010 (6)
- June 2010 (4)
- May 2010 (5)
- April 2010 (9)
- March 2010 (7)
- February 2010 (17)
- January 2010 (19)
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?