Software Architecture

4 min. read

Software Architecture

The software architecture of a system is the set of structures needed to reason about the system, which comprise software elements, relations among them and properties of both.

Software Architects designs complete systems.

A model simplifies the problem

Failure Risks


Slicing up the tasks and defining separate layers is the biggest challenge for the architect

Implementation stacks comes last

● System architect.
○ Affects one system and builds connections within it.
○ Focuses on the technical component of the development.
○ Helps the project manager to make management decisions.
○ Has deep knowledge of the technologies.

● Solution architect.
○ Participates in discussions of business.
○ Creates connections between several systems.
○ Provides communication between several teams.
○ Designs connections between systems.
○ Codes independently only solution prototypes.
○ Acts as a universal soldier of business and technology.

● Enterprise architect.
○ Affects all development of the company.
○ Works with high-level abstractions of the created systems.
○ Provides technical communications throughout the company.
○ Does not interact with the code.
○ Focuses on the business component.
○ Has a broad technical horizon.
○ Owns several domains.

Architectural Pattern
Layered (n-tier) architecture

Model-View-Controller (MVC)
separation of concerns
Easy to assign separate “roles”
Easy to update and enhance layers separately
sinkhole anti-pattern

Event-driven architecture

Microkernel architecture

Microservices architecture

Design Patterns

Creational Patterns
Factory Method
Abstract Factory
Structural Patterns
Behavioral Patterns

Learning Software Architecture

Software Architecture Foundations

Software Architecture


What is Software Architecture?