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.
Showing posts with label Procesos. Show all posts
Showing posts with label Procesos. Show all posts

Thursday, September 21, 2017

Procesos de Cierre: Las Peores Practicas



En este post voy a llevar la contraria al tópico recurrente de “Las mejores prácticas en…”.  

Voy a exponer  lo que hacemos repetidamente de manera incorrecta sin darnos cuenta de eso.     


                                                                                                                                     

¿Que es un proceso de cierre?

                                         

Una vez  finalizados los procesos operativos del  día, las instituciones requieren ejecutar procesos de cierre automatizados para actualizar sus bases de datos con  las  transacciones realizadas durante el periodo diario, mensual o anual que corresponda.




Los procesos de cierre que he revisado a lo largo de mi carrera profesional han sido sumergidos en las siguientes “peores practicas gerenciales” aplicadas en el área de sistemas que se resumen en esta frase:
Nadie entiende verdaderamente lo que sucede allí adentro y lo que es peor: a nadie le importa.


Peores Practicas Gerenciales en la Gestión de los procesos de Cierre


·         El software no tiene documentación ni técnica ni funcional.

     Una pésima práctica que se repite una y otra vez consiste en no exigir a los proveedores de software una documentación técnica y funcional de los procesos desarrollados.
    Algunos proveedores engañan al cliente argumentando que el software esta autodocumentado. Ni los analistas de Organización y métodos ni lo analistas funcionales son involucrados en el proceso de evaluación del software antes de adquirirlo.
    Por otra parte, los desarrolladores de la empresa no están dispuestos ni preparados para dedicar tiempo ni esfuerzo a documentar los desarrollos o los ajustes que realizan.

·         Rotación de recursos sin transferencia de conocimientos.
  
     En un taller mecánico dedicado a la reparación de automóviles, cuando se va quien repara los frenos, se sustituye por otro empleado mecánico que realiza el mismo trabajo que el anterior casi inmediatamente. Sin embargo, en productos donde está implicada la propiedad intelectual, como ocurre en el área de sistemas, es un error aplicar ese mismo concepto de la sustitución inmediata sin transferencia de conocimientos.

    En una institución para la cual trabajé hace algún tiempo, era de carácter obligatorio la planificación de una sesión de transferencia de conocimientos a la cual debía asistir todo el personal de IT, independientemente del lenguaje de programación, del equipo o de la funcionalidad del producto desarrollado.

    Los desarrolladores debían explicar técnica y funcionalmente la aplicación instalada así como sus conexiones con otras aplicaciones y con las áreas funcionales de la institución. Además debía entregarse una documentación detallada que debía ser almacenada en una carpeta compartida de acceso controlado para que  todo producto desarrollado e instalado por el área de sistemas quedase como patrimonio intelectual de la institución. 

     Este caso, a mi entender, ha sido una excepción en mi carrera profesional en el marco del “deber ser” institucional. Esta falta de procedimientos para el área de sistemas tiene múltiples causas que serían tema para otro post. Quien esté interesado en el desarrollo de este tema puede solicitármelo  por el blog y con gusto redactare otro artículo con este punto en particular.      


·         Subestimación de la importancia de un proceso de cierre.

     Los procesos de cierre son importantes cuando fallan, cuando no fallan no son el centro de atención de nadie en la organización. Esto es como el paso de los huracanes: importan cuando suceden o si se presenta un escenario que hace probable que sucedan. De resto, casi nadie revisa los reportes del clima.


·         No hay una división óptima de las funciones del personal y  además hay falta de recursos calificados.

    La dinámica de los procesos diarios y la urgencia por resolver las incidencias que exige la operativa del negocio y a falta de recurso humano disponible para realizar esta tarea de análisis y revisión de los desarrollos de la empresa.

    En mi opinión se necesitan dos grupos de personas en el área de IT. Aquellos que gestionan las soluciones de las incidencias diarias y aquellos que piensan, analizan, revisan y auditan los desarrollos realizados y gestionan los próximos desarrollos. Prácticamente ninguna organización en la que he estado tiene identificadas estas dos funciones.




    Por otra parte hay personas más calificadas para atender incidencias y otras para ocuparse de los procesos de gestión de soluciones de desarrollo importantes a mediano y largo plazo. El ejercicio del pensamiento creativo a veces se confunde con hacer arte, poesía, literatura, etc. Sin embargo, la creatividad es un término mucho más amplio que implica el ejercicio consciente y repetido de las funciones del lado derecho del cerebro. En su libro “El pensamiento Lateral” Edward de Bono expone varios ejercicios prácticos para desarrollar el cerebro derecho. La expansión de estos atributos no se restringe solo al área del arte sino a cualquier disciplina, oficio o tarea.


