title: Internet-Based Collaborative Programming Techniques and Environments
Creators: name: Shen, Haifeng
Publisher: name: Griffith University
Year: 2003
Subjects: subject: software development
subject: team software
subject: collaborative programming
subject: internet-based programming
subject: editing

description: Software systems are getting larger and more complex, while the requirements are becoming vaguer and more rapidly changing. These trends make current software development more and more likely a team work. To integrate multiple developers into a coherent structured management process and make team software development a positive-sum game for both higher productivity and better quality, many team soft ware development methodologies have been proposed and practised. An emerging methodology is collaborative programming, which allows a group of programmers to work together on the same source code for design, implementation of individual components, and integration of individual components. Compared with other team software methodologies that only address needs in some phases or situations, collaborative programming is more adaptive to the variety of different phases or situations in a team software development process. A core technical component in collaborative programming is collaborative editing, which allows a group of programmers to view and edit the same source code. To support different phases or situations in an Internet-based collaborative programming process, collaborative editing must meet the requirements of supporting unconstrained, responsive, real-time collaborative editing; unconstrained, syncretic, non-real-time collaborative editing; and smooth, flexible switching between real-time and non-real-time collaborative editing. This thesis research contributes several novel techniques to address these requirements, and an Internet-based collaborative programming environment to integrate those techniques. These research contributions have advanced state-of-the-art technologies on col laborative editing for supporting Internet-based collaborative programming. First, we contribute a collaborative highlighting gestural communication technique for unconstrained, responsive, real-time collaborative editing. This technique is particularly effective in improving the quality of real-time interaction on text-based source code documents. The contribution to the operational transformation technology is the extension of the technology to support group awareness. It includes a package of operational transformation functions and transformation control algorithms for consistency maintenance in collaborative highlighting, and a flexible undo solution that has the capability of undoing any highlighting operation at any time. Second, we contribute a flexible operation-based merging technique for unconstrained, syncretic, non-real-time collaborative editing, which is efficient and has the capability of textually integrating all changes, and automatically detecting and resolving syntactic conflicts according to application-dependent user-specified policies. The contribution to the operational transformation technology is the extension of the technology to support unconstrained, syncretic, non-real-time collaborative editing. Its includes a log compression algorithm, a textual merging algorithm, and a syntactic merging algorithm. Moreover, we contribute a flexible notification technique to support flexible collaborative editing: unconstrained, responsive, real-time collaborative editing; uncon strained, syncretic, non-real-time collaborative editing; and smooth, flexible switching between them. The contribution to the operational transformation technology is the extension of the technology to support flexible collaborative editing. It includes a new transformation control algorithm that has a linear time complexity, two notification algorithms that support propagation and acceptance of any notifications at any time, and a notification propagation protocol that is efficient for both real-time and non-real-time collaborative editing.