The goal of object-oriented analysis is to identify the actors in a domain and describe their behaviors and interactions. The result of this analysis is a model which captures and describes in an abstract form the essential elements of the domain.
An object model is useful by itself to understand a domain. More often it is used to represent and simulate the domain as a computer program. The information in an object is not generally confined to just one representation, but takes on many forms according to how it is being used. An application might, for example, use SQL to define database tables in which to store the object’s static, persistent data, use Java or another programming language to code the dynamic, computational aspects, use a proprietary object/relational mapping data structure to translate between static and dynamic representations, and use HTML to display the information in a web browser.
These many uses of many objects leads to a combinatorial explosion of representations. It is a challenge to manage and synchronize change in such a system. Intercalate addresses that challenge by providing a format to represent the model objects and views, and tools to construct and use them to automatically generate the ultimate representations.