La Programación Orientada a Aspectos (POA) es un nuevo paradigma que separa los conceptos que se entrecruzan en un sistema de la funcionalidad principal. POA consiste en un lenguaje base, lenguajes de aspectos y un tejedor de aspectos que integra la funcionalidad de las clases y los aspectos. Aunque POA y la Programación Orientada a Objetos comparten similitudes, se diferencian en que POA se enfoca en los conceptos que se entrecruzan mientras que la POO se enfoca en los conceptos comunes.