The software architecture defines the components of a software system and describes the connections that exist between the components. In the context of the production of a software architecture first of all fundamental decisions for the further system design are made such as the choice of the platform and the selection of development systems and the possibly to be used data base.
When a software architecture is created, the interrelationships of the software system to be mapped and the related requirements are mapped; in no way does this generate a detailed design for a software system. It is helpful also for later system considerations to set down basis-relevant design decisions in detail. This also because these decisions have lasting influence on the non-functional, qualitative characteristics of the resulting system. Introduced architecture patterns, such as the classic Model-View-Controller( MVC) pattern, provide extensive support for the structuring of software systems.
The software architecture decomposes an entire system into its components which can be created and prepares the information, which must be exchanged between these components. A goal it is to minimize the coupling of the components if possible. Beyond that their distribution is mapped on the hardware and software resources which can be used. An example of this are Client server architectures, where the entire software system is to be assigned accordingly in separated components to the available hardware systems. Thus the definition of a software architecture realizes already in a very early stage of a process criteria for the determination of the software quality regarding their non-functional characteristics such as security, modifiability, maintainability or performance. Thus the software architecture globalizes the characteristics of the overall system. That means for example concretely that good software architectures are characterised regarding their steadiness with later changes. An acronym frequently used in connection with software architectures and their quality is FURPS.
The description of software architectures
A lively discussion is held regarding the stylistic means for describing software architectures. Here graphical tools exist beside the traditional textual descriptions for the visualization of structures, components and connections in the context of a software architecture. The decision is to be aligned finally to the specific use case. Essential graphic development tools are:layer formation in the context of a layer model. Known in this context are the three-tier architecture or multi-tier architecture.
However, the explicit separation of the software architecture from the actual development process also has an economic dimension. Finally one defines in complex projects additionally the separate role of a software architect. Its objective is it to provide software architectures, so that the underlying problem definition can be solved better and faster as well as the entire software life cycle based on it including the software installation and the enterprise of the software is secured. Besides the realizations won from the software architecture find entrance into the planning and organization of distributed software development and serve as starting point for the production of software metrics.
A complementary science is the evaluation of software architectures - the so-called software architecture evaluation.