Principio de diseño en la arquitectura de software que separa en secciones distintas código con diferente funcionalidad. Esto se consigue a través de la encapsulación de información en secciones de código con una interfaz bien definida, como ocurre en la orientación a objeto, o en el caso de división de un sistema de información en capas. La separación de intereses simplifica el desarrollo y mantenimiento de programas al no tener que revisar y modificar las demás partes.