23 Basic Principles in Software Architecture

Ali Zeynalli
7 min readFeb 19, 2022
Photo by Cris DiNoto on Unsplash

Software Architecture bases on set of basic principles that is actual for every kind of software system. Experienced Software Architects are aware of them and able to spot the right places in their software products to implement specific principle. Let us have a quick overview over some basic principles that Software Architects deals with on daily basis:

1.Dependency Inversion…
This principle states that direction of dependency should be towards abstraction not implementation. If compile-time dependency flows in direction of run-time execution this makes directed dependency. With Dependency Inversion we invert the direction of dependency control. Take a look at my following article for deeper understanding:
How to apply SOLID Software Design Principles to Spring Boot Application (Part 5)

2.Separation of Concerns…
This principle states that a software system should be separated by the kind of work it does. For Example: It is noteworthy to separate the software system into different pieces by business logic, infrastructure or user interface. By splitting the system into different parts based on different activity areas makes it easier to develop/test/deploy. SoC is a driving force behind Software Architecture Patterns like Domain Driven Design, Hexagonal Architecture, Clean Architecture.

--

--

Ali Zeynalli

IT-Architect | BMW Group | M.Sc. Technical University of Berlin