Bienvenidos a Iseries Venezuela

Las mejores prácticas, recursos, tips, enlaces, videos y artículos para informáticos relacionados con el Iseries y el As/400 lenguajes de programación RPG, ILE RPG y SQL.

The best practices, resources, tips, links, videoes and articles for computer related to the Iseries and the As/400 languages of programming RPG, ILE RPG and SQL.

Sunday, November 11, 2012

Una base de conocimiento para todos (primera parte)





 
 
 
 
 
 
 
 
 
 
 
En los procedimientos administrativos que se han establecido para el control del desarrollo de software en I-series Rpg y otras plataformas se han tomado en cuenta, en general, al menos estos factores:

                                     1.-Control de versiones de programas
                                     2.-Cumplimiento de cronogramas
                                     3.-Matrices de prueba
                                     4.-Certificación de pruebas
                                     5.-Puesta en producción.

El énfasis se ha puesto en el logro de los objetivos  y en la puesta en producción. Sin embargo, en cuanto a la medición de la gestión de los incidentes diarios la mayoría de las organizaciones se ha quedado corta. Cuando un usuario reporta un problema, el desarrollador a cargo de la aplicación  registra en un formato de control de incidente lo siguiente:
  • La descripción  del  incidente realizada por el usuario.
  • El tiempo en horas que se tomó para arreglarlo,
  • Los programas, archivos, objetos y fuentes que fueron alterados y  que hay que pasar  a producción 
  • El resultado de las pruebas y su certificación.
  • Un control de versiones estricto en el pase a producción. (Esto todavía no existe en muchas organizaciones)

 Cuando se mira esta lista de registro del incidente pareciera que es suficiente. Sin embargo, cuando otro desarrollador debe realizar las funciones del informático que estaba a cargo de la aplicación se encuentra con que no hay  una base de conocimiento que le permita acceder rápidamente a un registro histórico de los problemas iguales o similares que fueron resueltos anteriormente y las acciones concretas técnicas  que se tomaron en ese momento. Lo que está reflejado en esta documentación es escueto, con una mención a nivel de “titulo” sobre los objetos y fuentes alterados, una justificación del cambio y un tiempo de resolución. Nada que, sustancialmente aporte algo significativo a quien técnicamente debe remangarse la camisa y “hacer el trabajo sucio”.

El proceso para resolver el problema se resume en contactar telefónicamente a quien se fue de vacaciones o de la empresa, en revisar la documentación técnica que se tiene distribuida en una o varias carpetas, en revisar con el usuario los correos que ha recibido o enviado sobre el tema y finalmente en comenzar a ver el problema nuevamente desde el principio, si es que no se puede esperar a que el programador encargado regrese en algún momento.  

En medio de la confusión generalizada y del desconocimiento de lo que es el área de informática, se espera que el desarrollador que queda encargado se haga cargo de la situación rápidamente. Digamos que se trata al programador como al mecánico de turno que debe reemplazar la bujía o el carburador de un automóvil. Algo así como quien por saber desarrollar en una plataforma y en un lenguaje debe tener la cosmo-visión omnisciente y todopoderosa del desarrollo de un producto informático.


Considerando que el desarrollo informático es:

  • Un producto sujeto a un registro de propiedad intelectual.
  • Un diseño realizado bajo un esquema único e irrepetible
  • Adaptado a cada organización según sus necesidades de Parametrización y uso.

Debe entenderse que NO es posible para ningún desarrollador, cualquiera que sea la plataforma de su especialidad, resolver problema alguno sin el conocimiento previo técnico del sistema.

Es necesario construir una base de conocimientos compartida que esté automatizada que permita a un programador registrar rigurosamente la manera como el incidente fue resuelto. Esta base de conocimientos hace posible que

  • Se resuelva rápidamente el incidente por cualquier persona de informática.
  • Se mida la gestión de la gerencia de sistemas
  • Se mejoren los procesos de control y seguimiento
  • Se mejore la calidad de los sistemas
  • Se aumente la satisfacción del usuario
  • Se justifiquen los recursos del área de sistemas


Si diseñamos una plataforma automatizada que permita registrar incidentes basándose en un formato diseñado destinado al personal técnico en sistemas, es posible además, agregar elementos estadísticos para medir la efectividad de una gestión informática en un periodo de tiempo determinado.

Por ejemplo, si durante tres meses observamos el mismo incidente repitiéndose, es necesario tomar alguna acción que resuelva el problema de raíz. Esto indicaría además que quien resuelve el problema lo esta controlando temporalmente pero no lo resuelve en causas primarias por lo que el tiempo que utiliza en resolver una y otra vez el mismo problema podría ser empleado en la resolución de nuevos requerimientos o en la corrección  de otras fallas. Esto ampliaría el radio de acción del área de sistemas y alcanzaría mayores objetivos para mejorar la dinámica del negocio.

