23 Fundamental Principles for Software Architecture Interviews

Ali Zeynalli
7 min readApr 22, 2024
Photo by Luke van Zyl 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…

--

--

Ali Zeynalli

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