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

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...

sábado, diciembre 03, 2005

ISocketObject, la interfaz fantasma y Documentacion de comunicaciones SIG

Decidido a migrar mis metodos de comunicacion, llevandolos a mejorar el rendimiento me encuentro que en un ejemplo de un articulo del sitio MSDN, hacen uso de la interfaz ISocketObject que especifica un metodo para serializacion manual de datos, pero no se decia si esta era una interfaz de algun namespace ya creado como System.Net, pues no lo es, ni de ningun otro namespace, por lo que aquel que quiera imitar el metodo de serializacion manual debera crear la citada interfaz ISocketObject, quedando:

public interface ISocketObject {
void Send (BinaryWriter bw);
}

No es dificil entonces tambien incorporarle a la clase en particular que implementa esta interfaz un constructor que reciba un BinaryReader para construir un objeto a partir de la serializacion manual recibida por el Stream del Socket, quedando algo como lo que sigue:

public class MiObjeto : ISocketObject {

public MiObjecto (BinaryReader br) {
...
}

public void Send (BinaryWriter bw) {
...
}

}

Mucho mas facil, la migracion cuando se tienen dos clases Request y Response que hacen las veces de mensajes entre el Servidor y el Cliente.

La migracion y documentacion del protocolo de mensajeria es:
  • DataQuery, INPUT (string sql, int rpp, int page) OUTPUT (string xml)
  • DataObjectQuery, INPUT (string sql, int rpp, int page) OUTPUT (int page, int from, int total, int results, object[] data)
  • UpdateQuery, INPUT (string sql) OUTPUT (int rows)
  • BinaryUpdateQuery INPUT (string sql, int binParams, int param1Len, byte[] param1,...,int paramNLen, byte[] paramN) OUTPUT (int rows)
  • BinaryDataQuery, INPUT (string sql) OUTPUT (int len, byte[] data)

Con estos metodos se pueden construir cualquier conjunto de operaciones para gestionar datos de cualquier tipo en la base de datos, aunque podrian no ser definitivos.



viernes, diciembre 02, 2005

Serializacion de Objetos por Socket

Un problema grave que ha acosado al SIG todo este tiempo desde su inicio ha sido la lenta serializacion de los objetos cuando son mandados por el Socket de red, esto es tema conocido por todo aquel que alguna vez haya creado aplicaciones con modelo Cliente/Servidor y donde el traspaso de grandes volumenes de informacion por la red es necesario (como en el caso del SIG). Es por eso que en el SIG se han hecho varias optimizaciones para lograr una mayor eficiencia en el desempeño de la aplicacion, como la transmision binaria de los datos (en un comiezo se hacia como XML), la creacion de caches de DLLs que disminuyen notablemente el traslado de informacion de este tipo por la red, el uso de puerto dedicado por conexion (en un inicio se hacian todas las operaciones por un puerto bloqueado) y ahora (necesariamente) la transformacion de los metodos de serializacion de un numero limitado de objetos por el socket de forma que la informacion a trasmitir se minimize al maximo, para lo cual, cada una de las consultas al servidor seran en un protocolo binario, documentado en las especificaciones del SIG.

Esta serializacion de objetos es recomendada por un articulo en MSDN sobre Sockets

http://www.microsoft.com/spanish/msdn/articulos/
archivo/41103/voices/csharp09182003.asp

el cual recomienda el uso de una interfaz ISocketObject para el manejo de la serializacion binaria personalizada.

Para mañana espero que este funcionando perfecto.

miércoles, noviembre 30, 2005

Soporte en el SIG para Grids de datos editables.

Haciendo un rehuso de las librerias SourceGrid2 del sitio www.devage.com de Davide Icardi, el SIG brinda soporte para componentes de GRID, encapsulando la DLL de Icardi de manera que el usuario no tenga que hacer referencias a esta para desarrollar sus modulos.

Actualmente 3 componentes utilizan la DLL SourceGrid2

  1. QueryBrowserControl, control para la visualizacion avanzada de registros de consultas SQL, con funcionalidades de operaciones con datos, Insercion, Actualizacion, Borrado, Impresion, etc. Y ademas cuenta con la tecnologia de Filtros Inteligentes descripta en un articulo de este blog.
  2. SmallQueryBrowserControl, control con las mismas caracteristicas de QueryBrowserControl, aunque reducidas en aspecto y con la particularidad de funcionar sin necesidad de consultas SQL.
  3. EditableDataControl, Control del listado, con funcionalidades de edicion en columnas especificas y eventos asociados, muy util en ventanas con gran cantidad de elementos de este tipo donde la edicion se puede realizar in situ.
