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

lunes, febrero 27, 2006

Especificacion XMLREG para Registros

Desde hace varias semanas vengo estudiando y diseñando las especificaciones del XMLREG para definicion de registros y sus interacciones asi como el formato de datos "desmontables" (Dockable Data). Ya esta bastante avanzado y sera publicado proximamente en el CubaForge para su consulta y desarrollo colaborativo.

En esta primera version se exponen la forma de definicion de Registros y una forma de Serializacion propuesta para la exportacion, importacion y edicion/visualizacion offline de los datos.

El Proyecto en CubaForge tendra el nombre de XMLREG ya esta registrado, solo falta la respuesta de los administradores del Forge.

La primera version del documento se publicara en la carpeta de proyectos de XMLREG en el Forge.

Espero sus revisiones y criticas.

lunes, febrero 13, 2006

Dockable Data

Hola Blog, y lectores (dejenme sus comentarios por favor)


Sucede que hace unos dias, instale el SIG en uno de los puntos de ventas de la empresa, donde utilizarian los modulos de Clientes como sub-sistema de Fichas de Clientes y los del nivel Corporativo, incluyendo Mis Registros, que seria utilizado para llevar lo que los vendedores conocen como la Biblia de facturas emitidas y despues de configurar la Biblia como un registro compartido por todos por consignaciones, surge la pregunta (obvia) de que si podian llevarse ese sistema para la casa, entiendase si podian utilizarlo desde sus casas y no precisamente conectandose al servidor sino como un fichero que podrian copiar y actualizar cuando vinieran al otro dia a trabajar o inclusive los fines de semana. Evidentemente no se puede hacer esto actualmente pero el gusanito de la inquietud y la mejora constante (como casi siempre sucede) me llevo a pensar en una solucion a esto, para lo cual estoy replanteandome muchas caracteristicas del sistema de registros personales que les propuse en un post anterior y es que la definibilidad de los datos propiamente dicha podria dar cabida a documentos XML que puedan ser exportados e importados sin problemas por los usuarios dandoles la posibilidad de poder "llevarse el trabajo a casa" y de paso, con lo modernos sistemas PDA, utilizarlos en el coche, en los viajes, exportar para compartir y toda una gama de funcionalidades inherentes a los documentos XML que ya conocemos.
Para lo cual se me ha ocurrido este termino (buzzword) "Dockable Data", que aunque no se si este ya acuñado a otro significado pero me ilustra perfectamente lo que se deberia permitir por todo sistema de gestion, si bien no por todos los usuarios y algunas veces hasta de forma automatica.
En estos momentos me encuentro haciendo una definicion de "Dockable Data" como lenguaje de marcado XML extensible pero con un conjunto de funcionalidades que podrian hacer mucho mas facil la tarea de desarrollar sistemas de gestion, con captura, busquedas, reporting, y otro termino que tambien viene en camino "Navigate & Report" (Navegacion y Reporte) que aparejado a Dockable Data pueden hacer mucho por el desarrollo de sistemas a medida en el pais.

Saludos

jueves, febrero 09, 2006

Mis Registros, herramienta para la gestión de información

Resumen

Mis Registros es un sistema sencillo de gestión de registros de datos, con funcionalidades básicas de gestión de información que abarca desde la captura, edición, borrado e impresión de la información hasta la interrelación entre registros, las búsquedas con filtrado inteligente, el reporting automático, los eventos de registro, la importación y exportación desde fuentes de datos externas, brindando la base necesaria para que complejos sistemas de gestión sean modelados progresivamente de acuerdo a las necesidades y capacidades de las entidades que lo implementen.

Objetivos

Los objetivos de este proyecto son simples en su complejidad programatica pero ambiciosos en el alcance objetivo que el mismo posee. Las necesidades de sistemas de gestión que le brinden a las empresas cubanas la capacidad de automatizar y controlar los recursos de la misma de manera efectiva, progresiva, documentada y accesible a todos los trabajadores se hacen más evidentes cada día, en la medida que las nuevas tecnologías de la información y las comunicaciones van abarcando todos los campos del desarrollo empresarial cubano y mundial.

Soluciones a sistemas empresariales existen muchas y de calidad en el mercado internacional, y Cuba posee la fuerza y la capacidad necesarias para ir supliendo las necesidades de software de este tipo que las empresas nacionales tienen, y que, ante la falta de opciones efectivas para su implantación se ven en la necesidad de sub-contratar los servicios de empresas de software que les modelen y programe su software, no siempre resultando en soluciones validas que se adapten a los cambios constantes en el sector empresarial nacional. Donde muchas de estas soluciones carecen de consideraciones de tipo legal, al utilizar tecnologías propietarias no licenciadas, ya sean de gestores de bases de datos, de plataformas de desarrollo o de sistemas operativos y al no contar la empresa con los códigos fuentes de los sistemas que tiene en funcionamiento, bien porque forma parte de un desarrollo cerrado de los proveedores de software o porque ni siquiera los proveedores pueden contar con él.

De cara a la migración hacia software libre, las necesidades de software de gestión se hacen mas patentes, siendo una de las principales causas de que todavía muchas instituciones no realicen la tan “deseada” migración, argumentando que no poseen sistemas de reemplazo para aquellos que no son susceptibles de migrar hacia plataformas de software libre (en particular Linux) especialmente el software de gestión, contables, financieros, de producción, etc.

La posibilidad de contar con una herramienta para la definición e implementación efectiva de sistemas de gestión de información es un imperativo en las empresas nacionales de todos los sectores. Herramientas que deben tener requisitos mínimos de usabilidad, accesibilidad, disponibilidad, eficiencia, fiabilidad, seguridad y modularidad, básicos para poder, en el marco de la empresa, contar con un sistema que dé respuesta a las necesidades de automatización de toda la información y los procesos asociados a esta que en la misma se generen y además sea factible su adecuación a los cambiantes entornos de trabajo.

