Definition “Software Architecture” What is a software architecture?
18.02.2022By Gedeon Rauch
At every point in a software project, there are decisions of great importance, but hardly any is as essential as the software architecture. After all, changing an existing software architecture is extremely complex.
The software architecture contains the most important decisions about the organization, structure and hierarchy of a system.
At a fundamental level, how exactly a software system works is a question of the various components and their interaction – how they are structured, in which hierarchy the elements are arranged and how they relate to each other is determined in the software architecture. It can already be seen here that the definition of a software architecture is a structurally so extensive task that this is comparable to laying the foundation of a house.
Now, because of this general overview, the software architecture may belong to the less precise definitions within a software project, but as a rough superordination of finer plans, it is extremely important. After all, changing a software architecture afterwards requires a deep intervention in elements and relationships, a well-planned software architecture, on the other hand, can adequately reflect the orientation of the entire project.
Organizing a system with the software architecture
The software architecture is at the beginning of a software project and falls organizationally into the design phase, it is a structured transcript of the planned design and is a first plan for the organization of a system.
In the software architecture, only the most important decisions about the organization, structure and hierarchy of a system are given, which entails a contradiction that is interesting for software development and project management: which decisions significantly influence the organization is often only revealed in the course of a software project.
A well-structured software architecture is to be understood as a sign of the experience of a project team. The design as a visually easy–to–read diagram or the detailed documentation are the two most important forms of representation of the software architecture and – depending on the project – both are common.
Because the software architecture can also be seen as a development to meet the required specifications, it reflects strategic fundamental decisions, helps the development team, but can also serve as a tool for customers or other stakeholders. Before creating a software architecture, it should be clarified in the project team whether it should serve primarily as a floor plan for the programmers or whether it should be read mainly by management, controlling or stakeholders.
Especially non-functional properties are decisive in the software architecture – modifiability, security, maintainability or performance (software quality criteria) strongly characterize the software architecture as the earliest design decision in the software project and result in the easy-to-read structure of the software architecture. A functioning software architecture should not be elaborated too precisely, but should be easy to read.
What is relevant for a software architecture?
Within a software architecture, various points must be defined, these include, for example:
- The choice between component-oriented and object-oriented software design.
- The choice of structural elements and the relationships and interfaces to and with each other.
- The behavior specified in the cooperation of the elements.
- Summary of elements and relationships with subsystems.
- The choice of programming language.
- The search for a functional database appropriate to the project.
- Choosing the right team.
The software architecture outside of programming
The software architecture itself does not fall purely into the discipline of IT, but is to be located in the interface between programming and project management. Consequently, interesting interdisciplinary questions also arise here.
For example, should the definition of the software architecture only take into account the needs of the developers and optimize the coding process, or should programming be understood as part of a service? In the latter case, it would also be the task of the architecture to ensure the efficiency of the development process (for example, by the planned use of libraries) or to guarantee the maintainability of the software.
The development of a software architecture and the structures defined therein is highly project-dependent and is not easy to specify as a scheme. Even the search for the relevant structures at the beginning of a project is an exciting challenge for the management of a software project.
Later variants of the software architecture
Even if the software architecture is usually used mainly in the design phase, the floor plan is still used by development teams and project management deeper in the software project to represent finer structures.
The various software architectures are also to be understood hierarchically. For example, a rough architecture can abstract a software at component level, which can be elaborated in detail in a fine design class-hierarchically, in modular architecture or in source text.
Design, planning and efficiency
Quality and longevity in software projects are based on tactical decisions in coding and design and a well-thought-out strategic orientation based on requirements analyses, specification catalogs and software architecture. It is especially the basic planning that can make software processes simpler and more efficient and that clarifies the most important functions.
In addition to technical and organizational aspects, such as organization, team planning, risk analysis or quality assurance, a quote Eoin Woods (CTO at Endava) quite charmingly summarizes the relevance of software architecture: “Architecture is the amount of design decisions that – if made incorrectly – cause a project to fail.“