El principio de dependencias acíclicas ( ADP ) es un principio de diseño de software definido por Robert C. Martin que establece que " el gráfico de dependencia de paquetes o componentes no debe tener ciclos ". [1] Esto implica que las dependencias forman un gráfico acíclico dirigido .
Ejemplo
![](http://wikiimg.tojsiabtv.com/wikipedia/commons/thumb/3/3e/Acyclic_dependencies%2C_circular_dependency_example.svg/220px-Acyclic_dependencies%2C_circular_dependency_example.svg.png)
En este UML diagrama de paquetes , el paquete A depende de paquetes B y C . Paquete B a su vez depende de paquete D , que depende de paquete C , que a su vez depende del paquete B . Las últimas tres dependencias crean un ciclo, que debe romperse para adherirse al principio de dependencias acíclicas. [2]
Tipos de dependencias
Las dependencias de software pueden ser explícitas o implícitas. Ejemplos de dependencias explícitas incluyen:
- Incluya declaraciones, como
#include
en C / C ++,using
en C # yimport
en Java. - Dependencias declaradas en el sistema de compilación (por ejemplo,
dependency
etiquetas en la configuración de Maven ).
Ejemplos de dependencias implícitas incluyen: [3]
- Depender de un comportamiento específico que no está bien definido por la interfaz expuesta.
- Protocolos de red .
- Enrutamiento de mensajes a través de un bus de software .
En general, se considera una buena práctica preferir dependencias explícitas siempre que sea posible. Esto se debe a que las dependencias explícitas son más fáciles de mapear y analizar que las implícitas.
Estrategias para romper el ciclo
En general, siempre es posible romper una cadena de dependencia cíclica. Las dos estrategias más comunes son: [1]
- Principio de inversión de dependencia
- Cree un nuevo paquete y mueva las dependencias comunes allí.
Ver también
Referencias
- ^ a b "Granularidad: principio de dependencias acíclicas (ADP)" (PDF) . Mentor de objetos . Consultado el 14 de junio de 2013 .
- ^ Fowler, Martin (2004). UML Destilado .
- ^ "Las dependencias implícitas también son dependencias" . O'Reilly. Archivado desde el original el 25 de mayo de 2013 . Consultado el 16 de junio de 2013 .