The architecture of a software system is the shape given to that system by those who build it. Division into components, arrangement of those components, and the ways in which those components communicate with each other.
The purpose of that shape is to facilitate the development, deployment, operation and maintenance of the software system contained within it.
Minimize lifetime cost of the system and maximize programmer productivity.