Una de las bugs reconocidos de SourceGrid2 es su incompatibilidad (esperamos que temporal) con los clientes de ventanas MDI (Multiple Document Interface) donde si tenemos una ventana abierta y maximizada con un componente Grid, entonces si se abre otra ventana con componente Grid la aplicacion se vuelve inestable y se bloquea o tiene comportamiento extraño si para esta se ha usado alguno de los metodos de AutoSize, Stretch o AutoStretch, para lo cual es necesario en el uso de los componentes del SIG, proporcionar los anchos de las columnas deseados.

Mas adelante les comentare de otros componentes rehusados en el SIG.

Soporte en el SIG para versionado de DLLs

EL SIG, ya originalmente fue diseñado para de forma segura, proveer a los usuarios de sistemas de gestion de las herramientas necesarias para el trabajo con bases de datos, esto es que los sistemas de gestion se programan modularmente y estas DLLs con la funcionalidad son colgadas en la red en un servidor con una estructura determinada y un esquema de seguridad tal que cuando los usuarios del sistema se registran estos reciben informacion sobre el esquema de la aplicacion y cuando realizan las acciones las DLLs necesarias son enviadas desde el servidor y corridas localmente que mediante una interfaz de datos con el servidor realizan las operaciones de datos en el servidor. Para toda esta operacion se han establecido caches de DLLs mediante versionado donde si el usuario no tiene la ultima version de la DLL en el cache pues esta se manda desde el servidor actualizandose sin necesidad de volver a bajarlas en otro momento, una optimizacion importante cuando se dispone de conexiones dialup de baja velocidad.

Otra mejora de optimizacion es la utilizacion de un cliente actualizable por el mismo proceso, en resumen el usuario nunca dispone de la ultima version del cliente y el nucleo del SIG por lo que estos son bajados a la maquina del cliente desde la red en cada ejecucion (red local, por supuesto, en caso de no poder realizarse la operacion, se utilizaria el ultimo cliente utilzado).

Aun quedan mejoras por introducir en el SIG, pero a medida que se esta utilizando, nueva optimizaciones son incorporadas y facilmente actualizadas en las maquinas clientes y en las aplicaciones sin requerir gran esfuerzo de mantenimiento.

sábado, noviembre 19, 2005

Anterior articulo sin imagenes

El anterior articulo dedicado a la Navegación Guiada, no contenia imagenes por ser dificiles para introducir en el editor de blogs de Blogger.com, si es de su interes solicite el documento original y le sera enviado por correo, para esto escriba a: ernesto@consumimport.mincex.cu, con gusto le enviare una copia con las imagenes correctas.

jueves, noviembre 10, 2005

Filtrado de Informacion Inteligente para Navegacion de Datos

Filtrado de Información para la Navegación Guiada de la misma.

Endeca, una empresa norteamericana de IT desarrolló hace algunos años un concepto innovador para la navegación de los datos en catálogos extensos a la que denominó Guided Navigation, mediante la cual la información catalogada en dimensiones de la misma es enmarcada en un contexto de navegación donde por cada dimensión de datos se efectúa un calculo de los posibles filtros a aplicar y donde cada calculo que muestre diversidad de criterios es presentado como opciones de filtrado según el tipo de datos en particular y el significado de estos datos, ejemplo de esto tendríamos en el caso de valores de cantidad o precio, donde en el primero se filtraría por rangos posibles, creándose varios filtros de acuerdo a la distribución de los datos en el conjunto y en el de precio se mostrarían filtros también por rangos pero con una semántica orientada de acuerdo al tipo de aplicación especifico (en el caso de una tienda virtual podría ser: menos de $10, $10 a $20, $20 a $50, mas de $50) dándole así posibilidad al usuario que navega el catalogo de centrarse en productos acorde a su interés de gasto, o en el caso de ser un campo de tipo de registro, pues pueden mostrarse los resultados mas interesantes primero o los que mas resultados encierren (Ej. Tipo de tela en un catalogo de ropa: Lino, Algodón, Mezclilla, Seda, Otros). En el caso de no existir diversidad para un campo específico este no se mostraría ahorrándonos la molestia de tener que visualizar filtros sin interés para la búsqueda o permitiéndonos hacer un refinamiento en campos dependientes de este (Ej. País, Ciudad, donde primeramente podríamos tener un conjunto de filtros para País de esta forma: Cuba, Jamaica, México, Brasil, Ecuador, Otros y cuando se seleccione el filtro Cuba el filtro por el campo país ya no sea de interés al ser todos los registros del mismo País, siendo entonces de interés el campo Ciudad pudiéndose crear un filtro para ciudades según el conjunto de datos filtrados para el país Cuba Ej. Ciudad Habana, Santiago de Cuba, Pinar del Río, Matanzas, Otras)

