Software Architecture's Niche in SDLC

The requirements elicitation process is conducted by a requirements gathering team, but it is architect’s job to assess the business value of system requirements and to identify the requirements that are most critical to the success of a system. In other words the functional requirements, the constraints, and the behavior properties of the solution must be classified and specified. These critical requirements are labeled as architectural drivers as they shape the design of the system. The process of deciphering between architectural drivers and other requirements is not simple, as it requires a complete understanding of the solution objectives. A utility tree, part of the Architecture Tradeoff Analysis Method, helps with the creation of architectural drivers from business drivers.

As soon as the fundamental system characteristics have haven identified the architecture design can begin. Discussion on how to design architecture is outside the scope of this article, but can be found elsewhere on Naturally a follow-up question is raised: “How stable the architecture design has to be before the implementation starts?” and what does it mean for architecture to be stable. An architect must decide when a selected design is sufficient enough to start developing the core of the system, but not before a selected design has been evaluated. Failing to properly evaluate a selected architecture to ensure that it meets the business needs is a recipe for poor architecture. If an architect is not able to justify the decisions made and explain how he or she came to a certain decision, then he or she has not finished the job.

Software architecture design starts in the early stages of the requirements elicitation process. During this stage the factors that will influence architecture are understood and a list of architectural drivers is identified. The implementation of the bare bones framework begins after an architectural design has been evaluated (e.g. ATAM) and an architect can confidently reason about the decisions made.