sábado, 16 de diciembre de 2017

Humor - Asistencia técnica


En ocasiones da la sensación de que vas a llegar hasta este punto de tanto esperar al servicio técnico.

Complejidad ciclomática

La Complejidad Ciclomática (en inglés, Cyclomatic Complexity) es una métrica del software que proporciona una medición cuantitativa de la complejidad lógica de un programa. Es una de las métricas de software de mayor aceptación, ya que ha sido concebida para ser independiente del lenguaje.

Esta métrica, propuesta por Thomas McCabe en 1976, se basa en el diagrama de flujo determinado por las estructuras de control de un determinado código. De dicho análisis se puede obtener una medida cuantitativa de la dificultad de crear pruebas automáticas del código y también es una medición orientativa de la fiabilidad del mismo.

El resultado obtenido en el cálculo de la complejidad ciclomática define el número de caminos independientes dentro de un fragmento de código y determina la cota superior del número de pruebas que se deben realizar para asegurar que se ejecuta cada sentencia al menos una vez.
Una vez calculada la complejidad ciclomática de un fragmento de código, se puede determinar el riesgo que supone utilizando los rangos definidos en la siguiente tabla:

Complejidad Ciclomática          Evaluación del Riesgo
1-10                                      Programa Simple, sin mucho riesgo
11-20                                    Más complejo, riesgo moderado
21-50                                    Complejo, programa de alto riesgo
50                                         Programa no testeable, muy alto riesgo

A partir del análisis de muchos proyectos McCabe encontró que un valor 10 es un límite superior práctico para el tamaño de un módulo. Cuando la complejidad supera dicho valor se hace muy difícil probarlo, entenderlo y modificarlo. La limitación deliberada de la complejidad en todas las fases del desarrollo ayuda a evitar los problemas asociados a proyectos de alta complejidad. El Límite propuesto por McCabe sin embargo es fuente de controversias. Algunas organizaciones han utilizado el valor 15 con bastante éxito.

¿Cómo se calcula la complejidad ciclomática? Primero introducir una sencilla notación para la representación del flujo de control, denominada grafo de flujo de control de un programa.
  • M = Complejidad ciclomática.
  • E = Número de aristas del grafo. Una arista conecta dos vértices si una sentencia puede ser ejecutada inmediatamente después de la primera.
  • N = Número de nodos del grafo correspondientes a sentencias del programa.
  • P = Número de componentes conexos, nodos de salida.
Definidos estos conceptos, la Complejidad Ciclomática puede calcularse de la siguiente manera:

          M = E - N + 2*P

Una versión simplificada para el cálculo de la Complejidad Ciclomática es la siguiente:

          M = Número de condiciones + 1

Esta fórmula hay que retocarla si el código a analizar presenta varios puntos de salida o "returns", pasando a ser:

          M = Número de condiciones + Número de retornos o salidas

donde el número de salidas nunca descenderá de 1.


En las dos fórmulas en las que se utiliza el número de condiciones hay que tener en cuenta que, por ejemplo, un IF equivale a una condición y la rama ELSE equivaldría a otra condición. Por lo tanto, dado el siguiente fragmento de código en Cobol:

     IF A >= 5
         MOVE A TO B
     ELSE
         MOVE ZEROES TO B
     END-IF

Tendríamos 2 condiciones. Para rebajar complejidad en un programa cuya complejidad ciclomática sea alta sería tan fácil como realizar modificaciones en el código hasta conseguir rebajarla. En el ejemplo anterior valdría con poner lo siguiente:

     MOVE ZEROES TO B
     IF A >= 5
         MOVE A TO B
     END-IF

Esto ha sido todo.

jueves, 2 de noviembre de 2017

COBOL - longitud campos

Hay campos con los que es muy fácil saber qué longitud tienen. Por ejemplo:

  • Alfanumérico de 10 posiciones...: PIC X(10)
  • Numérico de 10 posiciones........: PIC 9(10)

Pero en otros casos no es tan sencillo y hay que seguir una serie de pasos. Por ejemplo, un caso muy significativo es el numérico empaquetado que tiene parte entera y parte decimal. Tomemos de base para nuestro ejemplo el siguiente dato numérico:

     PIC S9(3)V9(2) USAGE COMP-3

Para saber que tiene 3 posiciones hay que dar los siguientes pasos:
  1. Sumar parte entera y parte decimal...............: 3 + 2 = 5
  2. Dividir entre 2 el resultado del paso anterior...: 5/2, el resultado es 2 (resto 1)
  3. Sumamos el resultado de la división y el resto.: 2 + 1 = 3

Al dar estos pasos tan sencillos hemos llegado a obtener la longitud del anterior dato numérico: 3 posiciones.

Otro ejemplo más, un numérico de 9 posiciones que está en hexadecimal sin empaquetar:

     PIC S9(9) USAGE COMP
 
Para saber que tiene 4 posiciones hay que dar los siguientes pasos:
  1. Dividir entre 2 la parte entera (no tiene parte decimal)...: 9/2, el resultado es 4 (resto 1)
Al dar estos pasos tan sencillos hemos llegado a obtener la longitud del anterior dato numérico: 4 posiciones.
 