Un esquema de filtrado como este tiene como propósito que los usuarios que navegan los datos buscando “algo” en particular llegarán a los resultados mas cercanos a los que quieren pues cada nuevo criterio de filtrado generara un conjunto no vacío de elementos que son similares en cierta medida al que se busca originalmente, en contraposición a los esquemas donde se tienen que introducir criterios de búsqueda que implican un conocimiento previo (muchas veces a fondo) de la estructura de los datos y donde los conjuntos de resultados nulos pueden resultar comunes y contraproducentes en sitios web donde esto atenta contra la accesibilidad y el dinamismo necesario para atrapar clientes (las principales tiendas virtuales de libros y otros artículos utilizan la tecnología de Endeca o alguna similar, Ej. Barnes & Noble, Amazon, etc.), estimando un incremento de las ventas de entre un 5 y un 10 por ciento, según estimados realizados por la propia empresa Endeca.

La implementación de este esquema para navegación de registros es relativamente fácil y dependiendo del tipo de medio y el momento de exposición del citado contexto de navegación se pueden hacer algunas mejoras de rendimiento convenientes según la cantidad de elementos a navegar.

Básicamente, una aproximación efectiva al esquema completo se basa en meta-información insertada en la consulta y donde el diseñador de la misma puede incorporar todos los datos necesarios para los campos que este mostrará o gestionará los filtros (no necesariamente coinciden).

Ejemplo de esto es...

Supongamos un conjunto de datos donde se tienen los campos:

Nombre, Edad, Dirección, Sexo, Escolaridad (6to, 9no, 12vo, Universitario), Provincia, Municipio, Salario.

Para el cual podríamos tener un conjunto de datos como el que sigue:

Ahora, es evidente que para el diseño de los datos de esta tabla las columnas tendrían tipos de datos comunes entre cadenas de caracteres, números enteros, reales o de tipo índice o llaves foráneas (referidas como números enteros) pero los tipos de filtros se aplican según la semántica de los campos, ya sean descripción, cantidad, valor, edad, nomenclador, etc. infinito dado el numero infinito de posibilidades del mundo real que pueden ser recogidas por los datos de una tabla.

Atendiendo a los significados de los campos de la tabla escogeremos filtros que pueden ser aplicados a cada campo para tener una idea de cómo funciona este método de filtrado.

De esta forma tendremos que al campo de Nombre le aplicaremos un filtro de Nombre propio, que nos mostrara para cualquier conjunto de datos de tipo cadena de caracteres un número máximo predeterminado de rangos, formados a partir de las primeras letras que tengan diversidad en el campo. En el caso de la tabla seria para 5 rangos A..., E..., J..., O..., Y..., donde si el filtro J fuera seleccionado entonces quedaría JO..., JU... ya que estaríamos filtrando por los que empiezan por J y entonces para este campo la diversidad comienza a partir de la segunda letra y así sucesivamente.

En el campo Edad se pueden tomar dos alternativas, atendiendo a la naturaleza de valor entero del dato hacer rangos de valores calculados a partir de cualquier algoritmo particular, pudiéndose obtener algo como: 15 a 24 años, 25 a 45 años, 58 a 75 años o atendiendo a la definición semántica del dato: Adolescentes, Jóvenes, Adultos, Tercera Edad.

En el campo Dirección, es mas complicado implementar un filtro ya que la naturaleza de estos datos es propicia a que se utilice un campo de cadenas de carácter para almacenarlo, además de no contar con regularidades que puedan ser aprovechadas y cualquier análisis sobre la misma podría ser engorroso y no brindar resultados interesantes, por eso no implementaremos un filtro para este campo de la misma manera que pueden ser aplicados varios filtros sobre un mismo campo o sobre varios campos a la vez.

Para el campo Sexo de acuerdo a como se implemente el tipo de datos podríamos tener un filtro de Nomenclador en el caso de ser el dato una referencia a otra tabla con los sexos (a pesar de ser solo dos, tendríamos nuestra tabla normalizada). En todo caso la diversidad del campo se obtiene cuando la cantidad de opciones es mayor que una, para este caso: Masculino, Femenino, pudiéndose mostrar inclusive información de cuantos resultados encierra cada filtro, En el mismo caso están los campos de Escolaridad, Provincia y Municipio. En el caso de Provincia y Municipio estos podrían formar un filtro anidado o escalado, de manera que el filtro para Municipio solo se aplicaría en el caso que para el filtro de Provincia no exista diversidad, permitiéndole al usuario filtrar primero en esa dimensión y posteriormente en la siguiente y así sucesivamente. Ej. Para el primer filtro de Provincias tendríamos: Ciudad Habana, Santiago de Cuba, Pinar del Río, seleccionando Ciudad Habana el filtro de provincias no tendría diversidad lo que implicaría que se efectuara el filtrado por Municipios, obteniéndose un nuevo filtro que aunque anteriormente tenia diversidad al existir una dimensión superior a el en jerarquía no se mostraba resultando en: Boyeros, Cerro, Playa, además de resultar una característica interesante, los filtros anidados pueden tener muchos niveles y particularidades de acuerdo a la estructura de la información y la semántica de la misma.