Definición de Requisitos y Funcionalidades

Los requisitos del sistema/herramienta son descritos debajo de manera que puedan ser implementados en su totalidad. Siempre con la posibilidad de extender esta para dar soluciones a problemas más complejos cada vez.

Requisitos del sistema

1. Estar programado en una (o varias) plataformas de desarrollo libres.

2. Código abierto.

3. Independencia en los gestores de bases de datos.

4. Estructura de datos única para cualquier registro configurado en el sistema (esto es que la definición de las tablas y sus relaciones en la base de datos es única, que de cabida a todas las funcionalidades y los registros configurados)

5. Integración con esquemas independientes de seguridad (Ej. ActiveDirectory para Windows o LDAP para Linux, etc.)

6. Asegurar esquemas de Cliente/Servidor con alta disponibilidad y soporte para bitácoras de acciones por usuario.

Estos requisitos garantizaran que el sistema sea accesible a las empresas, tengan estos la infraestructura de redes que mejor les convenga y los sistemas de bases de datos que escojan, también que el sistema estará disponible para ser analizado y abierto a las colaboraciones de programadores de todo el país o extranjeros dispuestos a colaborar con el mismo, que el sistema resultante no se vera comprometido a crecer en tablas y relaciones innecesarias, cuando el conjunto de estas será limitado a las necesarias para poder modelar las funcionalidades básicas propuestas, que contara con métodos efectivos de garantizar la seguridad y fiabilidad de los datos, ya que estará regido por tecnologías de seguridad muy eficientes y finalmente que el sistema estará accesible a los usuarios en todo momento sin caídas y que toda acción que el usuario realice en el será auditable y propensa a ser revisada por los directivos de la empresa o los administradores del sistema en cuestión.

Antes de enumerar las funcionalidades, seria correcto definir elementos comunes en el desarrollo de este proyecto.

Registro: Un registro es el equivalente a una tabla con campos de diferentes tipos, validables y con un tratamiento determinado de acuerdo a su definición puntual, son autodocumentables, gestionados a través de listados, tablas o cualquier otro tipo de elemento de interacción y con la posibilidad de ser compartidos por varios usuarios, relacionados con otros registros formando registros mas complejos y toda una trama de relaciones que componen el sistema de gestión de información, con la posibilidad de definición en caliente de los datos.

Usuario: Un usuario es la persona que utiliza el sistema para ver los registros a los que tiene permisos asignados, ya sean de escritura, lectura o administración.

Listado: Forma común de listar un registro, tiene apariencia de tabla e incorpora todas las funcionalidades básicas de gestión de datos (inserción, edición, borrado, impresión) así como las de filtrado, etc. No siendo la única forma de visualizar el contenido de un registro.

Filtrado: Acción de restringir un conjunto de datos de un registro a los que cumplen con determinadas condiciones, mejora la navegación llegándose a acelerar el tiempo de búsqueda de información en el registro.

Las funcionalidades del sistema son muchas y muy variadas y todas en conjunto dan un soporte básico para poder realizar todo un conjunto de operaciones y definiciones que potenciaran las aplicaciones de gestión de la empresa, tenemos:

1. Definición de Registros, ya sea a nivel central como a nivel personal (Todos los registros están al mismo nivel en teoría, pero en la practica el grado de alcance y de interrelación los sitúa a niveles distintos, Ej. Un registro de Contratos es de nivel empresarial y el registro de un usuario de tareas por cumplir es de corte personal, el primero tendrá evidentemente muchas relaciones con otros registros de nivel empresarial, accesible por muchos usuarios y el segundo solo por el usuario que lo creó con fines muy particulares, pudiendose crear relaciones entre ellos visibles solamente a los usuarios que tengan los permisos)

2. Los registros deberán tener, nombre, creador, usuarios con acceso, descripción del mismo y tratamiento particular, eventos, formatos de impresión. Así como los campos de los registros, tendrán información relacionada al tipo, validación, formulas, relaciones con otros registros, descripción para auto-documentación, restricciones de unicidad, resúmenes.

3. Se proveerá de una herramienta de Importación y Exportación de datos, inicialmente para XML y CSV.

4. Se podrán navegar los registros hacia abajo y filtrar hacia arriba los registros relacionados en las relaciones teniendo un grado de dependencia primario-secundario (Ej. Clientes-Contratos donde Clientes es primario y Contratos secundario, de manera que se pueden navegar desde Clientes todos los contratos para un cliente determinado, pero en Contratos solamente puedo filtrar el registro por un Cliente determinado y ver todos los contratos con ese cliente en particular)

5. Cuando se hace una impresión de un dato de registro particular, se podrá solicitar que imprima sucesivamente todos los listados de registros asociados (hacia abajo) según sus filtros aplicados (Ej. Si imprimo un Contrato, me mostrara sucesivamente, a petición, todas las Facturas asociadas, etc.)

6. La definición de los esquemas de impresión, (layouts) configurable por los usuarios, permitiendo el uso de múltiples esquemas, para lo cual es necesario implementar una herramienta de confección de estos.

7. Archivador de registros, con la posibilidad de crear CDs (o DVDs) con toda la información salvada de un periodo largo de trabajo, autoejecutable con un navegador de datos (sin posibilidad de edición, inserción ni borrado)

Implementaciones prácticas del proyecto.

La implementación practica del proyecto esta pendiente de realizarse, es necesaria la ayuda de personal comprometido y capacitado. Además de contar con los recursos necesarios, de tiempo, de infraestructura, documentación, comunicación, etc.

