Consiste en crear módulos capaces de funcionar de manera independiente del resto de los módulos que forma parte de una solución.
Cuanto más independientes sean entre sí más fácil y flexiblemente se trabajará con ellos, esto implica que para desarrollar un módulo no es necesario conocer detalles internos de otros módulos, permitiendo así reutilizar dichos módulos en otras soluciones