Abstraction, Data Types, and Models for Software

Date of Original Version




Rights Management

Can archive pre-print and post-print or publisher's version/PDF

Abstract or Description

In the area of software development and maintenance, a major issue is managing the complexity of the systems. Programming methodologies and languages to support them have grown in response to new ideas about how to cope with this complexity. A dominant theme in the growth of methodologies and languages is the development of tools dealing with abstractions. An abstraction is a simplified description, or specification, of a system that emphasizes some of its details or properties while suppressing others. A good abstraction is one in which information that is significant to the reader (i.e., the user) is emphasized while details that are immaterial, at least for the moment, are suppressed. What we call “abstraction” in programming systems corresponds closely to what is called “modelling” in many other fields. It shares many of the same problems deciding which characteristics of the system are important, what variability (i.e., parameters) should be included, which descriptive formalism to use, how the model can be validated, and so on




Published In

Proceedings of the 1980 workshop on Data abstraction, databases and conceptual modeling archive, ACM , 189-191.