La implementación puede ser hospedada en un sitio con CVS (Concurrent Versioning System) de manera que los cambios que vayan haciéndose en el proyecto sean de conocimiento publico y donde las versiones puedan ser publicadas con cierta periodicidad así como los cambios y las adiciones de funcionalidades y las mejoras continuas en el sub-sistema subyacente.

Recomiendo el uso de tecnologías libres de desarrollo, multiplataformas, en particular Java y .NET, por ser de gran efectividad y por su facilidad de uso, programación y la potencia de sus soluciones.

Caso ejemplo demostrativo.

Para ilustrar un caso practico de aplicación del sistema supongamos una empresa comercializadora de artículos de uso general (de consumo) que tiene puntos de venta en varios lugares del país y que no tienen una infraestructura de red conectada 24 horas y solo cuentan con servicio de correo nacional y una casa matriz donde se lleva a cabo el proceso de contabilidad y gestión de marketing, etc.

Algunos problemas que presenta esta empresa serian la gestión de los clientes (Fichas de clientes), La emisión de facturas y el control de la deuda (conocido en el ámbito comercial como la Biblia)

Pues bien, contando cada punto de venta con el sistema de registros se podrían tener fácilmente.

Primero: Control de Fichas de Clientes, implementación, se crea un registro, uniforme para todas las sucursales y la casa matriz de clientes que contenga la información referente al cliente, desde nombre, código reeup, contactos, información bancaria, etc. Pasando por el personal autorizado a efectuar compras (contenido en un registro asociado) y el numero de código interno de contabilidad. Con mecanismos automáticos de manera que el código interno sea un numero consecutivo automático y cada vez que un cliente nuevo se presenta en el punto de venta se le da la planilla de Ficha de cliente para que la llene, se le informa de los tramites necesarios y se da información de a donde tiene que enviar la información (la casa matriz o la sucursal encargada de este tramite) donde es validada (investigada la veracidad de los datos) e introducida en el registro de clientes central con un mecanismo automático (configurado en ese registro) de replicación hacia todas los puntos de ventas, que de forma automática incorporaran la información sin necesidad de introducirla ellos mismos en sus sistemas que aunque aislados están en constante actualización con el sistema central. Garantizando la unicidad del código interno por clientes.

Segundo: Emisión de Facturas, igualmente si las Fichas de clientes pudiesen ir del sistema central al de las sucursales, las facturas de las sucursales pueden automáticamente enviarse al sistema central, por medio de otro registro de facturas asociadas a clientes, de forma tal que, en la casa matriz se tengan un registro con todas las facturas que se emiten en todos los puntos de ventas por clientes (casi en tiempo real) teniendo un control de todo lo vendido a un cliente en particular.

Tercero: Control de la Deuda, los clientes pagan a la empresa de diversas maneras, ya sea en las sucursales o directamente en la casa matriz, de forma que un registro con los pagos de los clientes es necesario, registro que asociado a clientes y a facturas puede establecer cuanto dinero deben los clientes a la empresa, de forma central. Este registro quizás no necesite ser replicado en los puntos de venta, ya que los cheques o el efectivo se envía a la casa matriz estableciéndose otros controles al efecto.

Para los trabajadores de la empresa, las facilidades de búsqueda y gestión de la información son una garantía de realizar un trabajo con eficiencia, ya que se podrían hacer filtrados por clientes en facturas, o bien ver para un cliente toda la información asociada a el, y según las circunstancias extender las definiciones de los registros, o incluir registros nuevos que den respuesta a las crecientes demandas de información de otras áreas de la empresa, sin ponerle limites a lo que se puede hacer con el sistema y hasta donde el sistema puede llegar adaptándose a los cambios en el entorno económico, financiero, social y legal de la misma.

En este sencillo caso, vemos como es posible llevar un control optimizado de información que hasta este momento no tienen solución practica en la actualidad y donde, dada la gran cantidad de casos, no existe una respuesta favorable de los proveedores de software para cada necesidad.

miércoles, febrero 08, 2006

Freyre, como Ambigrama

Me acabo de leer "Angeles y Demonios" de Dan Brown, muy buen libro que les recomiendo, en donde aparecen varios elementos graficos llamados ambigramas, que no son mas que palabras escritas que pueden tener mas de una lectura, ya sea al derecho o de reves, se pueden leer dos cosas en el mismo, o quizas la misma palabra pero leible desde ambos angulos opuestos. ni decir que lograr uno no es sencillo, los hay incluso que la segunda lectura hay que hacerla mirando el dibujo en un espejo, en fin.
Ahora, basandome en algunos ambrigramas del mismo libro, le modifique algunas letras, otras las cree yo mismo y aqui les muestro como me quedo un ambigrama con mi nombre (mi apellido Freyre)

Es evidente que necesita un poco de retoque para que queda tan estilizado como en el libro de Brown, pero es un primer acercamiento al mundo de los ambigramas, que puede mejorarse.

Si tienen dudas de que se pueda leer al reves, denle vuelta al monitor.


SIG Mis Registros, posibilidades

El Modulo SIG Mis Registros ha demostrado ser una herramienta de gran utilidad practica, aun careciendo de algunas funcionalidades básicas sugeridas por usuarios del sistema, me he propuesto incorporarle algunas de estas funcionalidades que podrían convertirlo en un kill-module que podría inclusive competir con todos los restantes módulos al poder dar soporte a todas las funcionalidades básicas y los casos posibles de uso para las relaciones que se establecen en el sistema.

Para esto son necesarias algunas funcionalidades básicas que incluyen:

  • Soporte para sub-registros relacionados, comprende la posibilidad de incorporar varios sub-registros a un registro principal
  • Registro nomenclador, posibilidad para hacer selección de un dato como nomenclador de otro registro.
  • Impresión personalizada de registros, con soporte para formulas.
  • Importación y Exportación de datos de fuentes de datos externas (XML, CSV, etc.)
  • Replicación de datos automatizada desde registros, con sub-registros.
  • Campos de formula, campos auto-numéricos (o de consecutivo)
  • Enlaces directos desde menú y/o barra de herramientas.

