La importancia del código común

Recuerdo de pequeño que en el colegio nos hablaban de los factores de la comunicación y de los elementos implicados en ella. Los elementos principales eran el emisor (quien emite el mensaje), el receptor (quien lo recibe), el canal (el medio en el que se realiza la transmisión), el mensaje (lo que se quiere transmitir), el contexto (información que puede ayudar a la comprensión del mensaje) y el código (medio por el que se representa el mensaje).

Supongamos que estamos en navidad y digo por teléfono a mi madre “estoy contigo la noche de los regalos”.  En este caso, el emisor soy yo, el receptor es mi madre, el mensaje es que estaré allí con ella una noche especial, con el contexto puede saber que me refiero a la noche del 5 de Enero (o 24 de Diciembre, depende de a quien hayamos escrito la carta), el canal es el teléfono y el código utilizado es el español hablado.

Vamos a centrarnos en el código. Mi madre va a ser capaz de entenderme, porque yo se que sabe español, y que cuando hablo del concepto  “noche” los dos entendemos lo mismo. Imaginemos que se lo digo en Kilingon (os aseguro que no sabe), que según un traductor online sería algo como “jImej batlh cha’logh qoS”. El mensaje puede estar ahí, y puede oírme las palabras, pero no las entenderá lo que quiero decir porque nos ha fallado el código.

Algo que nos es fácil de entender con ejemplos como este, no es siempre tan obvio en los entornos profesionales, donde cada persona dependiendo del departamento o situación puede tener conceptos distintos para una palabra. Un ejemplo es la palabra “cliente”. Dependiendo de a quien le preguntes te dará definiciones distintas, y puede que lo consideremos cliente o no dependiendo de la frecuencia de compra, del tiempo que hace que no compra, de si es el que paga o el que recibe… hay muchos factores que pueden hacer que bajo la misma palabra de “cliente”, se escondan diferentes interpretaciones. Es por eso que los glosarios empresariales son tan importantes para evitar malentendidos en las organizaciones. Pero no es por aquí por donde quiero ir hoy.

En el diseño de soluciones informáticas, son muchas las personas y equipos que intervienen, y muchas veces (demasiadas) damos por sentado que todos entienden los documentos y diagramas de la misma manera. Es por ello que en las organizaciones es buena practica definir un lenguaje de modelado común y usarlo en los documentos de definición, de modo que todo el mundo entienda lo mismo. Está claro que cada empresa puede definir su propio lenguaje, pero el uso de uno estándar permitirá el onboarding más rápido de nuevas personas y saber que estamos usando algo que está ampliamente probado y aceptado por otras empresas a lo largo del mundo.

Diagrama complejo

Por lenguaje de modelado podemos entender un conjunto de reglas y notaciones que nos van a permitir describir y representar sistemas tecnológicos de modo que nos permitan comunicar ideas y conceptos entre diferentes equipos y departamentos de manera que todos ellos entiendan lo mismo. Esto nos permitirá una mayor eficiencia y eficacia en el desarrollo de diseños tecnológicos. Aunque las representaciones pueden ser varias, lo más normal son diagramas de modo que permitan visualmente tener conocimiento de los sistemas. Tener una representación visual clara y precisa de todos los componentes del sistema y sus relaciones, reduce la probabilidad de que se produzcan errores en la construcción y mejora la calidad del producto final.

Son muchos aspectos a tener en cuenta a la hora de elegir un lenguaje de modelado para la empresa. Algunas representaciones pueden ser más complejas que otras y requerir una curva de aprendizaje mayor, unas pueden tener más herramientas disponibles que otras, unas pueden tener mayor ámbito de usabilidad (de negocio o técnico) que otras, etc. con lo que es importante también tener valorar estos temas a la hora de la elección final.

Algunos lenguajes de modelado ampliamente utilizados son:

  • UML (Unified Modeling Language): es un lenguaje de modelado visual utilizado en el desarrollo de software para describir, diseñar y documentar sistemas.
  • BPMN (Business Process Model and Notation): es un lenguaje de modelado utilizado en la gestión de procesos empresariales para modelar y diseñar flujos de trabajo y procesos de negocio.
  • ArchiMate: es un lenguaje de modelado utilizado en la arquitectura empresarial para modelar y describir los componentes, procesos y relaciones de una organización.
  • C4 (Context, Containers, Components, and Code) es un conjunto de diagramas de arquitectura que proporciona un enfoque pragmático y escalable para modelar la arquitectura de software.
  • ER (Entity-Relationship): es un lenguaje de modelado utilizado en la gestión de bases de datos para representar y describir las relaciones entre las entidades.
  • SysML (Systems Modeling Language): es un lenguaje de modelado utilizado en el diseño de sistemas complejos para modelar y describir el comportamiento, la estructura y la funcionalidad de los sistemas.
  • SDL (Specification and Description Language): es un lenguaje de modelado utilizado en la ingeniería de sistemas para describir la interacción entre los componentes del sistema.
Diagrama UML

Estos son solo algunos ejemplos de lenguajes de modelado utilizados en diferentes áreas de aplicación aunque hay muchos más. Cada uno tiene su propia sintaxis y notaciones, pero todos comparten la finalidad de representar de manera clara y precisa los conceptos y procesos que se quieren modelar.

La importancia de utilizar un mismo lenguaje de modelado radica en la capacidad que tiene para mejorar la comunicación entre los diferentes equipos. Al utilizar un lenguaje común, todos los miembros del equipo pueden comprender y trabajar en el mismo proyecto, independientemente de su área de especialización. Esto evita confusiones y malentendidos que podrían surgir si se utilizan diferentes terminologías y notaciones para describir un mismo concepto.

Una deriva directa de este hecho es que ayudará a reducir los costos y el tiempo de desarrollo del proyecto. Al tener un diseño claro y preciso, los miembros de todos los equipos pueden comprender el diseño y distintos equipos pueden identificar problemas potenciales y solucionarlos antes incluso de comenzar la construcción del sistema. Esto evita errores costosos y retrasos en el proyecto.

La utilización de un lenguaje de modelado común y estandarizado es crucial en el desarrollo de diseños tecnológicos. Permite una comunicación clara y eficaz entre los miembros del equipo, mejora la integración de diferentes componentes del sistema, reduce los costos y el tiempo de desarrollo y mejora la calidad del diseño del sistema. Por lo tanto, es esencial que los equipos de diseño tecnológico utilicen un lenguaje de modelado común, estandarizado y acordado para asegurar el éxito de sus proyectos.