This presentation was created for the SATURN conference series and does not necessarily reflect the positions and views of the Software Engineering Institute.
In our zest to tackle the hardest problems in the software industry, software architects apply the latest techniques, processes, tools, and technology to create the best software architecture for the systems they are working on. We apply service-oriented approaches, we claim that the architecture is going to be developed using agile methods, and we use architectural documentation to communicate our brilliant ideas. Our architectures rigorously examine the structure, data, and behavior of the software that we are going to build. We examine the quality attributes of performance, reliability, and so forth.
For all the work we do to ensure the best architecture that we can devise, we often doom our architectures to failure because we neglect the aspects of the architecture that end up being the most important. Schedules, budgets, team agreements, workshare, and so forth, are very important aspects that affect and are affected by our architectures. This presentation will discuss how these aspects can (and should) affect software architectures and why the “best” architecture from a technology standpoint is not always the “optimum” architecture.