El Salario presenta la particularidad que como es un valor real (o flotante, como se prefiera) es posible la creación de rangos de Salarios acorde a la particularidad del sistema y además de que el valor $0.00 representa a la persona que no percibe un Salario así que podríamos obtener un rango de la siguiente manera: Sin Salario, $101.00 - $120.00, $224.00 - $340.00, $424.00 - $543.00.

Así para el conjunto de datos mostrado en la tabla obtendríamos el siguiente contexto de navegación.

(Nótese la relación de preferencia del Contexto de Navegación sobre el Conjunto de datos)

En este contexto además de resaltar los filtros de interés para la navegación de los datos con solo leerlo le da una idea al usuario de cómo es el conjunto de datos que esta navegando, sobre todo si es un conjunto extenso que por su magnitud no puede ser visualizado completamente, permitiéndole con pocas interacciones llegar al conjunto de resultados que son de interés para su búsqueda.

Ej. El usuario busca una persona del municipio Boyeros, cuyo nombre empieza por J y que es Universitario.

Haciendo clic en el filtro J... la búsqueda se refinaría a un conjunto de 3 personas

Seleccionando el filtro Boyeros se refinaría aun más la búsqueda al siguiente conjunto:

Para finalmente filtrar por Universitario y llegar al único resultado:

Donde el contexto de navegación quedaría vacío al no existir diversidad en ninguno de los campos de la tabla, llegándose a un registro que cumple con todos los requisitos (o al menos se le acerca) en todas las dimensiones especificadas o de interés.

Elementos de la Navegación.

En el momento que el usuario navega la información es importante contar con varios elementos que le ayudarán a auxiliarse en la misma. Estos son el Panel de Resultados, que no es mas que donde los resultados aparecen listados, El Contexto de Navegación, donde son listados los filtros calculados acorde al conjunto de datos listados y la Barra de Navegación (además de cualquier otra parafernalia de paginado, etc.) que nos permitirá visualizar que filtros hemos aplicado ya y de acuerdo a su composición particular entonces seria posible eliminar algún filtro ya aplicado, o un conjunto de estos según se prefiera.

Es importante señalar que es conveniente cuando se va a aplicar un filtro chequear si ya no existe un filtro sobre el mismo campo o tipo antes para en ese caso reemplazarlo ya que seria incomodo mostrar varios filtros parecidos sucesivamente además de resultar poco eficiente. (Ej. ... > J... > JO... > JOS... por ... > JOS...)

Entre los eleOtro aspecto interesante de la Barra de Navegación es que podría ofrecernos un método de negar un filtro.

Filtro Negado.

Cuando queremos especificar que un filtro es inverso a su definición (Ej. Quiero mostrar las personas que no sean de Ciudad Habana) es conveniente contar con algún método de hacerlo ya sean en el Contexto de Navegación especificando que el filtro ha de aplicarse negado o ya sea en la Barra de Navegación donde los filtros que estén aplicados posteriormente a este deberán ser desechados por referirse al conjunto complemento al de búsqueda y ser los filtros posteriores inciertos.

Navegación Guiada en el SIG.

El SIG cuenta con soporte para todas las especificaciones hechas arriba por medio de la clase Filter la cual puede ser extendida para crear variedades de filtros propios aunque en el SIG se incluyen un conjunto bastante abarcador de los mismos, con soporte para Filtros Anidados, Negados y Reemplazo de filtros ya existentes. También el control QueryBrowserControl, posee métodos para adicionarle un conjunto de filtros a la consulta y para visualizar y gestionar la Barra de Navegación y el Contexto de Navegación, con formularios específicos para todas las operaciones.
Ejemplo:
Nótese la adición de filtros en el primer bloque del tipo CompleteStringFilter con los nombres: Responsable, Clientes, Importadores con los campos: dbo._sig_users_fullname, ClientesYProveedores.Nombre y ClientesYProveedores_1.Nombre respectivamente de acuerdo a la consulta en particular y nótense también las marcas en la consulta referentes a la parte de los campos (/c.../c), la zona de GROUP BY (/g GROUP BY .../g), la zona del ORDER BY (/o ORDER BY .../o) y el lugar donde se insertan los filtros aplicados (/f), todas sin excepción deben ser proporcionadas por el desarrollador para el correcto funcionamiento del sistema de filtrado guiado.

Tipos de Filtros Incorporados en el SIG.

