Abstractions are effective means to manage complexity


Last Updated on Jan 03, 2021

Abstractions are a great mechanism to remove accidental complexity. The right abstractions hide implementation details behind a clean, simple-to-understand, easy-to-consume facade.

Consider the data abstractions in practice to be able to use databases effectively.

In the Object-Oriented Programming (OOP) world, objects and data structures model entities and their interactions in the real world. Data structures are then expressed in terms of general-purpose data models that can be persisted into a database, such as JSON or XML documents, tables in a relational database, documents in a NoSQL database, or a graph model.

The database stores the data in a custom representation to query, search, update, or process data more efficiently. At the lowest level of abstraction, the actual data storage may be simply in the form of pulses of light, magnetic fields, or electrical currents.

The series of abstractions layered above one over another allow developers to not worry about how data is stored on hard disks and concentrate on application functionality.

Hardware engineers worry about the lowest data storage level on a media device, and database engineers worry about data storage and retrieval guarantees. Application developers have to only worry about modeling the real world as closely as possible in their application.

Service abstractions also promote reuse by allowing wider adoption. Along with protecting applications from subsequent changes and enhancements, all applications derive the benefits of quality and functionality improvements because of the code reuse.

Abstractions need not always be technical. Abstractions also allow people with different expertise to collaborate and produce something of value. By hiding unnecessary complexities wherever possible, all stakeholders on a software project, from Product Managers to System Administrators, can speak in a common language.


© 2022 Ambitious Systems. All Rights Reserved.