Software Architecture

Software architecture is the collection of fundamental decisions about a software product/solution designed to meet the project's quality attributes, or architectural requirements. The architecture includes the main components, their main attributes, and their collaboration (interactions and behavior) to meet the quality attributes. Architecture can and usually should be expressed in several levels of abstraction, where the number of levels depends on the project's size.