Collaboration In Software Engineering Projects: A Theory Of Coordination

Coordination of engineering decisions is a central concern of software engineering. We present a theory in which coordination of engineering decisions is modeled as a distributed constraint satisfaction problem (DCSP). We derive six hypotheses, predicting how the distribution of decisions over developers and the density of constraints among decisions will affect development time, probability that a file contains a field defect, and developer productivity. We test these hypotheses using data from a commercial project. We find support for all hypotheses predicting detrimental effects from poor distribution of decisions over developers. The effects of constraint density were mixed, showing that dense constraints slowed development, but did not significantly affect productivity. Dense data dependencies increased the chances that a file contained a field defect, but very surprisingly, dense call dependencies significantly lowered the chances that a file contained a field defect. We discuss the implications of these findings.

[1]  Didar Zowghi,et al.  Requirements Engineering challenges in multi-site software development organizations , 2004 .

[2]  Peter C. Cheeseman,et al.  Where the Really Hard Problems Are , 1991, IJCAI.

[3]  Audris Mockus,et al.  Globalization by Chunking: A Quantitative Approach , 2001, IEEE Softw..

[4]  Makoto Yokoo,et al.  Distributed Constraint Satisfaction: Foundations of Cooperation in Multi-agent Systems , 2000 .

[5]  Sriram K. Rajamani,et al.  The SLAM project: debugging system software via static analysis , 2002, POPL '02.

[6]  David Garlan,et al.  Documenting software architectures: views and beyond , 2002, 25th International Conference on Software Engineering, 2003. Proceedings..

[7]  Bill Curtis,et al.  A field study of the software design process for large systems , 1988, CACM.

[8]  James D. Hollan,et al.  Distributed cognition: toward a new foundation for human-computer interaction research , 2000, TCHI.

[9]  Steven D. Eppinger,et al.  The Misalignment of Product Architecture and Organizational Structure in Complex Product Development , 2004, Manag. Sci..

[10]  James D. Herbsleb,et al.  Splitting the organization and integrating the code: Conway's law revisited , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[11]  Stephanie D. Teasley,et al.  Rapid Software Development through Team Collocation , 2002, IEEE Trans. Software Eng..

[12]  Kevin Crowston,et al.  The interdisciplinary study of coordination , 1994, CSUR.

[13]  Leon J. Osterweil,et al.  Software processes are software too , 1987, ISPW.

[14]  Joyce J. Elam,et al.  Inside a software design team: knowledge acquisition, sharing, and integration , 1993, CACM.

[15]  Li-Te Cheng,et al.  Building Collaboration into IDEs , 2003, ACM Queue.

[16]  Kim B. Clark,et al.  Architectural Innovation: The Reconfiguration of Existing Product Technologies and the Failure of , 1990 .

[17]  Robert E. Kraut,et al.  Coordination in software development , 1995, CACM.

[18]  A. Hassan,et al.  C-REX : An Evolutionary Code Extractor for C , 2004 .

[19]  Aaron Greenhouse,et al.  Assuring and evolving concurrent programs: annotations and policy , 2002, Proceedings of the 24th International Conference on Software Engineering. ICSE 2002.

[20]  James D. Herbsleb,et al.  Identification of coordination requirements: implications for the Design of collaboration and awareness tools , 2006, CSCW '06.

[21]  Mary Shaw,et al.  Software architecture - perspectives on an emerging discipline , 1996 .

[22]  Kim B. Clark,et al.  Design Rules: The Power of Modularity , 2000 .

[23]  Roger S. Pressman,et al.  Software Engineering: A Practitioner's Approach , 1982 .

[24]  André van der Hoek,et al.  Palantir: raising awareness among configuration management workspaces , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[25]  Herbert A. Simon,et al.  The Sciences of the Artificial , 1970 .

[26]  M. E. Conway HOW DO COMMITTEES INVENT , 1967 .

[27]  J. Brown,et al.  Knowledge and Organization: A Social-Practice Perspective , 2001 .

[28]  James D. Herbsleb,et al.  The geography of coordination: dealing with distance in R&D work , 1999, GROUP.

[29]  김수동,et al.  [서평]「Software Engineering : A Practitioner's Approach, 4^(th) Edition」 , 1997 .

[30]  Kent L. Beck,et al.  Extreme programming explained - embrace change , 1990 .

[31]  Audris Mockus,et al.  An Empirical Study of Speed and Communication in Globally Distributed Software Development , 2003, IEEE Trans. Software Eng..

[32]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[33]  Audris Mockus,et al.  Formulation and preliminary test of an empirical theory of coordination in software engineering , 2003, ESEC/FSE-11.

[34]  James D. Thompson Organizations in Action: Social Science Bases of Administrative Theory , 1967 .

[35]  Chrysanthos Dellarocas,et al.  A coordinate perspective on software architecture: towards a design handbook for integrating software components , 1996 .