viernes, 29 de enero de 2016

Conceptos claros... o la importancia del modelado de datos



No sé si el lector se encontrará familiarizado con el concepto de modelado que se utiliza en el  mundo de la ingeniería software.

El modelado es una abstracción del mundo real, una visión simplificada pero formalmente nítida, de ese mundo real. El modelado se expresa mediante diagramas codificados en un lenguaje formal de naturaleza generalmente gráfica. El más popular hoy día sería el UML (Unified Modelling Language).

Esa expresión en lenguaje formal hace que su significado sea inequívoco y su posterior traducción a un objeto software o a tablas de una base de datos relacional sea casi directo y sujeto a pocas interpretaciones.

En ese sentido, el modelado hace de puente entre el mundo real y el software: representa al mundo real y luego se traduce en software.

Sin embargo, hay algunos vicios que afectan a la práctica del modelado.

A veces se lo desprecia como algo abstracto, quizá poco práctico, quizá poco realista. Y si esa es la opinión del analista, sus modelos serán poco rigurosos...y entonces, paradójicamente, sí que serán poco prácticos.

Un vicio especialmente común es el modelar conceptos poco claros, artificiosos, abstracciones de definición incierta, que no somos capaces ni de explicar sin titubear. Es un gravísimo error. 

Los conceptos del modelo deben ser un espejo del mundo real, deben corresponderse a conceptos nítidos de ese mundo real, definibles en lenguaje natural de manera inequívoca y entendible por personas ajenas a la ingeniería software.

Eso es lo que nos recuerdan de forma más que acertada Mark Allen y Dalton Cervo en su libro 'Multi-domain master data management'

The reason data models are important is that they translate business concepts into concrete technical terms. That is where the risk is. If a business concept is not clearly defined, its technical representation is flawed and further maintenance is prone to error.

Muy claro. 

Si el concepto del mundo real no es claro, su modelado será erróneo y el software que derive de ese modelo reflejará mal el mundo real lo que favorece los errores y, sobre todo, la evolución de ese software.

De los polvos de un concepto poco claro, a los lodos de un software difícil y caro de mantener.

¡Quién nos lo iba a decir!

Pero que nadie lo dude... es así...