REFERENCES
Alexander, C., Ishikawa, S., and Silverstein, L. A. (1977).
A Pattern Language. Oxford University Press, New
York.
Cataldo, M., Wagstrom, P. A., Herbsleb, J. D., and Car-
ley, K. M. (2006). Identification of coordination re-
quirements: implications for the design of collabora-
tion and awareness tools. In CSCW ’06: Proceed-
ings of the 2006 20th anniversary conferen ce on Com-
puter supported cooperative work, pages 353–362,
New York, NY, USA. ACM Press.
Conway, M. (1968). How do committees invent. Datama-
tion, 14:28–31.
Coplien, J. O. and Schmidt, D. C. (1995). Pattern languages
of program design. ACM Press/Addison-Wesley Pub-
lishing Co., New York, NY, USA.
Coplien, James, O. (1994). A development process genera-
tive pattern language. pages 1–33.
Coplien, James, O. and Harrison, Neil, B. (2004). Or-
ganizational Patterns of Agile Software Development.
Prentice-Hall, Inc., Upper Saddle River, NJ, USA.
de Souza, Cleidson, R. B., Redmiles, D., Cheng, L.-T.,
Millen, D., and Patterson, J. (2004). Sometimes you
need to see through walls: a field study of application
programming interfaces. In CSCW ’04: Proceedings
of the 2004 ACM conference on Computer supported
cooperative work, pages 63–71, New York, NY, USA.
ACM Press.
Fowler, M. (1997). Analysis Patterns: Reusable Object
Models. Addison Wesley, Reading MA.
Gamma, E., Helm, R., Johnson, R., and Vlissides, J. (1995).
Design Patterns: Elements of Resuable Object Ori-
ented Software. Addison Wesley, MA.
Herbsleb, James, D. and Grinter, Rebecca, E. (1999). Ar-
chitectures, coordination, and distance: Conway’s law
and beyond. IEEE Softw., 16(5):63–70.
Li, B., Zhou, Y., Wang, Y., and Mo, J. (2005). Matrix-
based component dependence representation and its
applications in software quality assurance. SIGPLAN
Not., 40(11):29–36.
MacCormack, A., Rusnak, J., and Baldwin, C. (forthcom-
ing). Exploring the structure of complex software de-
signs: An empirical study of open source and propri-
etary code. Management Science.
Myers, Christopher, R. (2003). Software systems as com-
plex networks: Structure, function, and evolvability
of software collaboration graphs. Physical Review
E (Statistical, Nonlinear, and Soft Matter Physics),
68(4):046116.
Parnas, D. L. (1972). On the criteria to be used in de-
composing systems into modules. Commun. ACM,
15(12):1053–1058.
Schmidt, D., Fayad, M., and Johnson, R. E. (1996). Soft-
ware patterns. Communication of the ACM, 39:37–39.
Scott, J. (2000). Social Network Analysis: a handbook.
Sage Publications Inc.
Sosa, M. E., Eppinger, S. D., and Rowles, C. M. (2004).
The misalignment of product architecture and organi-
zational structure in complex product development. J
Manage. Sci., 50(12):1674–1689.
Steven, D. E., Daniel, E. W., Robert, P. S., and David, A. G.
(1994). A model-based method for organizing tasks
in product development. Research in Engineering De-
sign, V6(1):1–13. 10.1007/BF01588087.
Sullivan, K. J., Griswold, W. G., Cai, Y., and Hallen, B.
(2001). The structure and value of modularity in soft-
ware design. In ESEC/FSE-9: Proceedings of the
8th European software engineering conference held
jointly with 9th ACM SIGSOFT international sympo-
sium on Foundations of software engineering, pages
99–108, New York, NY, USA. ACM Press.
Wagstrom, P. and Herbsleb, James, D. (2006). Dependency
forecasting in the distributed agile organization. Com-
mun. ACM, 49(10):55–56.
Warshall, S. (1962). A theorem on boolean matrices. J.
ACM, 9(1):11–12.
Williams, L., Kessler, Robert, R., Cunningham, W., and Jef-
fries, R. (2000). Strengthening the case for pair pro-
gramming. IEEE Softw., 17(4):19–25.
APPENDIX
WARSHALL’S ALGORITHM
Warshalls Algorithm of transitive closure. Given di-
rected graph G = (V,E), represented by an adjacency
matrix A[i, j], where A[i, j] = 1 if (i, j) is in E, com-
pute the matrix P, where P[i, j] is 1 if there is a length
greater than or equal to 1 from i to j.
Warshall(int N, bool[1..n,1..n] A, bool[1..n,1..n] P)
{
int i,j,k;
for(i=0; i<N;i++)
for(j=0; j<N; j++)
P[i,j]=A[i,j]
for(k=0; k<N; k++)
for(i=0;i<N; i++)
for(j=0; j<N; j++)
if(!P[i,j]) P[i,j]=P[i,k]&&P[k,j];
}
ICEIS 2007 - International Conference on Enterprise Information Systems
320