This is a glossary of usual terms in software development you may find useful:


  • Aggregate: An aggregate is an object that have a root entity and one or more transactional related entities or value objects. All the actions against the internal objects must pass through the aggregate. [learn more]
  • Asynchronous: Asynchronous, in terms of software, refers to an action requested to the system that will be done in an undetermined time. Usually, the requester don't wait for the action to be done. [learn more]


  • Bounded context: A bounded context represents a subset of a domain where a particular domain model applies. It affects the meaning of different concepts. For example, User can be a different thing in an auth bounded context than in a marketing bounded context. [learn more]


  • Correlation id: A correlation id is an identifier shared by different steps of the same process. Is very used to related different logs of the same execution -specially for distributed tasks. [learn more]


  • Domain-Driven Design (DDD): Domain-Driven Design states that de design of a system should be driven by the domain. This implies having domain experts and using ubiquitous language inside the organization. [learn more]
  • Domain event: A domain event represent a fact that affected an aggregate. Conceptually speaking, every change in an aggregate is caused by a domain event happening to this aggregate. In event sourcing, domain events are used to reconstitute any state of an aggregate. [learn more]


  • Entity: An entity is an object representing something that is mutable -can change overtime- and identifiable from other objects of the same type by an identifier field -or combination of fields. [learn more]


  • Fallback: A fallback, in computer science, is a plan B, a system than guarantees the main system will not stop working. It can be used in many ways. A backup is a fallback because it restores lost data so the system can continue working. A circuit breaker is a fallback as it continue processing requests when the main system fails. [learn more]


  • Guard: A set of code to ensure some business conditions are met. It uses to be a method called before the execution of the code which is changing the domain, and throws an exception when the conditions fail. [learn more]


  • Hexagonal architecture: Also known as ports and adapters, hexagonal architecture tries to reduce coupling with the use of layers that are connected through adapters. Usually, there are three: domain, application and infrastructure. [learn more]


  • Interface segregation principle: Interface segregation principle states that no class should be forced to implement unneeded methods. To avoid this, we should separate methods in different interfaces so each class can implement only the needed methods. [learn more]


  • SOLID: SOLID is an acronym for Single responsibility, Open-Closed, Liskov substitution, Interface segregation and Dependency inversion principles. [learn more]
  • Synchronous: Synchronous, in terms of software, refers to an action requested to the system that will be done immediately. Usually, the requester will wait for the action to be done. [learn more]


  • Ubiquitous Language: Ubiquitous language is a concept from DDD to define how all the members of an organization should you the same words for the same concepts, that is, a language that is everywhere. [learn more]


  • Value object: A value object is an object representing something that is immutable -cannot change overtime- and not identifiable from other objects except for the values of all its fields. [learn more]