ENGL 301: Three Definitions of 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 where each following definition provides additional detail to create an understanding to readers with no prior knowledge of the subject. 

Parenthetical Definition:

To strip away some details from a complex object or idea to focus only on certain concepts.

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)

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.  

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) 

Common everyday examples of abstraction  

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 while the other is an abstraction that allows people to more easily navigate the underground system. (See Fig 1. & Fig 2)

Figure 1. Geographically accurate London Underground Map

Figure 2. London Underground Map Abstraction

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.

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 *

*