Characteristics of Software
Software vs. Hardware — Key Distinguishing Characteristics
1. Software is Developed/Engineered, Not Manufactured
- Hardware: built in a factory, physical manufacturing process, quality determined by manufacturing
- Software: designed and developed, not assembled from physical parts — costs are concentrated in engineering, not production
2. Software Does Not "Wear Out"
- Hardware degrades physically over time (wear and tear), following a bathtub curve (high early failure, low steady failure, rising failure with age)
- Software has a different failure curve: bugs are found and fixed early (idealized zero-defect curve), but maintenance introduces new defects, causing an increase in failure rate over time — it "deteriorates" due to change, not physical wear
3. Most Software is Custom-Built, Not Assembled from Components
- Hardware: built from standardized, reusable components (ICs, resistors)
- Software: historically built from scratch, though this is changing with reusable components, libraries, and frameworks (see Software Reuse)
4. Software is Flexible
- Can be changed after deployment (patches, updates) — but each change carries risk of introducing new bugs
5. Software is Complex and Invisible
- Cannot be seen or touched — its complexity is conceptual/logical, hard to visualize compared to physical hardware
Summary Table
| Aspect | Hardware | Software |
|---|---|---|
| Production | Manufactured | Developed/Engineered |
| Wear out | Yes (physical) | No (logical deterioration via changes) |
| Reuse | Standard components | Custom-built (increasingly reusable) |
| Visibility | Physical, tangible | Abstract, intangible |
Exam tip: Draw the two failure-rate curves (hardware "bathtub curve" vs. software "idealized + actual" curve) — this diagram is frequently asked.