Figure 1: Version Control at the Root, View, Package or Sub-PackageWhat does 'version control' mean in Enterprise Architect?
Enterprise Architect applies version control to Packages within a model. A Package is the primary organizational construct for UML models. Any Package may have version control applied to it - whether it is the model's Root node, a View or a sub-Package (see Figure 1).
Enterprise Architect supports two primary ways of version controlling Packages in a model:
1. Model Baselines: This built-in capability, stores point-in-time snapshots of a Package in the model repository itself. The Model Baselines concept also forms the basis of Enterprise Architect's 'compare and merge' facility.
When deciding on approaches to version control, strong consideration should be given to the use of Model Baselines, especially where the need is essentially to maintain a revision history for purposes of comparison, merge and roll-back.
2. Version Control Integration: Enterprise Architect supports integration with third-party version control systems, allowing users to store Package revisions in their preferred tool. Version control tools supported by Enterprise Architect include Subversion, CVS, Microsoft's TFS and SCC compatible tools, such as Accurev and Visual Source Safe.
For large, distributed teams it is often necessary to use such a dedicated version control system to manage broad-scale replication and sharing of model data.
This document focuses on the latter approach – achieving version control with third-party integrated tools. Readers who are interested in related change management features and simple alternatives, should refer to Appendix B: Built-in Collaboration and Change Management Tools
Introduction
This document explains how version control concepts apply to Sparx Systems Enterprise Architect and suggests best practices for establishing version control in shared and distributed modeling environments. The information presented here is intended for Enterprise Architect users who:
• Want to know whether applying version control to their model could be beneficial and what alternatives are available or;
• Require best practice advice for specific Enterprise Architect deployment scenarios or;
• Already have experience with version controlled models and wish to improve how these are managed.
Why Should I consider version controlled models?
In general, benefits of using version control systems include: increasing the potential for parallel and distributed work, improved ability to track and merge changes over time and automating management of revision history. Following are some specific benefits that can be realized by applying version control to a modeling environment. These are most relevant when models are shared by multiple editors, who may also be geographically dispersed:
• Supports globally distributed model editing by providing a convenient and effective way of replicating models.
• Facilitates collaboration across multiple projects through re-use of common model data.
• Improves performance for widely dispersed teams over slow networks by allowing local storage of models, with global propagation of changes only.
• Promotes orderly changes over chaotic changes and helps to minimize disruptions by separating "work in progress" from "finished" work.
• Helps automate communication within a team by coordinating 'edit' access to controlled information, thereby preventing accidental modification.
• Helps maintain successive revisions of work-to-date with the ability to "undo" changes that are not required, "roll back" to the last "good" version to undo a mistake, or recover from accidental deletions or changes.
• Maintains a work history and audit trail of changes to a model, helping to answer 'Who changed what and when?'

