Software architecture

Software architecture describes the way in which the different parts of a software application are organised, structured and interconnected. It defines the modules, their responsibilities and the way in which they communicate, as well as the fundamental technical choices (frameworks, databases, types of API, security mechanisms, etc.). A good architecture aims for robustness, maintainability, performance and scalability. It can be based on well-known styles: layered architecture, hexagonal architecture, event-oriented architecture, CQRS, etc.