El SIG cuenta con una cantidad abarcadora de filtros pre-programados con diferentes usos, desde rangos de Cantidades, Valores Monetarios, Cadenas de Caracteres, Nombres Propios, de tipo Verdadero o Falso, de Nomencladores, etc.

  • CompleteStringFilter, Este filtro puede aplicársele a los datos de tipo cadena de caracteres y el mismo proporcionara tantos filtros como cadenas distintas exista en el campo en cuestión, con la particularidad de poder decidir si mostrar las cadenas vacías como una opción mas y con que texto.

  • IdentifyerStringFilter, Es el filtro de Nombre propio, siguiendo la regla descrita para el campo Nombre analizado arriba.

  • CountFilter, Filtro de Cantidades, customizable para reflejar rangos de valores y sus unidades de medida, así como tratamiento especial para algunos valores.

  • MoneyValueFilter, Filtro de valores monetarios, igualmente customizable para reflejar rangos de acuerdo a comportamientos pre-definidos para ciertos tipos de aplicaciones (tiendas virtuales, aplicaciones económico-financieras, etc.)

  • ForeignKeyFilter, Filtro de nomenclador, generalmente en las consultas se referencia a las tablas de nomenclador para extraer información referente al significado de las llaves, lo cual es aprovechado por el filtro para establecer al igual que el CompleteStringFilter un listado de ocurrencias ordenado descendentemente propicio para mostrar los tipos de registro listados en el conjunto.

  • IntegerMeaningStringFilter, Es un filtro diseñado para ser usado en los campos donde se tienen valores enteros que tienen un significado especial no relacionado con alguna otra tabla de referencia y cuyo significado es codificado en las aplicaciones de forma fija sin que el conjunto de valores posible puede extenderse con esto. Generalmente usado para designar campos con conjuntos de valores pequeños (Ej. Sexo, 0 = Masculino, 1 = Femenino) que por cuestiones de ahorro de espacio se designan con números.

  • BitFilter, Filtro de valores Verdadero o Falso, con posibilidad de customizar los textos de los filtros de acuerdo al significado del campo.

  • DateFilter, Filtro de fechas, crea rangos a partir de la fecha actual, customizable y pre-diseñado también para mostrar rangos nombrados de acuerdo a la cantidad de días desde la fecha actual (Ej. Hoy, Ayer, Hace 1 Semana, etc.)

En el SIG es posible inclusive a través del sistema de librerías compartidas, escribir sus propias definiciones de filtros y compartirlos de un modulo a otro sin necesidad de reescribir código innecesariamente.

Mostrado como ejemplo tenemos el código fuente del filtro incluido en el sistema CompleteStringFilter para su análisis.

jueves, octubre 20, 2005

Nuevo Formato Propietario en el Panorama Informatico del MINCEX

El MINCEX (Ministerio de Comercio Exterior) -donde trabajo- acaba de implantar un sistema (freeware) de asignacion de tareas centrales, o sea, los directivos del citado ministerio (o sus secretarias) llevan un control de tareas pendientes, con fechas, descripciones, horas, responsables, etc. y pueden generar un reporte, en formato propietario QRP (que todavia no he descubierto si es Quick Report u otro tipo de formato) y que este es enviado a los responsables para notificarles de sus obligaciones o tareas pendientes, contando estos para la visualizacion de dicho reporte el mismo software TaskReport, hecho por una empresa de software libre Skynergy.

La idea no es mala en realidad, este tipo de interaccion entre areas de direccion de grandes empresas u organismos se viene desarrollando fuertemente en el pais, lo que es criticable en gran medida es la decision tan simplista de adoptar el software TaskPrompt para darle solucion a esta problematica, desde el punto de vista que este programa esta diseñado para el escritorio personal y no para llevar a cabo este tipo de control de gestion a otros niveles, donde el seguimiento de la tarea no puede ser efectuado correctamente, no tiene feedback, ni tampoco formas de agregarle documentacion a la informacion que se envia. Basicamente la forma de trabajo es: Directivo genera orden de tarea, Secretaria registra la tarea con nombre de responsable, con una frecuencia habitual (me imagino) genera un reporte de tareas por responsable (habria que ver hasta cuantos destinatarios podrian soportar, las secretarias claro), Envio de reporte por responsable por correo (esto es salva reporte, envia por correo como adjunto, todo muy manual) , responsable recibe el correo con el reporte adjunto, lo salva a una carpeta local, abre el Taskprompt y ahi va a los reportes y carga el que le acaban de mandar y lo imprime si prefiere o lo que sea que quiera hacer con el.

Es evidente en este esquema de trabajo que el factor humano sigue siendo cansiderablemente grande, muchas tareas que pueden ser llevadas automaticamente son relegadas a las secretarias, con los inconvenientes de que :
  1. El sistema esta en ingles.
  2. No lleva control correcto de responsables y sus contactos para facilitar el envio de documentacion.
  3. Formato propietario en el envio del reporte de tareas.
  4. No ser software portable a otras plataformas abiertas.
  5. No ser un software diseñado para la funcion en que se va a usar
