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]
- acoplamiento de entorno común , acoplamiento común : dos módulos de software comparten un área de datos común;
- acoplamiento de contenido : algunos o todos los módulos de software están incluidos en algún módulo como componentes;
- acoplamiento de control : un módulo de programa se comunica con otro módulo con el propósito expreso de influir en su ejecución posterior;
- acoplamiento de datos ( acoplamiento de entrada-salida ): los datos de salida de un módulo de programa sirven como datos de entrada de otro módulo;
- acoplamiento mixto ( acoplamiento híbrido ) - diferentes subconjuntos de los valores de un determinado elemento de datos se utilizan en varios módulos de programa para propósitos diferentes y no relacionados;
- Acoplamiento patológico : un módulo de software depende o afecta los detalles de implementación interna de otro módulo.
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
- ↑ 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.
- ↑ McConnell, 2010 .
- ↑ 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. (indefinido)
- ↑ ISO/IEC TR 19759:2005, Ingeniería de software - Guía del cuerpo de conocimientos de ingeniería de software (SWEBOK)
- ↑ W. Stevens, G. Myers, L. Constantine, "Diseño estructurado", IBM Systems Journal, 13(2), 115-139, 1974.
- ↑ 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
- McConnell, Steve . Código perfecto = Código completo. — 2ª edición. - M. : edición rusa, 2010. - S. 139. - 896 p. - (Clase maestra). - ISBN 978-5-7502-0064-1 .
Calidad del software |
---|
Características | |
---|
Normas y recomendaciones |
- ISO/CEI 9126
- Requisitos no funcionales
- Características de calidad del sistema
|
---|
Procesos y Organizaciones |
|
---|