·         Lemas que hemos practicado culturalmente durante mucho tiempo.
     “Si no está roto no lo arregle”. Esto último se enfrenta a los nuevos conceptos disruptivos presentados en el libro de Robert Kriegel  y Louis Patler titulado: “Si no está roto, rómpalo”. Estos conceptos obsoletos que atentan contra el cambio y la innovación mantienen a las instituciones lejos de la curva de crecimiento puesto que el recurso humano es empleado recurrentemente en resolver los problemas de siempre sin dejar espacio para preparar estrategias operativas alternas de crecimiento a mediano y largo plazo.
    Puedes leer la presentación del libro resumida en slides en este enlace

Tuesday, December 16, 2014

Control de Procesos
















Hola!  Bienvenidos una vez más a Iseries Venezuela

El Control de procesos es una preocupación constante para gerentes y líderes de proyectos que deben dar la cara cuando un proceso a su cargo falla generando, en algunas ocasiones, consecuencias fatales o el disgusto de un cliente que reclama un mejor servicio.

El tema más delicado y menos tomado en cuenta,  en mi opinión, en el tema de control de procesos es el REPROCESO.

Cuando un proceso que tiene una secuencia de 20 pasos presenta una falla en el paso 13 quedan dos opciones:

1.-Recuperar todos los backups que se tienen “antes de ejecutar el proceso” y ejecutar todo el proceso desde el principio.

2.-Continuar desde donde el proceso falló hacia adelante.
La mayoría de las instalaciones que tienen desarrollos realizados desde los años 80 y 90 optan por la primera solución.

La segunda opción requiere una planificación previa de las fallas en cada paso del proceso para garantizar un reprocesamiento seguro.

Como desarrolladores nos enorgullecemos del conocimiento de muchas técnicas de programación y nos enfocamos en nuestro pequeño mundo llamado “programa”. Cuando integramos nuestro desarrollo a módulos, subsistemas o sistemas conformados por más programas y desarrollos nuestros y de otros programadores,  no planificamos las consecuencias de una falla en cada paso del proceso y tampoco analizamos la manera más eficiente y rápida de solucionar el problema de manera confiable y oportuna. Entregamos nuestro programa y con eso ya “cumplimos”.

En este artículo nos enfocamos en uno de los primeros controles de procesos sencillo que surgió al inicio del surgimiento del as400. 

El uso de área de datos para control de procesos fue una de las primeras ideas que surgió para el control del proceso en as400.  Vamos a partir de que se utiliza un programa CLP principal que ejecuta secuencialmente cada paso.

Cada paso puede realizar cualquier comando como CALL PGM, CRTPF, ADDLIBLE, SBMJOB, etc.

Dependiendo de la actualización de la data y de la naturaleza de los comandos podemos considerarlos pasos individuales o parte de un PASO que agrupa varias acciones. Eso depende del análisis que realice el equipo de trabajo.
Por ejemplo, tenemos un proceso de cinco pasos y declaramos cinco dtaaras y tenemos el siguiente CLP.

PGM

Paso1:
   If cond(dtaara1 = 0) then (do)
     “Ejecutar instrucciones”
    Chgdtaara(dtaara1) value(1)
enddo
…
…
Paso5:
   If cond(dtaara5 = 0) then (do)
    “Ejecutar instrucciones”
      Chgdtaara(dtaara5) value(1)
Enddo
 ENDPGM


Aquellos pasos que se ejecutaron sin problemas cambiaran su dtaara al valor 1.

Si el proceso falla en algún punto, el analista puede revisar el status de las dtaaras y realizar los arreglos, respaldo o acciones que se requieran. Luego se puede ejecutar el proceso otra vez sin repetir los pasos previos que no fallaron. La pregunta If Cond(dtaara = 0) evita reprocesar aquellos pasos donde el proceso si pudo culminar.

En artículos posteriores veremos otros mecanismos de control de procesos más elaborados.

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, June 29, 2014

¡Hey!... ¡Eso No Fue lo Que Yo te Pedí!

