Con este conjunto de funcionalidades básicas es posible ampliar el nivel de solución del modulo para darle cabida a registros con mayor complejidad de manera que sea posible crear complejos sistemas de gestión en poco tiempo y con funcionalidades y solución uniforme a todos los niveles.

Un extra en este listado de funcionalidades seria la posibilidad de crear flujos de trabajo asociados a eventos en registros de manera que sea posible redirigir actividades a través del SIG conformando enlaces de datos que puedan convertir al SIG programado en ese modo en completo sistema, sin necesidad de otros módulos particulares.

Este modulo así implementado podría dar solución a las necesidades de software de gestión existentes en el país, y de cara a la migración hacia software libre, al brindar un modulo que prácticamente podría convertirse en gestor de casi cualquier tipo de información, incluyendo las funcionalidades básicas de reportes, integración, usabilidad, modularidad, extensibilidad necesarias. Para esto evidentemente es necesaria una implementación libre que cumpla con la especificación de SIG Mis Registros incluyendo las características expuestas aquí.

miércoles, enero 25, 2006

Localizacion en SIG, preparados para todo

Desarrollando parte de los modulos del SIG en una PC prestada, me di cuenta que casi todos los modulos funcionaban mal y la razon aparente de todo eran la configuracion regional del equipo que era Español (España) que tiene configurado las fechas en el formato dd/MM/yyyy y en el formato de numero decimal la coma es utilizada como separador (Ej. 190,50). Este particular de la coma como separador de los lugares decimales fue lo desencadeno que reconociera los errores de localizacion y se le incorporara al kernel una clase de localizacion para el tratamiento de estos datos, ya sea el formato decimal, la conversion de numeros flotantes para insercion en bases de datos o la conversion de fechas para independencia de metodo de conversion por el servidor de datos, ademas de que todos los modulos hechos hasta la fecha fueron chequeados y ajustados para realizar estas tareas y recompilados. Quedando el SIG Proyectos, Logistica y Facturacion listo para localizacion regional, solo faltando el apartado de idiomas que mas adelante sera resuelto, aunque ya los modulos pueden incorporar informacion de texto localizable sin necesidad de hacer cambios en el SIG Kernel.
Inicialmente se proveeran 3 idiomas (Ingles, Español, Portugues)

lunes, enero 16, 2006

SIG Mis Registros, comenzo a ser usado

El Modulo SIG Mis Registros comenzo a ser usado en el sistema SIG de la empresa, para satisfaccion de varios usuarios, pioneros en el uso del sistema que han comenzado con alguna ayuda a definir sus propios registros de datos, ya sean para gestiones aduanales, registros financieros, de entrada y salida de documentos, de emision de facturas , etc. Es evidente que este modulo no competira en funcionalidades con el resto de los modulos planteados para el area de Importaciones, Logistica y Facturacion, que tienen la posibilidad de interelacionar sus datos para darle seguimiento constante a la cadena de suministro de la empresa de una manera mas eficiente, si ayudara a los usuarios a irse familiarizando con la interfaz del SIG, con la forma en la que el SIG gestiona la informacion y todas las facilidades que brinda de una forma coordinada y coherente.
El impacto de este modulo es grande y como en definitiva este es un blog para compartir y para desarrollar, quisiera poner a disposicion de la comunidad el diagrama relacional de las tablas que potencian el modulo de Mis Registros, el cual es el mejor acercamiento al modelo de desarrollo empresarial libre que vengo promoviendo hasta ahora y que haya programado. Otras versiones iran surgiendo, evidentemente, ya les comentare los resultados aca. y sobre el plan de desarrollo del modelo de aplicaciones empresariales que estamos diseñando, ya espero que con la ayuda del Lic. Luis (el loco) Fernandez, gran programador y amigo mio que esta dispuesto a colaborar con el proyecto aun antes de conocerlo, espero que sume sus ideas a las mias y pueda salir a la luz, despues de tanto tiempo de espera.
Aqui esta el comentado diagrama, quizas por la resolucion de la imagen no se definan bien los nombres de los campos y/o las relaciones, de ser asi, escribame a mi correo (ernestofreyre@yahoo.com) para hacerle llegar una version mas grande y nitida. Sirvase pues a implementar una version libre de Mis Registros y pruebelo en su ambiente productivo (pruebelo en una arquitectura cliente/servidor para impactar mas en los resultados) y notara que las personas que trabajan en el estaran siempre dispuestas (si son astutas) a adoptar rapidamente soluciones tecnologicas que alivien su carga de trabajo y mejoren su desempeño laboral.



jueves, enero 12, 2006

SIG Mis Registros

Dada la gran cantidad de registros propios que algunos usuarios del SIG llevan y que no son objetivos del sistema desarrollar en estos momentos, he decidido crear un modulo de MisRegistros, donde los usuarios del SIG puedan crear sus propias tablas de registro y mantener estas con los datos que ellos mismos van insertando y manteniendo, pudiendo desde un entorno sencillo, definirlas, mantenerlas, adicionar registros, borrarlos, actualizarlos, compartirlas con otros usuarios, realizar filtrados, búsquedas, reportes, etc.

Los tipos de datos estándares son:
- Cadena de caracteres alfanuméricos.
- Numero entero
- Numero decimal
- Fecha
- Fichero asociado
- Verdadero/Falso
- Nomencladores sencillos (Valor a escoger, textual de selección, Ej. Femenino, Masculino, con posibilidades de operaciones sobre estos datos, adicionar, editar, borrar)

