What Is Software Architecture

The issue with most definitions of software architecture is that they leave you with more questions than answers. To make it worse, everyone seems to have a different idea of what software architecture is.

A common rhetoric is that software architecture is the important stuff … whatever that is. I find this to be greatly unsatisfying, so I decided to learn from veteran software architects Neal and Mark through their book Fundamentals of Software Architecture.

Neal and Mark give a more meaningful description based on what is analyzed when an architect analyzes a system. They say a system’s architecture is defined by: it’s structure, architectural characteristics, architectural decisions and design principles. I expound on these in the following paragraphs.

System’s structure  is the type of architecture style -- microservice, layered, etc -- the system is implemented in. Therefore, when you ask someone about the architecture of a system and they say, oh this is a microservice architecture know that they are only describing its structure. 

Architectural characteristics define the success criteria of the system. Think availability, scalability, fault tolerance, performance, security, testability, deployability, so on and so forth. These are independent of the system’s functionality but are required for the system to function properly.

Architectural decisions define the rules of how a system should be constructed. They form constraints of the system and direct its development. I think this is what Clean Architecture is -- an architectural decision -- because it constraints how the system should be built.

Design Principles guide the development team on what technologies to adopt. For example a design principle will specify the frontend should use a reactive framework and leave it up to the team to decide whether they’ll use React, Elm or Vue.

Software architecture is not just the important stuff. It is all these things.

Japheth Obala

Co-founder, Quill Dev Tools

4 年

Shameless plug, read more articles on my blog https://buffered.dev/ If you find the articles useful, subscribe to our newsletter.

回复
Ezrqn Kemboi

Senior Software Engineer | Engineering Management | Community Mentor

4 年

Today I learnt some good stuff here on system architecture. Thanks Japheth Obala

回复

要查看或添加评论,请登录

Japheth Obala的更多文章

  • Beauty Is Good For You

    Beauty Is Good For You

    The pursuit of beauty is considered by many a reserve of the privileged and inaccessible to people who have bills to…

  • My Coding Process

    My Coding Process

    Performing consistently at a high level is what separates the wheat from chaff in any industry and motivation is an…

    2 条评论
  • Looks Good To Me ??

    Looks Good To Me ??

    Bugs aren't just embarrassing, they are also expensive and the best place to catch them is before they reach…

  • ORMs Considered Harmful

    ORMs Considered Harmful

    Alright, the title is a click bait and ORMs are not harmful. With that out of the way, I am going to make a case…

    4 条评论
  • Slow Is Smooth, Smooth Is Fast

    Slow Is Smooth, Smooth Is Fast

    Move fast and break things was popularised by Facebook and many startups followed suit to their own detriment because…

    7 条评论
  • Commando Go CLI Framework

    Commando Go CLI Framework

    I have been running experiments on the possibility of declaratively defining command groups in Go CLIs and after a lot…

    2 条评论
  • Build a Product From Scratch: User Stories

    Build a Product From Scratch: User Stories

    In the previous article we defined what we are going to build, a CLI client for Microsoft ToDo powered by…

  • Build a Product From Scratch: Problem Definition

    Build a Product From Scratch: Problem Definition

    For new and aspiring programmers, solving a personal problem accelerates learning. Building software systems is an…

  • Expectations Of An Architect

    Expectations Of An Architect

    Let me begin by giving a little disclaimer, I am not an architect, only a student of software architecture and sharing…

  • Think Like An Architect

    Think Like An Architect

    Have you heard about mental models? They are like glasses for the mind, putting one on, will change how you see the…

    4 条评论

社区洞察