Creo firmemente que el MINCEX debio haber estudiado mas a fondo el caso particular de la solucion que querian desarrollar, pues aun no es demasiado tarde para establecer una estrategia que beneficie la Informatizacion Integral del Ministerio (donde bastante atrasado se esta). Aunque no dejo de reconocer el interes que se le ha puesto al objetivo de informatizar la gestion del mismo, quizas motivado por el empuje que otros ministerios estan dandole a este sector.

Saludos

martes, octubre 11, 2005

Proyecto Mono


El proyecto Mono acaba de lanzar su version 1.1.9.2 (y algo mas que no recuerdo) parece estable y ya da buen soporte a los Windows.Form, o sea que ya se puede programar grafico para Mono y correrlo en cualquiera de las dos plataformas, asi como soporte para mayor numero de componentes para manejo de servidores SQL (MySQL, PostgreeSQL, etc.)

Ya estoy bajando la instalacion para Linux (que bastante dificil se me ha hecho) e incluire soporte para estos otros tipos de bases de datos en el kernel del SIG, con el objetivo de migrar mis sistemas a software libre. (solo el kernel, server, client y editor) el resto del SIG seguira siendo propietario.

Por ahora, asisti a una conferencia del grupo LinUHx de la Universidad de la Habana y me gusto mucho las demostraciones de mono funcionando en Debian, con ejemplos compilados con el Visual Studio .NET de Microsoft, gracias a la colaboracion de Ajadex de la Facultad de matematica y computacion.

Mientras edito esta entrada del blog he probado la version para Windows de Mono y me han corrido bastante aceptable algunos programas, otros no, y algunos con errores, creo que todavia falta un tilin para que este completo lo que se necesita para correr el SIG. (la version Linux aun no baja).

viernes, septiembre 30, 2005

Algo que lei sobre OpenSource

Recientemente, lei el articulo (si se le puede llamar asi) "La Catedral y el Bazar" de Eric Steven Raymond, fue una suerte ya que me hizo cambiar de idea sobre portar mi desarrollo actual del SIG o Sistema Informatizado de Gestion a plataforma Java, en realidad no importa sobre que plataforma desarrolles siempre que incluyas las posibilidades que el modelo de desarrollo OpenSource brinda. Por ahora no pienso migrar SIG a Java, solo dejare que el sistema siga enriqueciendose como hasta ahora en plataforma .NET que en definitiva, espero que la gente de Mono llegue algun dia a soportar el 100% de las funcionalidades que necesita el sistema.

Por ahora, ademas de la plataforma, que tiene un gran numero de funcionalidades para soporte y desarrollo de aplicaciones de gestion, el desarrollo que llevo en particular, junto con un compañero tocayo mio, es para entidades importadoras o exportadoras, y con la posibilidad de extenderse a otros tipos de negocios. Por ahora no es OpenSource evidentemente, pero posteare aqui los avances en el sistema e informacion sobre las soluciones tecnologicas hechas para que al menos eso sirva de ejemplo para otros desarrollos OpenSource.

Saludos

viernes, septiembre 23, 2005

Kernel ERP/CRM Java, Inicio del proyecto

Ya tengo gran parte del codigo portado a Java, con algunas mejoras que siempre quize corregir en la version .NET de SIG, por ahora tengo:
  • Kernel Entities, Application, Modules, Services, Features, Actions, etc.
  • Kernel Security Objects, User, Group, EntitySecurity, etc.
  • SIG Editor (swing version, funcionalidades limitadas)

El sitio CubaForge esta inactivo por alguna razon, por ahora el kernel no tiene nombre mas que Kernel ERP/CRM Java (se aceptan sugerencias)

En la proxima semana espero poder portar (si el tiempo me lo permite) el SIG Server y parte del SIG Client.

Si en CubaForge no se apuran lo hosteo en SourceForge.

lunes, septiembre 19, 2005

Kernel para ERP/CRM Java

La tarea de crear un sistema de ERP/CRM es muy ambiciosa para ser llevada a cabo por una sola persona, se necesita una comunidad de desarrolladores que pueda dar respuesta a las necesidades de investigacion, diseño, desarrollo, programacion, depuracion y de otros tipos que existen.

