What is Abstraction in Software Engineering

Categories: Software Engineering


What is Abstraction in Software Engineering?


Abstraction is an essential concept in computer science and software engineering. Thus, it is vital to know the definition of abstraction, its different types, analyze its benefits and demerits, and its scope of career opportunities. 

Definition of abstraction:

The adjective abstract is used with abstract ideas, art, concepts, etc., to mean that they are hard to understand and loosely knit to reality. Thus, abstraction deals with ideas and not actual events related to a person, object, situation, etc. The Latin etymology of ‘abstractus’ means “to draw attention away” or hide a facet.

The three main concepts or properties of abstraction in software engineering are:

  • The removing or hiding concept

  • The generalization concept

  • The reality versus ideas concept

Thus, in software engineering, abstraction is the hiding or suppression purposefully of certain facets of an artifact or process to emphasize the details, structure, or other aspects.


Example of abstraction:

Washing Machines:

At first sight, the washing machine is a box with a drum, knobs, buttons, etc. Does one need to know the internal working of the machine to wash clothes in it? The answer is that based on your needs, you use the interface to choose a program and follow simple instructions to achieve the wash process. In other words, the washing machine fulfills all criteria of the wash process, being an abstraction of the reality of all its components working out of sight. It follows the generalization concept with an easy-to-use button rather than manually setting up complex processes.

Thus, we see that abstraction or simplification has many layers, and the simple machine is a multi-layered abstraction. Similarly, abstraction in software engineering involves many layers like: 

  • The User interface

  • A high-level programming language like PHP along with a low-level language like C, etc

  • ML or Machine language

  • The system architecture comprising of memory, registers, the ALU or arithmetic logic units, etc

  • Its transistors, circuit elements like logic gates

  • Concepts and components of quantum mechanics and solid-state physics

The software is typically the first layer of abstraction and is closest to reality. It interacts with the user and does what the user wants it to do. The high-level code is usually used to translate your business requirements and interface to the other layers of abstraction to achieve inter-layer communication. For example, you used the buttons on the washing machine to interface with its internal processes and layers of operations.

The interface level would be the first layer that should not allow any bypass. Similarly, in software engineering, the user interface uses isolated abstraction layers to ensure you cannot bypass it to look into the codebase, etc. Hence, the layer can also be called an abstraction barrier. When you get to the inner layers of a software solution, the hardware components and memory management are achieved using solid-state physics and quantum mechanics. The architecture, transistors, etc., enable the storage system, logic gates, and other solution components.

Software Engineering Abstraction Types:

Data Abstraction

Data is of prime importance in software engineering and is stored on computers, and the software transforms or controls its behavior. Hence, the control flow of the data and its abstraction are essential in software engineering. In order to clear a popular misconception, data abstraction is not exclusive to OOP-Object Oriented Programming. Rather many languages not treated as OOP also use data abstraction. 


For example, in languages like Lisp, C, etc., primitive data types are already extracted and abstracted by the low-level programming language and available to us as data strings that are just a collection of characters known in terms of storage in the memory bits. Hence, the software program tells the interpreter or compiler what to do with the abstracted data, its mathematical operations, changes to the data, forbidden operations, and more. It also reads the code and gets the variable data’s values and possible variable behavior for you. Such data strings are called ADT or Abstract Data Type. 


Note that modern programming languages work in a complex manner when compared to low-level languages and primitive data.


Data abstraction achieves:

  • Hiding and simplifying the behavioral and memory management mechanisms achieved using programming languages

  • They provide general behaviors that are reusable

  • Provide developers avenues for the use of ADTs in new abstractions

Control Abstraction: 

Structured programming languages create different structures and behavior. Thus, the function of the program is an extraction even in OOP since the entire code can be abstracted into several simple functions where:

  • The function name and objective hides the internal mechanism. The outputs, inputs, function signature provide you with all necessary details without explaining how and why it works internally.

  • Functions are reusable and generalize within specific parameters of the functional behavior.

  • The function name may be completely different from reality describing the internal simplification affected.


Conclusion:

Do software engineering courses such as Master of Computer Application interest you? Want to make a career in it? Here’s how you can make it happen. Do a software engineering course from a reliable and reputed Academy like Great Learning and select a domain in software engineering that interests you. Remember, these use abstraction principles, complex programming languages, and many other interesting concepts like the Cloud Services that are fast evolving today.


Learn from Great Learning to polish the skills of tomorrow’s markets today! Learn and practice abstractions, code, languages, and more at the Great Learning software engineering courses to exploit career opportunities in software engineering. Their software engineering courses will be joining an elite band of over 8000 working professionals and graduates who transitioned to paying career opportunities. Enroll today!

R4R.in Team
The content on R4R.in website is created by expert teams.
|| Blockchain || Cisco CCNA || Selenium || Internet security || Thermostat || Fashion || Online Games || Working From Home(WFH) || COVID-19 || Games || Cryptocurrency || Digital economy || Property || Sundarban National Park || NEET Course || Investment || Java || Inverter battery || PDF Drive || Online Library || Yoga || Career || Sports || SEO || Software Engineering || APPs || Digital Marketing || Certified True Copy || Mobiles || Software Testing || Books || TAX || Foreign Currency || AutoCAD || Online Course || Machine || Python || Banks || Bitcoin || Education || German Language || Festivals || Health ||