Managing Consistency and Conflicts in Real-time Collaborative Software Engineering - Wong, Felix (2003)
An important part of software engineering is the collaborative development of artefacts, such as requirements analysis and design documents. Software engineers can independently work on parts of software engineering documents, but they will often need to work closely with other software engineers and domain experts developing and refining these documents. The Internet and distributed computing tools allow geographically separated stakeholders to participate in the software engineering process, not only asynchronously, but also synchronously in realtime. Real time collaboration for software engineering is technically challenging, requiring support for concurrent editing of text and diagrams. This paper describes a replicated architecture, where copies of software engineering documents are kept at each participating site. While this architecture provides reliability, fast local response, and supports a high level of concurrency, maintaining consistency among copies, in the face of network latency and conflicting operations from independent team members, is a difficult task. Conflicts in software engineering analysis and design are often an indication of a need for further investigation, and are best resolved by discussion between stakeholders rather than by automatic and arbitrary actions. This project proposes a scheme to support the management and resolution of these conflicts, and demonstrates its correctness in a simulation environment.