Desde hace ya varios meses me encuentro inmerso en una tarea similar, desde que empece a trabajar en mi centro de trabajo (CONSUMIMPORT, Comercializadora Mayorista) se me asigno la tarea de automatizar con un sistema informatico el area de Logistica de la empresa, extendiendose despues al area Comercial. Con la ayuda de un consultor, hemos puesto en funcionamiento un sistema aun sin terminar orientado a la gestion comercial y de logistica de empresas importadoras que puede sin muchos problemas ser extendido con los modulos necesarios para otras esferas economicas. Este desarrollo se esta haciendo en la plataforma Microsoft .NET en lenguaje C# y haciendo uso de bases de datos MS SQL Server 2000 (es evidente que la ola del software libre llego tarde a mi playa).

Pero el sistema por si mismo no es de interes, solo me interesa comentar la plataforma sobre la que esta programado, no refiriendome a .NET ni a C#, sino a una plataforma de distribucion, seguridad y acceso a datos sobre la cual estan programados los modulos del sistema comercial en cuestion. Esta plataforma le nombramos SIG (Sistema Informatizado de Gestion) simplemente. y cuenta con facilidades para:
  • Definicion de Aplicaciones modulares, extensibles y escalables, por niveles: Aplicacion, Modulos, Servicios, Opciones, Acciones.
  • Definicion de Seguridad a todos los niveles, con manejo de usuarios, grupos.
  • Interfaz unica de acceso a datos desde los modulos, incluyendo controles predefinidos de navegacion de datos, de reportes, de mensajeria, etc.
  • Actualizaciones automaticas del cliente de aplicacion.
y muchas mas...

Con el tiempo y sin apuro espero poder ir portando todo el kernel del sistema a Java y poder poner en funcionamiento las herramientas principales, SIG Editor, SIG Kernel, SIG Server, SIG Client.

Despues seria cosa de que se vayan implementando los modulos que cada empresa necesite de acuerdo con las configuraciones y particularidades de cada cual. Yo aca tengo creados varios modulos que pueden ser facilmente portados, entre ellos: Trabajadores, Directorio General de Contactos, Documentos Generales, Plantillas de Documentos Generales, Envio por Correo, Nomencladores Generales (Paises, Monedas, etc.), Clientes y Proveedores, Catalogos de Productos, y otros mas.

Ya tengo creada la carpeta del proyecto y espero en esta semana ponerle nombre y subirlo a CubaForge.

Saludos

domingo, septiembre 18, 2005

ERP Cubano, OpenSource

Los sistemas de ERP (Enterprise Resource Planning) y CRM (Customer Relation Management) han sido por varios años el principal problema para una completa migración a Software Libre (Sw. L.) de las empresas de todo el mundo. Las opciones con las que cuentan las empresas son en realidad pocas y con pobre (sino inexistente) soporte, nacionales ninguna.

Con la posible integración de Cuba a la Comunidad OpenSource del mundo muchas limitaciones tecnológicas podrán ser eliminadas, pero aun en el campo de los sistemas de ERP/CRM tenemos que trabajar pues los sistemas de este tipo que son Sw. L. conocidos internacionalmente no se ajustan a los parámetros y los métodos de trabajo de las entidades cubanas que potencialmente podrían ser sus usuarios, aun cuando dada la facilidad de modificación de estos, tengan que ser adaptados al medio cubano. Se impone entonces la creación de un, o varios productos nacionales que suplan esta necesidad, ERP/CRM Cubano.

Varias empresas cubanas ya tienen sistemas nacionales de gestion comercial, con algun grado de soporte, solo falta que los encargados de su mantenimiento porten los sistemas a plataformas libres y tambien (cumpliendo con la filosofia del Sw. L.) permitan la descarga gratuita del programa y de los codigos fuente del mismo, limitandose a cobrar solo el soporte del mismo sin tampoco monopolizar este proceso. Es evidente que esto presupone un cambio radical en la mentalidad y en la metodología de trabajo de muchas empresas de software nacionales, ya que la calidad del software que desarrollan debera ser muy buena para que elementos como la robustez, la eficiencia y la seguridad de los software que desarrollan (que estarian a la vista de todos) sea reconocida y el servicio de soporte que brinden sea el mejor.

Un nuevo ERP? Seria una solucion?

Con un nuevo ERP seria bien difícil (no digo que imposible) cubrir la gran cantidad de diferentes metodologías de trabajo existentes en el pais.

Creo que la solucion mas elegante seria crear varios grupos abiertos de desarrollo de sistemas ERP/CRM y que la comunidad de desarrolladores cubanos se integren a estos según deseen y que las empresas puedan optar por el que mejor les convenga y solicitar el soporte a alguna empresa nacional que les sea de preferencia.

domingo, septiembre 04, 2005

La migracion hacia plataformas de Software Libre en las empresas cubanas.

