¿Qué es el principio de diseño abierto / cerrado en ingeniería de software?

Probablemente esté hablando de la regla en la que los objetos están abiertos para extensión pero cerrados para modificación. Dice que la clase u objeto, una vez diseñado e implementado, no requiere modificación para agregar funcionalidad.

Por ejemplo. Es posible que tenga una API de registro que permita que el código registre errores, advertencias, etc., pero puede tener muchos destinos diferentes y aún desconocidos para el registro. En lugar de agregar un nuevo código al registrador cada vez que necesita un destino diferente, ‘inyecta’ el destino en el registrador. Esto también reduce la hinchazón de código para todas las aplicaciones que NO utilizan todas las opciones de destino.

Existen varios patrones de diseño que pueden permitir el uso de este principio, como la inyección de dependencia, los visitantes, etc.

Principio abierto / cerrado – Wikipedia
Inyección de dependencia – Wikipedia
Patrón de visitante – Wikipedia

¿Qué es el principio de diseño abierto / cerrado en ingeniería de software?

Un diseño abierto utiliza componentes comerciales con licencia y de código abierto (también bajo licencia) para crear una solución. La arquitectura de la solución es evidente y se identifican los componentes principales. Esto puede ser para un objetivo de plataforma única o una solución multiplataforma (Windows, Linux, Mac). Publicará API para acceder a sus funciones y datos, sujeto al modelo de negocio. Será evidente si la solución se puede alojar en una plataforma local, móvil o en la nube. Cualquier servicio necesario para integrarse con sus datos o infraestructura será satisfecho a través de múltiples proveedores de integración, y esta parte del proyecto es nominal, en comparación con las tarifas de licencia y mantenimiento.

Un diseño cerrado es típicamente propietario (secreto) y también puede usar componentes abiertos y comerciales, pero limitará cualquier detalle significativo sobre la arquitectura y las capacidades reales de la solución. Puede haber o no una API abierta para acceder a funciones y datos. Las plataformas disponibles pueden ser limitadas. Los formatos de datos y el esquema casi siempre se retienen. Una fuerte indicación de una plataforma cerrada será el requisito de utilizar un proveedor de integración específico para fusionar sus flujos de datos o infraestructura. En general, la parte de servicios del proyecto será significativa, en relación con el costo de la licencia y el mantenimiento continuo.