How Do You Simplify Complexity in Software Development?
1-Minute Engineering on Data Types — Edition #2
Have you ever wondered how we work with data without worrying about the underlying complexity?
This is just in time to refresh our software engineering fundamentals skills. Let’s begin with a key concept: Abstract Data Type (for short ADT).
An Abstract Data Type defines a conceptual data model and the operations we can perform on it without specifying how these operations are implemented.
Abstract Data Types are independent of the programming language or the low-level implementation details.
The goal of ADTs is to simplify conceptual complexity in our software to enable effective conversations.
A good example of an Abstract Data Type is a Queue. This conceptual model is based on the FIFO (First In, First Out) principle and is defined by operations like enqueue(), dequeue(), or peek(). The key fact is that the Queue doesn’t care about what programming language is used or how it is implemented.
The developer decides on the implementation details.
Imagine that your team is developing a service to process online transactions. One requirement is that transactions must be handled in the order they were made. When discussing the software architecture and design for this service, you will decide that a queue is needed to fulfill this constraint.
However, the way the queue will be implemented—whether you use a particular programming language, framework, or Saas solution— is a decision for later.
—Alex