domingo, 29 de mayo de 2016

Qué es el análisis postmortem en un proyecto de software?

En el contexto de los proyectos de desarrollo de software, un análisis Postmortem es el proceso de revisar la historia del proyecto para entender cómo cada uno de los eventos contribuyo al éxito o fracaso del proyecto.

En resumen: es el análisis retrospectivo realizado por todos los miembros del equipo de trabajo una vez que el proyecto concluye, sea exitosa o no esta conclusión.

Al realizar este análisis se busca identificar los aspectos positivos aplicados en el proyecto para que puedan repetirse, así como plantear soluciones y mejoras de los aspectos negativos, asimilando la experiencia para que no vuelvan a repetirse. Todo ello se conoce de forma simple como Lecciones Aprendidas.

Beneficios

Realizar un análisis de las experiencias buenas y malas adquiridas en el proyecto, es necesario para:

  • Identificar los aspectos que pueden mejorarse en proyectos futuros.
  • Obtener las experiencias de todos los involucrados en el proyecto, concentrando opiniones , puntos de vista y generando conclusiones en grupo.
  • Formar una base de conocimientos de “Lecciones Aprendidas” para que sean conocidas, revisadas y consideradas en otros proyectos con características similares.
  • Si hay un proyecto nuevo los recursos nuevos que tengan acceso a las lecciones aprendidas no tendrán justificación para repetir los mismos errores que se cometieron en sus proyectos anteriores.
  • Aplicar las lecciones aprendidas al proceso de estimación de un proyecto de software proporciona un par de beneficios, en principio, ayuda a la organización a prevenir desarrollar proyectos que no generan ganancias. Segundo, se orilla a que la estimación sea más precisa y exacta ya que la organización podría emplear un presupuesto inflado. Cuando la organización tiene confianza en sus estimaciones, es una organización más competitiva.

Actividades

  1. Aplicar cuestionario Postmortem.
  2. Realizar la reunión Postmortem.
  3. Registrar lecciones aprendidas.

Aplicar cuestionario Postmortem esta actividad se realiza para obtener las experiencias de los recursos que participan en algún momento en el proyecto y que por algún motivo salen antes de que este concluya. En la ejecución de esta actividad participan: el responsable del proyecto quien se asegura de que todos los recursos que salen antes de que el proyecto concluya, apliquen el cuestionario y el miembro del equipo de trabajo que sale del proyecto se requiere que conteste el cuestionario. Los cuestionarios que se recopilen serán revisados por el responsable del proyecto para concentrar las experiencias obtenidas y resumirlas en la presentación Postmortem.

Realizar la reunión postmortem Los datos del proyecto que deben considerarse en esta presentación, son:

  • Datos generales del proyecto
  • Evaluación del alcance
  • Evaluación de la planeación
  • Evaluación de la capacitación
  • Evaluación de la calidad
  • Evaluación del proceso
  • Oportunidades y conocimientos adquiridos
  • Evaluación de la percepción del cliente

Registrar lecciones aprendidas: aquí se obtiene un resumen de las lecciones identificadas por todos los miembros del equipo de trabajo para clasificarlas y registrarlas en el repositorio de lecciones aprendidas de la organización.Registrar lecciones aprendidas: aquí se obtiene un resumen de las lecciones identificadas por todos los miembros del equipo de trabajo para clasificarlas y registrarlas en el repositorio de lecciones aprendidas de la organización.

Consideraciones

Al ejecutar esta actividad es muy importante tomar en cuenta los siguientes aspectos:

  • Planear las actividades necesarias para ejecutar el proceso postmortem en todos los proyectos.
  • La reunión postmortem debe ejecutarse inmediatamente al concluir el proyecto.
  • Es necesario contar con las aportaciones de todos los recursos que en algún momento se vieron involucrados en el proyecto.
  • Deben exponerse los aspectos positivos y negativos registrados en el proyecto.
  • Calificar al proyecto, no a las personas.
  • Realizar recomendaciones que complementen las lecciones aprendidas.
  • Los datos obtenidos en la presentación postmortem son utilizados en la presentación de cierre del proyecto.

Cuestionario Postmortem

La recopilación de las experiencias adquiridas por todos los recursos que participaron en algún momento en el proyecto se realiza a partir de la aplicación del cuestionario Postmortem en el caso de los recursos que participaron hasta el cierre del proyecto. A continuación un ejemplo de las secciones de un cuestionario Postmortem

1.Datos generales