La migración hacia plataformas de Software Libre (SW.L.) va siendo una necesidad del ámbito informático cubano. En las Empresas Nacionales la noticia es comentada por los directivos y el personal técnico de estas encargados de los sistemas de cómputos (léase Administradores de redes o Informáticos) con grandes expectativas. Todos se preguntan como se hará posible la migración de sistemas enteros, plataformas, usuarios, etc. en los plazos, que si bien no son definitivos, para algunos pueden parecer cortos (o largos para los más impacientes).

El hecho es que los Sistemas Operativos (S.O.) libres, como Linux, son ampliamente utilizados en muchas entidades nacionales o extranjeras radicadas en Cuba, particularmente como SO de servidores, por su gran fiabilidad y seguridad en las redes, dejándoles el sector de los escritorios de trabajo al S.O. MS Windows, en todas sus variantes (95, 98, Me, 2000 y XP), por la facilidad de uso de su interfaz de usuario y porque además los sistemas de gestión que utilizan las empresas han sido desarrollados en estas plataformas sin posibilidad muchos de portabilidad a otras de tipo SW.L.

La pregunta cae por si sola.

¿Qué es necesario para poder realizar una migración completa de los usuarios a Linux?

Primeramente, personas con la voluntad necesaria para que ocurra el cambio, todos sabemos que la oposición al cambio es una reacción natural de las personas.

Segundo, necesitaremos un esquema de implantación acorde a los intereses y características de la entidad, donde a través de una migración gradual podamos ir llevando a todos nuestros usuarios a Linux y promoviendo que aquellos que todavía no den el salto se interesen en el proceso, de manera que exista a la vez una estimulación al estudio de este y a las posibilidades económicas, comerciales y de desarrollo que vienen aparejadas. Para lo cual la capacitación se convierte en nuestra tercera necesidad.

Tradicionalmente en las empresas cubanas, el personal que utiliza computadoras ha sido capacitado por centros donde la temática de la computación se centra en Windows y los paquetes de Ofimática de este (MS Office), y donde se le enseña al usuario donde tiene que hacer clic para poder realizar una tarea y no el significado de la interfaz grafica con sus componentes elementales y las interrelaciones entre estos, algo común entre la mayoría de las Interfaces de usuario modernas. ¿Cómo explicarle a un nuevo usuario de Linux que posee mas de un tipo de escritorio, con mas de una forma de hacer las cosas y que los botones de los menús y las acciones pueden ser tan distintos de acuerdo al tipo de Distribución que se decida usar en ese medio?

Otro de los problemas al realizar la migración de los usuarios a Linux seria el software de escritorio, desde Ofimática, Redes, Multimedia, Ocio, Mensajería, hasta el soporte para Desarrollo, Aplicaciones especiales, Estadísticas, Matemáticas, Producción Grafica, Audiovisual, etc. El numero de aplicaciones necesarias puede llegar a ser grande y el conjunto de búsqueda de estas pequeño si la calidad de estos o las especificaciones puede llegar a ser muy particular. Afortunadamente la cantidad y calidades de las aplicaciones para Linux crecen diariamente a un ritmo muy acelerado, y con la particularidad de que la mayoría de las soluciones de software incluyen opciones para conversiones de documentos provenientes de Windows/Office, lo cual beneficia el cambio.

Particularmente les recomiendo que visiten este sitio para un listado de opciones interesantes:

http://www.espaciolinux.com/html.php?filnavn=html/lobasico/alternativas/index.html

Y finalmente tenemos el peor de los problemas: Los software de gestión comercial, contable, ERP y CRM. Aquí llegamos al nudo de la cuestión, la mayoría de los este tipo de sistemas en la empresas cubanas están en plataforma Windows (para no absolutizar y decir todos), sin posibilidad de ser portados a Linux, algunos por la carencia de los códigos fuentes debido a que son comerciales y otros a que fueron desarrollados en tecnologías particulares de Microsoft (Access, FoxPro, etc.) Además de que las migraciones de estos sistemas traen aparejado un costo adicional en capacitación del personal, de adaptación de infraestructuras de conectividad, de validación de los procedimientos de calidad (en algunos sectores) y otras, en lugares donde existen servicios que no pueden dejar de brindarse. Lo que nos sugiere que en estos casos, el salto a SW.L. debe ser lo mas fluido posible y estar planeado de antemano.

Finalizando, la migración a SW.L. es posible si contamos con los elementos, la ayuda y el soporte necesario, de manera oportuna. Sabemos bien que un fracaso en esta tarea puede significar años de atraso para la comunidad informática cubana, deseosa de poner los dos pies en el siglo XXI y dejar atrás posibles dependencias comerciales y con esto potenciar el desarrollo de sistemas nacionales que den respuesta a la enorme demanda de servicios informáticos, de comunicaciones y de soluciones de software que provean a las empresas de herramientas para lograr la eficiencia que el país requiere.

Saludos

Lic. Ernesto Freyre G.

Datos personales

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