Abstract
Adapting applications to each other requires mapping between the concepts, functions, or data native to each application, and identifying the abstractions under which each application can perform correctly and efficiently. Determining appropriate abstractions at any level is never easy, but doing so is critical to an application?s utility and success.