What is Software Architecture?

Muhammad Albar
4 min readApr 15, 2020

When people in the software industry talk about “architecture”, they refer to a hazily defined notion of the most important aspects of the internal design of a software system. A good architecture is important, otherwise it becomes slower and more expensive to add new capabilities in the future.

Let’s peel deeper into this topic.

What is Software Architecture

The software architecture of a system depicts the system’s organization or structure, and provides an explanation of how it behaves. A system represents the collection of components that accomplish a specific function or set of functions. In other words, the software architecture provides a sturdy foundation on which software can be built.

A series of architecture decisions and trade-offs impact quality, performance, maintainability, and overall success of the system. Failing to consider common problems and long-term consequences can put your system at risk.

Software architecture is about making fundamental structural choices that are costly to change once implemented. Software architecture choices include specific structural options from possibilities in the design of the software.

If it’s still to hard to understand for you let me conclude the definition, so software architecture is a series of methods or steps that are required or recommended for you to follow to make a great software.

Scope of Software Architecture

  • Macroscopic system structure: this refers to architecture as a higher-level abstraction of a software system that consists of a collection of computational components together with connectors that describe the interaction between these components
  • The important stuff — whatever that is: this refers to the fact that software architects should concern themselves with those decisions that have high impact on the system and its stakeholders
  • That which is fundamental to understanding a system in its environment
  • Things that people perceive as hard to change: since designing the architecture takes place at the beginning of a software system’s lifecycle, the architect should focus on decisions that “have to” be right the first time. Following this line of thought, architectural design issues may become non-architectural once their irreversibility can be overcome
  • A set of architectural design decisions: software architecture should not be considered merely a set of models or structures, but should include the decisions that lead to these particular structures, and the rationale behind them. This insight has led to substantial research into software architecture knowledge management

Why Software Architecture

Software architecture serves as the blueprint for both the system and the project developing it, defining the work assignments that must be carried out by design and implementation teams.

Here are three main reason why software architecture is so important when it comes to developing the software.

  • A Basis for Communication — Software architecture is a sort of plan of the system and is primordial for the understanding, the negotiation, and the communication between all the stakeholders. With communication you can easier to understand the requirements and better planning for decision making process
  • The Earliest Decision — The first decisions are made at this stage. Those early decisions have a huge importance on the rest of the project and become very difficult to change the more we advance in the process.
  • Transferability of the Model — From the definition we know that software architecture defines the model of the software but what is transferability mean ? it’s actually how your software model can be reusable. For example in writing code phase the developer can use clean code methodology to make the code is easy to understand and reusable.

Methods for Software Architecture

The Software Engineering Institute has a range of proven methods and practices that can help organizations use software architecture to build and evolve systems that satisfy their business and mission goals. These methods and practices, which are applied at different stages of the development lifecycle, have evolved with the advent of Agile development approaches.

  • Capture architecturally significant requirements by analyzing the business drivers, system context, and factors that system stakeholders deem critical to success.
  • Design an architecture by developing architectural structures and coordination strategies that satisfy requirements.
  • Evaluate the architecture by determining its ability to support the quality attributes that meet an organization’s business and mission goals.
  • Document the architecture in sufficient detail and in an easily accessible form to facilitate communication with developers and other stakeholders and to support analysis

What Is a Good Software Architecture?

Well there are many point of view for the good software architecture. There is no real right answer to this question. Many people believe that only by looking at the final product you can know that you have a good software architecture. In my opinion there are some indicators that makes a good software architecture :

  • The software is user-friendly
  • The solution is flexible and users adapt it quite easily
  • The software works the way the end user works
  • The software is strong and reliable

--

--