¿Cómo puede medirse una gestión sin llevar un registro automatizado de los incidentes?
¿Cómo puede mejorarse una gestión sin un control estadístico del comportamiento de los incidentes entre varios periodos?

En la segunda parte de este artículo continuaremos desarrollando este tema. Veremos el diseño y el prototipo de un formato automatizado para los técnicos en sistemas y el seguimiento de una gestión. Veremos los requisitos que debe cumplir una base de conocimientos automatizada para que sea una herramienta útil en el control, seguimiento y medición de la gestión del área de informática.


Si te pareció interesante, reenvíalo a un amigo haciendo click en el sobrecito que está al final del artículo. El conocimiento es valioso, compártelo.
 
 
Autor: Ing. Liliana Suárez
 
 
 

Sunday, October 14, 2012

Sincronización Procesos AS/400 y Web










La mayoría de las organizaciones que mantiene sus procesos principales en as/400, utilizan aplicaciones  web para permitir a sus clientes la actualización de datos  a través de Internet.
Es necesario definir un proceso de sincronización de datos entre la base de datos web y la base de datos residente en el as/400.

El proceso de sincronización tiene como objetivo principal mantener ambos sistemas con la información actualizada en forma instantánea para que la consistencia de la data y la secuencia de los procedimientos no sean obstaculizadas. Por ejemplo, si un cliente solicita una extensión de su límite de crédito a través de la página web, esta solicitud debe ser “informada” al As/400 inmediatamente. Una vez aprobada la solicitud en el as/400 esta aprobación debe actualizar la página web de manera que cuando el cliente solicite un pedido con un margen de crédito mayor no sea rechazada su compra. Muchas veces notificamos al cliente vía correo o por vía telefónica que la ampliación de su crédito ha sido aprobada. Sin embargo, cuando ingresa a la página web, la data no está actualizada todavía y el cliente se comunica con la empresa manifestando su desconcierto. El asunto de la eficacia en la atención al cliente es sumamente importante. Debe analizarse la secuencia de procesos y procedimientos manuales y automatizados para no caer en estas deficiencias de atención en el servicio al cliente. Es preferible programar un proceso automático que luego de ampliar la línea de crédito del cliente, le envíe un e-mail o un mensaje de texto a su celular y/o notifique al departamento de ventas las actualizaciones que han sido realizadas y están disponibles para los clientes.  El cliente no debería pasar por estas situaciones incómodas. El que la transmisión de datos falló o que no ha sido ejecutada no es incumbencia ni interés del cliente. A veces damos como excusa: “el proceso no ha corrido” o peor aún se escuchan frases de respuesta al cliente como: “eso tiene que ver con sistemas no con nosotros”. Lo que genera una imagen de la empresa de cara al cliente francamente deplorable y mediocre.

Debe definirse sin ambigüedades en cual de los dos equipos se hace qué tipo de actualizaciones para evitar perdida de información por la superposición de una data sobre la otra o evitar duplicidad de la data.
Las operaciones “en tránsito” también son un tema importante. Si un cliente hace un pedido hace dos días y antes de que su pedido llegue efectúa un cambio de dirección. Este cambio puede representar un problema en la entrega del servicio.  Esto debe ser detectado por el sistema al momento que se realiza una actualización de datos y advertir al propio cliente y al departamento de ventas para asegurar que el pedido llegue a su destino. Si a esto agregamos que la dirección nueva está en la página web pero que el as/400 no se ha enterado del cambio por alguna falla del proceso o porque el tiempo de sincronización de ambas datas fue mal elegido, puede causar inconvenientes en el seguimiento del caso.

Desde el punto de vista técnico, es fundamental generar un log o registro de transmisión entre uno y otro sistema que establezca la cantidad de registros transmitidos (por el sistema que envía data) y las operaciones realizadas en la data en cada uno de ellos así como la cantidad de registros recibidos  por el sistema receptor.  Es importante elegir el servidor adecuado o la herramienta de intercambio de data mas confiable. Según la magnitud de la información y tamaño de la empresa, puede elegirse un servidor intermedio que sirva “de puente” entre el servidor web y el AS/400, puede utilizarse la utilidad “ODBC” u otras de mas avanzadas para extraer información desde el as/400 a otra plataforma o cualquier medio que garantice rapidez y capacidad de almacenamiento.

 He estado en  organizaciones en las que una vez puesto el sistema de sincronización en producción comienzan a aparecer situaciones imprevistas que afectan a varios clientes y que obligan a correr a los programadores para “remendar” la falta de análisis previo.  En otros casos le ha tocado a las empresas cargar manualmente la data que el cliente ya había ingresado y que se “perdió” por errores en los procedimientos de ejecución.

