"A model of a complex system that includes only the details essential to perspective of the viewer of the system."
"Only the characteristics of the system that are essential to the problem being studied are modeled; minor or irrelevant details are ignored."
- An abstraction is a model of a complex system that includes only the essential details.
- Abstractions are the fundamental way that we manage complexity.
- Different viewers use different abstractions of a particular system.
- Thus, while we see a car as a means of transportation, the automotive engineer may see it as a large mass with a small contact area between it and the road.
What does abstraction have to do with software development?
- The programs we write are abstractions.
- A spreadsheet program used by an accountant models the books used to record debits and credits.
- An educational computer game about wildlife models an ecosystem.
- Writing software is difficult because both the systems we model and the processes we use to develop the software are complex.
- One of our major goals is to convince you to use abstractions to manage the complexity of developing software.
- Helps to manage the complexity of a large system.
- Support our quality goals of modifiability and reusability.
- Most modifications can be localized to just a few modules.
- Supports the creation of generic modules that can be used in other systems.
- Major application of Abstraction is basically to deal with the complexity of the system.
- In other words we can say that we use abstractions to simply our work.
- Abstraction, Information hiding & Stepwise refinement are inter-related methods for controlling complexity during the design of a system.