Los registros se pueden Crear, Cambiar, Actualizar, Borrar y Compartir por todos los usuarios y los usuarios con permisos podrán ver todos los registros existentes en el sistema y realizar con ellos todas las acciones antes mencionadas.

Este modulo le dará la posibilidad a los usuarios de Crear sus propios registros de datos y poder tener funcionalidades muy simples sobre estos que incluyen: Listar, Adicionar elementos, Editar elementos, Borrar elementos, realizar búsquedas, Filtrado de datos, Impresión de listados, Envío por correo, etc.

Espero que ayude en la implantacion del SIG en la empresa.

martes, enero 10, 2006

SIG Updates Listo, proximo feature: Replicacion de datos

El subsistema de Updates del SIG ya esta listo, como se describio en anteriores post, el sistema de Updates del SIG permite que nuevas funcionalidades sean añadidas al sistema en ejecucion, mejoras, cambios de DLLs, etc. de forma jerarquica, permitiendo que sucesivas actualizaciones sean aplicadas de forma ordenada y que la implantacion y/o adaptacion de los modulos del sistema ERP de la empresa sea progresiva.

Proxima feature: Replicacion de datos.

La replicacion de datos en servidores es un tema bien conocido por todos y su utilidad practica reconocida en ambientes donde las multiples redes que componen la infraestructura de comunicaciones de la empresa estan separadas fisicamente pero en comunicacion por algun tipo de medio como correo electronico. Este es el caso particular de mi empresa, y por lo cual me veo en la situacion de incorporarle al SIG algunas herramientas de replicacion, para que los datos que se quieran replicar hacia otros servidores SIG puedan hacerse automaticamente.
El proceso tengo planeado hacerlo por correo, con una cuenta asociada al SIG y con varias opciones para hacerlo automatico o manual, previendo las operaciones de insercion, actualizacion y borrado de los datos.

lunes, enero 09, 2006

ERP y la mentalidad de cambio

Los sistemas ERP generan anualmente billones de dolares de beneficios a los proveedores mundiales de este tipo de software, las grandes empresas y trasnacionales de todo el mundo los utilizan, asi como las pymes (Pequeña y Mediana Empresa) y organizaciones y entidades estatales de todos los paises en desarrollo. Es tambien muy grande el beneficio que por concepto de retorno de inversion y el logro de ventajas competitivas que repercuten en las utilidades de las empresas y aun asi es comun encontrar muchos casos donde la implantacion de un sistema ERP, sea problematica y lejos de generar ganancias, genere perdidas. A que se debe esto?
Pues una gran cantidad de fuentes señalan la necesidad de poner especial atencion a varios aspectos, como la capacitacion de los usuarios del nuevo sistema, la adaptacion y mentalidad de cambio que se requiere por parte de estos, la paciencia que requiere el proceso de implantacion (generalmente de 1 a 3 años), etc.
El SIG es un sistema que por su sencillez puede adaptarse a los entornos facilmente, esta programado para ser extensible en ejecucion (on-line sin detener la marcha del servidor) con un porciento de disponibilidad alto, inclusive para hacer actualizaciones de los clientes y el kernel de operacion (en el cliente, el servidor por supuesto que es necesario detenerlo), diseñado para implantacion progresiva de modulos y el desarrollo de estos y por su impresionante esquema de seguridad.
Pero mentalidad de cambio ante todo (acabo de discutir con mi jefe) sobre el sistema y me dice que a el le presionan por poner "algo" (una funcionalidad banal que el sistema SIG de Proyectos, Logistica y Facturacion incluye) y que lo que yo hice no fue lo que se pidio y que esta de mas y que (horror) las departamentos de la empresa son independientes y no tienen nada que ver unos con otros, que cada cual hace lo suyo (mi jefe tiene 78 o mas).
Es evidente que la mentalidad de cambio empieza por el Departamento Tecnico.

viernes, enero 06, 2006

ERP Orientados a actividad Empresarial, Viabilidad y una alternativa.

Empiezo a cuestionarme la viabilidad de desarrollar sistemas ERP orientados a alguna actividad empresarial en cuestion, grandes proveedores de Soluciones ERP como SAP, Oracle, Baan, etc. asi lo hacen y no podria imaginarme el costo de tales desarrollos sobre todo cuando la principal materia para tales desafios es el Know-How de los especialistas que en esas ramas conocen mejor que nadie las particularidades de cada caso. Es evidente que un nivel de funcionalidad uniforme puede ser logrado, basandose en abstracciones de origen legal, contable, economico, pero cuando la actividad objeto de la empresa necesite ser modelada y automatizada no va a ver quien concentre ni generalice tales procesos centralmente.
De ahi que la tarea de desarrollar ERP's Cubanos que suplan las necesidades de automatizacion de las empresas, con vistas a la migracion a software libre, se vera afectada economicamente, pues no creo que exista voluntad por parte de estos especialistas de involucrarse en tales encomiendas y mucho menos siguiendo el patron de reconocimiento y remuneracion que viene aparejado con los proyectos libres. Quedando el terreno listo para las empresas y casas de software cubanas o a saber particulares asociados a ellas de hacer la labor de estudio de casos y/o contratar a los especialistas que aporten el conocimiento necesario para este fin. o.....
La alternativa que se puede seguir es definir una metodologia donde estos especialistas involuntariamente se involucren en el desarrollo de los sistemas, y donde las particularidades especificas a la empresa sean cubiertas por él en el ejercicio de la modelacion de los procesos, datos y tareas que evidentemente generan todos los sistemas de ERP, mediante herramientas que siempre con un nivel de accesibilidad, facilidad, seguridad, eficiencia y correccion garantizadas, logren acercar la tarea del desarrollo de sistemas al usuario final.
Tales herramientas deberan contar con al menos todas las funcionalidades especificadas en la Primera Propuesta a Linux-Prog hecha en este blog y comentada en la lista Linux-Prog del sitio www.softwarelibre.cu. Ademas de preveer actualizaciones de definiciones, extension de funcionalidades (como auditorias, workflow, comunicaciones, etc.), en fin un cambio infinito que suponga mejoras en las caracteristicas de los sistemas y la forma en que estos interactuan con los usuarios y entre ellos con vista a una integracion mucho mayor que suponga una mejorar en el panorama informatico y la sociedad de la informacion cubana.