Es importante sobretodo para el equipo de desarrollo  del As/400 disponer de las nuevas herramientas metodológicas suministradas por las tecnologías de punta como el  estudio de los “Casos de Uso”.  A la mayoría de los desarrolladores del As/400 que se rigen por una forma tradicional de análisis, les fastidia “hacer muñequitos” y documentar formalmente los escenarios bajo este esquema. Sin embargo, este es un proceso imprescindible para asegurar la calidad de nuestro trabajo. Además, podemos solicitar apoyo del personal de Calidad y Procesos de la organización para definir conjuntamente estos escenarios, los casos de uso y las pruebas de los mismos. Esta manera de trabajar genera mejores oportunidades para fidelizar al cliente con la empresa porque prestamos un mejor servicio y logramos un cliente satisfecho.


Si te pareció interesante, reenvíalo a un amigo haciendo click en el sobrecito que está al final del artículo. El conocimiento es valioso, compártelo.


Autor: Ing. Liliana Suárez

Sunday, September 9, 2012

Uso de Arreglos (Arrays) o Estructuras Dimensionales.




Un tema viejo que vale la pena repasar.

He encontrado cuatro maneras básicas de utilizar arreglos en lo programas.

1.- Aquellos arreglos que son cargados a tiempo de compilación.
Esta modalidad se utilizaba en un principio para almacenar los dias de cada mes del año y validar de esta manera, las fechas que el usuario cargaba interactivamente. Luego que aparecieron funciones de validación de fecha como  TEST(DE), en la nuevas aplicaciones ya no se requiere de este uso. También se aplica para almacenar el nombre de los días de la semana,  el nombre de los meses del año, mensajes de error, títulos de los reportes y pantallas, comentarios y otros elementos fijos o de muy poca variación.
El inconveniente que tiene esta opción es la recompilación del programa cuando hay un cambio de los valores de las tablas internas. Sin embargo cuando se supone que los dias de la semana, los meses del año y los colores del arco iris van a  ser siempre iguales es una buena opción.

2.-Los arreglos que son cargados a tiempo de ejecución, también llamados “arreglos dinámicos”. Esta modalidad es particularmente útil para cargar tablas de data que tienen poca información y que son leídas muchas veces en el programa. Por ejemplo, si tienes un archivo de data que contiene las ciudades de un estado y el programa cuando tiene un lazo principal debe buscar una y otra vez la descripción de la ciudad entonces, podría cargarse este archivo en un arreglo del programa y evitarse los frecuente accesos a disco que enlentencen el tiempo de respuesta del programa. Con un lookup, puedes buscar en un par de  arreglos el código y el respectivo nombre de la ciudad que estas leyendo.

En cuanto a su definición tenemos arreglos numéricos, alfabéticos y multidimensionales. Podemos tener arreglos en los cuales cada elemento es una estructura de datos que a su vez contiene otros arreglos, números o textos. Esto se logra con el uso de la palabra clave Occur.

En estos artículos tienes información mas detallada de su uso:



3.-Redefinir estructuras de datos y campos de archivos en la hoja (D) a través de un arreglo para acceder a la información en forma indexada y simplificar la programación, evitando el uso de nombre de campos separados.

Remitirse al siguiente artículo para mas detalles:



4.- Para simular subfiles en pantalla.
En algunas instalaciones donde el uso del subfiles puede ser complicado por diversas razones, eso lo he visto particularmente en aplicaciones de conciliación bancaria donde el cruce automático de información entre el banco y la empresa deja “movimientos colgados” sin su pareja y el manejo del subfiles puede resultar engorroso por habilitar o deshabilitar campos o medias líneas del subfiles. La redefinición de campos de pantalla a través de arreglos ha simplificado el despliegue de información en pantalla en varias oportunidades.

Las operaciones que podemos hacer sobre los arreglos son:
Xfoot, (suma los elementos de un arreglo)
 lookup,  y todas sus variaciones para buscar un valor específico.
movea, (mueve un valor a todos los elementos de un arreglo)
Sorta (ordena ascendentemente los elementos de un arreglo)
%elem() Devuelve el numero de elementos de un arreglo.


Cabe destacar que hay múltiples algoritmos de ordenamiento y búsqueda que pueden aplicarse sobre un arreglo. Estos procesos no retardan prácticamente nada los tiempos de respuestas ya que la información está en memoria y no es necesario acceder al disco una vez que se ha cargado el arreglo una primera vez.



Si te pareció interesante, reenvíalo a un amigo haciendo click en el sobrecito que está al final del artículo. El conocimiento es valioso, compártelo.


Autor: Ing. Liliana Suárez