In the face of the vast scale of software-intensive systems needed today, modern development environments fail dramatically, typically leading to information overload, an inability to deal with the highly dynamic nature of both the systems and the organizations that develop them, and failure to support collaboration across organizational boundaries. The overarching aim of this project is to provide a scientific foundation for human-centered environments that make large-scale and distributed project awareness, communication, and coordination as effortless as in a small team. It accomplishes this by (a) performing empirical studies of real-world large-scale high-complexity software projects to understand how task coordination occurs in and contributes to organizational context, (b) developing an underlying theory of coordination in context, which will motivate and guide (c) the design of new coordination technology that explicitly addresses information overload, dynamism, and organizational boundaries.
Intellectual merit: The research will result in four contributions: (a) a sound theoretical basis that captures how task coordination and organizational context interplay at scale; (b) theory-driven empirical studies of in-context coordination; (c) knowledge about how to achieve improvements in productivity, quality, and development speed; and (d) a suite of design principles, tool prototypes, and interaction techniques for collaboration at a very large scale. These outcomes will transform the landscape of coordination technology by squarely addressing the issue of scale, moving from coordination within a team to coordination across many developers, across many teams, and across multiple geographical and organizational boundaries.
Broader Impacts: As society enters the era of "ultra large scale" software-intensive systems, coordination at such scales is a major unsolved problem, persistently hampering development and advances in vital domains such as healthcare, security, defense, eGovernment, and energy. The outcomes of this project will not only provide major economic benefits, but also major societal benefits in the form of the new systems that now can be developed. Through close collaboration with industry partners, the results will quickly find their way into practice. The project will also increase involvement of women in computer science through workshops and mentoring activities.
Overall Theme We focussed on the problems around collaboration and coordination in large, distributed, software development. We made significant progress developing theories, doing empirical studies, and building software support tools. These three aspects are interrelated. Empirical studies provide real-world evidence for developing theoretical knowledge and evaluating tools. Theories drive empirical studies and tool design. And tool design, in turn, leads to new opportunities for empirical study to understand impact. (See accompanying figure.) Intellectual Merit Theory We made two major theoretical contributions regarding the role of "trust" in global software engineering teams. First, we conceptualized trust as expectations between collaborators and as a dynamic process. Second, we developed a design space to guide software tool development. The design space itself constitutes theoretical knowledge and identifies various social and technical factors that have been shown to influence trust. We also developed theories about how software designers employ informal sketching to support design activities. We identified fourteen typical design behaviors recurring in informal design at the whiteboard, and derived design implications for tools to support these behaviors. In a third and final area, our investigation of crowd programming developed preliminary theoretical knowledge on how to leverage crowd workers (aka "turkers") to develop complex software systems. This work has so far led to a set of theoretical challenges such as how to decompose tasks into microtasks, how to dynamically generate microtasks, and how to properly incentivize workers in a complex workflow. Empirical Studies We spent a great deal of effort on empirical studies to ensure our research is relevant to real world practice. For instance, we analyzed interviews we did with over 60 software developers in multiple organizations about the role of trust in collaborations. In another study, we coded over 4000 activities related to sketching in design videos. We performed multiple user studies to evaluate our tools. All these studies help our theory development and tool building. Tool Development Four tools were designed and implemented in this project. Using advanced visualization techniques, Theseus can help software engineers to form accurate impression of their remote collaborators, hence promotes the trust among them. Calico enables software developers to jointly create their design sketches across multiple locations and multiple devices, making the designersâ€™ work more effective. PorchLight supports small teams of bug triagers in more effectively handle large numbers of bug reports. As a crowd programming platform, CrowdCode enables the crowdsourcing of the construction of software systems. Broader Impacts The projectâ€™s contributions regarding collaboration and coordination in large teams can help globally distributed organizations better perform projects and achieve organizational goals. The tools (Theseus, Calico, PorchLight, and CrowdCode) are able to improve communication and collaboration among developers. which in turn has been proven to help improve software quality. The evidence we collected in the empirical studies can be used as educational materials to allow software engineering and other students to obtain early exposure to real-world software development practices. The evaluations of prototype software tools can be used as case studies for training software engineering and human-computer interaction students, and practicing their skills on experiment design, behavioral observation and interpretation, qualitative and quantitative data analysis etc. In general, our work benefits society at large by increasing the possibility of having better software systems. It provides new models of development (e.g., crowd programming),theories about aspects critical to successful development projects (e.g., trust), and publicly available tools that organizations can adopt (e.g., Calico, Theseus).