You can develop software at the level of the software-language itself (coding) or at the tool-level (generating). When you use a tool the complexity of the software-development-process is reduced but the complexity of the coding increases.
When you use a tool the software-language is generated but the coding of the generator is not readable. You need the tool to understand what the software is doing. If you use a tool you have to change the software on the tool-level. If you adapt the generated coding the tool is not usable anymore.
The big problem arises when a software-vendor abandons his tools. This happens often. Software-vendors go broke, are sold and merge or they simply don’t want to maintain the software of the tools.
When a software-vendor has stopped to maintain his tools he also stops to adapt his tools to the underlying hardware, the target-environment of the tools. The target-environment changes because hardware-vendors improve their software, go broke, are sold and merge or simply stop the maintenance of their hardware.
It is very easy to develop new software with a new software-tool. The software-development process becomes very complicated when you want to connect the new software to the old software and the old software is generated by obsolete tool-sets generating obsolete coding that is used by obsolete hardware.
In practice every new software-language, every software-tool and every piece of hardware becomes obsolete. This means that you always have to maintain a huge incomprehensible set of software-components.
Many companies wait until the last moment to replace an obsolete software-environment. At that moment the skills to adapt the software-environment are gone and the only thing that is left for them is to cope with the current situation.
What has happened?
The software-industry is still in its infancy. About fifty years ago the industry was born and it took a very long time to understand what was right and wrong. During that time many companies became highly dependent on immature software.
Why do 70% of the IT-projects fail?
The main approach is to define a new system “out of the blue”. When the project has to face the reality of the installed base things go terribly wrong.
How do you Face Reality?
You are able to face reality when you have made an inventory of all the software components, their relationships (the syntax) and the semantics, the meaning, of the components and their relationships. This sounds simple but it is a very complicated and expensive activity to describe the so called “installed base”. When you have never spent enough time to create a reliable inventory you have to do a lot of work. Most companies postpone this activity until eternity.
They know “everything” about their personnel, their assets and their financial situation but they are “in the blind” about the software that is keeping the books about their personnel, assets and finance. If they don’t know what the software-systems are doing how do they know that their databases are reliable? The answer is simple. They don’t.
What is Software?
A Tool, Software, generates Software but Software generates another type of Software called Machine-code. Software generates Software until the software has reached the lowest layer, bits and bytes. At a certain level the generated software is not understandable.
When the lowest level is reached the bits and bytes activate a processor that is controlled by a clock (the CPU). The processor moves the bits and bytes and sends the end-result (other bits and bytes) to the Outside. At the outside the bits and bytes are transformed into human readable symbols that are presented on a user-interface (Screen, Paper).
Why is Software Changed?
Software has to Change because something Happens in the Outside World, an Event. The Event is propagated until the lowest level, bits and bytes.
So Software (N) = Software (N-1) + Event (N-1) and Software (N, Level (L)) = Software (N-1, Level (L-1)) + Event (N-1, Level (L-1)).
If You write out both sequences the end result is a long sequence of Events.
Software = Event (1) + Event (2) + Event (3) + ………………
Problems arise if you let every Event happen at the moment it happens. If a software vendor creates a new version of its software there is no need to implement this version immediately. Sometimes it is much better to wait until the new release is stable. To prevent chaos you have to Manage the Events that are entering your Software-environment (Change & Release-management).
What is an Event?
An Event is Happening when Something is Set into Motion by Pressure (Tension). Most of the time an Event is associated with a Very Short Duration, an Explosion, but An Event can take much longer. A Movie is an Event. The Great Pyramid in Egypt is an Event.
An Event changes its Intensity all the time. A Concert has a Start and an Apotheosis. An Event is a Wave or a Vibration and every Event has its Unique Pattern.
An Event extends and compresses in Space/Time (A Hurricane). An Event is Born, Expands, Compresses, Dies and Disappears. It follows a Life-Cycle.
Software = Wave (1) + Wave (2) + Wave (3) +
If Events are Born, Mature and Die You can wait until the Event has reached the stage of Maturity. Many Events in the Software World never reach maturity. They die before they have reached this stage.
What is the next stage in the Software Wave?
To predict the Software-Cycle we have to define the Level and the Periodicity of the Wave You want to explore. Every Wave moves through five stages. At a certain point the wave moves to another level (Up or Down) and starts to cycle again.
The simplest way to describe the stages is to use the Four Seasons (Winter, Spring, Summer and Fall) in combination with a Fifth Stage called Indian Summer. This is the stage of the Whole or the Centre. It lies between Summer and Fall.
At this moment the Software Wave is in the Stage of the Centre and is preparing to Jump to another Level. In the Fifth stage the Centre, The Infrastructure, The Foundation, itself is on the Move.
What is the new Centre?
It is very clear that we are moving to a world-wide-software infrastructure. The Foundation of the Infrastructure is the Internet.
What to do?
When a new infrastructure is created the old infrastructure will become obsolete. If the old infrastructure becomes obsolete every layer on top of the infrastructure will become obsolete. This means that the best thing you can do at this moment is “wait and see”. Try to maintain the current situation as much as possible and prepare for the next step.