Software: A Crisis on the Horizon
Various organizations observers have characterized the problems related with software development as a "Crisis" Yet what we really have to be something rather different.
The term "crisis " is describe in Webster's Dictionary as a turning point in the course of anything : crucial time stage or decisive or event Yet for software there has been no "turning point" no "decisive time" only slow evolutionary change. In the software companies we have had a crisis that has been with us for close to 30 years and that is a contradiction in terms.
Anyone who looks up the term crisis in the dictionary will find another definition that is the turning point in the course of a disease when it becomes clear whether the patient will die or live. This definition may give us a clue about the original nature of the problems that have plagued software development.
We have yet to reach at the stage of crisis in the computer software area. What we really have is a chronic affliction which is defined as anything causing pain or distress but it is the definition of the adjective "chronic" that is the key to our argument that "lasting a long time or recurring often; continuing indefinitely. It is more accurate to define what we have endured for the past three decades as a chronic affliction rather that a crisis. There are various ways but there are no miracle cures that we can reduce that pain as we strive to discover a cure.
Figure The impact of change
Whether we call it a software affliction or software crisis a term alludes to asset or problems which are encountered in the development of computer software. These problems are not limited to software that does not function properly weather , the affliction encompasses problems related with how we develop software how we can expect to keep pace with a growing demand for more software and how we maintain a growing volume of existing software. Although reference to a crisis or even an affliction can be criticized for being melodramatic the phrases do serve a meaningful purpose by denoting real problems which are encountered in all area of software development.