Formulation and preliminary test of an empirical theory of coordination in software engineering

Motivated by evidence that coordination and dependencies among engineering decisions in a software project are key to better understanding and better methods of software creation, we set out to create empirically testable theory to characterize and make predictions about coordination of engineering decisions. We demonstrate that our theory is capable of expressing some of the main ideas about coordination in software engineering, such as Conway's law and the effects of information hiding in modular design. We then used software project data to create measures and test two hypotheses derived from our theory. Our results provide preliminary support for our formulations.

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

[2]  Walter F. Tichy,et al.  Should Computer Scientists Experiment More? , 1998, Computer.

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

[4]  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).

[5]  F. Reif,et al.  Fundamentals of Statistical and Thermal Physics , 1965 .

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

[7]  Marvin V. Zelkowitz,et al.  Lessons learned from 25 years of process improvement: the rise and fall of the NASA software engineering laboratory , 2002, Proceedings of the 24th International Conference on Software Engineering. ICSE 2002.

[8]  D. Mook,et al.  In defense of external invalidity. , 1983 .

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

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

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

[12]  Nicholas Carriero,et al.  Coordination languages and their significance , 1992, CACM.

[13]  Herbert A. Simon,et al.  The Structure of Ill Structured Problems , 1973, Artif. Intell..

[14]  Dewayne E. Perry,et al.  People, organizations, and process improvement , 1994, IEEE Software.

[15]  Edmund H. Durfee,et al.  Organizations, Plans and Schedules: An Interdisciplinary Perspective on Coordinating AI Agents , 1993 .

[16]  Shari Lawrence Pfleeger,et al.  Preliminary Guidelines for Empirical Research in Software Engineering , 2002, IEEE Trans. Software Eng..

[17]  Claes Wohlin,et al.  Experimentation in software engineering: an introduction , 2000 .

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

[19]  Adam A. Porter,et al.  Experimental Software Engineering: A Report on the State of the Art , 1995, 1995 17th International Conference on Software Engineering.

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

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

[22]  Victor R. Basili,et al.  The role of experimentation in software engineering: past, current, and future , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

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

[24]  Edwin Hutchins,et al.  The technology of team navigation , 1990 .