Relativamente hace poco tiempo se ha desarrollado una disciplina denominada: Ingeniería de Requerimientos que procura brindarnos una metodología para que podamos definir con claridad lo que el usuario nos pide como desarrolladores de software. Esta disciplina tiene una serie de pasos que pueden variar dependiendo de las estrategias de desarrollo de software que se hayan adoptado. Existe una gran literatura en la web bien extensa y completa sobre este tema. Por tanto, en este artículo me dedicaré a exponer en forma sencilla las prácticas  que me han resultado exitosas en la definición de requerimientos basándome en mi propia experiencia y sin atarme a ninguna tendencia específica aunque pueda estar tomando algunos puntos importantes de ellas.


En mi experiencia, hay dos estrategias fundamentales que garantizan la definición exitosa de un requerimiento:

1.-Divide y Reinaras

Esto significa no esperar hasta el final para hacer entregas ni para realizar verificaciones de las mismas. Esto implica dividir la definición de requerimiento en “fases”.

Cada fase debe de la definición del requerimiento debe:

Ø      Tener al menos un entregable.
Un entregable es algo material, visible y tangible que se presenta al usuario y al equipo de trabajo de las áreas involucradas que constituye una evidencia del avance del ANÁLISIS del requerimiento.
Un entregable puede ser un documento en Word o pdf , una presentación en power point; una exposición donde se muestre cómo sería la secuencia de pantallas y los campos, registros, ventanas y subfiles que habría en cada una de ellas, un archivo grabado en cinta, un video, etc

En lo personal, la secuencia de pantallas es mi favorito.

El entregable hace posible que las objeciones a la definición del requerimiento sean detectadas a tiempo; permite rectificar y unificar criterios;  detectar condiciones de ejecución, de validación o de operatividad que en la solicitud inicial no fueron detectadas.



        
Ø      Propuestas con soluciones verificables.
La verificabilidad es una lista de condiciones que toda propuesta de solución debe cumplir.
    La Lista es la Siguiente:

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

Thursday, July 19, 2012

Una Nueva Área en la Empresa: Gestión de la Demanda











Este artículo es distinto al perfil de redacción que he presentado hasta ahora. El artículo está vinculado a una experiencia personal que tuve recientemente cuando asistí a una entrevista de trabajo en la cual la se me ofrecía un puesto de analista de Gestión de la Demanda.

En Venezuela, esta área organizacional es relativamente nueva. Desde hace unos dos se ha comenzado oír algo de esto en el mundo de las organizaciones que exigen gran demanda de servicios tecnológicos para poder competir en el mercado.



Gestión de la Demanda se encarga, en líneas generales de lo siguiente:



1.-Determinar si el requerimiento del usuario al área de sistemas procede o no. Si la relación, costo-esfuerzo-tiempo vs rentabilidad no es atractiva, los analistas de Gestión de la Demanda pueden detener la solicitud de cambio.

Con la creación de esta área, el usuario no se comunica directamente con el personal de sistemas en la etapa inicial del proceso. Gestión de la demanda recibe la solicitud y la evalúa primero si procede o debe rechazarse. Aún cuando Gestión de la Demanda requiera reunirse con Sistemas, Procesos, Calidad, Organización y métodos. Recae en ellos la principal responsabilidad de decidir la viabilidad del proyecto.



2.-Detectar si el proyecto o requerimiento pone en riesgo la operativa del negocio y el impacto funcional y técnico que significaría atender esa solicitudes.


3.-Agilizar la solución de necesidades importantes para la operatividad o la estrategia del negocio


4.-Priorizar las solicitudes. Definir quien o que debe ser atendido en primer lugar.


5.-Hacer el seguimiento de cada proyecto desde su definición hasta su implantación.


6.-Levantar información y generar el documento de arranque del proyecto y cualquier otra información relevante para el mismo.


7.-Asistir a las fases del proyecto para detectar desviaciones o correcciones en cuanto a los objetivos de usuario y de negocio.


8.-Tener un conocimiento total del negocio y resguardar la información que documenta su funcionamiento.


La institución que visité maneja anualmente alrededor de 300 proyectos. El personal de Gestión de la demanda consta de 5 personas que deben hacerse cargo potencialmente de 60 proyectos al año que significan 5 proyectos al mes. Si un proyecto promedio toma 6 meses, esto significa que al cabo de seis meses, -si todos los proyectos fueron aprobados-, cada persona estaría manejando 30 proyectos, porque Gestión de la demanda no puede desligarse del proyecto sino debe llevar el control hasta su culminación. Si agregamos a este escenario: las vacaciones, renuncias, despidos o enfermedad de los otros analistas de Gestión de la demanda, el número de proyectos se incrementaría significativamente por la redistribución del trabajo.



Tuesday, April 3, 2012

