A long-standing approach to deal with complex product development is to divide the system into smaller parts
and assign responsibility for developing those parts to particular teams. Conventional wisdom suggests that by
doing so, we reduce the communication overhead in the development project by making the separate
development teams as...