Skip to main content

Software characteristics and software crisis

Short answer

Software is developed, not manufactured; it doesn't wear out but deteriorates with changes; it's mostly custom-built, intangible, and complex. The software crisis is the persistent problem of projects being late, over budget, unreliable, and failing to meet user needs, while demand grows faster than production capacity.

What are typical software characteristics? What do you mean by software crisis?

Software characteristics

Software is a set of programs together with its documentation and configuration data. Its nature is very different from hardware or other manufactured products. Pressman lists three basic characteristics, and several others follow from them.

  1. Software is developed or engineered; it is not manufactured. Almost all the cost is in design and development (engineering effort). Making copies costs almost nothing, and quality is built in during development, not during "production".

  2. Software does not wear out, but it deteriorates. Hardware follows a "bathtub" failure curve: high failure early, low in the middle, and rising again as parts wear out. Software is not affected by dust, heat or ageing, so ideally its failure rate falls and stays flat. In practice every change (bug fix or new feature) can introduce new defects, so the failure rate spikes after each change and the minimum level slowly rises. The software deteriorates because of change, not because of wear.

Failure
 rate
  ^    change   change   change
  |\     |\       |\       |\     actual curve
  | \    | \      | \      | \____
  |  \___|  \_____|  \_____|
  |   ............................ idealized curve
  +----------------------------------> Time
  1. Most software is custom built. Hardware is assembled from standard components (ICs, screws). Much software is still written for a particular customer, although reuse and component-based development are growing.

Other typical characteristics:

  • Intangible: it cannot be seen or touched, so progress is hard to measure.
  • Complex: it has a huge number of states and interacting parts.
  • Flexible / easy to change: this is a strength, but it also invites frequent changes and loss of structure.
  • No spare parts: a failure means a design error that must be fixed in the code, not a part that can be replaced.

Sommerville describes the attributes that good software should have:

AttributeMeaning
MaintainabilityCan evolve to meet changing needs
Dependability and securityReliable, safe, secure; no damage on failure
EfficiencyDoes not waste memory, CPU or network
Acceptability (usability)Understandable and usable by its intended users

Software crisis

The software crisis refers to the serious and continuing problems in software development that were recognised in the late 1960s: software was delivered late, cost more than estimated, was unreliable, did not meet user requirements and was very hard to maintain. At the same time the demand for software was increasing faster than the capacity to produce it.

Main causes:

  • Growing size and complexity of systems.
  • Poorly understood and frequently changing requirements.
  • Unrealistic estimates and weak project management.
  • No systematic development process ("code and fix").
  • Insufficient testing and quality control.

Example: a large government payroll system that was budgeted for one year takes three years, still produces wrong tax deductions, and every rule change requires weeks of rework.

The answer to the crisis was software engineering: applying engineering discipline (process models, requirements engineering, design, testing, quality and configuration management) to software development.

✓ Answer checked by Claude Sonnet 5.5

All Software Engineering chapter 1 questions →