I think I found the perfect analogy for the essence of Software Architecture.
- Software architecture is the health of a software application.
- A software architect is a physician which is concerned with the health of a software application.
- Architectural characteristics are measurable dimensions of the health of a software application.
Software architecture is a misleading name, because it reminds us of structure, solidity, and immutability, but that’s far from the truth. 1That would be the skeleton, which is certainly an important subsystem, but only one of many that conform the whole.
Software applications are dynamic entities 2both in the sense that they live and work along time and that they change from time to time, so they have an intrinsic and comprehensive survival ability that changes over time. That ability is the health of the application.
A software architect can audit a software application, and find out if it has good health or it suffers an illness. Then she can suggest a therapy 3more or less invasive to improve its health.