Managing complexity Modern software packages are not small programs anymore like they used to be one or two decades ago. The size and complexity of these tasks means that software packages can no longer be written by individuals. Instead they are developed by teams which may be divided into subteams. Psychological studies show that the average human can only simultaneously comprehend seven plus or minus one piece of information. The principal used to manage such a large quantities of information is called abstraction .
Abstraction is used to handle complexity even in everyday life.
We think of it as a well-defined object with its own unique behavior. This notion of 'abstraction' allows us to drive to the grocery store without being overwhelmed by the complexity of the algorithm that is the automobile. We ignore the details of how the engine, transmission, and braking systems work. Instead we deal with an abstract, reliable, idealized notion of how the object as a whole behaves. We have a powerful ability to manage these abstraction in a hierarchical way that allows us to layer the semantics of complex systems at will.