Conventional file-based engineering design data for an engineering model
are represented by a plurality of components. The plurality of components
are kept in stores, which reside on servers. Each store contains the
components that correspond to the elements of one design file. The stores
also maintain a history of changes made to the components. A plurality of
client computers are bidirectionally connected to the servers. Each
client computer may obtain the current version of the components and may
send locally edited versions of the components back to the servers to
replace the current versions in the stores. At the client computer, the
user interacts with the components using conventional file-based
software. Before the locally edited versions of the components are
committed to the servers to replace the current versions, a
synchronization and merging process occurs whereby the latest version of
the components are downloaded to the client computer and are compared to
the locally edited version of the components to detect resolvable
(compatible) and unresolvable (incompatible) conflicts. The commit
process is performed only if no unresolvable conflicts exist between the
two versions of the components. To facilitate translation between
file-based data and components, a schema is written to "wrap" each of the
engineering file formats. Each schema is a set of classes that capture
all of the information in the file-based data.