[Aquí describe tu participación dentro del proyecto]

  1. Nombre completo:
  2. Rol:
  3. Periodo de participación: [Total o parcial, especifique el periodo en el que permaneció en el proyecto, este será total si participo en todas las fases del proyecto, será parcial si solo participo en una fase del proyecto]
  4. Jefe inmediato/ Rol:[Especifique el nombre del jefe inmediato y su participación]

2. Evaluación de la planeación

[Sección dedicada a describir la percepción respecto a la planeación de actividades en el proyecto, poner las razones en cada respuesta]

  1. ¿Existieron diferencias entre el número planeado de artefactos/productos contra el real?
  2. ¿Se presentó alguna diferencia entre el tiempo planeado contra el real?
  3. ¿Existe alguna diferencia entre las disciplinas en las que se tiene planeada tu participación y en las que realmente participaste?

3. Evaluación de la Capacitación

[Aquí se pone la percepción respecto a las actividades de entendimiento del negocio]

  1. ¿Recibiste la capacitación técnica necesaria para realizar tus funciones?
  2. ¿Consideras que recibiste la capacitación necesaria del conocimiento del negocio de acuerdo a tu perfil?

4. Evaluación de la calidad

[Aquí indica los productos que fueron generados durante el proyecto, pudiendo ser documentos, código, modelos o diagramas]

5. Evaluación del Proceso

[Sección dedicada a evaluar el proceso de desarrollo de software] En un proyecto similar, qué acciones, actitudes y decisiones tendrían que ser diferentes y cuáles podrían repetirse en cuanto a:

  1. La capacitación para el proyecto.
  2. Las disciplinas ejecutadas en el proyecto.
  3. Las herramientas utilizadas para el proyecto.
  4. La infraestructura con la que contó el proyecto.
  5. La administración del proyecto.

NOTA: Hay que tener en cuenta que los cuestionarios Postmortem pueden variar de acuerdo a la organización o a la metodología que se utilice.

martes, 24 de mayo de 2016

Cómo utilizar el control Kendo UI NumericTextBox

El control Kendo UI NumericTextBox está diseñado para dar formato numérico y limitar los datos de entrada de los controles INPUT únicamente a los rangos que se especifiquen según sea especificado en la configuración del control.

Entre los formatos que este control puede manejar se encuentran las siguientes:

  • Monedas
  • Porcentaje
  • Números enteros
  • Números con precisión

Además si se utiliza el control con la sentencia kendo.culture este control puede dar formato de acuerdo al lenguaje y a las propiedades especificas de cada región o cultura.

Bien ahora mostraré un código en donde se verán todas las propiedades de este control, en este ejemplo se muestran 6 controles Kendo NumericTextBox, 4 de ellos configurado para mostrar cantidades monetarias, 1 de ellos configurado para mostrar cantidades enteras y el último para mostrar una cantidad porcentual.

Fig 1 La ejecución de la página con 6 controles NumericTextBox.


Aquí está el código JavaScript del ejemplo numericTextBox.js:


Aquí está el código HTML del ejemplo:


Introduciendo los valores, observamos como los controles le dan formato numérico a las entradas de datos.

Fig 2 Primer ejemplo: Introduciendo las cantidades numéricas.


Fig 3 Completando las entradas numéricas del primer ejemplo.


Fig 4 Un segundo ejemplo, introduciendo las cantidades numéricas.


Fig 5 Un segundo ejemplo, completando las entradas numéricas.


Como primer paso hago la iniciación de los controles, con la sintaxis:

Aquí algunas de las propiedades que utilizo en los controles de este ejemplo:

  • format: Especifica el tipo de formato que se usará en la cantidad numérica. Su valor predeterminado es numérico “n”.
  • spinners: Con esta propiedad se muestran las flechas de incremento/decremento del control.

Algunos de los eventos que utilizo:

  • change: Este evento se ejecuta cuando el valor del control se cambia.

Download el código fuente

martes, 10 de mayo de 2016

Utilizando el bloque try/catch en SQL Server para manejar errores

Desde la versión 2005 de Sql Server se incorpora el bloque try/catch para el manejo de errores en el código T-SQL, esta característica similar a la que tienen los lenguajes .NET consiste de dos partes:


BEGIN TRY
 --Sentencias T-SQL de funcionalidad
END TRY

y el bloque CATCH
BEGIN CATCH
 --Sentencias T-SQL para el manejo de error
END CATCH

