Yesterday I saw the following video of a brief talk by Martin Fowler, in which he defines software architecture. I have grumbled about that term myself, in that firstly it is often ill-defined, and secondly it can be pretentious. I have sometimes defined software architecture as “high level design”, or as the design of systems complex enough to warrant substantial input from someone who is been around the block many times.
Fowler’s definition is crisp: Software architecture is those decisions which are both important and hard to change. This means it includes things like the choice of programming language, something architects sometimes gloss over or dismiss. Both aspects land squarely on the economics of software development. Said another way, software architecture is those decisions which, if made poorly, will make a project either succeed or fail, in a needlessly expensive way.
Soundflower is an open source kernel extension for MacOS, designed to create a virtual audio output device that can also act as an input. Initial development and maintenance of Soundflower was done by Cycling '74. In 2014, Cycling '74 passed stewardship of Soundflower to Rogue Amoeba, but we ultimately didn't have the time. What is Soundflower for Mac Soundflower is a OS X system extension that allows applications to pass audio to other applications. Soundflower is easy to use, it simply presents itself as an audio device, allowing any audio application to send and receive audio with no other support needed.
Audio Setup Software Flower
Audio Setup Software Flowery Branch
Audio Setup Software Flowering
This connection resonates deeply with me. I have often talked about the economics of software development, the economic impacts of tool choices, the economic impacts of process selection, platform selection, etc. But Fowler’s talk made a connection I had never set out loud at least: the economic concerns, not only the technical ones, are software architecture.