Así que tenemos soluciones para cada problema / tema general. ¿Podemos encontrar soluciones alternativas para abordar el mismo problema?
El enredo de código y la dispersión de código impactan el software de muchas maneras:
1. Escasa trazabilidad: la implementación simultánea de varias preocupaciones dificulta el rastreo de los requisitos hasta la implementación.
2. Menor productividad: la implementación simultánea de múltiples preocupaciones cambia el enfoque de la preocupación principal a las preocupaciones periféricas. El acoplamiento alto conduce a una menor productividad. Además, las diferentes preocupaciones implementadas en un módulo requieren diferentes habilidades para manejar el módulo.
3. Menor reutilización de código: no es difícil de entender, ya que un módulo implementa múltiples preocupaciones.
4. Calificación deficiente: el código enredado hace que sea difícil examinar el código y encontrar problemas.
5. Evolución difícil: debido a los cuatro problemas anteriores, el software es difícil de mantener.
AOP puede resolver esos problemas separando esas preocupaciones transversales. De hecho, esos problemas existen comúnmente en el software. Aquellos se identifican como problemas. A pesar de que AOP puede resolver esos problemas, no todos los sistemas se pueden aplicar con AOP (según mi entendimiento).
Ahora, la pregunta es: ¿qué otras técnicas se pueden aplicar para hacer lo mismo como AOP?