1. Wiki
  2. /Computer Science
  3. /Architecture


Entity Component System

Entity component system is a software architectural pattern mostly used in video game development for the representation of game world objects. An ECS comprises entities composed from components of data, with systems which operate on entities' components.

Domain-Drive Design

Domain-driven design is about designing fotware based on models of the underlying domain.

DDD deals with large domains using Bounded Contexts and explicit relationship between them. DDD recognizes that complete unification of models acrross organization isn't always feasible so instead Bounded Contexts allow us to divide large system into smaller sub-systems where each sub-system can have unrelated concepts as well as shared concepts where mapping between them needs to be made explicit.

Event Driven Architecture

Hexagonal Architecture

Hexagonal architecture is an architectural pattern used in software design. It aims at creating loosely coupled application components that can be easily connected to their software environment by means of ports and adapters. This makes components exchangeable at any level and facilitates test automation.

C4 model

C4 Model for visualising software architecture.

  • Context - the highest level view of a software system, a starting point showing the system in the context of the world
  • Container - the applications and data stores that make up the software system
  • Component - a grouping of related functionality encapsulated behind a well-defined interface within a Container.
  • Code - the implementation details of a Component, as shown in UML class diagrams, entity relationship diagrams, etc. Code diagrams are optional and typically auto-generated by development tooling.