Skip to Main Content
To set the context for the discussion that follows, there are some fundamentals worth repeating. The author talked about each of these to some degree in previous columns, so let me summarize here: 1) all architecture is design, but not all design is architecture. A system's architecture is defined by its significant design decisions, where in the author's experience, "significant" is measured by the cost of change. 2) Most architectures are accidental; some are intentional. 3) Every software-intensive system has an architecture, forged from the hundreds of thousands of small decisions made every day. 4) The code is the truth, but not the whole truth. Most architectural information is preserved in tribal memory. 5) All well-structured software-intensive systems are full of patterns.