Tarefa: Analisar Comportamento do Tempo de Execução
Essa tarefa descreve como analisar o comportamento de um componente durante sua execução, para identificar aperfeiçoamentos que podem ser feitos.
Disciplinas: Implementação
Objetivo
  • Entender o comportamento de um componente durante sua execução.
  • Identificar comportamento anormal e todas as ações corretivas exigidas.
Relacionamentos
FunçõesExecutor Primário: Executores Adicionais:
EntradasObrigatório:
    Opcional:
      Saídas
        Etapas
        Determinar Cenário de Execução Requerido
        Finalidade:  Identificar o caminho de execução que estimulará o comportamento de tempo de execução desejado

        Se a observação e análise do comportamento do tempo de execução precisar fornecer a percepção desejada para o comportamento do software, será necessário considerar quais caminhos de execução através do aplicativo serão importantes para explorar e, destes, quais oferecerão maior oportunidade de entender o comportamento do tempo de execução do software.

        Em geral, os cenários mais úteis para explorar costumam refletir todos ou parte daqueles que o usuário normalmente utilizará. Como tal, sempre que possível, será útil identificar os cenários, questionando ou então consultando um especialista em domínio, como um usuário representante do software que está sendo desenvolvido.

        Os casos de uso oferecem um conjunto valioso de artefatos dos quais cenários úteis podem ser identificados e explorados. Para um desenvolvedor, o mais familiar deles será provavelmente as realizações de casos de uso com as quais você deverá começar, se disponíveis. Na ausência de realizações de casos de uso, identifique todos os cenários de casos de uso disponíveis que ofereçam uma explicação textual do caminho pelo qual o usuário navegará através dos vários fluxos de eventos no caso de uso. Finalmente, os fluxos de eventos dos casos de uso podem ser consultados para que forneçam informações das prováveis sugestões de cenários que possam ser identificadas. O sucesso dessa última abordagem é aprimorado pela consulta com um representante para obter o agente de casos de uso ou outro especialista em domínio.

        Os testadores são outro recurso útil a ser consultado, ao tentar identificar cenários úteis para análise de tempo de execução. Geralmente, os testadores têm percepção e experiência no domínio devido aos esforços de testes que os tornam especialistas em pseudo-domínio. Em muitos casos, o estímulo em observar o comportamento do tempo de execução do software virá dos resultados do próprio esforço de teste.

        Se essa tarefa for motivada por um defeito relatado, o foco principal será reproduzi-lo em um ambiente controlado. Com base nas informações registradas quando o problema ocorreu, vários casos de teste precisam ser identificados como potenciais sugestões para provocar a ocorrência do defeito com segurança. Talvez seja necessário refinar alguns dos testes ou elaborar novos, mas lembre-se de que a reprodução do defeito é uma etapa essencial e, para os casos mais difíceis, levará mais tempo para estabilizar o defeito do que para corrigi-lo.

        Preparar Componente de Implementação para Observação do Tempo de Execução
        Finalidade: Garantir que o componente esteja pronto em um estado apropriado para permitir o tempo de execução

        Para permitir que o tempo de execução do componente produza resultados com precisão, tenha cuidado de preparar o componente de forma satisfatória para que nenhum resultado anormal ocorra, como um subproduto de erros de implementação, compilação ou vínculo.

        Muitas vezes, será necessário utilizar componentes em stub, para que a observação do tempo de execução possa ser concluída em tempo oportuno ou para que possa de fato ser conduzida em situações nas quais o componente depende de outros componentes que ainda não foram implementados.

        Você precisará também preparar todas as ferramentas de suporte ou estrutura necessárias para executar o componente. Em alguns casos, isso pode significar a criação do driver ou do código de proteção para suportar a execução do componente; em outros casos, pode significar a instrumentação do componente de maneira que as ferramentas de suporte externas possam observar e possivelmente controlar o comportamento dos componentes.

        Preparar o Ambiente para Execução
        Finalidade: Garantir que a configuração dos pré-requisitos do ambiente de destino tenha sido concluída da forma satisfatória.

        É importante considerar todos os requisitos e limitações que devem ser tratados para o ambiente de destino no qual ocorrerá a análise do tempo de execução. Em alguns casos, será necessário simular um ou mais dos ambientes de implementação pretendidos, no qual a execução do componente enfim será exigida. Em outros casos, será suficiente executar a observação do comportamento do tempo de execução na máquina dos desenvolvedores.

        Em qualquer dos casos, será importante configurar o ambiente de destino, para obter uma observação satisfatória do tempo de execução, de forma que o teste não seja desperdiçado pela inclusão de "contaminantes" que possivelmente invalidarão a análise subseqüente.

        Outra consideração é utilizar as ferramentas que geram limitações ambientais ou condições de exceção que, por outro lado, são difíceis de reproduzir. Tais ferramentas são inestimáveis no isolamento de defeitos ou anomalias que ocorrem no comportamento do tempo de execução sob essas condições.

        Executar o Componente e Capturar Observações Comportamentais
        Finalidade: Observar e capturar o comportamento do tempo de execução do componente.

        Tendo preparado o componente e o ambiente no qual ele será observado, comece agora a executar o componente no cenário escolhido. Dependendo das técnicas e das ferramentas empregadas, essa etapa poderá ser executada basicamente de forma não assistida ou poderá oferecer (ou mesmo exigir) atenção contínua conforme a progressão no cenário.

        Revisar Observações Comportamentais e Isolar Descobertas Iniciais
        Finalidade: Identificar defeitos e anomalias no comportamento do tempo de execução dos componentes

        Durante cada etapa ou na conclusão do cenário que estiver observando, procure por defeitos ou anomalias no comportamento esperado. Tome nota de cada observação feita ou das impressões que você teve e que talvez estejam relacionadas ao comportamento anormal.

        Analisar Descobertas para Compreender as Causas Raiz
        Finalidade: Entender a causa raiz de qualquer defeito e anomalia

        Utilize suas descobertas para começar a investigar falhas encobertas ou a causa raiz de cada defeito.

        Identificar e Comunicar Ações de Acompanhamento
        Finalidade: Sugerir ações adicionais de investigação ou correção

        Depois de revisar todas as descobertas feitas, provavelmente você terá uma lista de idéias ou cogitações que exigirão investigação adicional e possivelmente ações corretivas específicas que serão propostas. Se você não for tomar uma ação imediata sobre esses itens por conta própria, anote suas propostas de maneira apropriada e comunique-as aos membros de sua equipe que podem aprovar ou encarregar-se delas.

        Avaliar Seus Resultados
        Finalidade: Verificar se a tarefa foi concluída apropriadamente e se os produtos de trabalho resultantes são aceitáveis.

        Agora que o trabalho foi concluído, é recomendável verificar se o trabalho foi vantajoso. Você deve avaliar se o trabalho é de qualidade adequada e se ele é completo o suficiente para ser útil aos membros da equipe que o utilizarão em seguida como entrada para o trabalho deles. Onde for possível, utilize listas de verificação fornecidas no RUP para verificar se a qualidade e a abrangência são "suficientemente boas".

        Permita que as pessoas que utilizarão seu trabalho como entrada, durante a execução das tarefas de recebimento de dados, façam parte da revisão do trabalho provisório. Faça isso enquanto você tiver tempo disponível para tomar alguma ação para resolver os problemas delas. Você também deve avaliar seu trabalho em relação aos principais produtos de trabalho de entrada, para certificar-se de que eles foram representados ou considerados de forma precisa e suficiente. Pode ser conveniente que o autor do produto de trabalho de entrada revise o seu trabalho nesse sentido.

        Não se esqueça que o RUP é um processo de entrega iterativo e que, em muitos casos, os produtos de trabalho evoluem com o tempo. Como tal, nem sempre é necessário e, em muitos casos, é contraproducente, formar completamente um produto de trabalho que será utilizado apenas parcialmente ou que nem será utilizado imediatamente no trabalho subseqüente de recebimento de dados. Isso acontece porque há uma grande probabilidade de alteração na situação em torno do produto de trabalho e de que as suposições feitas durante a criação do produto de trabalho estejam incorretas, antes do produto de trabalho ser utilizado, resultando em retrabalho e, portanto, em esforço em vão.

        Evite também a armadilha de gastar muitos ciclos na apresentação em detrimento do valor do próprio conteúdo. Em ambientes de projeto, onde a apresentação tem importância e valor econômico como um produto distribuível, você pode considerar a utilização de um recurso administrativo ou junior para executar o trabalho em um produto de trabalho, a fim de aprimorar sua apresentação.



        Informações Adicionais