Last mod: 2025.06.29

Basic acronyms

There are many acronyms in software engineering. We are often familiar with their concepts and use them in our daily work, but we do not always remember their definitions exactly. In this brief overview, I have tried to collect the most popular ones.

ACID

The acronym ACID in programming - and more specifically in the context of relational databases - stands for four basic properties that guarantee correct and reliable transaction processing:

  • A – Atomicity
    A transaction is indivisible: it will either execute in its entirety or it will not execute at all. If any part of the transaction fails, the whole transaction is withdrawn (rollback).
  • C – Consistency
    When a transaction is completed, the database transitions from a consistent state to another consistent state. This means that transactions must respect all integrity rules (e.g. uniqueness, foreign keys).
  • I – Isolation
    Simultaneously executed transactions should not affect each other. The effects of one transaction are not visible to others until it is approved (committed).
  • D – Durability
    Once a transaction is approved, its effects are permanent - stored in the database even in the event of a system failure, such as a power failure.

BDD

Behavior-Driven Development is an approach to software development that focuses on the behaviour of a system from an end-user perspective. It combines testing and requirements specification techniques, enabling better collaboration between developers, testers and non-technical people. In BDD, system behaviour scenarios are described in simple natural language, most often in a Given-When-Then format, making it easier to understand what is expected of the system. The aim of this methodology is to ensure that the software being developed meets real business needs, and to increase the transparency of the development process.

CI

Continuous Integration is a practice in programming that involves automatically and regularly merging code changes into a common repository. After each change, automatic tests and application builds are run to quickly detect bugs.

CD

Continuous Integration is the practice in software development of frequently (usually daily, or even with every commit) integrating code changes into a main branch (e.g. master or develop) in a version control system (such as Git).

CRUD

CRUD is the basic set of operations that an application performs on data. Most IT systems (e.g. admin panel, online shop, booking system) boil down to:

  • C - Create
    Adding a new record to the database.
  • R - Read
    Retrieving data from the database.
  • U - Update
    Modification of existing data.
  • D - Delete
    Deletion of data from the database.

DDD

Domain-Driven Design is an approach to software development in which a thorough understanding of the business domain and close collaboration between developers and domain experts is crucial. All application logic is based on a well-designed domain model that maps real business processes and rules. The aim is to create systems that are easy to develop, in line with business needs and logically structured.

SOLID

The acronym SOLID in object-oriented programming stands for a set of five design principles that help create code that is easy to maintain, extend and test. Each letter represents one principle:

  • S – Single Responsibility Principle
    A class should have only one reason to change. In other words, a class should only perform one task or be responsible for one aspect of system functionality.
  • O – Open/Closed Principle
    The code should be open to extension but closed to modification. We should be able to add new functionality without changing the existing code.
  • L – Liskov Substitution Principle
    Objects of descendant classes should be usable wherever the base class is used - without altering the correctness of the programme.
  • I – Interface Segregation Principle
    Do not force classes to implement interfaces they do not use. It is better to have several small interfaces than one large one.
  • D – Dependency Inversion Principle
    High-level modules should not depend on low-level modules. Both should depend on abstractions. That is, dependencies should be reversed - program to interfaces, not to specific classes.

TDD

Test-Driven Development is an approach to software development in which unit tests are written first and only then is the production code to pass those tests. TDD is one of the practices of agile programming (Agile), particularly popular in methodologies such as Extreme Programming (XP).