5 W y 1 H para el Diseño de Sistemas de Información
















A lo largo del tiempo se han desarrollado varios métodos, sistemas y estrategias para desarrollar sistemas de información,  que va desde las metodologías Top-Down, Bottom-Up, hasta los modelos estructurados e iterativos.

Independiente de la metodología que elijas para diseñar sistemas de información, la clave para el diseño de sistemas de información es la identificación de los procesos.

Una vez que se han identificado los procesos, es necesario contestar las  5 W y 1 H , para cada proceso diseñado, es decir las  cinco preguntas que los periodistas de los medios de comunicación deben responder cuando redactan una noticia para obtener la historia completa sobre algún evento.

Estas 5 W y 1 H son:


What à ¿Qué?
Where à ¿Dónde?
When à  ¿Cuándo?
Who  à  ¿Quién?
Why? à ¿Por qué?
How? à ¿Cómo?


Aplicando estas interrogantes a cada proceso tenemos lo siguiente:

¿Qué resultado se desea obtener?
Describimos el resultado detallado de lo que deseamos alcanzar

¿Dónde debe ser implementado este proceso?
Esto se refiere principalmente a dispositivos (móviles o no), en 
un   servidor dedicado, en un main frame, en un servidor remoto, etc.

¿Cuándo debe ejecutarse e instalarse?
            La frecuencia de ejecución: diaria, mensual, semanal, etc. 
        Las  condiciones preexistentes que deben existir para que se 
        ejecute (luego de que x proceso finalice..etc)

¿Quién debe tener acceso?
Establecemos las jerarquías de acceso al proceso para establecer la permisología necesaria que garantice la integridad de la información

¿Por qué es necesario?
Establecemos la necesidad de desarrollar el proceso y las necesidades de información que esta cubriendo para así justificar el desarrollo del mismo.

¿Cómo debe ser elaborado?

En este punto decidimos las estrategias y tácticas que vamos a emplear para el desarrollo del sistema y el control del avance del proceso.

Cabe destacar que, se puede aplicar este método iterativamente para cada respuesta que hemos dado anteriormente a cada pregunta.

Por ejemplo, dentro de la pregunta ¿Quién debe tener acceso? Una vez dada la respuesta correspondiente podemos preguntar: ¿Qué?, ¿Quién?,¿Dónde? , ¿Cuándo?, ¿Por qué? ¿Cómo?

Este procedimiento ayuda a concretar el proyecto y a la vez evaluar la factibilidad de lo que estamos planteándonos. A veces hay maravillosas ideas que no es posible llevar a cabo, bien sea por lo recursos materiales, o por costos, personas o tiempo. Cuando hacemos estas preguntas “aterrizamos” las ideas al punto que descartamos aquello que a la larga no va a ser posible y nos hace perder tiempo y dinero.


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.


Publicado por: Ing. Liliana Suárez

Sunday, November 27, 2011

Procesos Síncronos, Asíncronos y algo mas…











Un proceso no es síncrono o asíncrono en si mismo sino en relación a otros procesos con los que se relaciona. ¿Qué quiere decir esto?

Cuando hablamos de procesos síncronos nos referimos a procesos que envían un mensaje a otro proceso esperando una confirmación de recepción de mensaje.

Aquellos procesos que envían un mensaje a otros y no esperan por mensaje de “acuse de recibo” son procesos asíncronos.

Un ejemplo de procesos asíncronos lo vemos todos los dias cuando entramos a la página Web de nuestro banco y pedimos el saldo de la cuenta o realizamos alguna operación en línea. Una vez que el banco nos envía la información que solicitamos, la pagina Web no se queda esperando por una respuesta nuestra. Seria totalmente inoperante y consumiría muchísimo tiempo del servidor del banco. Nosotros podemos en el ínterin de realizar nuestra operación bancaria, atender una visita, levantarnos a atender el teléfono, etc.
 Es decir, ningún proceso del banco se queda esperando un mensaje de confirmación de nuestra parte. Solo cuando hacemos click sobre alguna operación específica de la pagina Web entonces el servidor detecta nuestra solicitud, nos responde y luego el servidor se dispone a atender la solicitud de otros usuarios.

En iseries y refiriéndonos específicamente a los procesos que son ejecutados bajo el lenguaje rpgile, clp, hay mecanismos de control de procesos que no están explícitamente relacionados con la sincronicidad.  En forma explicita puede entrar en esta categoría de sincronismo, el uso SOCKETS para transmisión de data entre el  iseries y una Web o las transmisiones especificas vía FTP, que por razones de seguridad, dan un timeout (tiempo agotado de espera) cuando hay demora en la respuesta.