martes, enero 03, 2006

Sistema de Updates para el SIG

Las actualizaciones de cualquier sistema en produccion siempre es compleja, generalmente causando detenciones que afectan la disponibilidad y donde en algunos casos puede llegar a afectar economicamente la entidad.
Ya en el SIG se venia trabajando para mejorar la disponibilidad, desde el cambio en caliente de DLLs de modulos, las mejora de rendimiento en cuanto a usuarios, hilos de ejecucion, recolector de usuarios inactivos, etc. Ahora presentamos una manera de actualizar los sistemas sin que estos dejen de funcionar, al punto de añadir funcionalidades completamente nuevas, hacer reparaciones de bugs, parches de seguridad, etc.

El sistema de Updates del SIG
  • Se le incorpora al Editor una herramienta para configurar Updates, que genera ficheros compactados con la informacion a actualizar.
  • Se le incorpora al Server una opcion para actualizarse, donde se escogera el fichero de actualizacion y se aplicara este sin que el Servidor deje de funcionar, aplicandosele a los nuevos usuarios la actualizacion hecha y a los usuarios que aun esten conectados hasta el nivel de DLLs.
  • Los Updates son jerarquicos, (o sea un Update tiene precedencia sobre otros)
  • Los Updates contienen Modulos y sus componentes internos (Modulos, DLLs, etc.), Scripts SQL (para transformacion de bases de datos), Identificador, Definicion de Precedencia y Descripcion.
De esta manera el SIG queda en condiciones de mejorar su disponibilidad acercandose a los criterios de Alta disponibilidad deseables en todo sistema de gestion.


martes, diciembre 20, 2005

SIG Proyectos y Logistica, avances

El SIG Proyectos y Logistica avanzan por buen rumbo, asi es que la fase de gestion comercial y de importacion esta culminada hasta un 90%, terminandose hoy el perfeccionamiento del sistema de generacion de ofertas y de generacion de Ordenes de Compra que ya estaba funcional aunque con algunos problemas ya resueltos.

Esta noche espero poder terminar el Sugerido de Piezas, vital para la rapida referencia de grandes listados de piezas. Junto a esto la adicion del codigo de producto, pedido por la mi empresa y que puede resultar importante en algunos casos.

En cuanto al SIG Kernel, este esta estable desde hace algunos dias y el SIG Server aun necesita un retoque en cuanto a rendimiento y al recolector de usuarios inactivos.

Todos los modulos de Logistica solo esperan a que se completen las tareas pendientes para la integracion de ambas partes (Proyectos y Logistica) completados y aun faltan por revision intensiva.

Esperamos en los primeros dias de Enero hacer el lanzamiento del Sistema funcional y la base SIG para desarrollo de sistemas.


Primera Propuesta a LINUX-PROG

Con el objetivo de proporcionar un primer acercamiento a diseñar un sub-sistema de gestion de datos subyacente a las aplicaciones de gestion en mira, les he propuesto este conjunto de funcionalidades basicas, para el desarrollo de una base programatica multiplataforma. Basada en XML, en una primera fase seria interesante proveer una libreria de funcionalidades para las principales plataformas de desarrollo, a mi entender Java, .NET, C++.

Haciendo un poco de abstraccion sobre los datos podemos llegar a que estos:
1.Son definidos (la estructura sintactica y semantica de los datos)
2.Producidos (se compone una informacion reflejando las particularidades del hecho)
3.Validados (la sintaxis de escritura de los datos pueden ser validada e inclusive la semantica)
4.Procesados (los datos son procesados, transformados, en procesos donde se puede mediante operaciones especificas, obtener nuevos datos, recombinar los existentes, resumir conjuntos de datos, etc.)
5.Almacenados (la posibilidad de registrar en el tiempo los datos y de recuperarlos cuando sea necesario, ya sea de forma exacta a como son representados o mediante una transformacion que permita su rapida consulta en estructuras mas eficientes.)
6.Trasmitidos (la transmision de informacion es inherente a los procesos, nada mas logico que existan metodos para transmitir los datos)
7.y Consumidos finalmente. (El usuario final consume los datos al disponer de informes sobre los cuales realiza valoraciones, emision de criterios y tomar desiciones)
Estos procesos no siguen un curso unico por lo que la interrelacion entre ellos forman en si otros tipos de procesos, en condiciones de ser definidos, registrados, auditados.
La tecnologia que mas se ajusta a esta definicion de datos es hoy XML, que posee herramientas para todas las definiciones de procesos anteriores.

