Systematic software development using VDM (2nd ed.)
Systematic software development using VDM (2nd ed.)
Using Z: specification, refinement, and proof
Using Z: specification, refinement, and proof
The Rational Unified Process: an introduction
The Rational Unified Process: an introduction
Communications of the ACM
On the criteria to be used in decomposing systems into modules
Communications of the ACM
Letters to the editor: go to statement considered harmful
Communications of the ACM
The structure of the “THE”-multiprogramming system
Communications of the ACM
A Discipline of Programming
`Calls Considered Harmful' and Other Observations: A Tutorial on Telephony
ACoS '98/VISUAL '98, AIN '97 Selected papers on Services and Visualization: Towards User-Friendly Design
Constructive Methods of Program Design
Proceedings of the Proceedings of the 1st European Cooperation in Informatics on ECI Conference 1976
The Early Search for Tractable Ways of Reasoning about Programs
IEEE Annals of the History of Computing
Principles of Program Design
Software Abstractions: Logic, Language, and Analysis
Software Abstractions: Logic, Language, and Analysis
Is abstraction the key to computing?
Communications of the ACM
Chapter III: Hierarchical program structures
Structured programming
Modeling in Event-B: System and Software Engineering
Modeling in Event-B: System and Software Engineering
Reusable abstractions for modeling languages
Information Systems
A method and tool for tracing requirements into specifications
Science of Computer Programming
Hi-index | 0.00 |
Abstraction is a fundamental tool of human thought in every context. This essay briefly reviews some manifestations of abstraction in everyday life, in engineering and mathematics, and in software and system development. Vertical and horizontal abstraction are distinguished and characterised. The use of vertical abstraction in top-down and bottom-up program development is discussed, and also, the use of horizontal abstraction in one very different approach to program design. The ubiquitous use of analogical models in software is explained in terms of analytical abstractions. Some aspects of the practical use of abstraction in the development of computer-based systems are explored. The necessity of multiple abstractions is argued from the essential nature of abstraction, which by definition focuses on some concerns at the expense of discarding others. Finally, some general recommendations are offered for a consciously thoughtful use of abstraction in software development.