Essential components of any kind of software system includes an input, processing and an output. Engineering confirms a quality system when the system is well understood through requirements and represented with an appropriate design. A design captures the information of the system by building an architecture diagram. Though there is no one standard definition of software architecture(SA), most of the definitions address the design and structural aspect.
As the domain for which the system is being constructed varies, various methods of designing architecture have been proposed and developed over time. With the advent of new technology and processes, the methodologies have become application specific and demand the separation of concerns where each subsystem performs the assigned task. Resources have been invested to improve the design thus leading to an efficient system. The main objective of designing SA is to understand the constraints on realization of the properties of its components. Also the possible patterns in the communication between the components.
Though the area is continuously researched the field has not yet matured enough to have complete confidence in its methods and tools. The frequently addressed research topics are methods and tools for analysis or evaluation of SA’s and evaluation with respect to one or more quality attributes. The major areas of research in the field also includes notation to improve enrichment of semantics and validation of methods, tools and languages used for
evaluation and analysis of architectures.
Software architecture research has also resulted in a range of formalism’s for modelling architectures. Formal analysis is especially important for SA’s since operational models, amenable to conventional techniques, may be absent at this abstract level.