Engranaje (programación)

Compromiso [1] , acoplamiento , conectividad , conjugación [2] ( acoplamiento en inglés  ): el método y el grado de interdependencia entre los módulos de software [3] ; fuerza de las interconexiones entre módulos [4] ; una medida de cuán interdependientes son las diferentes rutinas o módulos [3] .

El acoplamiento fuerte se considera un inconveniente grave, ya que dificulta comprender la lógica de los módulos, modificarlos, probarlos de forma independiente y también reutilizarlos por separado. Una cohesión débil, por otro lado, es un signo de un sistema bien estructurado y bien diseñado, y cuando se combina con una cohesión fuerte , corresponde a indicadores generales de buena legibilidad y mantenibilidad.

Las métricas de vinculación y conectividad fueron acuñadas por Larry Constantine , el desarrollador original del diseño estructural [5] , quien también fue uno de los primeros defensores de tales conceptos (ver también SSADM ).

El enlace débil es uno de los patrones GRASP de Craig Larman [6] .

Tipos de engranajes

Los tipos de participación, según ISO/IEC/IEEE 24765, incluyen: [3]

Métodos para reducir el engranaje

Hay varios métodos de desacoplamiento .  Por lo general, se describen en forma de patrones de diseño . Una técnica clave es la inversión de control y, en particular, la inyección de dependencia .

El uso de una arquitectura de aplicación en capas, como Model-View-Controller , Model-View-Presenter , Model-View-ViewModel , etc., también ayuda a reducir el desorden .

Véase también

Notas

  1. Kravchenko A. K., Afanasyeva I. V. Influencia de los cambios en el engranaje y la conectividad en la complejidad del código y su velocidad en el desarrollo de software // Radioelectrónica e informática, 2016, No. 3, p. 9-12.
  2. McConnell, 2010 .
  3. 1 2 3 ISO/IEC/IEEE 24765-2017 Ingeniería de sistemas y software - Vocabulario . Consultado el 1 de noviembre de 2021. Archivado desde el original el 31 de marzo de 2022.
  4. ISO/IEC TR 19759:2005, Ingeniería de software - Guía del cuerpo de conocimientos de ingeniería de software (SWEBOK)
  5. W. Stevens, G. Myers, L. Constantine, "Diseño estructurado", IBM Systems Journal, 13(2), 115-139, 1974.
  6. Philip A. Laplante, Philip A. Laplante. Lo que todo ingeniero debe saber sobre ingeniería de software. - Prensa CRC, 2007. - Pág. 105-106. - ISBN 978-1-4200-0674-2 .

Literatura