It changes over time unlike hardware that don't.
Then, what makes software alive? ( = easy to change?)
- Modularity (makes codes easy to fix)
- Careful documentation of specification (makes codes readable)
- Defensive programming (makes bugs easier to detect)
* small thought: These days, however, hardware is becoming alive(= easier to change) with modularization. See Google's Ara. Software's 'softness' is being injected into hardware.