Abstraction is the process of "extracting the essence" of what we are working with and hiding or discarding what is not important or not relevant in order to simplify life or software. Cartoons are an example: only draw what is necessary to tell the story or convey intended meaning. I like to divide things up into global abstractions and local abstractions. Global abstractions are abstractions that are "static", such that they hang around a while or present only one interface to the world for a given item. Local abstractions, on the other hand, are abstractions that provide a "view" to the user/developer based on situational needs. This is because the proper abstraction for one situation may not be the ideal for another. Some abstractions are like simplified models of things we encounter in life, little robots or "actors" which mimic behaviors needed in the model, while others resemble mathematical notations. The mathematical-like ones try to build equations of abstractions. Needless to say, abstractions come in many shapes and forms. Of course no abstraction is perfect. They are often described as UsefulLies.
From "Science Daily" (http://www.sciencedaily.com/encyclopedia/Object_orientation):
This, to me, is a good article on the difference between abstraction, information hiding and encapsulation: http://www.itmweb.com/essay550.htm -- EricHodges
Could we call this the SoftwarePlatonism view of abstraction?
See LevelsOfAbstraction, MeasuringAbstraction, HighLevelLanguage, AbstractionDiscussion