Just what is software architecture?
So often we hear people saying they’re “architecting” some piece of software, or that they’re a high-powered architect of some form? I was musing what that should mean. At least one colleague insists that it’s just a pompous word for design, optimised for use in proposal boilerplate when you’re trying to aggrandise your role in life.
I’m not so sure, but there clearly is something called software design, and it’s really closely related to software architecture if that’s a separate issue.
After some thought, I’ve decided (I’ll probably change my mind soon) that software design is about designing those parts of a system that address the system’s functional requirements. Architecture, on the other hand, is about designing a system so that it meets that system’s non-functional requirements.
So, for example, if I’m designing something so that orders are properly sent to the billing engine, or so that the aircraft’s elevators move to the correct angle then I reckon that’s design. If I’m adding a write-back cache to an enterprise system so that it works effectively with 2000 simultaneous users when it used to support 5, then I reckon that’s architecture.
Or am I just still being pompous?