Architectures, Coordination, and Distance: Conway's Law and Beyond

01 September 1999

New Image

Software engineering researchers have long argued that the architecture of a system plays a pivotal role in coordinating development work. As early as 1968, Conway argued that the structure of the system mirrors the structure of the organization that designed it, and that this relation is a necessary consequence of the communication needs of the people doing the work. David Parnas defined a software module as "a responsibility assignment rather than a subprogram," driving home the point that technical design and organizational design are inseparable. In fact, Parnas argued, a good design is precisely one in which design decisions about the internals of a module can be made in relative isolation from decisions about the internals of other modules. The computer that runs the software doesn't care about such niceties, of course. The point is that the structure of the system plays a critical role as it supports (or, perhaps disastrously, fails to support) coordination of the development work.