DEV Community

AbdelRahman Hussein Mahmoud
AbdelRahman Hussein Mahmoud

Posted on

Software Architecture (introduction)

In this series, we will talk about software architecture and what should the developer know, the article will be sample and basic knowledge.
there will be more upcoming parts related to different Software Architecture

The output from this series should let you have the basic knowledge of software architecture.

Note: the article is boring for the developer as there will be no code 😃

What is architecture?

According to Wikipedia Architecture is both the process and the product of planning, designing, and constructing buildings or any other structures, in our case what is the software architecture?
it's the same actually but instead of planning and designing for building, you are designing for software.

  • Software architecture is the shape of the system.
  • The higher level of the code we write.
  • It deals with the structure of the code and how things are organized.
  • How internal and external components will communicate with each other.

The first concern of the architect is to make sure that the house is usable, it is not to ensure that the house is made of bricks
-- uncle bob

And this means is to specify what is essential and what is details.

For example, we want to build a house, then we need to think about:

  • The space inside the house is essential because if there is no space then there will no place to put your things or to move inside the house.
  • The usability of the house if your house contains no rooms then it's useless to live inside it and you will need it to replace it with another house.
  • The building material of the house is a detail, as you can build a house using bricks, woods, stone, ...etc.

The essential here means is to support the primary needs of the house or in our case will be the domain everything else is just implementation of details.

When we build software:

  • The domain is essential.
  • The use cases are essential.
  • Presentation is a detail as you can build your application using ASP, JSP, angular, react, ...etc.
  • Data persistence is also a detail, you can use SQL or no-SQL to store your data.

When architecting software you need to think about the business and the problem it will solve.

What is the Domain?

The domain is the business or the subject your project or software will serve, for example, you need to build a software for banking of financial services, so you need first to understand what is banking and the domain here will be the banking.

In the next part, we will talk about,
Database Centric vs Domain Centric architecture.

Top comments (0)