Tarea: Analizar el comportamiento en tiempo de ejecución
En esta tarea se describe cómo analizar el comportamiento de un componente durante su ejecución para identificar las mejoras que se pueden realizar.
Disciplinas: Implementación
Objetivo
  • Entender el comportamiento de un componente durante su ejecución.
  • Identificar el comportamiento anómalo y las acciones correctivas necesarias.
Relaciones
RolesRealizador principal: Otras actividades adicionales que realiza:
EntradasObligatoria: Opcional:
Salidas
Uso del proceso
Pasos
Determinar el caso de ejemplo de ejecución necesario
Objetivo:  Identificar la vía de acceso de ejecución que estimulará el comportamiento de tiempo de ejecución deseado

Si la observación y el análisis del comportamiento de tiempo de ejecución están destinados a proporcionar la perspectiva deseada sobre el comportamiento del software, deberá considerar qué vías de acceso de ejecución es importante explorar en toda la aplicación, y de éstas, cuáles ofrecerán más oportunidades de entender el comportamiento de tiempo de ejecución del software.

En general, los casos de ejemplo más útiles de explorar tienden a reflejar todos o una parte de los que utilizará normalmente el usuario. Por lo tanto, siempre que sea posible, se recomienda identificar los casos de ejemplo haciendo preguntas o consultando de otra forma a un experto del dominio como, por ejemplo, un usuario representativo del software que se está desarrollando.

Los casos de uso ofrecen un conjunto valioso de artefactos a partir de los cuales se pueden identificar y explorar casos de ejemplo útiles. Como desarrollador, los artefactos más familiares serán las realizaciones de caso de uso , por las que deberá empezar si están disponibles. En la ausencia de realizaciones de caso de uso , identifique los casos de ejemplo disponibles que ofrezcan una explicación textual de la vía por la que navegará el usuario a través de los distintos flujos de sucesos en el caso de uso . Por último, se pueden consultar los flujos de sucesos del caso de uso para proporcionar información a partir de la cual identificar los casos de ejemplo candidatos. El éxito de este último enfoque mejora si se consulta a un representante quién es el actor de los casos de uso o otro experto en el dominio.

Los verificadores constituyen otro recurso útil que consultar cuando se intentan identificar los casos de ejemplo útiles para el análisis de tiempo de ejecución. Los verificadores a menudo tienen conocimientos y experiencia con el dominio gracias a los esfuerzos de prueba que los convierte en pseudoexpertos en el dominio. En muchos casos, el estímulo de observar el comportamiento del tiempo de ejecución provendrá de los resultados del mismo esfuerzo de prueba.

Si esta tarea está dirigida por un defecto notificado, el objetivo principal será reproducirlo en un entorno controlado. Según la información registrada al ocurrir el problema, se deben identificar varios guiones de prueba como candidatos posibles para que se produzca el defecto de forma fiable. Puede que tenga que ajustar algunas de las pruebas o escribir otras nuevas, pero recuerde que reproducir el defecto es un paso fundamental y que, en los casos más difíciles, se necesitará más tiempo para estabilizar el defecto que para solucionarlo.

Preparar el componente de implementación para la observación de tiempo de ejecución
Objetivo: Garantizar que el componente está preparado en un estado adecuado para habilitar la ejecución del tiempo de ejecución

Para que la ejecución del tiempo de ejecución del componente dé resultados precisos, debe preparar atentamente el componente para que no se produzcan resultados anómalos debidos a errores en la implementación, la compilación o el enlace.

A menudo, es necesario utilizar componentes fragmentados para que la observación del tiempo de ejecución se pueda completar en el tiempo estipulado, o para que se pueda llevar a cabo en situaciones en las que el componente depende de otros componentes que no se han implementado todavía.

También deberá preparar la infraestructura o dar soporte a las herramientas necesarias para ejecutar el componente. En algunos casos, esto significará crear controladores o código de banco de pruebas para dar soporte a la ejecución del componente; en otros casos, significará instrumentar el componente para que las herramientas de soporte externas puedan observar e incluso controlar el comportamiento de los componentes.

Preparar el entorno para la ejecución
Objetivo: Garantizar que la configuración de requisitos previos del entorno de destino ha finalizado satisfactoriamente.