1.XML Schema para definiciones
2.Facil producir (texto plano, con reglas sintacticas que garantizan la correccion de los datos)
3.Validacion a traves de parsers mediante los documentos de definicion.
4.Tecnologias para el procesamiento, DOM, SAX, XSLT, etc.
5.Bases de datos XML o relacionales.
6.XML al ser texto plano puede ser enviado por correo, trasmitirlo a traves de proxys, como WebService, y con la seguridad de que no contendra (hasta ahora) codigo malicioso adjunto.
7.Aunque XML no es facilmente leible por humanos (o sea, no le das un reporte de contabilidad a un director de empresa en XML para que lo lea directamente) si forma parte de todas las tecnologias de reportes innovadoras (JasperReports, phpreports, Report Rendering Engine, RTK::Report Toolkit, etc.)
Ahora lo mas elemental en estas 7 direcciones seria definir nuevos estandares nacionales (o reusar los existentes) para la Definicion de datos, Produccion, Validacion, Procesamiento, Almacenamiento, Transmision y Consumo. Para lo cual, algunos estadares ya definidos se adaptan perfectamente, como el XML Schema para definicion y Validacion, y la parte de Transmision de datos de ebXML (quizas no sea el mejor).

La idea general es que como cada institucion/organismo tienen sus particularidades es mas conveniente que ellas definan sus propios datos/procesos y los metodos de trabajo con ellos, de manera que internamente cuenten con herramientas comunes a otras instituciones/organismos pero adaptadas por definiciones a sus necesidades y con la posibilidad de integracion y agrupacion que brindan las tecnologias XML.
El siguiente grafico ilustra la idea claramente (o quizas no tan claramente).

Aqui se puede observar que para una Entidad, esta tiene definidos los tipos de documentos internos para con ellos realizar sus operaciones, donde ademas para su marco (o marcos) institucional tambien tiene un conjunto de definiciones que agrupan las necesidades de la institucion/organizacion que la agrupa para proveer integracion con otras Entidades en su mismo nivel y de caracter organizativo.

Asi mismo una Institucion/Organizacion se agrupa mediante otras definiciones en un marco de nivel superior para integrarse con otras Instituciones/Organizaciones y con ello intereactuar en comunidad con estas.

Este es un grafico hipotetico de organizacion en la sociedad de la informacion, jerarquico, organizado, integrado, pero al fin y al cabo hipotetico, donde solo se ilustra la capacidad del modelo de definicion-produccion-validacion-procesamiento-almacenamiento-transmision-consumo de los datos, de manera que sea coherente con el desarrollo necesario a todos los niveles interesados.

Conclusiones.

Las posibilidades que proveen las tecnologias XML para integracion de sistemas constituyen la mejor opcion y un metodo viable de desarrollo de sistemas y aplicaciones verticales acoplables entre si a todos los niveles segun definicion, sin restarle importancia a los desarrollos horizontales de aplicaciones que resuelven problemas puntuales, donde es en definitiva que se intensifican los esfuerzos.

Quizas el enfoque no sea coherente con otras metodologias ya estudiadas/aceptadas nacionalmente pero a nivel mundial los esfuerzos de integracion vienen caminando en esta direccion, ya sean el estandar ebXML, aprobado y patrocinado por la ONU (creo que el unico, corrijanme), XML/EDI (Electronic Data Interchange), XBRL (eXtensible Bussiness Reporting Language), etc.

El objetivo de este documento es el desarrollo de aplicaciones de gestion que soporten funcionalidades de este tipo y con ello contribuir a incentivar la conciencia y la cultura informatica de la sociedad de la informacion cubana.

domingo, diciembre 18, 2005

Proyectos de desarrollo de software libre

Como muchos saben, la migración hacia los sistemas libres en Cuba tiene un gran obstáculo a vencer y es la cantidad de software desarrollado para plataformas propietarias (lease Windows) que actualmente es utilizado por las empresas cubanas, desde Nominas, Inventarios, Medios Basicos, Facturación, etc. hasta completos sistemas de gestion que funcionan bajo Windows, sin que los desarrolladores de los mismos le brinden soporte (o sea, software desarrollado en un momento determinado para resolver una situación especifica y cuyas fuentes quizas ni existan ya).

Viendo el esfuerzo que estan realizando los compañeros del grupo de desarrollo de Cygnus, quisiera proponerles una idea, que puede no ser buena, pero que en definitiva podria ser una solucion al problema de la migración en Cuba hacia Software Libre.

La idea es:
1- Identificar un conjunto de software con caracteristicas exclusivamente nacionales y que necesiten ser desarrollados desde cero o hacer un fork de versiones libres de otros.
2- Creacion por afiliación propia y voluntaria de grupos de desarrollo que den solucion a uno o varios problemas identificados, mediante el desarrollo del software necesario. Sin que por ello exista unicamente un grupo para cada problema en particular. Con estructura propia y autonomia.
3- Buscar el apoyo de instituciones estatales y/o gubernamentales para que den respaldo legal, de infraestructura y del know how de las aplicaciones.
4- Promover la incorporación de personas a estos grupos que puedan ayudar en el desarrollo del software (no solo programadores, sino tambien economistas, contadores, metodologos, diseñadores graficos, lingüistas, etc.)
5- Realizar encuentros donde sobre la base de la competitividad se motive la inventiva y el compromiso con la calidad de las soluciones implementadas.

De momento y dado que pertenezco a una empresa bastante grande y con necesidad de varios sistemas identifico los siguientes:

- Contabilidad y Finanzas
- Medios basicos
- Inventarios
- Facturación
- Personal y Nominas.
- Gestion Comercial (donde puede hacerse una sublista de casos particulares)

Es importante remarcar que no creo que las empresas de software cubanas tengan previsto cambiar su modelo de negocios, básicamente hago el software, lo vendo y doy soporte sin dar nunca las fuentes e inclusive haciendo la instalacion ellas mismas. Aunque usen Debian como plataforma y desarrollen aplicaciones en make y gcc.

Espero por sus opiniones.

sábado, diciembre 17, 2005

Linux de vuelta