En algunas instalaciones del Iseries existe el comando WAITJOB (no todas las instalaciones tienen este comando en la librería TAATOOL que suministra IBM).

Algunos analistas han confundido este comando con una sincronización entre procesos. Este comando WAITJOB, permite a un CLP que se está ejecutando, esperar a que otro finalice para continuar.
 Por ejemplo si el programa CLP PGMA somete el JOB llamado JOBW, luego de someter el JOBW el programador puede aplicar el waitjob dentro del programa PGMA para forzarlo a esperar la culminación del job sometido JOBW y luego el programa PGMA continuará con la siguiente instrucción a ser ejecutada. Esto no es igual a la sincronización de procesos entre si. En este ejemplo del WAITJOB, el sistema operativo le avisa a un proceso que el otro proceso terminó, pero ninguno de los dos procesos espera por la respuesta de uno o del otro.

Por cierto es importante tener en las instalaciones  el último release de esta librería de utilidades TAATOOL actualizada puesto que hay comandos sumamente útiles para los desarrolladores en Iseries y para el control de la ejecución de procesos.

En este enlace http://taatool.com/    pueden conseguir mayor información sobre este set de herramientas de productividad para lo desarrolladores del Iseries: 

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

Tuesday, September 20, 2011

Algunos Consejos para Desarrollar Programas


                         

Algunos Consejos para Desarrollar Programas



                                       









1.-No escribas nada hasta que entiendas lo que tienes que hacer.

2.-Si tienes alguna duda técnica, investígala antes de comenzar a programar porque podría  cambiar  significativamente tu trabajo y quizás tendrías, a la larga,  que comenzar a hacer todo de nuevo.

3.-Básate en programas Prototipo. Si no tienes programas modelo, o la organización donde estás no te lo suministra, constrúyete uno y llévatelo dondequiera que vayas.

4.-Divide la programación en un desarrollo de varias etapas, muestra las pantallas o el modelo de salida en cada fase antes de continuar para asegurarte de que ese resultado es el que esperan de ti. Al final la certificación de tu trabajo se simplificará.

5.-Comparte tu proceso con los involucrados en el proyecto. Aún cuando ellos no entiendan de lo que están hablando, (y muchas veces es así) ellos certificarán tu trabajo.

6.-Prueba tu programación con otros que no conocen de lo que se trata el proceso. Estos últimos son los mejores: Presionan teclas donde antes no existían.

7.-Admite tu errores si fuese necesario. La gente respeta a los honestos. Si esta vez te equivocaste, cuando estés en lo acertado, se detendrán a escuchar tu opinión, porque saben que eres alguien que habla con honestidad.

8.-Pide ayuda a otros programadores si te sientes atascado. Eso no te hace menos.

9.-Busca lo simple. A veces en un arranque de virtuosismo técnico complicamos las cosas.

10.-Las cosas visualmente agradables son bien recibidas. Cuida la estética, la ortografía y tu presentación personal. Es necesario saber vender nuestro trabajo.





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

Saturday, June 18, 2011

Carta Estructurada de un Proyecto (o Sistema)














La Carta Estructurada del Proyecto consiste en un diagrama jerárquico modular basado en una metodología de desarrollo de sistemas TOP-DOWN. 

Top-Down, significa, partir de lo mas general hacia lo mas detallado. Es un proceso análogo al de armar un rompecabezas en el sentido de ver primero la imagen ver primero el concepto o la imagen general, y a partir de alli comenzar a detectar donde va cada pieza dentro de la imagen. La diferencia es el recorrido jerarquico y modular que se realiza en su elaboración.

Un Módulo es un subsistema que agrupa funcionalmente programas, objetos, herramientas y , bases de datos según su funcionalidad y objetivos vinculantes. Por ejemplo, el objetivo de un modulo de nomina es generar el pago a los empleados, el objetivo de un modulo de compras es proveer a a la empresa de material necesario para su funcionamiento y así sucesivamente.

En la imagen pueden ver un ejemplo sencillo de Carta Estructurada del Proyecto. Se refiere a la Carta Estructurada de un proyecto de Sistema de Control de Distribución para el manejo de Inventario. (Haz Click sobre la imagen para agrandarla)

La Carta estructurada del proyecto es denominada también “modelo del producto”. Es importante diseñar la carta estructurada del proyecto antes de comenzar el proceso de diseño de un sistema de software. El software que desarrollamos es un producto, al igual que cualquier otro producto comercializable que requiere un tiempo y proceso de elaboración.


