Revised Definition: Abstraction

Introduction:

The main objective of this assignment is to introduce non-technical readers to the concept of abstraction in computer science and software engineering. This is achieved by using parenthetical, sentence and expanded definitions to define the term and provide examples to the usage of the term. Each following definition provides additional detail to create an understanding to readers with no prior knowledge of the subject. 

Parenthetical Definition:

The webpage of a website is an abstraction (generalization of certain aspects) of a web application.

Sentence Definition:

Abstraction is a concept in computer science and software engineering that removes details from an object or system to simplify them which allows for the focus on relevant concepts. 

Expanded Definition:

Abstraction in Computer Science and Software Engineering

The concept of abstraction in computer science and software engineering has two aspects. The first aspect focuses on the removal of details and simplification of a complex object, idea or system. The second aspect is to create a generalization by extracting common features from specific examples. (Kramer, 2007) People interact with abstractions daily. The apps on smartphones are abstractions themselves. Users interact with the user interface (UI) which abstracts the logic that the application runs away from the user. (See Figure 1.) The user does not need to know anything about the business logic, data and infrastructure layers to use the application.  

The Onion Architecture : part 1

Figure 1. Traditional Layered Architecture.

Source: https://jeffreypalermo.com/2008/07/the-onion-architecture-part-1/

Why is it important in Software Engineering?

Abstraction is essential as a way of ‘forgetting’ detail, and software development would be impossible without it. (Ben-Ari, 1998) Since software is abstract, writing software requires creating, manipulating, handling and reasoning about abstractions. (Kramer, 2007) The removal of unnecessary details allows one to handle the complexity that comes with constructing software. By removing details about the code that needs to be written, the requirements gathering phase during the software development lifecycle can focus on the functionality that will be required. During the implementation stage, the code that is written uses information/data hiding and classes to satisfy its goals.  

Common everyday examples of abstraction  

Figure 2. Geographically accurate London Underground Map

Source: Kramer, J. “Is abstraction the key to computing?.” Commun. ACM 2007: 40

Figure 3. London Underground Map Abstraction

Source: Kramer, J. “Is abstraction the key to computing?.” Commun. ACM 2007: 40

Abstractions are used in other disciplines and can be found throughout our day-to-day lives such as in the following:

  • Abstract art, where depictions of a subject are represented using simple lines and leaving out the finer details. 
  • Jazz, where musicians improvise around the heart of a song.
  • The London Underground Map where one is geographically correct (See Fig 2.) while the other is an abstraction (See Fig 3.) that allows people to more easily navigate the underground system.

Comparing Abstractions in Mathematics and Software Engineering

Within mathematics abstractions are used in the production of mathematical models for analysis.(Kramer, 2007) Whereas in software engineering/development, the focus is on the interactions between other software or users and not on the details of the code. However, the end goal of abstractions in mathematics and software engineering is to ignore unnecessary details and to emphasize the concepts that matter. (Colburn and Shute, 2007) 

Conclusion

An abstraction is a way to simplify a complex concept or idea by removing certain details that are unnecessary for the task at hand. Abstraction is a concept that is used extensively in computer science and software engineering to understand the complexity of a system so that software can be built in a correct and timely manner. They are also found in peoples’ everyday lives in art, music and everyday electrical appliances.

References:

Colburn, T., Shute, G. Abstraction in Computer Science. Minds & Machines 17, 169–184 (2007). https://doi.org/10.1007/s11023-007-9061-7

Kramer, J. (2007). Is abstraction the key to computing? Commun. ACM, 50, 36-42.

Mordechai, Ben-Ari. “Constructivism in Computer Science Education.” ACM SIGCSE Bulletin, 1 Mar. 1998, https://dl.acm.org/doi/10.1145/274790.274308.

Palermo, Jeffery. “The Onion Architecture: part 1. (2008) https://jeffreypalermo.com/2008/07/the-onion-architecture-part-1/. Accessed June 13, 2022

What is abstraction?. https://www.bbc.co.uk/bitesize/guides/zttrcdm/revision/1. Accessed June 8, 2022.

Leave a Reply

Your email address will not be published. Required fields are marked *

*