Designing Software Architecture: Attribute-Driven Design
Designing specific Architecture for a software system, especially for greenfield projects, requires solid planning and preparation. There are plenty of methodologies that are used by experienced Software Architects for designing greenfield projects, one of which is Attribute-Driven Design.
Attribute-driven design is a methodology to create software architectures that takes into account the quality attributes of the software.
Prior to starting architecture sketch, the one should evaluate the quality attributes such as: the scope of the system, internal/external interfaces, the design purpose, functional requirements, quality scenarios, constraints and concerns. These are all driving forces for further steps of ADD. Architectural Decisions in ADD are made in iterative and incremental manner.
Step 1: Review Inputs
Before starting an implementation, above mentioned driving forces should be analyzed and prioritized. According to these drivers further steps 2 to 7 should be done on iterative manner. So with each iteration there might new review inputs which would lead to a new iteration.