4 top Reasons why good Software Architecture is essential for your Success

Software architecture determines the quality and longevity of your system. With this article we want to help you understand what software architecture really is and why it is of great importance for your project, and for your success.

Software architecture determines the quality and longevity of your system. It is about making fundamental structural choices which are costly to change once implemented.

The word "architecture“ has become very slippery in business and is one of the most frequently used buzzwords in management. It’s worth getting a solid definition of what it really means.

We believe that no technology out there is too complex to be explained to any person. The lesson learned here is that in the software world, management likes to use a lot of cool words to describe what’s new when in fact it’s much of the same thing we’ve always been doing.

When people describe their software architecture they select the important parts of their systems, how these parts fit together, and the key decisions they made in designing their systems.

Challenging: Building flexible software that scales
There is no sharp distinction between software architecture versus design and requirements engineering. They are all part of a "chain of intentionality" from high-level intentions to low-level details. Software architecture is therefore an "intellectually graspable" abstraction of a complex system. Building flexible software that scales is far more difficult than most people think.

It can be expressed using four views, including both technical structures and processes:

Logical view is concerned with the functionality that the system provides to end-users.
Development view illustrates a system from a programmer’s perspective and is concerned with software management.
Process view deals with the dynamic aspect of the system, explains the system processes and how they communicate, and focuses on the runtime behavior of the system.
Physical view depicts the system from a system engineer's point of view. It is concerned with the topology of software components on the physical layer, as well as communication between these components.
Following this definition, an architecture model is a description of a system required to reason about its functionality and its scope, comprising the software elements, the relations between them, and the properties of both elements and relations. 

It is seen as a technical issue rather than an architecture, with the implication that the key decisions that need to be done are technical decisions.

A good architectural model will depict the organization and system both as it is required today and as it is envisioned in the future, and will map the various views representing the architecture to one another.

Make informed design decisions before the system is being built
To mitigate the identified risks in the short term, we always recommend defining an architecture as the basis for analyzing the system’s behavior, and to make informed design decisions before the system is being built.

The software architecture artifacts facilitate the communication between the stakeholders. These stakeholders all have their own concerns with respect to the system. Balancing these concerns and demonstrating how they are addressed is part of designing the system. This implies that the architecture development process involves dealing with a broad variety of concerns and stakeholders, and has a multidisciplinary nature.

Another goal of software architecture is reducing the complexity by separating the concerns which drive the design. Architecture documentation shows that all stakeholder concerns are addressed by modeling and describing the architecture from separate points of view associated with the various stakeholder concerns.

The benefits of an architecture can be summarized using four words: better, faster, cheaper and safer. Software architecture is an established method to reduce various risks in complex projects.

How you benefit from good software architecture
It is important to realize that better, faster, cheaper (BFC) benefits come at a price; it is necessary to invest in the underlying organizational and cultural structures, in organizational development, and in the definition of processes and methodologies which support them.

Having a software architecture in place will offer you some rather relevant benefits, above all the following top 4:

Higher productivity. It is easier to add new features to existing software, since the structure is already in place, and the location for every new piece of code is known beforehand.
Better code maintainability. It is easier to maintain software based on an architecture, as the structure of the code is visible and known, so it’s easier to extend the software or find bugs and anomalies.
Higher adaptability. New features, such as a different front end, or adding a process rule are easier to achieve, as the software architecture creates a clear separation of concerns.
Quality. More reliable assessment of system quality attributes like performance, security, interoperability, reliability, availability.
There is a lot we can write or read about Do’s and Don’ts of software architecture, especially when it comes to microservices, which we haven’t addressed here yet.

It’s less about something tangible and more about something abstract
Now that you have a better understanding of what architecture is, you’re probably realizing that it’s less about something tangible and more about something abstract. You can see why good software architecture is essential and of great importance for your project.

We used this approach at the Architecture DESY Workshop (Research Center DESY = German Electron Synchrotron). Our workshop there was focused on specific requirements for the Cherenkov Telescope Array (CTA) research project. The Project includes over 400 scientists worldwide.

By: Sibylle Stromeyer