Es importante tener en cuenta los requisitos y las restricciones que se deben considerar para el entorno de destino en el que se realizará el análisis del tiempo de ejecución. En algunos casos, será necesario simular uno o varios de los entornos de despliegue previstos en los que se deberá ejecutar el componente en última instancia. En otros casos, bastará con ejecutar y observar el comportamiento del tiempo de ejecución en la máquina de los desarrolladores.

En cualquier caso, es importante configurar correctamente el entorno de destino para la observación del tiempo de ejecución, para que el ejercicio no se malgaste por la inclusión de "contaminantes" que puedan invalidar los análisis posteriores.

Otra consideración a tener en cuenta es el uso de herramientas que generan restricciones de entorno o condiciones de excepción que son difíciles de reproducir de otra forma. Estas herramientas son muy útiles para aislar anomalías o errores que se producen en el comportamiento del tiempo de ejecución en estas condiciones.

Ejecutar el componente y capturar observaciones del comportamiento
Objetivo: Observar y capturar el comportamiento del tiempo de ejecución del componente.

Una vez preparados el componente y el entorno en el que se observará, puede empezar a ejecutar el componente en el caso de ejemplo seleccionado. Dependiendo de las técnicas y las herramientas empleadas, este paso se puede ejecutar en su gran parte de forma desatendida o puede ofrecer (o incluso necesitar) atención continua a medida que progresa el caso de ejemplo.

Revisar las observaciones de comportamiento y aislar los resultados iniciales
Objetivo: Identificar las anomalías y los errores en el comportamiento del tiempo de ejecución de los componentes

Ya sea durante cada paso o al final del caso de ejemplo que está observando, busque anomalías o errores en el comportamiento esperado. Tome nota de todas las observaciones que haga o de las impresiones que tenga que crea que puedan estar relacionadas con el comportamiento anómalo.

Analizar los resultados para entender la causa raíz
Objetivo: Entender la causa raíz de todo error y anomalía

A partir de los resultados, empiece a investigar la anomalía subyacente o la causa raíz de cada anomalía.

Identificar y comunicar las acciones de seguimiento
Objetivo: Sugerir investigaciones adicionales o acciones correctivas

Una vez revisados todos los resultados, tendrá una lista de ideas o intuiciones que necesitarán una investigación adicional y, probablemente, acciones correctas específicas. Si no va a realizar ninguna acción inmediata en estos elementos, registre las propuestas con el formato adecuado y comuníquelas a los miembros del equipo, que pueden aprobar o incluso llevar a cabo las propuestas.

Evaluar los resultados
Objetivo: Verificar que la tarea se ha realizado correctamente y que los productos de trabajo resultantes son aceptables.

Ahora que ha terminado el trabajo, se recomienda verificar que el trabajo tenía el valor suficiente. Debe evaluar si el trabajo tiene la calidad correcta y si es lo suficientemente completo para que resulte útil a aquellos miembros del equipo que vayan a utilizarlo posteriormente como entrada de su trabajo. Siempre que sea posible, utilice las listas de comprobación proporcionadas en RUP para verificar que la calidad y la completitud son lo "suficientemente buenas".

Intente que las personas que utilizarán el producto como entrada para realizar tareas en sentido descendente formen parte de la revisión del trabajo interno. Hágalo mientras todavía tenga tiempo para realizar acciones para solucionar sus problemas. También debe evaluar su trabajo en los productos de trabajo de entrada clave para asegurarse de que los ha representado o considerado de forma precisa y suficiente. Para ello, es muy útil hacer que el autor del producto de trabajo de entrada revise su trabajo.

Recuerde que RUP es un proceso de entrega iterativo y que en muchos casos los productos de trabajo evolucionan con el tiempo. Como tal, no siempre es necesario (y en muchos casos es contraproducente) formar completamente un producto de trabajo que sólo se utilizará de forma parcial o que no se utilizará en absoluto en los trabajos en sentido descendente inmediatamente posteriores. Esto se debe a que existe una alta probabilidad de que la situación alrededor del producto de trabajo cambie (y que las suposiciones realizadas cuando se creó el producto de trabajo se demuestre que son incorrectas) antes de que se utilice el producto, lo que da como resultado un esfuerzo inútil y la necesidad de revisión.

Asimismo, evite la trampa de invertir un exceso de ciclos en la presentación en detrimento del valor del propio contenido. En entornos de proyecto en los que la presentación tenga importancia y un gran valor económico como entregable del proyecto, puede utilizar un recurso administrativo o secundario para ejecutar trabajo en un producto de trabajo y mejorar de esta forma su presentación.



Más información