martes, 17 de octubre de 2017

Macros en Excel

Pinchando aquí podrás acceder a un manual básico de macros en excel. Por cortesía de cybercursosMuy interesante y bien explicado para dar los primeros pasos en la programación de macros.

Y si quieres algo más avanzado puedes pinchar aquí. Por cortesía de Patricia Acosta. Un gran manual para profundizar en las marcos.

lunes, 16 de octubre de 2017

Funciones de Excel

Pinchando aquí encontrarás un manual bastante completo con las distintas funciones que puedes utilizar en Excel.

Por cortesía de Jorge Sánchez, al cual felicito por este manual tan completo y útil.

viernes, 13 de octubre de 2017

Los lenguajes de programación más populares

En el índice TIOBE podemos encontrar una lista actualizada de los lenguajes de programación más populares.

A fecha de hoy aparece Java en la primera posición de esa lista y tenemos que bajar un poco, exactamente hasta la posición 23, para encontrar el lenguaje de los dinosaurios, el Cobol. Cuando vuelvas a consultar esta lista confeccionada por el índice TIOBE la encontrarás actualizada, si dentro de 3 años la consultas la encontrarás actualizada a Octubre-2020.

Veremos cómo va cambiando la popularidad de los lenguajes de programación con el paso del tiempo. Se admiten apuestas.

lunes, 18 de septiembre de 2017

Excel avanzado

Cualquier duda, cuestión que te puedas plantear o simplemente saber cómo hacer algo en concreto en una Excel y que sea un poco avanzado, ¿sabrías dónde consultarlo?

Te recomiendo que visites la página web http://www.excel-avanzado.com/ que existe en la sección Webs de interés de este mismo blog.

viernes, 1 de septiembre de 2017

Xpediter

En este post reuniremos las dos entradas más importantes acerca de este tema.

Y, para ello, diferenciaremos entre el batch y el online.

Así que, si un programa da un error, no dudéis en depurarlo utilizando esta utilidad tan útil.

lunes, 28 de agosto de 2017

Yaiza Rubio

Yaiza Rubio es la primera mujer española en participar en los macro encuentros de hackers DefCON y Black Hat.

Por ese motivo fue entrevistada por el periódico ABC, puedes leer dicha entrevista pinchando aquí.

miércoles, 16 de agosto de 2017

Efecto 2038

Primero fue el Efecto 2000, ahora se aproxima el Efecto 2038.

Si quieres saber más acerca del tema, puedes pinchar aquí y leer un artículo que apareció en la versión online de la revista Muy Interesante.

viernes, 7 de julio de 2017

HOST - consultar versiones migradas de un GDG

Los gdg's suelen tener una serie de versiones de las cuales están migradas las versiones más antiguas, de manera que podemos ver las versiones más actuales (se corresponden con las últimas versiones) en modo VIEW o BROWSE. Si queremos consultar una de las versiones migradas en modo VIEW o BROWSE nos aparece un mensaje por pantalla.


El problema de entrar en esta manera es que el HOST se queda ahí, bloqueado; y no podemos continuar trabajando. Llega un momento en el que se acaba desmigrando pero tarda bastante (con lo que ello implica de no poder trabajar durante un buen rato). Por lo tanto, la mejor manera es realizar la consulta con el comando HRECALL.

     ------------------------------------------------------------------------------
     hrecall     xx.xx.xxxxxxx.xxxxx.xxxxx.G00001V00
     *******************End of Data Set list*******************


Damos INTRO y se lanza un job que cuando finalice nos dejará la versión desmigrada y lista para ser consultada.

viernes, 2 de junio de 2017

viernes, 5 de mayo de 2017

Micro Focus impulsa la formación en Cobol

Debido a la gran carencia de profesionales cobol, Micro Focus está impulsando la formación este lenguaje de programación.

Si quieres leer más acerca de esta información, a continuación dejo el artículo completo: Artículo completo.

miércoles, 5 de abril de 2017

miércoles, 1 de marzo de 2017

Cobol - Inicializar variables numéricas a nueves

Solemos estar acostumbrados a inicializar variables numéricas en Cobol de la siguiente manera:

     MOVE ZEROES        TO WS-VAR-NUM

Y en todas sus vertientes:

     MOVE ZEROS         TO WS-VAR-NUM
     MOVE 0                 TO WS-VAR-NUM

Pero, ¿qué pasa cuándo queremos inicializarla con un valor distinto de 0 (por ejemplo, 9)? Si nuestro objetivo es inicializarla con nueves, sólo tenemos que hacer lo siguiente:

     MOVE ALL '9'         TO WS-VAR-NUM

Seguro que te choca ver '9' en lugar de 9, pero es así y me ha funcionado. Pruébalo tú y nos cuentas.

viernes, 3 de febrero de 2017

Easytrieve

En http://www.consultoriocobol.com/p/y-mas.html encontrarás diferentes secciones y una de ellas está dedicada a easytrieve.

También he encontrado la entrada de un blog en donde se explica muy bien los conceptos básicos y necesarios del easytrieve. Pincha aquí para acceder a dicha entrada.