Partiendo de un concepto general,  se van desglosando los módulos y submódulos relacionados hasta llegar a un nivel donde es posible diferenciar las actividades de trabajo. La carta estructurada del proyecto permite distribuir las actividades entre los analistas, desarrolladores, jefes y gerentes  involucrados en el desarrollo del proyecto. Esta carta estructurada precede a la elaboración de un Diagrama de Gantt.

La Carta estructurada  hace posible que cada participante entienda su función dentro de un contexto integral. Además, es sencillo reconocer las interrelaciones de los módulos y preveer el desarrollo de interfases entre los mismos, cuando se tiene claro el contingente de módulos, submódulos y jerarquías. La definición de las bases de datos puede hacerse con mayor claridad cuando tenemos que decidir si la misma entidad es compartida por varios módulos y solo hay que variar los valores de sus claves de acceso o si se trata de entidades separadas según su funcionalidad y la clase de información que contienen.

Hay una herramienta CASE que se llama Visible Analyst que permite modelar análisis estructurado y orientado a objetos. Funciona bajo la plataforma Windows y es muy útil para apoyar la labor de los analistas de sistemas. Pueden descargarla por Internet.


Autor: Ing. Liliana Suárez.


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


Sunday, April 17, 2011

Optimizando el uso del espacio y el tiempo de Respuesta. Member Files.












Tanto quienes emplean DB2 para crear archivos como quienes se manejan a través de DDS, utilizan los valores por omisión para crear archivos físicos. En los valores por omisión el sistema operativo establece que el archivo va a tener un solo miembro.
Los archivos lógicos que son creados posteriormente, “apuntan” a ese miembro.

Un miembro es un espacio del archivo físico, al cual se le asigna un nombre para guardar información relacionada entre si. Por ejemplo, si deseo guardar la información contable del mes de ENERO, realizo un ADDPFM  (añadir miembro) y lo llamo enero. Entonces el archivo físico tendrá un “sector lógico” asignado al mes de enero.  Cuando ejecuto un programa que graba sobre ese archivo, dependiendo de la fecha de la data, puedo realizar  un ovrdbf sobre el miembro ENERO y todos los write/update van a grabar en ese “sector” del archivo físico.

A medida  que pasan los años, la data va creciendo y se va almacenando en el archivo, información de hace 3,5,8,10 y mas años.

Los procesos nocturnos generalmente requieren o lo registros del día o del mes. En casos excepcionales o en cierres anuales se necesita la información de todo un año.

Los procesos nocturnos se hacen cada vez mas lentos, y  comandos como Reorganizar archivo RGZPFM, para reutilizar el espacio dejado por registros eliminados  y CHGPF con reuse = *yes van perdiendo efecto. La reacción inmediata de los líderes de proyectos y analistas de desarrollo es impedir o limitar la creación de archivos lógicos. Se ejecutan entonces sentencias SQL y Queries, tratando de no incrementar los tiempos de respuesta. Mientras tanto los archivos siguen creciendo a medida que el tiempo pasa y eventualmente todas las curas provisionales que hemos colocado nos dejan igual que hace un año cuando se pudo “contener” el problema sin resolverlo en realidad.


En varias organizaciones donde los sistemas tienen varios años funcionando, se ha optado por trabajar con más de un miembro en un  archivo. Cada miembro almacena data de un intervalo de años definido por la gerencia.

Este método de utilizar miembros agilizaría los procesos diarios que requieren un tiempo de respuesta rápido. En lugar de direccionar los lógicos a un miembro que contiene data de hace 15 años, se direcciona  el lógico a un miembro que contiene data del año en curso. El tiempo de respuesta se acelera dramáticamente.

Puede ser que, en los procesos de apertura del nuevo año, se debe incorporar, para los archivos de data que están en esta modalidad, una evaluación automatizada que añada  el miembro que sea necesario si se da el caso. Por supuesto, con un sistema parametrizado, no sería necesario recompilar todos los programas RPG, CLP e ILE RPG involucrados.

No habría que modificar programas de consulta, mantenimientos ni reportes en RPG habría que agregar mas bien rutinas modulares utilizables por cualquier programa que sean capaces de realizar el ovrdbr al miembro que se necesita según la información solicitada por el usuario. Con este sistema, se tiene en disco la data activa y puede cumplirse con normas gubernamentales rápidamente sin tener que bajar y subir backups.


Autor: Ing. Liliana Suárez.


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