So, a major part of controlling conplexity is controlling dependency. What exactly do we mean by dependency?

Dependency describes the degree to which one software component relies on another component in order to perform its responsibilities.

a high degree of dependency is obviously going to limit code reuse - if a component cannot stand on its own, it cannot be easily cut out from an existing application and carried over to a new system.

So, if we want to encourage reuse, we need to encourage attempts to break away from dependency.

[audio] [real] Text to accompany slide4, in Chapter 17 of An Introduction to Object-Oriented Programming