Maintaining constraints in collaborative graphic systems: the CoGSE approach
A constraint specifies a relation or condition that must be maintained in a system. It is common for a single user graphic system to specify some constraints and provide methods to satisfy these constraints automatically. Constraints are even more useful in collaborative systems, which can confine and coordinate concurrent operations, but satisfying constraints in the presence of concurrency in collaborative systems is difficult. In this article, we discuss the issues and techniques in maintaining constraints in collaborative systems. In particular, we also proposed a novel strategy that is able to maintain both constraints and system consistency in the face of concurrent operations. The strategy is independent of the execution orders of concurrent operations and able to retain the effects of all operations in resolving constraint violation. The proposed strategy has been implemented in a Collaborative Genetic Software Engineering system, called CoGSE, for maintaining the tree structure constraint. Specific issues related to CoGSE are also discussed in detail.