"Large" abstractions for software engineering

  • Authors:
  • Dewayne E. Perry

  • Affiliations:
  • The University of Texas at Austin, Austin, TX, USA

  • Venue:
  • Proceedings of the 2nd international workshop on The role of abstraction in software engineering
  • Year:
  • 2008

Quantified Score

Hi-index 0.00

Visualization

Abstract

Abstraction is one of the primary intellectual tools we have for managing complexity in software systems. When we think of abstractions we usually think about "small" abstractions, such as data abstraction (parameterization), type abstraction (polymorphism) and procedural or functional abstraction. These are the everyday kinds of things we work with - finding the right concepts to make the expression of our software solutions easier to understand and easier to reason about. Here I propose we thing about "large" abstractions - abstractions that provide critical distinctions about our field of software engineering as a whole; abstractions that enable us to see what we do in different and important ways and provide significant improvements in how we do software engineering. I give a number of examples and delineate why I think they have been, and still are, important.