Abstraction and Modeling

Summary

Abstraction is a fundamental technique that people use to perceive the world.

Developing an abstraction of the problem to be automated is a necessary first step of all software development.

We naturally organize information into classification hierarchies based upon rules that we carefully structure, so that they are neither too general nor too restrictive.

We often reuse abstractions when attempting to model a new concept.

Producing an abstraction of a system to be built, known as a model, is in some senses second nature to us, and yet paradoxically is one of the hardest things that software developers have to do in the life cycle of an information systems project. It’s also one of the most important.