Software Architecture actually involves functionality, usability, resilience, performance, reuse, comprehensibility, economic and technology constraints, tradeoffs and aesthetic concerns. It serves as the blueprint for both the system and the project developing it, defining the work assignments that must be carried out by design and implementation teams. It is a program or computing system, which is a depiction of the system that aids in the understanding of how the system will behave. It also refers to the high level structures of a software system, the discipline of creating such structures, and the documentation of these structures.