Microsoft Corporation
February 1996
Object-oriented (OO) analysis and design methods have hit the mainstream market. Major efforts are underway to provide a Unified Modeling Language (UML) that will replace the dozens of OO methodologies in common use. UML defines the information that tools will store about specifications of software systems, and to some extent how they will display it. This will make it easier for users to work with different modeling tools and environments. UML was developed by a group led by Rational Software and is being proposed as a standard.
Unification of the modeling approach however does not address the problem of data exchange. Tools will still have their own format for representing the elements of UML in disk-resident data structures. To use a different modeling tool or to exchange model information between tools, the proprietary storage format of one tool has to be converted to that of the other. To avoid building N x (N-1) converters between pairs of tools, a standard exchange format such as CASE Data Interchange Format (CDIF) may be used, so that only 2 x N converters are needed. However, a common interchange format still has disadvantages: it is hard to evolve; to view or process the information, it needs to be parsed into in-memory structures; and dependencies between models are hard to maintain because each model is usually contained in a separate file.
A repository addresses most of these problems by providing active storage for information contained in object model diagrams. It facilitates data exchange through:
This open information model is stored together with the information it describes which makes the data self-descriptive. A tool is therefore able to query the contents of an information model and may use the results to adapt its processing.
The interfaces of the repository completely encapsulate the stored information. This makes it possible to evolve data in response to information model changes, because tools depend only on the information model, not on the stored representation of data. It also enables vendors to tailor interfaces to support extensions, since extensions do not affect the interface to non-extended objects.
Each tool has scripts to import and export object diagrams that are expressed in the UML-based repository information models. For example, a user may develop an object diagram with modeling tool 1, which persists the model in tool-private storage, such as a file. Later, a script running in tool 1 exports the model into the Microsoft Repository. Now, another user runs a script in modeling tool 2 to import the visual design from the repository, so the design can undergo further development in that tool. Each script may either run on an object model exposed by the tool or directly on the tool’s storage that contains the model.
An enterprise could use the Microsoft Repository to maintain a database of object diagrams that document its software applications.
Component descriptions are the basis of component-based design and assembly of applications. A class in an object diagram may be stored as an independent component in the repository, described using the Component Description model. One way to capture that component description in the repository is by importing its object diagram.
By storing many object diagrams in the same repository, diagrams and their component parts can be related to each other. For example, an object diagram can be shared as a package in many other object diagrams.
Work is underway on an information model for relational databases. It will be useful to store a relationship between an object diagram and the databases it references or defines. The second release of the Microsoft Repository will support versioning. At that time, an object diagram can be versioned and be regarded as a configuration containing versioned components.
Microsoft and its partners have developed the repository information model based on the UML 1.0 specification. The Microsoft Visual Modeler uses the Microsoft Repository 1.0 and the model to expose modeling information. Through this mechanism, developers can easily share models developed with different modeling tools if such tools are repository-enabled. To find out how to enable your tool to exchange model information using the Microsoft Repository 1.0 contact, repos@microsoft.com.