Quizas Linux no tenga hoy las mejores herramientas de desarrollo deseables, o quizas la falta de costumbre o el exceso de comodidad me hagan sentirme seguro detras de un Visual Studio .NET 2003 que pocos IDEs comerciales , libre o de otra indole puedan llegar a imitar en rendimiento, funcionalidades, etc. Aun asi opciones libres en linux comienzan a crear inquietud en mi panorama profesional, Anjuta+Glade+GTK+, buena opcion para aquellos que se les da el C++ (no a mi, no programo en C++ desde Zortech C++), o quizas Kdevelop (aunque no me gusta nada que empiece con K), Eclipse para Java cuando mejoren su rendimiento (lo cual dudo, ya que seguramente estara programado en Java) y algunos otros IDEs para Java los cuales no creo que hagan fila, y finalmente mi favorito (sera por que soy un vago?) MonoDevelop, hasta ahora todo lo que he visto me es favorable, rapida descarga de Internet, instalacion grafica, integracion con el ambiente, opciones para desarrollo de GNOME, GTK+, Nemerle, Java, etc. etc. y con una opcion para importar projectos desde Visual Studio .NET todo un monumento a la portabilidad y la migracion.

Quizas el rendimiento se heche en falta (comparable a Eclipse) y esta maquina no creo que aguante un empujon. Por lo demas las ideas de desarrollo del UDMS creo que iran sobre Linux.


martes, diciembre 13, 2005

Increible desempeño en SIG Server

Con el proposito de mejorar la disponibilidad en las pruebas del SIG se ha instalado el Servidor en un equipo Hp Proliant ML310 con CPU Pentium IV a 3.2Ghz y 512Mb de RAM, y francamente los resultados nos han complacido, de 0.40 ms a 20 ms como promedio en el desempeño por consulta (realmente rapido)

lunes, diciembre 12, 2005

Completa Lista de mejoras de rendimiento y features al Kernel y Server del SIG

Despues de varios dias sin dormir (literalmente) el Kernel, Server y Client del SIG presentan nuevos features y mejoras de rendimiento que lo colocan a un buen nivel para servir aplicaciones con alta disponibilidad, robustez, accesibilidad y eficiencia.

Tenemos:
  • Implementacion de ObjectRepository para realizar cache de objetos de datos que requieran consultas a la base de datos.
  • Bitacora de actividad por usuario, personalizable para aplicaciones.
  • Serializacion manual completa, (supone un 50% de velocidad en consultas) incluyendo los eventos SignIn, SignOut, CheckIP, DllQuery.
  • Recolector de usuarios inactivos, configurable por el servidor.
  • Cambio de DLLs en caliente (sin necesidad de desconectar a los usuarios para reiniciar el servidor)
  • Cache de DLLs funcional (actualiza las versiones de las DLLs locales)
  • Barra de herramientas de Accesos directos con orientacion personalizable por el cliente.
Solo quedan por introducir la conversion del Server a Servicio del Sistema y el soporte para Internacionalizacion (I11N).


viernes, diciembre 09, 2005

SIG Server High-End Performance

SIG Server a sido mejorado considerablemente, llegando a alcanzar rendimientos muy buenos para el trabajo en red cercanos al rendimiento local del sistema (Server y Client en el mismo PC), han sido mejoradas la comunicacion con el SIG Server, las caches de DLLs, la serializacion de datos, etc.

Aun quedan varios aspectos a resolver en el area de rendimiento:
  • Convertir el SIG Server en servicio
  • Bitacora de actividad por usuario.
  • Soporte para Internacionalizacion (I11N)
Por la parte del SIG Proyectos y Logistica, este cuenta hoy con un Modulo de Proyectos de Negocio con un nivel de funcionalidades y soluciones bastante grande, quedando a punto para salir como version 1.0 en cualquier momento.

El resto de los modulos se iran mejorando paulatinamente, ademas de que ya todos seran actualizados a las nuevas interfaces de datos mas rapidas y eficientes.

lunes, diciembre 05, 2005

Medidores de desempeño del Servidor SIG

Con el objetivo de comprobar el desempeño del Servidor SIG, le he agregado soporte para Timings, de manera que es posible llevar un control del tiempo que se demora el servidor en dar respuesta para determinados tipos de consultas, la cantidad, etc. y por medio de una opcion en el menu de la consola es posible acceder a esta informacion que se actualiza cada 5 segundos.

He comprobado que las Consultas XML, pueden resultar en ocaciones mas rapidas, pero en sentido general las consultas Binarias se toman menos tiempo. Tambien que varias consultas son toman demasiado tiempo (casi un segundo) y que en general el tiempo de respuesta es muy pequeño, de entre los 5 y 20 milisegundos por consulta, lo que convierte a la optimizacion de consultas en un tema importante pues algunos modulos realizan casi 5*N consultas por cada N registros listados (5 puede llegar a ser un factor grande cuando N se incrementa, Ej. para 23 registros, serian 115 consultas, que en total sumarian a una velocidad promedio de 20 milisegundos, 2300 milisegundos o 2.3 segundos).

Otro aspecto importante es que hemos podido realizar un timing benchmark sobre los dos metodos de serializacion utilizados (BinaryFormater y Manual) y compararlos.

Los resultados arrojaron que la serializacion manual es un 50% mas rapida por lo tanto seria la opcion definitiva en el traspaso de informacion en el SIG, donde aun quedan mensajes de comunicaciones (SignIn, SignOut, CheckIP) que se realizan con el serializado a traves de BinaryFormater, por la complejidad que reviste (sobre todo en el tema de SignIn) la serializacion manual de una estructura de datos bastante compleja.

Asi todo. El SIG es hoy mas rapido, mas seguro y mas accesible.

Proximos features:
  • Recolector de usuarios desconectados o inactivos. (parcialmente implementado)
  • Serializacion Manual completa (SignIn, SignOut, CheckIP)
  • Cambio de DLLs en caliente (sin reinicio del Servidor)
y otras...

Datos personales

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