What the heck is Software Architecture?

Yubraj Ghimire
Etribes Tech
Published in
3 min readSep 23, 2021
Image by <a href=”https://pixabay.com/users/struffelproductions-589546/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1944348">Lennart Demes</a> from <a href=”https://pixabay.com/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1944348">Pixabay</a>
Photo by Lennart Demes

In layman's terms, Architecture is the art and science of designing and managing the construction of a structure whereas Software architecture refers to the fundamental structures of a software system and the discipline of creating such structures and systems.

Software Architecture Definition

“Good judgment is usually the result of experience. And experience is frequently the result of bad judgment. But to learn from the experience of others requires those who have the experience to share the knowledge with those who follow.” — Barry LePatner

Software architecture is simply the organization of a system 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, it refers to the fundamental foundation on which software can be built.

To make it summarized in solid context — The software architecture of a system is the set of structures needed to reason about the system, which comprises software elements, relations among them, and properties of both.

Software Architecture — Why it matters?

Software architecture helps to expose the structure of a system while hiding possible implementation details. It focuses on relationships between elements and components and how they interact with each other.

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

And it matters since it provides a number of benefits:

  • It gives a basis for analysis of software systems’ behavior before the system has been built.
  • It provides a basis for the re-use of elements and decisions.
  • It supports early design decisions that impact a system’s development, deployment, and maintenance life.
  • It helps in risk management. A good software architecture always helps to reduce risks and chances of failure.
  • It enables cost reduction. Software architecture helps to reduce risks and chances of failure.

What makes a good software architecture?

It’s very difficult to determine which software architecture is good or bad, perhaps if the architecture fits the purpose — it is wiser to choose the one. In general, the key traits of a good architecture are interrelated and depend on each other:

  • The software architecture should be as simple as it could be so that it would be easy to maintain even when things don’t go as planned.
  • Flexibility, extensibility, and usability are the key traits of good software architecture.
  • Ability to feature a small number of ways for components to interact will aid in understandability, reduce development time, increase reliability, and enhance modifiability.

Conclusion

The perception of different types of houses would differ from one inhabitant to another since it serves different purposes. One might choose a Tent to spend the night in nature, some would go for a Camper van because of its mobility. With that being said, we can’t judge Tent over Camper van or vice versa since it has its unique purpose. So it is with software. if the prevailing architecture serves best to achieve the anticipated purpose then it might be better architecture for that cause.

Photo by https://i.ytimg.com/vi/T9c8UIPNxkQ/maxresdefault.jpg

References

  • Software Architecture in Practice by Len Bass, Paul Clements, Rick Kazman

--

--