Desarrollo de Sistemas ERP/CRM y Software Libre, Linux, Desarrollo de Proyectos, Programación OpenSource. Web

miércoles, mayo 10, 2006

Factorizando las Aplicaciones de Gestion

Toda aplicacion de gestion cumple con un principio basico: Todas tienen datos, conectividad sobre estos y forma de visualizar, analizar, capturar, procesar, etc. la misma por los usuarios del sistema.

Visto, quizas de una manera simplista, desde la optica del usuario, son una suma de funcionalidades asociadas a datos que se interrelacionan para lograr un fin comun. Por ejemplo, un sistema contable se le presentara a los usuarios como pantallas de captura y reportes, listados de cuentas, de movimientos, de operaciones, etc. Cada una personalizada de acuerdo a las caracteristicas de los datos con los que trabaja y compartiendo todas, en el mejor de los casos el estilo de interfaz que resulta conveniente para facilitarle el aprendizaje del sistema al usuario, quedando resumido los sistemas de la siguiente manera:

Sistema = Modulo A + Modulo B + ... + Modulo N

Donde cada Modulo es:

Modulo X = (Datos X * Formularios X * Reportes X * Otros X)

y siendo:

Datos X = (Definicion X * Estructura X * Conectividad X * Interfaz de Datos X)

Definicion X, la definicion formal de los datos para el modulo X
Estructura X, la estructura de los datos X, que muchas veces no coincide con la definicion.
Conectividad X, la forma de conectarse con los datos X
Interfaz de Datos X, la forma de interactuar con los datos (generalmente comun, SQL)

Formularios X, la forma de visualizacion de los datos con las funcionalidades asociadas.

Reportes X, la forma de crear reportes o los reportes definidos en el Modulo X

Otros X, cualquier otra funcionalidad de datos que sea asociada al Modulo

En aras de brindar sencillez al desarrollo de explicaciones siguientes vamos a hacer notar que como Formularios X, Reportes X y Otros X son basicamente funcionalidades de X, mejor las denotamos como Funcionalidades X. quedando la ecuacion de la siguiente forma:

Sistema = Datos A*Funcionalidades A +
Datos B*Funcionalidades B + ... + Datos N*Funcionalidades N

sustituyendo:

Sistema =
Def. A * Est. A * Con. A * Intrfz. A * Func. A + Def. B * Est. B * Con. B * Intrfz. B * Func. B + ... + Def. N * Est. N * Con. N * Intrfz. N * Func. N

Que gano con esto?

Aun nada, pues como las Funcionalidades de cada Modulo son muy particularizadas a estos, no es posible simplificar mucho la ecuacion, pero, si en cambio puedo contar con un elemento Funcionalidades que sirva para cualquier Datos X, (lo que representaria contar con herramientas genericas) tendria...

Sistema = Func.*(Def. A * Est. A * Con. A * Intrfz. A + Def. B * Est. B * Con. B * Intrfz. B + ... + Def. N * Est. N * Con. N * Intrfz. N)

Asi mismo seria si pudiera contar con alguna forma de hacer lo mismo para otros componentes de la ecuacion, como por ejemplo la Conectividad de Datos y la Interfaz de Datos, cosas que ya se vienen haciendo desde siempre, quedando entonces:

Sistema = Func.*Con.*Intrfz*(Def. A * Est. A + Def. B * Est. B + ... + Def. N * Est. N)

Es claro que para que todos estos componentes de la ecuacion funcionen correctamente es necesario un conjunto de informacion que ellos no poseen y solo los modulos pueden brindar por lo que es necesario introducir un elemento en cada modulo, que sirva para describir como las funcioanlidades que han sido sacadas como elementos comunes, el elemento que se necesita es Metadata X, quedando la ecuacion:

Sistema = Func.*Con.*Intrfz*(Def. A * Est. A *Met. A+ Def. B * Est. B*Met. B + ... + Def. N * Est. N*Met. N)

Como el elemento Definicion X es inherentemente de definicion, descriptivo, este puede ser mezclado con el elemento Metadata X, ganandose en simpleza y efectividad.

Sistema = Func.*Con.*Intrfz*(Met. A * Est. A + Met. B * Est. B+ ... + Met. N * Est. N)

Ahora, en este ultimo sistema lo principal es contar con buenas herramientas de Funcionalidades, de Conectividad y de Interfaz de Datos, lo demas es definir y modelar y ya tendras un sistema listo para ser usado, extensible por naturaleza y adaptable a cualquier contexto.

2 comentarios:

Anónimo dijo...

Nota de Alejandro Imass (me dá pitirius pubis inscribirme a esta vaina):

Está del carajo el artículo... seguro que Francisco Palm va a gozar una bola y media, o quizás dos, cuando lo lea (lol).

Sabes que lo de la Metadata me pareció genial. De hecho puedo dar fé que una integración por la vía de la metadata es igual o más efectiva que por la vía de las APIs. Al final lo que quiere la gente es ver los indicadores... el cómo los sistemas transaccionales resuelven para capturar y validar la data es un tema secundario.

De hecho, en el proyecto que estoy haciendo en el Fondo Nacional de Edificaciones Penitenciarias - FONEP, estoy integrando dotProject a tres instancias distintas de Sql-Ledger (Contabilidad, Finanzas y Presupuesto) y la integración como tal es a través del portal de indicadores de gestión que toma data de los distintos sistemas y la contextualiza en el negocio a través de un "Centro de Mando".... al igual que en el trablero de un automóvil: cuatro agujitas y una docena de luces es lo que interesa al conductor!

Si notas en mi presentación de Maracaibo verás que damos tanta importancia de los APIs a nivel de data, es decir que las aplicaciones prevean la integración a nivel de datos o Metadata.

Lic. Ernesto Freyre G. dijo...

Gracias por tu comentario, aunque me podrias ilustrar?

Quien es Francisco Palm?

Por lo demas estoy trabajando en este tema de metadatos, aunque "metadata" es una palabra que no me gusta usar pues esta registrada y es propiedad de una empresa americana.

Espero terminar las definiciones y primeras implementaciones esta semana para mandarlas a la lista y ponerlas en el CMS.

Saludos

Datos personales

Licenciado en Ciencias de la Computacion, Facultad de Matematicas y Computacion, Universidad de la Habana, 2004. Telefono: 45-3619, Cel: 282-8661