- Year not given · 4+4 marks
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.
-
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".
-
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
- 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:
| Attribute | Meaning |
|---|---|
| Maintainability | Can evolve to meet changing needs |
| Dependability and security | Reliable, safe, secure; no damage on failure |
| Efficiency | Does 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
Related questions
- Software crisis · Software Engineering, chapter 1
- Designing software for real-time environments · Software Engineering, chapter 4
- CAD software modules: part, assembly, drafting · Computer Aided Design, chapter 1
- Software fault tolerance and recovery · Instrumentation II, chapter 9 · asked 2×
- Ownership and structure for software company · Organization and Management, chapter 4
- Software maintenance and fixing common bugs · Instrumentation II, chapter 9