High-Quality Modules Does the module have a central purpose? Is the module organized around a common set of data? Does the module offer a cohesive set of services? Are the module's services complete enough so that other modules don't have to meddle with its internal data? Is the module independent of other modules? Is it loosely coupled? Does the module hide implementation details from other modules? Are the module's interfaces abstract enough so that you don't have to think about how its services are implemented? Can you treat it as a black box? Have you thought about subdividing the module into component modules and subdivided it as much as you can? If you're working in a language that doesn't fully support modules, have you implemented programming conventions that support them?