Fundamentals Of Software Architecture

In this article, we’ll learn the basics and core concepts of software architecture, but before diving into it, we first need to understand what architecture actually is.

Architecture is the process and product of planning, designing and constructing buildings or other structures. A good design can result in a structure being admired for years, if not even lasting. An architect’s job is to combine art and science to ensure that all parts of a building fit together into a good solution. Just like architects, software engineers must combine art and science to deliver solutions in a satisfying way, but you’ll be solving them in code, not building blocks.

What is Software Architecture?

As you can google, there are many definitions available on the internet, but one of the most famous and common is “Architecture is about the essentials.

whatever it is”

– Ralph Johnson In software architecture, there are three important points we need to consider before doing anything with the architecture.

1. Focus on structure. 
2. Expect expensive decisions. 
3. High-quality core decisions.

We are more concerned with structure than implementation details. Software architecture also involves making expensive decisions that are expensive to change after implementation. It also involves explicit decisions at the core of supporting high-quality software. Concepts are better understood in practice, so let’s take an e-commerce website as an example and see what it looks like.

Fundamentals Of Software Architecture

1. Get the Context 

We need to allow our users to do certain things, all of which are things we want the system to do.

Functional requirements

• Search Inventory 
• buy product 
• Check comments 
• View past orders

How should the system behave

These are sometimes defined as utilities that a system can have, such as functionality, reliability, ease of use, efficiency, etc.

A) Maintainability

 We want it to be maintained for a few years, this is called the maintainability requirement.

B) Scalability

In this case, we also want to be able to serve millions of users with its scalability.

C) Reliability

We also want to provide customers and end users with 24/7 service that is reliable to ensure that the system is very stable.

2. Prioritize

So, once you have the context, you know what the system needs to do, how it should behave, and what constraints you need to consider. After you have all these things, you need to prioritize them. Some requirements and restrictions will conflict between them. For example, if your time-to-market is too strict, you may have to drop some features. So, after prioritizing your list and making compromises, you need to consider whether it’s acceptable. Once accepted, start designing the architecture.

3. Designing the Architecture 

Once you have prioritized, the first thing you need to do is start doing one important thing at a time. If you try to solve all problems at the beginning and try to consider all possible future scenarios, you may end up with an over-engineered solution, which is not good because it is an unnecessarily complex system. What are the possible architectures for your system. There are many design patterns in software architecture, this link will be helpful when starting to design a system, what to look for based on your current needs and what is best for you.

1. Database design 
2. Backend Service (API)
3. Front End (UI)

So here we have defined the architecture in terms of the structure the system will have.

Fundamentals Of Software Architecture

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *