Uma Ferramenta para Visualização de Relacionamentos de Rastreamentos Iago Luiz Teixeira de Moraes Orientador: Gilberto A. de A. Cysneiros Filho Plano de Trabalho Individual do Bolsista submetido para o Edital FACEPE 02/2012 Abril 2012 1. Introdução Para informação de rastreamento ser útil, ela deve refletir as dependências correntes entre os artefatos, contudo o custo e esforço para identificar e manter os relacionamentos de rastreamento e alto. Em pesquisas anteriores, nós somente lidamos com o problema de identificar relacionamentos de rastreamente automaticamente. Nós acreditamos que seria bastante útil estender nossa abordagem para suportar a visualização e navegação dos relacionamentos. Nossa experiência tem demonstrado que um grande número de relações são identificadas automaticamente entre os vários modelos e é importante ter uma maneira melhor de visualizar e manipular esses relacionamentos do que o tem sido feito atualmente pela nossa abordagem. A versão atual de nossa ferramenta permite a criação de relatórios em HTML das relações identificados pela abordagem que podem ser vistas através de um navegador, mas reconhecemos que são necessários outras formas de visualização e de navegação dos relacionamentos identificados pela abordagem. Marcus et al. apresenta (Marcus, et al., 2003) um conjunto de requisitos que são necessários para se criar uma ferramenta que suporte a visualização dos relacionamentos de rastreamento. Exemplos desses requisitos são: i) permitir que o usuário navegue nos relacionamentos através de várias maneiras; ii) permitir que o usuário adicione, remova e modifique propriedades dos relacionamentos identificados e dos artefatos relacionados; iii) integração com ferramentas usadas para desenvolver, testar e manter o sistema; iv) fornecer gerenciamento de configuração e maneiras de rastrear mudanças; v) fornecer suporte a vários formatos de representação de dados; vi) fornecer suporte para consultar e filtrar os relacionamentos de rastreamento; vii) oferecer maneiras flexíveis e customizáveis para se visualizar informações de rastreamento; Nós podemos usar esses requisitos como base para a criação da nossa ferramenta para visualização e navegação dos relacionamentos de rastreamentos. As maneiras mais comuns para se mostrar relacionamentos de rastreamento segundo são através do uso de matrizes, referências cruzadas e representação baseada em grafos. Uma matriz de rastreamento é uma grade bi-dimensional que representa os relacionamentos de rastreamentos que existem entre dois conjuntos de tipos de artefatos, tais como: requisitos e elementos de projeto. As linhas e colunas da grade são associadas com os artefatos e as marcas (normalmente um X ou uma seta) representam a existência de um relacionamento. Essa forma de visualização é a mais tradicional na área de rastreamento de requisitos. No início, matrizes de rastreamento somente forneciam suporte para um único tipo de marca para representar a existência de um relacionamento entre dois artefatos, atualmente o tipo do relacionamentos podem ser representados usando diferentes cores e símbolos. Além disso, informações adicionais sobre os relacionamentos e artefatos podem ser obtidas, por exemplo, através do clique do mouse. As vantagens do uso de matrizes é que elas são fáceis de enteder. Contudo para projetos reais onde o número de relacionamentos é muito grande, ela se torna mais díficil de ler. Além disso, as matrizes não mostram a hierarquia inerente dos relacionamentos, como também com o uso de matrizes é díficil de se navegar através do relacionamentos entre os artefatos recursivamente. Relacionamentos de rastreamento também podem ser expressos usando referências cruzadas. Referências cruzadas são usadas, por exemplo, quando nós fazemos uma referência a figura no texto (ex. veja Figura X) ou fazemos referência a uma sentença de um livro. Mais recentemente, referências cruzadas tem sido representadas da forma de um hyperlink que permite a navegação para o elemento fonte da informação através do hyperlink. Normalmente, ferramentas mostram os relacionamentos de um artefato usando uma visão hierárquica representados numa forma de uma árvore. O uso de referência cruzada torna mais difícil de se ter a visão geral dos relacionamentos e portanto é mais difícil de encontrar relacionamentos que não foram identificados ou foram identificados incorretamente. Usando grafos, artefatos podem ser intrepretados como nós e relacionamentos de rastreamento como vértices. Uma representação usando grafos pode precisar de menos espaço para representar uma informação global sobre os relaciomentos. As principais desvantagens do uso da notação de grafo é que elas são menos intuitivas do que matrizes e referências curzadas. Além disso, a adição de relacionamentos de rastreamento aos diagramas existente é uma tarefa complexa. Além desses três tipos de visualização tradicionais existem vários trabalhos que usam novas técnicas para visualização de rastreamento. Por exemplo, Marcus et al. (Marcus et al. 2005) desenvolveu um protótipo de uma ferramenta chamado TraceViz que se integra com o Eclipse IDE e permite navegação entre as informações de rastreamento no TraceViz e do código fonte no Eclipse. TraceViz é composto de três principais áreas: a área dos elementos, a área dos relacionamentos de rastreamento e área de informação. A área dos elementos mostra os elementos fonte e destino numa forma hierárquica de uma árvore. A área dos relacionamentos mostra todos os relacionamentos para um específico elemento selecionado na área de elementos. Os relacionamentos são agrupados em categorias que pode ser selecionadas. A área de informação contém todas as propriedades e história de navegação de um determinado relacionamento. Outra técnica de visualização de relacionamento de rastreamento foi proposta por Voytek et al. (Voytek et al, 2011). A técnica é baseada numa representação baseada em grafos composto de anéis que representam o artefato de projeto e nós que representam os relacionamentos. Heim et al. também apresenta uma abordagem baseada em grafos que representa requisitos como nós e relacionamentos como vértices. A abordagem trata o problema que grafos não escalam bem para grande quantidade de dados se tornando díficil de entender, mostrando apenas um conjunto limitado de elementos baseado no contexto. Nossa metodologia de trabalho será investigar a literatura e as pesquisas realizadas para exibir informações de relacionamento de rastreamento. Baseado nesse estudo e nos requisitos propostos por (Marcus, et al., 2003) para se criar uma ferramenta que suporte a visualização dos relacionamentos de rastreamento nós desenvolveremos uma ferramenta para visualização de relacionamentos de rastreamento. Em particular, nós pretendemos investigar a viabilidade do uso de grafos acíclicos (directed acycllic graph – DAGs) para criar uma ferramenta de visualização para mostrar relacionamentos de rastreamento. DAGs podem ser usados para modelar diferentes tipos de estrutura na matemática e ciência da computação. Você poderia por exemplo usar XML para codificar um DAG que representa as relações de rastreamento de artefatos de software. Tais grafos, por exemplo, poderiam ser úteis para mostrar caminhos críticos. Existem várias ferramentas que suportam a representação de grafos, tais como: Graphviz, yEd, Microsoft Automatic Graph Layout, Tom Sawyer Software e Tulip. Uma possibilidade seria investigar a possibilidade de integrar essas ferramentas com nossa abordagem de rastreamento. 2. Cronograma de Atividades Meses 6 7 8 1 2 3 4 5 9 10 11 12 ATIVIDADES Revisão Bibliográfica X X X Desevolvimento dos Estudo de Casos X X Projeto da Ferramenta de Visualização X X Implementaçaõ da Ferramenta de Visualização X X X Avaliar os resultados X X Elaborar um artigo com os resultados X 3. Bibliografia Asuncion, H., François, F., & Taylor, R. (2007). An end-to-end industrial software traceability tool. Proceedings of the the 6th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering, Dubrovnik, Croatia. Cleland-Huang, J., Chang, C., & Christensen, M. (2003). Event-based traceability for managing evolutionary change. IEEE Trans. Software Eng., 29(9), 796-810. Cysneiros, G., Zisman, A., & Spanoudakis, G. (2003). A traceability approach for i* and UML models. Proceedings of 2nd International Workshop on Software Engineering for Large-Scale Multi-Agent Systems - ICSE 2003, Portland, USA. Cysneiros, G. & Zisman, A. (2007). Traceability for agent-oriented design models and code. Proceedings of the 4th ACM International Workshop on Traceability in Emerging Forms of Software Engineering (GCT/TEFSE’07), Lexington, KY, USA. Cysneiros, G. & Zisman, A. (2007). Tracing agent-oriented systems. Proceedings of the The Nineteenth International Conference on Software Engineering and Knowledge Engineering (SEKE'2007), Boston, Massachusetts, USA, 552-558. Cysneiros, G., & Zisman, A. (2008). Traceability and completeness checking for agentoriented systems. Proceedings of the 2008 ACM Symposium on Applied Computing, Fortaleza, Ceara, Brazil. 71-77. De Lucia, A., Fasano, F., Oliveto, R., & Tortora, G. (2007). Recovering traceability links in software artifact management systems using information retrieval methods. ACM Trans.Softw.Eng.Methodol., 16(4). De Lucia, A., Oliveto, R., & Tortora, G. (2008). Adams re-trace: Traceability link recovery via latent semantic indexing. Proceedings of the 30th International Conference on Software Engineering, Leipzig, Germany. 839-842. Dick, J. (2002). Rich Traceability. Proceedings of the 1st International Workshop on Traceability for Emerging forms of Software Engineering . Edinburgh, UK Gotel, O. & Finkelstein, A. (1994). An analysis of the requirments traceability problem. Proceedings of the 1st International Conference on Requirements Engineering. 94-101. Gotel, O. & Morris, S. (2007). From Farm to Fork or a Bite of the Unknown: Learning from the Food Industry. Proceedings of the 4th ACM International Workshop on Traceability in Emerging Forms of Software Engineering (GCT/TEFSE’07), Lexington, KY, USA. Gotel, O. (2008). yTraceability – Putting the ‘y’ first. Requirements Quarterly: The Newsletter of the Requirements Engineering Specialist Group of the British Computer Society. RQ50. Hayes, J. H., Dekhtyar, A., Sundaram, S. K., Holbrook, E. A., Vadlamudi, S., & April, A. (2007). REquirements TRacing on target (RETRO): Improving software maintenance through traceability recovery. ISSE, 3(3), 193-202. Lormans, M. & Van Deursen, A. (2006). Can LSI help reconstructing requirements traceability in design and test? Proceedings of the Conference on Software Maintenance and Reengineering, 47-56. Marcus, A., Maletic, J. I., & Sergeyev, A. (2005). Recovery of traceability links between software documentation and source code. International Journal of Software Engineering and Knowledge Engineering, 15(4), 811-836. Murta, L. G. P., van der Hoek, A., & Werner, C. M. L. (2006). ArchTrace: Policy-based support for managing evolving architecture-to-implementation traceability links. Proceedings of the 21st IEEE/ACM International Conference on Automated Software Engineering, 135-144. Pinheiro, F. A. C. & Goguen, J. A. (1996). An object-oriented tool for tracing requirements. IEEE Software, 13(2), 52-64. Pohl, K. (1996). Process-centered requirements engineering. John Wiley & Sons, Inc. Sherba, S. (2005). Towards automating traceability: An incremental and scalable approach. (Unpublished doctoral dissertation). University of Colorado at Boulder, Boulder, USA. Ramesh, B. & Jarke, M. (2001). Toward reference models for requirements traceability. IEEE Transactions on Software Engineering, 27(1), 58-93. Sharif, B. & Maletic J. (2007). Using fine-grained differencing to evolve traceability links, Proceedings of the 4th ACM International Workshop on Traceability in Emerging Forms of Software Engineering (GCT/TEFSE’07). Voytek, J. & Núñez, J. (2011), Visualizing Non-Functional Traces in Student Projects in Information Systems and Service Design. Proceedings of the CHI 2011.