• perezrinconclaudia

Claudia Rincón Pérez | ¿Qué es el diseño basado en dominios?


En el ecosistema de software en constante crecimiento, los productos exitosos deben tener un gran rendimiento, seguridad, facilidad de mantenimiento y facilidad de uso, así lo refirió Claudia Rincón Pérez, CEO de Factoría IT. Para las personas que entregan esos productos, la garantía de calidad, el tiempo de comercialización y el costo son lo más importante, a veces dejan de lado las tareas relacionadas con la seguridad. Después de todo, el tiempo es escaso. No importa si el sistema es seguro si las funciones que los usuarios necesitan no están ahí. Entonces, ¿cómo se integra la seguridad en la canalización de una manera que la mantenga importante? El diseño basado en dominios proporciona una hoja de ruta. Eche un vistazo en profundidad a cómo funciona.


Con el enfoque tradicional, la revisión de seguridad identifica vulnerabilidades graves que deben abordarse antes de la producción. Esto puede retrasar su proyecto unas semanas o incluso meses. Eso, a su vez, da como resultado una pérdida de ingresos. Para crear software seguro de manera eficiente y sin esfuerzo, es importante centrarse más en la seguridad por diseño en lugar de dejarlo como una ocurrencia tardía, señaló Rincón Pérez.


Comenzando con los conceptos básicos del diseño

Para comprender el diseño impulsado por dominios, primero debemos responder a otra pregunta: ¿Qué es el diseño?


Bueno, los desarrolladores que escriben código prestan especial atención para representar la lógica empresarial. Esa es la parte que hace que el producto sea único, crea código explícitamente y hace que el producto sea fácil de mantener. Al modelar el dominio empresarial, los desarrolladores dedican una cantidad considerable de tiempo a evolucionar y perfeccionar el modelo de dominio y cómo lo representarán en el código. Por ejemplo, consideran aspectos como la legibilidad o el rendimiento, en función de sus preferencias, y deciden cómo escribir el código en esa declaración. Basándose en la experiencia y el conocimiento, toman decisiones que coinciden con el software creado. Estas elecciones son parte de lo que determina el diseño del software.


A partir de ahí, ese diseño es el principio rector de cómo las personas construyen el sistema. Se aplica a todos los niveles, desde el código hasta la arquitectura. Cualquier decisión consciente en el desarrollo de software se convierte en una parte integral del proceso de diseño. Eso significa que los modelos de dominio, los módulos de software, las interfaces de programación de aplicaciones y los patrones de diseño son tan importantes para el diseño de software como las declaraciones de campo, las declaraciones if, las tablas hash y las declaraciones de métodos. Todos estos determinan qué tan estable es el diseño.


¿Cómo funciona el diseño basado en dominios?


Estos son los componentes básicos del diseño impulsado por dominios:


Entidad: las entidades son objetos destinados a ser únicos dentro del dominio. Los desarrolladores logran esto mediante el uso de una o más propiedades para marcar una entidad determinada. Es fundamental identificar la información de manera coherente para coordinar y controlar el comportamiento a fin de mantener la seguridad.

Objetos de valor: a diferencia de las entidades, los objetos de valor no tienen identidad. Solo sus propiedades distinguen entre dos instancias. En el diseño impulsado por dominios, los objetos de valor son inmutables y conceptualmente completos. Garantizan la validación centralizada de la información, reduciendo así los errores de seguridad en una aplicación.

Eventos de datos: estos objetos pueden registrar eventos discretos relacionados con la actividad del modelo dentro del sistema. Si bien se pueden rastrear todos los eventos dentro del sistema, un evento de dominio solo se crea para algunos tipos de eventos que garantizan la integridad de los datos.

Agregados: los agregados de diseño impulsados ​​por dominios son grupos de objetos de dominio que pueden tratarse como una sola unidad. Un ejemplo puede ser un pedido y sus líneas de pedido. Estos serán objetos separados, pero es útil tratar el pedido junto con sus líneas de pedido como un solo agregado. Protegen la modificación de la información en invariantes verdaderos en un límite de confianza.

Repositorios: son servicios de autorización. Utilizan una interfaz global para proporcionar acceso a todas las entidades y objetos de valor dentro de una colección agregada particular.

Principios clave de diseño

Inmutabilidad: los problemas relacionados con la integridad y la disponibilidad de los datos podrían tener un efecto adverso en el negocio en general. Al diseñar objetos de valor, debe decidir si deben ser mutables o inmutables. Esto mantendrá los datos consistentes durante todo su ciclo de vida y asegura que los datos se puedan obtener al nivel esperado de rendimiento en un sistema.

Fallar rápido: puede reducir los problemas de seguridad que involucran entradas ilegales con prácticas de diseño de software como condiciones previas y diseño por contrato. Un contrato especifica las condiciones previas necesarias para que el método funcione según lo previsto. Especifica las condiciones posteriores de cómo cambiará el objeto después de que se complete el método. El diseño por contrato evita situaciones que dan lugar a vulnerabilidades. El manejo seguro implica finalizar el trabajo tan pronto como quede claro que no se cumplen las condiciones previas.

Validación: puede surgir un problema de seguridad importante cuando no está validando la entrada del usuario. Asegúrese de que la validación esté en su lugar tanto en el lado del cliente como en el del servidor y mientras los datos se mueven desde la base de datos. La siguiente lista muestra un buen orden para hacer esto. El orden es desde los filtros más rápidos, más baratos en términos de rendimiento, hasta el control más complicado.


Tipos de validación:


Origen: ¿Los datos provienen de un remitente confiable?

Tamaño: ¿Está dentro del límite esperado?

Contenido léxico: ¿Contiene los caracteres y la codificación correctos?

Sintaxis : ¿Está en el formato correcto?

Semántica: ¿Tienen sentido los datos?

Ventajas del enfoque de diseño basado en dominios


Con el diseño impulsado por dominios como parte de su desarrollo de software, la seguridad puede convertirse en una parte natural del proceso . No se agrega al final. En cambio, llega al meollo del asunto. El diseño de software es fundamental para el interés y la competencia de la mayoría de los desarrolladores, lo que hace que los conceptos de seguridad por diseño sean fáciles de adaptar. Al centrarse en el diseño, las preocupaciones comerciales y de seguridad adquieren la misma prioridad tanto para los expertos en negocios como para los desarrolladores. Al elegir buenas construcciones de diseño, los que no son expertos en seguridad pueden escribir código seguro. Y al centrarse en el dominio, muchos errores de seguridad se resuelven implícitamente. De esta forma, el diseño dirigido por dominios resuelve varios problemas a la vez, finalizó Claudia Rincón.



4 visualizaciones0 comentarios