200 likes | 317 Views
PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL Faculdade de Informática Programa de Pós-Graduação em Ciência da Computação Plano de Estudo e Pesquisa. Estratégia para desenvolvimento de programas paralelos visando diminuir a intrusão causada pelo teste por Leonardo Albernaz Amaral
E N D
PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SULFaculdade de InformáticaPrograma de Pós-Graduação em Ciência da ComputaçãoPlano de Estudo e Pesquisa Estratégia para desenvolvimento de programas paralelos visando diminuir a intrusão causada pelo teste por Leonardo Albernaz Amaral Pesquisador e Bolsista – CPTS (PUCRS - HP) Orientador: Prof. Eduardo Augusto Bezerra
CRONOGRAMA DA APRESENTAÇÃO • Referencial Teórico (breve revisão dos principais conceitos) • Teste de Software; • Teste e Depuração de Programas paralelos; • Testando o não-determinismo de programas paralelos; • Trabalhos Relacionados; • Proposta de Trabalho • Objetivos do Trabalhos • Cronograma das atividades para 2005
Referencial Teórico ... uma breve revisão do principais conceitos
Teste de Software • Teste de Software? • Considerado uma das etapas mais importantes e difíceis do ciclo de vida de um software; • Objetivo do Teste? • Fazer uma análise dinâmica no programa; • Detectar a maior quantidade possível de erros; • Aumentar a aceitabilidade, qualidade e confiabilidade;
Teste de Software • Tipos de Teste: • Unidade: (testar módulos ou pequenas partes do sistema); • Integração: (testar a integração dos módulos – interface entre os módulos); • Validação ou Sistema: (testar a consistência do sistema após a integração); • Critérios de Teste: • Funcional: (especificações do programa – testa o que ele deve fazer - comportamento); • Estrutural: (estrutura do programa - exercita os componentes de software); • Baseado em Erros: (conhecimento dos erros típicos cometidos no desenvolvimento); • Estatístico: (modelos de utilização do programa – medições de confinabilidade)
auxiliar na geração de casos de teste; • avaliação da adequação desses casos de teste; Teste de Software • Objetivo das técnicas e dos critérios de teste? • Criar uma estratégia de teste • Casos de teste? • Par ordenado (d, S(d)), onde d são as entradas e S(d) são as saídas esperadas; int max(int a, int b){ int resultado; resultado = a; if (a < b){ resultado = b; } return resultado; } entradas saídas Caso de teste considerado FRACO – pois não detectou nenhum erro!
Teste de Software • Ciclo de teste e depuração: Cyclic Debugging: capacidade de reprodução de um erro. Teste Depuração
Teste e Depuração de Programas Paralelos • Teste e Depuração de Programas paralelos é bem mais complicado que em programas seqüenciais; • Quatro principais razões: • Aumento da complexidade dos programas paralelos (maior número de processos); • Quantidade de dados depurados (muita coleta de informações); • Efeitos anômalos adicionais (comunicação entre os processos); • Não-determinismo; irreproducibility effect (incapacidade de realizar cyclic debugging) não-determinismo completeness problem (Dificuldade de realizar teste completo – inúmeros caminhos de execução) probe effect (intrusão causada pelo uso de monitores) (mais de um caminho de execução)
Testando o não-determinismo de Programas Paralelos • Fonte do não-determinismo em Programas Paralelos: troca de mensagens • Através das primitivas de comunicação assíncronas; recv(buffer, any-source) Foco nesse trabalho • Recebimento simultâneo de várias mensagens, sem determinação de ordem de chegada; • Resultados diferentes a cada execução;
Testando o não-determinismo de Programas Paralelos • Solução genérica encontrada para o problema do não-determinismo: • Existem diversas técnicas, mas todas baseadas em record/replay; • record/replay: • Coletar informações referentes a execução do programa (cria trace file); • Re-executar esse programa através dos dados gravados (re-executa trace file); • Etapas: • Monitoração (observar o programa coletando informações): • Monitor de Hardware; • Monitor de Software; • Monitor Híbrido; • Instrumentação (inserção de sondas para monitoração– probe effect): • Manual; • Automática (Substituição dos eventos através de funções de macros – monitor.h);
Trabalhos Relacionados • Eliminar o não-determinismo criando execuções deterministas; • Record/replay (técnica básica): • event manipulation (manipulação dos eventos não-determinísticos); • artificial replay (re-execução controlada de maneira determinística); manipula-se os eventos forçando uma execução dirigida para eventos especí- ficos.
Proposta de Trabalho ... o que pretende-se fazer ?
Proposta de Trabalho Fazer um estudo sobre Teste e Depuração de programas paralelos, com o objetivo de propor uma estratégia para desenvolvimento de programas paralelos, visando diminuir a intrusão causada pelo teste. Estudo Estratégia Abordagens do STAGE modelo da aplicação casos de teste do modelo Estratégia Proposta Abordagens de Teste e Depuração de Programas Paralelos scripts de teste Módulo de teste Avaliar e adaptar as técnicas do STAGE para programas paralelos; Avaliar as técnicas de teste de Programas Paralelos para a criação de um módulo de teste;
Objetivos do Trabalho ... descrição do objetivo geral e específicos
Objetivos do Trabalho • Objetivo Geral: • Pretende-se fazer um estudo sobre teste e depuração de programas paralelos, com o objetivo de propor uma estratégia para desenvolvimento de programas paralelos visando diminuir a intrusão causada pelo teste. • Objetivos Específicos: • Fazer revisões bibliográficas sobre teste e depuração de programas paralelos e sobre as técnicas utilizadas no STAGE (incluindo a construção de modelos SAN); • Adaptar as abordagens estudadas sobre teste e depuração de programas paralelos na criação do módulo de teste (engine), visando o teste funcional da aplicação. • Eventualmente, adaptar também as técnicas do STAGE para a criação do modelo da aplicação paralela, dos casos de teste e dos scripts de teste (inicialmente de forma manual); • Fazer dois estudos de caso, um inicial baseado em alguns modelos paralelos simples. E outro que será o estudo de caso principal, já direcionado para estratégia proposta; • Medir no estudo de caso inicial a intrusão causada pela inserção dos monitores, para no estudo de caso principal, avaliar e definir como diminuir essa intrusão; • Definir uma estratégia para criação de programas paralelos e etapas de teste menos intrusivas baseado nesses estudos e experimentos;
Cronograma ... descrição das atividades propostas para 2005
Cronograma para 2005 • Cronograma das atividades previstas para 2005:
Cronograma para 2005 • Cronograma das atividades previstas para 2005: • 1. Levantamento Bibliográfico: Revisão do material já conseguido e busca de outras referências que ajudem na construção dos estudos de caso e na definição da estratégia a ser proposta ; • 2. Definição de uma estratégia: Baseado na revisão bibliográfica feita na atividade 1, definir uma estratégia inicial para a construção de programas paralelos visando diminuir a intrusão causada pelas etapas de teste . • 3. Estudo de Caso inicial/avaliação dos resultados: Criação de um estudo de caso inicial baseado em alguns modelos paralelos simples. Implementação dos modelos no SAN. Codificação da aplicação baseada no modelo. Inserção manual dos monitores no código da aplicação. Testes e avaliação dos resultados . • 4. Estudo de Caso principal: Avaliação e adaptação dos resultados conseguidos no estudo de caso inicial (atividade 3). Adaptação das técnicas de teste e depuração estudadas na atividade 1, para a criação de um módulo de teste funcional menos intrusivo para programas paralelos. E eventualmente adaptar as técnicas utilizadas no STAGE numa cooperação de projetos entre CPTS – CAP, para agregar funcionalidades ao módulo de teste proposto. • 5. Avaliação e validação dos resultados dos estudos de caso: Avaliação dos resultados conseguidos na atividade 4 e validação da estratégia proposta .
Cronograma para 2005 • Cronograma das atividades previstas para 2005: • 6. Seminário de andamento; • 7. Redação de artigos científicos; • 8. Redação da Dissertação de Mestrado; • 9. Entrega da Dissertação; • 10. Seminário Final;
Bibliografias [1] Boehm, B. W. “Software Engineering”, IEEE Transactions on Computers, 1976. [2] Foster, I.T. “Designing and Building Parallel Programs: Concepts and Tools for Parallel Software Engineering”, Addison-Wesley, 1995. [3] Kranzlmüller, D., Schulz, M. “Nondeterminism in Message Passing Programs”, 9th European PVM/MPI Users Group Meeting, Springer, 2002. [4] Kranzlmüller, D., Schulz, M. “Event Graph Analysis for Parallel Program Testing”, PhD thesis, GUP Linz, Joh. Kepler University Linz, Austria, http://www.gup.uni-linz.ac.at/~dk/thesis, 2000. [6] Perry, W. E. “Effective Methods for Software Testing”, John Wiley & Sons, Inc, 1999. [7] Pradhan, D. K. “Fault-Tolerant Computer System Design”, Prentice Hall, 1994. [10] Baldo, L., Fernandes, L. G., Fernandes, P., Sales, A., Brenner, L. ”Performance Models for Master/Slave Parallel Programs”, Proceedings of PASM, Londres, 2004. [11] Gropp, W., Lusk, E., Doss, N., Skjellum, A. “A High-Performance, Portable Implementation of the MPI Message Passinig Interface Standard”, ACM - Parallel Computing, 1996. [15] McDowell, C. E., Helmbold, D. P. “Debugging Concurrent Programs”, ACM Computing Surveys, 1989. [16] Ronsse, M., De Bosschere, K., De Kergommeaux, J.C. “Execution replay and debugging”, 4th Intl. Workshop on Automated Debugging, AADEBUG, 2000. [21] Kranzlmüller, D., Grabner, S., Volkert, J. “Using Control and Data Flow Analysis for Race Evaluation”, Euro-Par Parallel Processing, 3rd Intl. Euro-Par Conference, Lecture Notes in Computer Science, Springer-Verlag, 1999. [23] Grabner, S., Volkert, J., “Debugging Distributed Memory Programs Using Communication Graph Manipulation”, HPCS’96, 10th Annual International Symposium on High Performance Computing Systems, 1996.