Cuando se genera un error dentro del bloque TRY, inmediatamente el flujo del programa continua en el bloque CATCH donde el error se procesa de diferentes maneras, sino se genera un error el flujo se salta el bloque CATCH y continua hasta terminar el programa.

Dentro del bloque CATCH puedes utilizar las siguientes funciones del sistema para obtener información del error.

  • ERROR_LINE() - El número de línea que causo el error o donde se ejecutó la orden RAISERROR.
  • ERROR_MESSAGE() - Un texto resumen que indica la naturaleza de error.
  • ERROR_SEVERITY() - Regresa la severidad del error.
  • ERROR_STATE() - Regresa un valor entero que regresa NULL si se ejecutó afuera de un bloque CATCH.
  • ERROR_NUMBER() - Regresa el número de error que causo el error. Esta función regresa el número de error cuando se ejecuta adentro de un bloque CATCH, sino se ejecuta dentro un bloque CATCH regresa NULL.
  • ERROR_PROCEDURE() - regresa el nombre del store procedure o trigger donde ocurrió el error.
  • ERROR_PROCEDURE() - Regresa NULL si el error no ocurre dentro de un STORE PROCEDURE, si se ejecuta dentro de un STORE PROCEDURE o TRIGGER regresa entonces el nombre del STORE PROCEDURE o TRIGGER.

Una de las recomendaciones para la utilización del bloque TRY/CATCH es poner una sentencia ROLLBACK TRANSACTION en el bloque CATCH para que en caso de transacciones parciales se conserve la integridad de la información.

Bien a continuación un ejemplo de como programar un bloque TRY/CATCH en T-SQL:


Cuando se ejecuta este código con el número 25 positivo el programa se ejecuta correctamente y no generará una excepción :

Fig 1 Ejecutándose con un número positivo no genera excepción.


En cambio si se ejecuta con un entero negativo se lanzará una excepción que el bloque CATCH procesará correctamente.

Fig 2 Ejecutándose con un numero negativo genera excepción.


Consultando el catalogo sys.messages

Se puede consultar el catalogo sys.messages para ver la lista completa de números de error y sus correspondientes mensajes con la siguiente sentencia:

SELECT *FROM sys.messages ORDER BY message_id
Fig 3 Consultando el catalogo sys.messages para ver la lista completa de errores y mensajes.


Descarga el código fuente

miércoles, 4 de mayo de 2016

Entendiendo los arreglos en C#

Una de las estructuras de datos básicas en C# son los arreglos, los arreglos son estructuras que contienen elementos del mismo tipo relacionados y de longitud fija. Estas estructuras conservan la misma longitud una vez que se crean; pero esto puede cambiar si a la variable asignada se le asigna un nuevo arreglo con una longitud diferente, a continuación muestro unos ejemplos de como declarar un arreglo:

      int[] array= new int[6];
      int[] array2= {0,1,2,3,4,5};
      var array3 = new int[6]{0,1,2,3,4,5}; 
    

Los elementos de un arreglo pueden ser primitivos, objetos u otros arreglos. Aqui algunos ejemplos: un arreglo con primitivos, objetos y arreglos.

      string[] array4 = new string[6];

            Point[] array5 = new Point[6];

            int[][] jaggedArray = {
                new int[] {0,1},
                new int[] {2,3,4},
                new int[] {5,6}
            }; 
    

Para identificar a un elemento dentro de un arreglo se utiliza la posición del elemento dentro del arreglo, a esta posición se le conoce como el índice del elemento. Es importante recordar que para el primer elemento de cualquier arreglo su índice es zero y que el índice siempre es un entero no negativo.

Cuando se crea un arreglo y a sus elementos no se les proporciona un valor predeterminado entonces cada elemento se crea con su valor predeterminado: 0 para los elementos numéricos, false para los boolean y null para las referencias. La longitud de un arreglo se obtiene con la propiedad Length. Los elementos de un arreglo pueden recorrerse utilizando una iteración for utilizando un indice o bien con una instrucción foreach, la instrucción foreach itera entre los elementos desde el índice 0 hasta el final del arreglo. La instrucción foreach se recomienda para el recorrido de arreglos de solo lectura sin alteración del valor de los elementos, en operaciones donde no se requiere utilizar el indice o bien para los arreglos de tipo objetos.

El siguiente programa con el algoritmo Bubblesort muestra con más claridad las propiedades de los arreglos:


Al ejecutar este programa se mostrará el siguiente resultado:


Descarga el código fuente