Any-time collaborative programming environment and supporting techniques

Programming is the process of designing, writing, testing, debugging and maintaining the source code of software systems. Collaboration is needed in programming due to the requirements for diverse expertise and skills to solve complex problems and for producing increasingly large and complex softwar...

Full description

Saved in:
Bibliographic Details
Main Author: Fan, Hongfei
Other Authors: Sun Chengzheng
Format: Theses and Dissertations
Language:English
Published: 2013
Subjects:
Online Access:https://hdl.handle.net/10356/54902
Tags: Add Tag
No Tags, Be the first to tag this record!
Institution: Nanyang Technological University
Language: English
Description
Summary:Programming is the process of designing, writing, testing, debugging and maintaining the source code of software systems. Collaboration is needed in programming due to the requirements for diverse expertise and skills to solve complex problems and for producing increasingly large and complex software systems within tight schedules imposed by competitive software markets. Collaborative programming techniques and environments have been active areas of research and development in both academic and industrial worlds, and past research has invented two complementary collaborative programming paradigms, namely non-real-time collaborative programming and real-time collaborative programming, with different characteristics, applications and supporting techniques. Non-real-time collaborative programming is most suitable for large-scope and independent programming tasks involving a large number of programmers with coordinated, infrequent and manual interactions for long durations, whereas real-time collaborative programming is most suitable for small-scope and interdependent programming tasks involving a small team of programmers with ad hoc, frequent and automatic interactions for short durations. This research proposes a novel collaborative programming paradigm named any-time collaborative programming, which aims to seamlessly integrate both real-time and non-real-time collaborative programming to meet the complementary and dynamic collaboration needs in programming processes. Under the any-time collaborative programming paradigm, multiple programmers may work in real-time and/or non-real-time collaboration modes supported by the most suitable techniques and tools, and switch among different collaboration modes flexibly as new collaboration needs arise dynamically during the programming process. This research focuses on the architecture and enabling techniques for supporting and realizing any-time collaborative programming, and has made important contributions in three areas. The first main contribution is the design of the architecture and major functional components of an Any-Time Collaborative Programming Environment (ATCoPE), which converts the abstract notion of any-time collaborative programming into concrete system architecture and components, and provides a framework for investigation and experimentation with any-time collaboration enabling techniques. We specified general design objectives, working process and functionalities of ATCoPE, and devised solutions for a range of ATCoPE issues, including seamless integration of existing non-real-time collaborative programming tools and environments with advanced real-time collaboration techniques, consistency maintenance and collaboration session management, and flexible interaction and transition among different collaboration modes and sessions by programmers. The second main contribution is a package of novel techniques for supporting semantic conflict prevention in real-time collaborative programming under the ATCoPE framework. One key challenge in supporting real-time collaborative programming is semantic conflicts, which may occur when multiple programmers are performing concurrent and incompatible work in interdependent programming segments. Semantic conflicts may result in programming errors that are difficult and costly to detect and resolve. This research has conducted in-depth analysis on representative programming scenarios for understanding the nature and general conditions of semantic conflicts, and proposed a Dependency-based Automatic Locking (DAL) approach for supporting semantic conflict prevention. The novelty of the DAL approach is its capabilities of supporting automatic, responsive and fine-grained locking on interdependent programming segments and balancing conflict prevention, concurrent work and programmer convenience in real-time collaborative programming. Major technical innovations under the DAL approach include conditions and algorithms for the DAL permission check, techniques for efficient derivation and consistency maintenance of the source code dependency graph and locking states, shared-locking schemes for supporting semantic conflict prevention in unconstrained real-time collaboration, and contextualization and full derivation techniques for consistent locking state update with correctness verification. The third main contribution is the design and implementation of the ATCoEclipse system, which serves as a proof-of-concept of ATCoPE and an experimental research vehicle for investigating ATCoPE system building techniques. Within the ATCoEclipse system, all major technical solutions devised in this research have been successfully implemented and validated, which provides positive confirmation of their feasibility and preliminary performance feedback. In addition, some user interface issues in supporting ATCoPE, particularly the collaboration workspace and locking awareness issue in the presence of the DAL scheme, are also studied during the system building work. Last but not least, the implementation of the ATCoEclipse system has also extended the Transparent Adaptation approach for building any-time collaborative programming systems by integrating existing single-user and non-real-time collaborative programming systems with novel real-time collaborative programming techniques which support both syntactic and semantic consistency maintenance features, without changing the source code of existing systems.