This weekend I have been looking for a new house, enjoying the British summertime rainy monsoon season and looking at the real nature of software architecture.
So what is software architecture?
The Institute of Electrical and Electronics Engineers (IEEE) defines software architecture as the fundamental organisation of a system embodied in its components, their relationships to each other, and to the environment, and the principles guiding its design and evolution.
In looking into this subject, it appears that some commentators have suggested that software architecture is a combination of both art and science.
When is software architecture an art?
Software architecture may be considered an art (perhaps) when it is focused on the non-functional requirements (i.e the look and feel) of a system. Surely this could be considered the "artistic" side of architecture?
You might also consider software architecture to be an art in the context of its ability to reflect the business model of the company. The "mission statement" and "business proposition" of a company as reflected in software construction is, again, in the running for being considered on the artistic side of architectural construction of software.
When is software architecture a science?
Well, software architecture is always a science in many senses. The quantitative and qualitative analysis of system availability, maintainability, reliability, fault tolerance, forward extensibility and system backward compatibility is all fairly scientific.
At the time of writing this blog, I Tweeted the suggestion that software architecture is a blend of art and science and celebrated tech journalist Jon Honeyball responded that it was in fact, "A mixture of science and common sense."
... and you know what? That might just beat my theorising hands down in 7 sharp words ☺