Congresso Brasileiro de Software: Teoria e Prática 28 de setembro a 03 de outubro de 2014 – Maceió/AL IV WORKSHOP DE TESES E DISSERTAÇÕES DO CBSOFT WTDSoft 2014 Anais WTDSoft Volume 02 ISSN 2178-6097 Anais WTDSoft 2014 IV WORKSHOP DE TESES E DISSERTAÇÕES DO CBSOFT COORDENADOR DO COMITÊ DE PROGRAMA Eduardo Santana de Almeida - Universidade Federal da Bahia (UFBA) COORDENAÇÃO DO CBSOFT 2014 Baldoino Fonseca - Universidade Federal de Alagoas (UFAL) Leandro Dias da Silva - Universidade Federal de Alagoas (UFAL) Márcio Ribeiro - Universidade Federal de Alagoas (UFAL) REALIZAÇÃO Universidade Federal de Alagoas (UFAL) Instituto de Computação (IC/UFAL) PROMOÇÃO Sociedade Brasileira de Computação (SBC) PATROCÍNIO CAPES, CNPq, INES, Google APOIO Instituto Federal de Alagoas, Aloo Telecom, Springer, Secretaria de Estado do Turismo AL, Maceió Convention & Visitors Bureau, Centro Universitário CESMAC e Mix Cópia 2 WTDSoft PROCEEDINGS Volume 02 ISSN 2178-6097 WTDSoft 2014 IV WORKSHOP DE TESES E DISSERTAÇÕES DO CBSOFT PROGRAM CHAIR Eduardo Santana de Almeida - Universidade Federal da Bahia (UFBA) CBSOFT 2014 GENERAL CHAIRS Baldoino Fonseca - Universidade Federal de Alagoas (UFAL) Leandro Dias da Silva - Universidade Federal de Alagoas (UFAL) Márcio Ribeiro - Universidade Federal de Alagoas (UFAL) ORGANIZATION Universidade Federal de Alagoas (UFAL) Instituto de Computação (IC/UFAL) PROMOTION Sociedade Brasileira de Computação (SBC) SPONSORS CAPES, CNPq, INES, Google SUPPORT Instituto Federal de Alagoas, Aloo Telecom, Springer, Secretaria de Estado do Turismo AL, Maceió Convention & Visitors Bureau, Centro Universitário CESMAC and Mix Cópia 3 WTDSoft Autorizo a reprodução parcial ou total desta obra, para fins acadêmicos, desde que citada a fonte 4 WTDSoft Apresentação É com grande satisfação que, em nome do Comitê de Programa e da Comissão Organizadora, saudamos os participantes do IV Workshop de Teses e Dissertações do CBSoft (WTDSoft 2014). O WTDSoft é um evento promovido anualmente pelo CBSoft e este ano conta com uma série de artigos referentes a trabalhos de mestrado e doutorado na área. Foram submetidos 39 artigos ao WTDSoft, dos quais foram selecionados 18 para apresentação durante o evento e publicação em seus anais. O processo de avaliação garantiu que cada artigo tivesse três avaliações, sendo também utilizada uma fase de discussão para minimizar discrepâncias nas avaliações. Gostaríamos de agradecer a todos que contribuíram para a realização deste evento. A qualidade deste programa é resultado da dedicação dos membros do Comitê de Programa e avaliadores. Somos também, imensamente gratos aos professores convidados, aos participantes e todos os autores pelos trabalhos submetidos. Finalmente, desejamos a todos um excelente evento! Salvador, Setembro de 2014. Eduardo Santana de Almeida Coordenador do WTDSoft 5 WTDSoft Comitês Técnicos / Program Committee Comitê do programa / Program Committee Adolfo Duran - Universidade Federal da Bahia (UFBA) Alessandro Garcia - Pontifícia Universidade Católica do Rio de Janeiro (PUC-Rio) Alexandre Alvaro - Universidade Federal de São Carlos (UFSCar) Auri Marcelo Rizzo Vincenzi - Universidade Federal de Goiás (UFG) Christina Chavez - Universidade Federal da Bahia (UFBA) Dalton Serey - Universidade Federal de Campina Grande (UFCG) Daniel Lucrédio - (Universidade Federal de São Carlos (UFSCar) Eduardo Figueiredo - Universidade Federal de Minas Gerais (UFMG) Elisa Yumi Nakagawa - Universidade de São Paulo (USP) Fernando Quintao Pereira - Universidade Federal de Minas Gerais (UFMG) Francisco Carvalho-Junior - Universidade Federal do Ceará (UFC) Genaina Rodrigues - Universidade de Brasília (UnB) Gledson Elias - Universidade Federal da Paraíba (UFPB) Ivonei Freitas da Silva - Universidade Estadual do Oeste do Paraná (Unioeste) Leila Ribeiro - Universidade Federal do Rio Grande do Sul (UFRS) Leila Silva - Universidade Federal de Sergipe (UFS) Leonardo Murta - Universidade Federal Fluminense (UFF) Martin Musicante - Universidade Federal do Rio Grande do Norte (UFRN) Patricia Machado - Universidade Federal de Campina Grande (UFCG) Raul Wazlawick - Universidade Federal de Santa Catarina (UFSC) Rita Suzana Maciel - Universidade Federal da Bahia (UFBA) Roberta Coelho - Universidade Federal do Rio Grande do Norte (UFRN) Rodrigo Bonifacio - Universidade de Brasília (UnB) Rodrigo Reis - Universidade Federal do Paraná (UFPR) Rohit Gheyi - Universidade Federal de Campina Grande (UFCG) Rosângela Penteado - Universidade Federal de São Carlos (UFSCar) Silvia Vergilio - Universidade Federal do Paraná (UFPR) Tayana Conte - Universidade Federal do Amazonas (UFAM) Thais Vasconcelos Batista - Universidade Federal do Rio Grande do Norte (UFRN) Toacy Oliveira - Universidade Federal do Rio de Janeiro (UFRJ) Uirá Kulesza - Universidade Federal do Rio Grande do Norte (UFRN) Vander Alves - Universidade de Brasília (UnB) Vinicius Cardoso Garcia - Universidade Federal de Pernambuco (UFPE) 6 WTDSoft Comitê organizador / Organizing Committee COORDENAÇÃO GERAL Baldoino Fonseca - Universidade Federal de Alagoas (UFAL) Leandro Dias da Silva - Universidade Federal de Alagoas (UFAL) Márcio Ribeiro - Universidade Federal de Alagoas (UFAL) COMITÊ LOCAL Adilson Santos - Centro Universitário Cesmac (CESMAC) Elvys Soares - Instituto Federal de Alagoas (IFAL) Francisco Dalton Barbosa Dias - Universidade Federal de Alagoas (UFAL) COORDENADOR DO WTDSoft 2014 Eduardo Santana de Almeida - Universidade Federal da Bahia (UFBA) 7 WTDSoft Índice / Table of Contents Mestrado / MSc Uma Abordagem para Checagem de Conformidade Arquitetural na Modernização Apoiada por Modelos Fernando Chagas, Valter Vieira de Camargo 10 Uma Abordagem Baseada em Padrões para Interoperação de Especificações de Workflows Científicos Bruno Fernandes Bastos, Regina Maria Maciel Braga, Antônio Tadeu Azevedo Gomes 16 Adaptação dos critérios de teste de programas concorrentes para o teste de integração de robôs móveis Marcos Pereira dos Santos, Simone do Rocio Senger de Souza 22 Avaliação de Arquiteturas Recuperadas com base em Métodos de Avaliação Precoce Mateus Passos Soares Cardoso, Christina von Flach G. Chavez, Crescencio Lima 27 Um estudo comparativo sobre sínteses de estudos de métodos mistos na Engenharia de Software Danilo Monteiro Ribeiro, Fábio Queda Bueno da Silva, Cesar França 33 EvolTrack-Process: Uma ferramenta para visualização e acompanhamento da colaboração em processos de software Francisco Werther Silva de Santana Júnior, Cláudia Maria Lima Werner, Andréa Magalhães Magdaleno 39 Execução Paralela de Programas como suporte ao teste de mutação Stevão Alves de Andrade, Márcio Eduardo Delamaro 45 Um estudo sobre geração de testes com BETA: Avaliação e aperfeiçoamento João Batista de Souza Neto, Anamaria Martins Moreira 50 O Impacto dos Fatores Humanos em Metodologias Ágeis Aline Chagas Rodrigues Marques, Alexandre Marcos Lins de Vasconcelos, Célio Andrade de Santana Júnior 56 Um Método de Extração de Valores Referência para Métricas de Softwares Orientados por Objetos Tarcísio G. S. Filó, Mariza A. S. Bigonha, Kecia Aline Marques Ferreira 62 8 WTDSoft Um Modelo Conceitual para Caracterização da Qualidade Interna de Sistemas de Software Open-Source Orientados a Objeto gestão de projetos Mariana Santos, Paulo Bermejo, Heitor Costa 68 Análise da Qualidade de Experimentos da Computação em Nuvem Helaine Solange Lins, Vinicius Cardoso Garcia, Sérgio Castelo Branco Soares 74 Doutorado / PhD Definição de um Framework para Avaliação Sistemática de Técnicas de Teste no Contexto de Programação Concorrente Silvana Morita Melo, Simone do Rocio Senger de Souza 79 Integração de Práticas Ágeis: Uma abordagem para melhorar a qualidade de especificações de software em projetos mobile Juliana Dantas Ribeiro Viana de Medeiros, Alexandre Marcos Lins de Vasconcelos, Carla Taciana Lima Lourenco Silva Schuenemann 86 Alocação de Participantes no Merge de Ramos Catarina de Souza Costa, Leonardo Gresta Paulino Murta 93 A Meta-Process Oriented to Software Product Quality Based on ISO/IEC 25010 and Compliant with CMMI-DEV and MR-MPS-SW Models Carlos dos Santos Portela, Alexandre Marcos Lins de Vasconcelos, Sandro Ronaldo Bezerra Oliveira, Marco Paulo Amorim Vieira 101 Search-Based Mutation Testing para Programas Concorrentes Rodolfo Adamshuk Silva, Simone do Rocio Senger de Souza 109 Constructing a Theory of Agile Governance: a step towards Business Agility Alexandre J. H. de O. Luna, Philippe Kruchten, Hermano Moura 117 9 WTDSoft Uma Abordagem para Checagem de Conformidade Arquitetural na Modernização Apoiada por Modelos Aluno: Fernando Chagas1 Orientador: Valter Vieira de Camargo1 1 Programa de Pós-Graduação em Ciência da Computação Departamento de Computação – Universidade Federal de São Carlos (UFSCar) Caixa Postal 676 – 13565-905 – São Carlos – SP – Brazil [email protected], [email protected] Resumo. Em geral, a arquitetura de sistemas legados apresenta inconsistências em relação à arquitetura de referência. Uma alternativa para isso é conduzir uma modernização apoiada por modelos (Architecture-Driven Modernization ADM), que é um processo proposto pela OMG com o objetivo de reestruturar sistemas existentes com base em metamodelos padrão ISO. O principal metamodelo da ADM é o KDM, que objetiva representar um sistema legado em vários nı́veis de abstração, inclusive o arquitetural. Entretanto, apesar da ADM fornecer todos os conceitos para a condução de modernizações, não foram encontradas propostas para Checagem de Conformidade Arquitetural (CCA). Embora existam várias propostas que atuam em nı́vel de código-fonte, o mesmo não ocorre em nı́vel de modelos, como o KDM. Portanto, deverá ser desenvolvida uma abordagem e uma ferramenta para apoiar a CCA no contexto da ADM. Objetiva-se comparar falsos positivos e negativos da CCA baseada em modelos com abordagens tradicionais e também investigar cenários em que esse tipo de checagem apresenta benefı́cios. Nı́vel: Mestrado Ano de Ingresso: 2013 Época prevista de conclusão: 04/2015 Data de aprovação da proposta de dissertação: 25/04/2014 Evento Relacionado: SBES Palavras-chave: arquitetura de software, checagem de conformidade arquitetural, adm, kdm 10 WTDSoft 1. Caracterização do Problema Modificações tardias na fase de implementação e conflitos nos requisitos de qualidade resultam na incompatibilidade entre arquitetura planejada e implementada. Como alternativa para verificação dessas inconsistências, surgiu a Checagem de Corformidade Arquitetural (CCA), que é uma técnica que preenche a ponte entre os modelos de alto nı́vel do projeto arquitetural e código-fonte [Knodel and Popescu 2007]. A Modernização Apoiada por Modelos (ADM) [OMG 2003], defende a realização do processo de modernização considerando os princı́pios do desenvolvimento dirigido a modelos. A ADM define vários metamodelos para auxiliarem nas modernizações, dentre eles o Knowledge Discovery Metamodel (KDM), que torna possı́vel a recuperação dos artefatos de software por meio de técnicas de engenharia reversa, em diferentes nı́veis de abstração [Perez-Castillo et al. 2011]. Um pacote importante do KDM no contexto deste trabalho é o de Estrutura (Structure), que permite representar elementos arquiteturais de um sistema. Vários grupos de pesquisa tem atuado na linha de checagem de conformidade, propondo diferentes técnicas ([Rahimi and Khosravi 2010], [Maffort et al. 2013], [Deiters et al. 2009], [Terra and Valente 2009], [Bittencourt et al. 2010]). No entanto, nenhum desses trabalhos apresenta um estudo sobre a viabilidade de realização da CCA no contexto da ADM. Outro fator importante, é verificar a qualidade do KDM em representar conceitos arquiteturais, já que não foi encontrado nenhum trabalho voltado para a camada de abstrações do KDM, que é responsável por representar o sistema legado em alto nı́vel. Portanto, uma CCA no contexto da ADM, mais especificamente no metamodelo KDM, se torna uma boa alternativa para a verificação de desvios arquiteturais. É importante ressaltar que o KDM é padrão ISO e pouco estudado até o momento desta pesquisa, fator importante para a motivação deste trabalho, pois não foram encontradas abordagens que realizem modernizações por meio de padrões, o que impacta na dificuldade de reuso, portabilidade e interoperabilidade de aplicações. Deste modo, o objetivo desta pesquisa é criar uma abordagem para a CCA no contexto da ADM. Assim, pretende-se apontar as vantagens e desvantagens de se utilizar esse metamodelo para realizar tal checagem e se necessário, indicar modificações no KDM no sentido de permitir uma checagem de conformidade mais adequada. 2. Fundamentação Teórica Knodel e Popescu (2007) descrevem a CCA como uma atividade chave para o controle de qualidade de software. O objetivo é revelar diferenças entre a arquitetura planejada e a atual do sistema. Uma atividade importante dentro da CCA é averiguar as restrições entre elementos arquiteturais, para isso, Terra e Valente (2009) propuseram uma linguagem de domı́nio especı́fico. Na abordagem, é possı́vel restringir dependências originadas a partir do acesso a atributos e métodos, declaração de variáveis, criação de objetos, extensão de classes, implementação de interfaces, ativação de exceções e uso de anotações. Uma maneira de conduzir processos de reengenharia é por meio da Modernização Apoiada por Modelos (ADM), que facilita a formalização de transformações por meio de princı́pios de desenvolvimento dirigido a modelos. Um dos metamodelos especificados pela ADM, O KDM, é fragmentado em quatro camadas correspondentes aos artefatos fı́sicos e lógicos e é capaz de representar todo o sistema [Perez-Castillo et al. 2011]. Neste trabalho serão investigados interesses relacionados a CCA em KDM, por11 WTDSoft tanto, o pacote Structure se torna importante para o desenvolvimento deste projeto. O pacote Structure define elementos de metamodelo que representam componentes de arquitetura de sistemas de software existentes, tais como subsistemas, camadas, pacotes, etc. Na Figura 1 é apresentado o diagrama de classes do pacote Structure. Figura 1. Pacote StructureModel da Camada de Abstração no KDM A classe StructureModel representa uma agregação de elementos arquiteturais, como subsistemas, componentes, camadas, sistemas e visões arquiteturais. Note-se também que o auto relacionamento existente na classe AbstractStructureModel denota a possibilidade desses elementos serem compostos por outros elementos subordinados. A classe KDMEntity representa uma entidade de baixo nı́vel do KDM, como classes, pacotes, métodos, etc. Os relacionamentos são representados por uma classe concreta filha de AbstractStructureRelationship. Os relacionamentos representados pela classe StructureRelationship possuem dois atributos, que é o elemento arquitetural de origem e o de destino, que caracterizam a relação. 3. Caracterização da Contribuição Na Figura 2 são apresentados os passos esperados da abordagem proposta. No passo A, o engenheiro de software precisa fornecer uma especificação da arquitetura planejada que deve conter os elementos arquiteturais e as regras de restrição de acesso entre eles. Os elementos arquiteturais serão descritos de acordo com os elementos presentes no pacote Structure do KDM, isto é, camadas, componentes, etc. As regras regulam os relacionamentos permitidos ou não entre os elementos. Até o momento, pretende-se utilizar as regras de acesso propostas por Terra e Valente [2009]. O formato dessas regras não foi definido ainda, entretanto, acredita-se que elas podem ser representadas por meio dos relacionamentos existentes no pacote Structure do KDM. A saı́da desse passo é a arquitetura planejada representada na forma de uma instância do pacote Structure do KDM. Figura 2. Passos da abordagem proposta 12 WTDSoft No passo B deve ser obtido um panorama atual do sistema legado, aqui, deverá ser utilizada uma ferramenta chamada MoDisco1 , que será responsável por extrair as informações do sistema e representar por meio de uma instância do metamodelo KDM. No passo C o engenheiro de software deve criar um artefato de mapeamento que relaciona os elementos arquiteturais presentes na arquitetura planejada com elementos de código-fonte presentes na instância do KDM legado. A criação desse artefato deverá possuir apoio ferramental para facilitar a visualização e a criação dos relacionamentos. Por exemplo, pode ser que três pacotes (java packages) existentes no KDM legado representem a camada de modelo existente na arquitetura. Ao final desse passo, o KDM legado deverá ser transformado no sentido de incluir uma instância do pacote Structure contendo uma visão arquitetural ainda sem os relacionamentos entre seus elementos. No passo D, o objetivo é gerar um KDM em que o pacote Structure represente a arquitetura atual, contendo todos os relacionamentos existentes entre seus elementos. Para isso, um algoritmo deverá analisar o KDM modificado para identificar todos os relacionamentos existentes entre elementos de mais baixo nı́vel (classes, interfaces, métodos) e criar relacionamentos de mais alto nı́vel entre os elementos arquiteturais. Vislumbra-se a possibilidade de definir tipos mais especı́ficos de relacionamentos entre os elementos arquiteturais de forma a identificar chamada de métodos, acesso a variáveis, implementação de interfaces, etc [Terra and Valente 2009]. Os passos C e D estão sendo planejados de forma separada para permitir que o engenheiro de software possa modificar o mapeamento fornecido caso ele tenha informado erroneamente alguma relação. Isso evita que a tarefa de geração da arquitetura atual (passo D) seja feita repetidas vezes em caso de erros de mapeamento, já que o passo D demanda uma quantidade significativa de processamento. Por fim, no passo E será feita a checagem de conformidade, para isso, as representações da arquitetura deverão ser comparadas. Como saı́da, espera-se que sejam apontados indı́cios de desvios arquiteturais, que são as diferenças encontradas entre as representações fornecidas. O resultado da checagem será fornecido por meio de um arquivo de texto simples que aponta as oportunidades ou por anotações na instância do KDM. Note-se que neste projeto optamos por gerar uma representação da arquitetura atual por meio do passo D. Isso deverá facilitar a comparação com a arquitetura planejada, já que as duas representações estarão no mesmo nı́vel de abstração. Outra alternativa poderia ser não gerar a arquitetura atual e realizar as comparações entre os elementos de baixo nı́vel e a arquitetura planejada. Assim sendo, o principal objetivo neste projeto é desenvolver uma abordagem de CCA usando o metamodelo KDM fornecido pela ADM. Outra contribuição será desenvolver uma técnica de conversão do pacote code/kdm para o pacote structure/kdm, pois atualmente nenhuma ferramenta dá suporte para a representação de informações estruturais do sistema. Também será investigado a adequabilidade do metamodelo KDM para realização de CCA. Por fim, serão caracterizados cenários em que a checagem de conformidade apoiada por modelos é mais viável do que em código-fonte. 4. Estado Atual do Trabalho Até o momento foi feito um estudo do metamodelo KDM e de técnicas de ACC. Foram verificadas maneiras de representar as regras de acesso entre elementos arquiteturais, e 1 http://www.eclipse.org/MoDisco/ 13 WTDSoft dentre os trabalhos estudados, as regras definidas por Terra e Valente (2009) foram escolhidas como base e deverão ser consideradas neste trabalho. Foram criadas três instâncias KDM representando sistemas com diferentes caracterı́sticas arquiteturais (MVC, Tubos e Filtros e Camadas). Esses sistemas foram modificados e desvios arquiteturais foram inseridos propositalmente para que fosse feita uma investigação sobre como os desvios arquiteturais são representados no KDM. Na Figura 3 é mostrado um exemplo de desvio arquitetural inserido em um sistema. Figura 3. Exemplo de chamada ilegal A classe SellCar (Figura 3a) pertence a camada de visão do sistema e é representa informações manipuladas na classe CarController, da camada de controle, que por sua vez utiliza a classe Car (camada modelo) para realizar operações de controle. Qualquer outro tipo de relação entre estas camadas não é permitido, porém, são feitos acessos da classe SellCar a classe Car, correspondendo a um indicio de desvio arquitetural. Para que esse indicio seja encontrado, consideramos a recuperação da arquitetura atual, na qual todas as relações são apresentadas no pacote Structure do KDM (Figura 3b). A arquitetura planejada é definida pelo engenheiro de software e representada no mesmo nı́vel de abstração que a atual (Figura 3c). Dessa maneira, as duas representações são comparadas e verificadas as diferenças, que são possı́veis indı́cios de desvios arquiteturais. Foi realizada uma investigação em que foi averiguada se a metaclasse AggregatedRelationship, do KDM, poderia ser utilizada para representar regras arquiteturais. Ao que tudo indica, com o uso de estereótipos (Stereotype), essa metaclasse pode ser uma possı́vel alternativa para a especificação das regras de acesso a elementos arquiteturais. Os estereótipos deverão representar cada tipo de relação existente de acordo com os tipos de restrições entre elementos arquiteturais definidos por Terra e Valente (2009). 5. Trabalhos relacionados Maffort entre outros (2013) apresentam heurı́sticas para descoberta de violações arquiteturais. A entrada da ferramenta proposta possui uma especificação dos componentes em alto nı́vel e o histórico de revisões do sistema. Ela identifica dependências suspeitas em código-fonte, baseando-se em hipóteses de frequência e correções feitas no passado nessas dependências. Deiters entre outros (2009) propõem uma abordagem para ACC baseada em regras. A descrição arquitetural é representada em fatos e regras lógicas. Os fatos representam os elementos existentes arquiteturais, as regras definem as restrições. A CCA é realizada executando as regras arquiteturais como queries sobre a união das bases de conhecimento. Rahimi e Khosravi (2010) apresentam uma abordagem capaz de realizar CCA entre múltiplas linguagens de programação. A abordagem é dividida em duas 14 WTDSoft etapas, primeiro são criados transformadores de código-fonte em modelos de alto nı́vel e em seguida as linguagens são comparadas em um mesmo nı́vel de abstração. Maffort entre outros (2013) destaca a realização da CCA por meio da análise estática e histórica de código-fonte, enquanto que a abordagem aqui proposta objetiva realizar análise estática em modelos. Deiters entre outros (2010) se aproxima da proposta deste trabalho por demonstrar o uso de regras de relação de conformidade para realização da CCA, neste projeto, foi escolhida utilizar regras que sejam aplicadas no contexto da ADM. Rahimi e Khosravi (2010) não trabalham com padrões para a realização da CCA enquanto que uma das motivações da nossa abordagem é utilizar o KDM, que é padrão ISO. 6. Avaliação dos Resultados Para a avaliação do trabalho proposto, serão realizados estudos experimentais que tem como objetivo investigar a adequabilidade de se realizar CCA arquitetural usando o metamodelo KDM. Mais especificamente, pretende-se i) apontar as vantagens e desvantagens de se utilizar esse metamodelo para realizar tal checagem e ii) se necessário, indicar modificações no KDM no sentido de permitir uma checagem de conformidade mais adequada. Também será avaliada se a atividade de checagem no KDM é capaz de ser considerada ótima, essa análise será feita por meio da contagem de falsos positivos e negativos, em que a ausência deles contempla uma boa atividade de verificação. Referências Bittencourt, R., Jansen de Souza Santos, G., Guerrero, D., and Murphy, G. (2010). Improving automated mapping in reflexion models using information retrieval techniques. In Reverse Engineering (WCRE), 2010 17th Working Conference on, pages 163–172. Deiters, C., Dohrmann, P., Herold, S., and Rausch, A. (2009). Rule-based architectural compliance checks for enterprise architecture management. In Enterprise Distributed Object Computing Conference, 2009. EDOC ’09. IEEE International, pages 183–192. Knodel, J. and Popescu, D. (2007). A comparison of static architecture compliance checking approaches. In Software Architecture, 2007. WICSA ’07. The Working IEEE/IFIP Conference on, pages 12–12. Maffort, C., Valente, M., Bigonha, M., Anquetil, N., and Hora, A. (2013). Heuristics for discovering architectural violations. In Reverse Engineering (WCRE), 2013 20th Working Conference on, pages 222–231. OMG (2003). Model Driven Architecture (MDA) Guide. OMG doc. ab/2003-06-01. Perez-Castillo, R., De Guzman, I.-R., and Piattini, M. (2011). Knowledge discovery metamodel-iso/iec 19506: A standard to modernize legacy systems. Computer Standards and Interfaces, 33(6):519–532. Rahimi, R. and Khosravi, R. (2010). Architecture conformance checking of multilanguage applications. In Computer Systems and Applications (AICCSA), 2010 IEEE/ACS International Conference on, pages 1–8. Terra, R. and Valente, M. T. (2009). A dependency constraint language to manage objectoriented software architectures. Softw. Pract. Exper., 39(12):1073–1094. 15 WTDSoft Uma Abordagem Baseada em Padrões para Interoperação de Especificações de Workflows Científicos Bruno Fernandes Bastos¹,² [email protected] Orientadores Regina Maria Maciel Braga¹ [email protected] Antônio Tadeu Azevedo Gomes² [email protected] 1 2 Universidade Federal de Juiz de Fora (UFJF) Laboratório Nacional de Computação Científica (LNCC) Mestrado Programa de Pós-Graduação em Ciência da Computação – UFJF Ano de ingresso: 2013 Época prevista de conclusão: 2015 Resumo. Workflows científicos vêm sendo utilizados para resolver problemas complexos em diferentes áreas, utilizando diferentes recursos computacionais. Sistemas Gerenciadores de Workflows Científicos (SGWfCs) são utilizados para a construção desses workflows, porém, cada SGWfC possui características particulares e uma linguagem de especificação de workflows própria, dificultando seu reuso. O uso de uma linguagem específica para interoperação de workflows científicos traz ganhos para o reuso de workflows desenvolvidos em diferentes SGWfCs, porém, não impede que haja perda de informação semântica durante um processo de transformação de especificações entre esses SGWfCs. A existência de padrões de workflows científicos pode ajudar a explicitar as informações semânticas mais importantes para a construção desses workflows. A proposta desse trabalho é oferecer uma abordagem baseada em padrões para a interoperação de workflows científicos, empregando uma linguagem extensível com suporte a informações semânticas obtidas através da descrição dos padrões. Palavras-chave: Workflows Workflows Científicos Científicos, Interoperação, Eventos relacionados: SBES, SBCARS 16 Padrões em WTDSoft 1. Caracterização do Problema Workflows científicos vêm sendo utilizados para resolver problemas complexos em diversas áreas. Para a modelagem e controle da execução desses workflows, vários Sistemas Gerenciadores de Workflows Científicos (SGWfCs) foram criados. Cada SGWfC possui funcionalidades específicas e linguagem própria para especificação dos workflows, muitas vezes enfocando uma área particular. Neste contexto, o reuso de workflows científicos especificados em diferentes SGWfCs é um desafio. Este reuso de workflows, no entanto, adquire cada vez mais importância no cenário de experimentos científicos, uma vez que possibilita a integração entre diferentes grupos de pesquisa e reforça a ideia dos chamados "laboratórios colaborativos" [Olson 2009]. Com o número crescente de SGWfCs disponíveis e a heterogeneidade entre eles, soluções para a interoperação desses workflows são importantes. A interoperação de diferentes SGWfCs possibilita o reuso de especificações de workflows científicos desenvolvidas por diferentes grupos de pesquisa, independente do SGWfC utilizado. Porém, identificar de que forma um tipo de informação presente em uma especificação de workflow deve ser processada, considerando a interoperação, é um desafio. Essa identificação depende fundamentalmente da semântica associada a cada diferente tipo de informação e, em alguns cenários, um mapeamento imediato dessa semântica entre diferentes SGWfCs não é possível. Um exemplo simples é o de uma funcionalidade em um SGWfC específico que não é diretamente mapeável em outros SGWfCs. Neste contexto, o uso de padrões (patterns) em workflows científicos [Yildiz et al. 2009] pode ajudar a explicitar as informações semânticas mais importantes para a construção desses workflows. Em um cenário em que padrões fossem empregados no auxílio à interoperação, uma vez que fosse identificada a existência de um determinado padrão em uma especificação de workflow científico, a informação semântica associada poderia ser automaticamente capturada. Neste contexto, a hipótese deste trabalho – a ser validada – é de que uma linguagem de interoperação baseada em padrões ofereceria mais segurança em garantir o comportamento esperado em um SGWfC de uma especificação de workflow gerada a partir de um processo de transformação de uma especificação feita em qualquer outro SGWfC. A proposta desse trabalho é, portanto, especificar uma linguagem para interoperação de workflows científicos baseada em padrões e validar a hipótese pontuada acima. 2. Fundamentação Teórica Em [Muehlen e Klein 2000] o conceito de interoperação de workflows de negócio utilizando uma linguagem intermediária baseada em XML é bem explorado e com ganhos significativos. Em workflows científicos não existe um arcabouço semântico comum adotado por todos os SGWfCs, o que dificulta a interoperação. Embora existam abstrações básicas presentes em todos os workflows (tanto de negócio quanto científicos), como tarefas, portas e conexões, workflows científicos geralmente empregam abstrações mais complexas, como varreduras de parâmetros e estruturas de repetições, que dificultam a interoperação. Essas abstrações mais complexas estão em geral relacionadas ao fato de que workflows científicos são principalmente orientados a dados, enquanto workflows de negócio são orientados a controle. Uma abordagem possível de interoperação de workflows científicos é a transformação direta entre especificações de diferentes SGWfCs. Um problema nesse cenário é que o 17 WTDSoft número de transformações necessárias para a interoperação de N diferentes SGWfCs cresce de forma quadrática com o valor de N, além da possibilidade de não ser possível o mapeamento de semânticas específicas diretamente entre um e outro. Nesse sentido, o uso de uma linguagem específica para interoperação de workflows científicos, tal como a proposta em [Plankensteiner et al. 2013], traz ganhos, pois uma vez que um SGWfC possa ter suas especificações transformadas nessa linguagem (e vice-versa), torna-se possível a interoperação desse SGWfC com outros SGWfCs que também tenham suas especificações transformáveis na linguagem para interoperação. Contudo, o uso de uma linguagem para interoperação por si só não impede que haja perda de informação semântica durante um processo de transformação. 3. Contribuições Este trabalho objetiva abordar a interoperação de SGWfCs por meio de uma linguagem intermediária em conjunto com o uso de padrões em workflows científicos para mitigar a perda de informação semântica nessa interoperação. Esses padrões são utilizados na especificação da linguagem para armazenar a semântica comportamental de um workflow e possibilitar sua reprodução em outro SGWfC. Assim, embora a construção desses padrões possa ser diferente em cada SGWfC, seu comportamento se dará de acordo com a semântica associada a cada padrão. Uma vez que a especificação de um workflow em um determinado SGWfC de origem é convertida para a linguagem intermediária proposta neste trabalho, sua informação semântica, baseada na identificação de um conjunto de padrões presentes nesse workflow, deve ser preservada. Assumindo que o SGWfC de destino dê suporte aos padrões encontrados no workflow original, mesmo que sua construção não seja nativa no SGWfC de destino, a especificação desse workflow na linguagem intermediária permite reproduzir corretamente seu comportamento no SGWfC de destino. A linguagem de descrição de arquitetura (ADL) Acme [Garlan et al. 1997] foi escolhida neste trabalho para descrever formalmente a estrutura da linguagem de interoperação em termos de conjuntos de padrões de workflows científicos. O uso de Acme permite estabelecer regras de formação de instâncias desses padrões, bem como adicionar funcionalidades importantes e que não são encontradas em todos os SGWfCs, como o tratamento de requisitos não-funcionais [Medeiros e Gomes 2013] (vide Seção 6). O suporte à tipagem múltipla de instâncias de elementos arquiteturais em Acme também possibilita a composição de estruturas prescritas pelos tipos sem a necessidade de criação de subtipos. Esse atributo de Acme torna-a mais qualificada para descrever uma linguagem intermediária devido a heterogeneidade encontrada nos SGWfCs. Um mecanismo de transformações é necessário para converter as especificações que estão na linguagem nativa de cada SGWfC, sendo um resultado esperado deste trabalho. Em alguns SGWfCs onde uma linguagem textual está disponível, é possível realizar transformações baseadas em templates+metamodelos [Stahl et al. 2006]. Nos SGWfCs sem uma linguagem textual, as APIs desses SGWfCs podem ser utilizadas. 4. Estado Atual do Trabalho Inicialmente foi feita uma primeira análise dos padrões propostos na iniciativa Workflow Patterns1 e de workflows presentes no repositório myExperiment.2 A partir 1 http://www.workflowpatterns.com/ 18 WTDSoft dessa análise, os padrões Sequence, Parallel Split, Synchronization, Exclusive Choice e Simple Merge, apresentados na iniciativa Workflows Patterns, foram incluídos na linguagem intermediária proposta, mas levando em consideração o comportamento orientado a dados, típico dos workflows científicos. A estrutura de repetição For Each, embora não presente na iniciativa Workflow Patterns, foi proposta como um padrão adicional cuja função é iterar sobre uma coleção recebida por uma porta de entrada. Como pode ser visto na Figura 1, emprega-se o conceito de família presente na ADL Acme para especificar os padrões. Uma família define um conjunto de tipos de elementos de modelagem arquitetural (componentes e portas, conectores e papéis) e regras de composição entre instâncias desses tipos. Na linguagem especificada neste trabalho, os tipos definidos na família Acme (vide Figura 1(a)) descrevem os padrões como conexões (conectores e papéis) entre tarefas de um workflow, pois, uma vez que workflows científicos são em geral orientados a dados, seu comportamento é observável no momento em que dados são trocados entre as portas das tarefas. (b) Regras do padrão Parallel Split (a) Família de padrões Figura 1. Linguagem intermediária baseada na ADL ACME. Para garantir a estrutura e o comportamento esperados desses padrões, regras de formação foram adicionadas para cada um deles. Essas regras podem restringir o número de conexões presentes em um padrão e o tipo de dado que cada padrão espera receber. A Figura 1(b) ilustra uma regra simples para o padrão Parallel Split, estabelecendo que instâncias desse padrão devem ter somente uma porta de entrada e ao menos duas de saída. Uma regra semelhante pode ser definida para o padrão Exclusive Choice; o que diferencia esses dois padrões é a informação semântica que cada um desses padrões carrega consigo, e que está associada ao comportamento das conexões (conectores e papéis) que definem esses padrões. Uma vez que regras restrinjam a estrutura e o comportamento de um determinado padrão, é possível validar se sua construção está correta. Uma especificação de workflow científico descrita nessa linguagem intermediária garante o comportamento 2 http://www.myexperiment.org 19 WTDSoft que um padrão deve ter em um determinado trecho do workflow, sem detalhamento de quais recursos serão utilizados para atingir esse comportamento. Em alguns SGWfCs, é possível que a implementação de um padrão seja nativa a partir de uma tarefa ou conexão pré-definida no SGWfC, enquanto em outros pode ser necessária a composição de várias funcionalidades. Porém, ao utilizar padrões e regras que restrinjam essas composições, é possível garantir que esse workflow terá o mesmo comportamento em qualquer SGWfC que implemente esses padrões. 5. Comparação com Trabalhos Relacionados Uma solução para a interoperação de especificações de workflows científicos é a transformação direta entre duas especificações de SGWfCs, como a oferecida pela ferramenta Taverna-Galaxy. 3 Essa abordagem, contudo, pode requerer demasiado esforço de desenvolvimento caso queira se dar suporte a outros SGWfCs. Em [Plankensteiner et al. 2013] é apresentada uma solução para a interoperação de workflows científicos através de uma linguagem intermediária chamada IWIR. Essa solução, contudo, apresenta limitações. Como um exemplo, IWIR não oferece um construtor que implemente o padrão Exclusive Choice mencionado na Seção 4; esse padrão pode ser no entanto reproduzido em IWIR por meio de condicionais (construtores do tipo “if”) aninhados. O problema é que a transformação desses condicionais aninhados para a linguagem de um SGWfC de destino levará a condicionais aninhados, mesmo que a linguagem desse sistema dê suporte direto ao padrão Exclusive Choice. Em [Abouelhoda et al. 2012] é apresentada uma estratégia de interoperação baseada em padrões que pode interoperar os SGWfCs Taverna e Galaxy. Um problema nessa interoperação é que cientistas teriam que aprender a lidar com um novo SGWfC, uma vez que esta estratégia não foi projetada como uma ferramenta de interoperação e sim como um novo SGWfC em si. 6. Avaliação dos Resultados Existem várias soluções possíveis para a interoperação de workflows científicos desenvolvidos em diferentes SGWfCs. A inexistência de um arcabouço semântico comum para especificações de workflows científicos pode ser um problema para o reuso e interoperação dessas especificações, pois sempre existirão construções que possuam estruturas diferentes para um mesmo comportamento ou estruturas iguais para comportamentos diferentes em alguns SGWfCs. Uma linguagem intermediária baseada em padrões parece ser uma das abordagens interessantes a ser investigada, pois as informações semânticas já estariam, em tese, contidas nos padrões. A proposta desse trabalho é definir uma linguagem intermediária baseada em padrões utilizando a ADL Acme como base. O número de padrões incorporados a essa linguagem deve crescer de acordo com o número de SGWfCs estudados e de acordo com seus padrões comportamentais. Alguns padrões básicos e comumente encontrados em workflows científicos já foram adicionados à linguagem. O uso de uma ADL como Acme para descrever uma nova linguagem se mostra eficaz, tanto pelo seu suporte a definição de regras de formação, como também pela sua 3 http://www.taverna.org.uk/documentation/taverna-galaxy/ 20 WTDSoft capacidade de composição de tipos. Pretendemos como trabalho futuro explorar esta última característica de Acme – a de composição de tipos – para a adição de suporte ao tratamento de requisitos não-funcionais na interoperação, na linha do que foi proposto em [Medeiros e Gomes, 2013]. Também como trabalho futuro, visamos investigar a interoperação de informações relacionadas ao comportamento das tarefas de workflows científicos. A interoperação dessas informações não é trivial, visto que muitos SGWfCs possuem scripts nativos que são utilizados como tarefas de um workflow. Em cenários como o repositório myExperiment, onde tarefas têm seu comportamento interno implementado como Web Services, essa interoperação é mais simples. Porém, em casos onde sejam usadas tarefas que são nativas de um SGWfC, essa tarefa também deve ser tratada, garantindo assim o comportamento esperado para o workflow. É importante também ressaltar que um estudo experimental, com o objetivo de validar a abordagem, está sendo conduzido. Esse estudo utiliza o repositório myExperiment e busca transformar diferentes especificações de workflows na linguagem intermediária baseada em padrões, mantendo a semântica dos workflows, e vice versa. Referências [Abouelhoda et al. 2012] Abouelhoda, M., Issa, S., e Ghanem, M. (2012). Tavaxy: Integrating taverna and galaxy workflows with cloud computing support. BMC Bioinformatics, 13:77. [Garlan et al. 1997] David Garlan, Robert Monroe, and David Wile. 1997. Acme: an architecture description interchange language. In Proceedings of the 1997 conference of the Centre for Advanced Studies on Collaborative research (CASCON '97), J. Howard Johnson (Ed.).IBM Press 7-. [Hayes et al. 2000 ] James G. Hayes, Effat, Peyrovian, Sunil Sarin, Marc-Thomas Schmidt, Keith D. Swenson, and Rainer Weber. Workflow Interoperability Standards for the Internet. IEEE Internet Computing, pág. 37-45. [Medeiros e Gomes 2013] Medeiros, V. e Gomes, A. T. A. (2013). Expressando atributos nãofuncionais em workflows científicos. CoRR, abs/1304.5099. [Muehlen e Klein 2000] Muehlen, M. Z. e Klein, F. (2000). Africa: Workflow interoperability based on xml-messages. In Proceedings of CAiSE „00 workshop on Infrastructures for Dynamic Business-toBusiness Service Outsourcing (IDSO „00) pág. 5–6. [Oinn et al. 2004] Oinn, T., Addis, M., Ferris, J., Marvin, D., Carver, T., Pocock, M. R., e Wipat, A. (2004).Taverna: A tool for the composition and enactment of bioinformatics workflows Bioinformatics, 20:2004. [Olson 2009] Olson, G. M. (2009). The next generation of science collaboratories.In Proceedings of the International Symposium on Collaborative Technologies and Systems (CTS „09). IEEE Computer Society, Washington, DC, USA. [Plankensteiner et al. 2013] Plankensteiner, K., Prodan, R., Janetschek, M., Montagnat, J., Rogers, D., Harvey, I., Taylor, I., Ákos, Balaskó, e Kacsuk, P. (2013). Fine-grain interoperability of scientific workflows in distributed computing infrastructures. Journal of Grid Computing. [Stahl et al. 2006] Thomas Stahl, Markus Voelter, and Krzysztof Czarnecki. 2006. Model-Driven Software Development: Technology, Engineering, Management. John Wiley & Sons. [Yildiz et al. 2009] Yildiz, U., Guabtni, A., e Ngu, A. H. H. (2009). Towards scientific workflow patterns.In Proceedings of the 4th Workshop on Workflows in Support of Large-Scale Science, WORKS „09, pág. 13:1–13:10, New York, NY, USA. 21 WTDSoft Adaptação de critérios de teste de programas concorrentes para o teste de integração de robôs móveis Marcos Pereira dos Santos1 , Simone R. S. Souza1 1 Instituto de Ciências Matemáticas e de Computação (ICMC) – Universidade de São Paulo (ICMC/USP) Caixa Postal 668 – 13.560-970 – São Carlos – SP – Brasil {mpereira,srocio}@icmc.usp.br Abstract. This paper presents a master’s project under development whose goal is to adapt concurrent program coverage testing criteria to the context of mobile robots, mapping these coverage criteria to deal with errors related to the communication among the components of the mobile robots systems. The proposed approach should be incorporated into the ROS framework, that has been used to support the development of mobile robots. Another objective of this project is conducting an experimental study to compare the applicability of the coverage testing criteria considering other environments to develop mobile robots. Resumo. Este artigo apresenta um projeto de mestrado em andamento cujo objetivo é a adaptação de critérios de teste de programas concorrentes para o contexto de robôs móveis, adaptando-os para tratar erros relacionados à comunicação entre os componentes de um sistema para robôs móveis. A abordagem proposta deve ser incorporada ao framework ROS, que vem sendo utilizado para apoiar o desenvolvimento de robôs móveis. Outro objetivo deste projeto é realizar estudos comparativos para avaliar a aplicabilidade dos critérios de teste considerando outros ambientes de desenvolvimento de robôs móveis. 1. Introdução A atividade de teste de software é uma análise dinâmica do produto de software e tem por objetivo encontrar os defeitos presentes no mesmo. Para isso, técnicas e critérios de teste são propostos, os quais devem ser aplicados nas diferentes fases do processo de desenvolvimento. O teste de integração é uma atividade sistemática aplicada durante a integração das subpartes que compõem o programa com o objetivo de descobrir erros associados às interfaces entre os módulos. O objetivo é, a partir dos elementos testados no nível de unidade, construir a estrutura do programa de acordo com o definido no projeto do software [Delamaro et al. 2007]. A programação concorrente está cada vez mais sendo utilizada no desenvolvimento de diversos tipos de sistemas para áreas como: financeira, científica, comercial, redes de sensores, computação ubíqua, entre outras. Um programa concorrente é formado por dois ou mais processos ou threads que trabalham juntos para realizar uma tarefa, sendo que essa interação pode ocorrer de forma sincronizada ou não e os processos podem ou não concorrerem aos mesmos recursos computacionais [Andrews 2000]. Esse paradigma de programação permite o desenvolvimento de algoritmos que quando 22 WTDSoft executados originam novos processos que podem executar concorrentemente e interagirem entre si [Pacheco 2011]. Diferentes execuções de um programa concorrente com a mesma entrada podem produzir diferentes saídas em razão das diferentes sincronizações executadas. O desafio do teste de software nesse contexto é identificar todas as possíveis sincronizações para verificar se as saídas obtidas são as esperadas [Taylor et al. 1992, Wong et al. 2005, Souza et al. 2012]. Um sistema robótico em razão da sua própria natureza, constituído por diversos componentes interagindo, apresentam um certo nível de similaridade com programas concorrentes. Um robô móvel autônomo deve ser capaz de interagir com o ambiente, aprender e tomar decisões corretas para que suas tarefas sejam executadas com êxito. Para o desenvolvimento de robôs móveis são utilizados ambientes que permitem simular o comportamento dos robôs à medida são sendo desenvolvidos. Exemplos destes ambientes são: ROS, Player, Ária, Carmen, Microsoft Robotics Studio, dentre diversos outros [Wolf et al. 2009]. Dentre estes ambientes de desenvolvimento de robôs móveis pode-se destacar o ROS 1 , o qual oferece bibliotecas e um conjunto de ferramentas para auxiliar os desenvolvedores de aplicações para robôs, possibilitando abstrair o hardware e drivers de dispositivo, de modo a simular o funcionamento da aplicação. Este projeto de mestrado visa a contribuir nesse cenário, em que o objetivo é a investigação e adaptação dos critérios de teste estruturais de programas concorrentes [Souza et al. 2008] para o contexto de sistemas embarcados robóticos, realizando um estudo comparativo desses critérios, considerando o ambiente ROS e outros utilizados para o desenvolvimento desses sistemas. 2. Caracterização do Problema No contexto de programas sequenciais foram definidos ao longo dos anos várias técnicas e critérios de teste de software. O teste de aplicações concorrentes comparado ao teste de programas sequenciais é mais complicado, pois além das dificuldades inerentes à atividade de teste, novos desafios são impostos principalmente devido ao comportamento não determinístico em que diferentes sequências de sincronização podem ser obtidas com a utilização de uma mesma entrada de teste, e por isso, faz-se necessário avaliar se o comportamento das saídas é o esperado ou não. Uma das linhas de pesquisa do grupo de Engenharia de Software do ICMC/USP está relacionada ao teste de programas concorrentes e diversas são as contribuições neste sentido [Souza et al. 2005, Hausen et al. 2007, Souza et al. 2008, Sarmanho et al. 2008, Souza et al. 2012]. Partindo para o teste de sistemas para robôs móveis, um dos desafios é testar se as informações vindas dos sensores e componentes do sistema. É de suma importância que o robô preserve a sua integridade, bem como também os elementos presentes em seu ambiente como seres humanos, objetos, utensílios, etc. A ação de um robô deve ocorrer de modo ativo sobre um determinado objeto alvo, se realmente for prevista a sua ação sobre este objeto [Wolf et al. 2009]. Observa-se que muitos aspectos presentes em programas concorrentes são semelhantes aos encontrados em sistemas para robôs móveis, os quais precisam interagir com o meio e com as partes que o compõem. Entre as principais semelhanças encontradas entre programas concorrentes e sistemas embarcados para robôs móveis pode-se destacar a comunicação e sincronização de tarefas. Um sistema para 1 ROS - http://ros.org/wiki/ 23 WTDSoft robô móvel é composto por diversos dispositivos como sensores, atuadores e programa de controle central que interagem e executam código de forma paralela. A comunicação e sincronização entre as tarefas desempenhadas por cada um dos dispositivos, muitas vezes, é não determinística, assim como em programas concorrentes, em que há diversos processos/threads executando de forma concorrente. Considerando esses aspectos, surgiu a motivação de investigar o teste de integração em sistemas embarcados para robôs móveis, buscando explorar questões que vêm sendo tratadas no teste de programas concorrentes. Para ilustrar as definições apresentadas, considere o grafo da Figura 1. Este aplicação apresentada representa um exemplo de comunicação entre componentes de um sistema para robôs móveis autônomos, desenvolvida utilizando o ROS. O mesmo é constituído por três nós (componentes executáveis) que são: /sensor,/actuator e /gps e pelos tópicos (mecanismo utilizado para troca de mensagens): /info e /localization. Figura 1. Exemplo de aplicação para sistemas de robôs móveis. O nó /sensor publica informações no tópico /info. Esta mensagem publicada é assinada pelos componentes /actuator e /gps. O componente /gps publica mensagens no tópico /localization e esta mensagem é subscrita pelo componente /actuator. Desta maneira ocorre a comunicação e interação entre os componentes deste sistema, assim pretende-se explorar as similaridades destes sistemas com programas concorrentes para adptação dos critérios de teste. 3. Caracterização da Contribuição O desenvolvimento deste projeto de mestrado irá contribuir para o estado da arte na área de VV&T (Verificação, Validação e Testes) de robôs móveis. Pretende-se com esse projeto contribuir com o cenário nacional e internacional no que tange a melhoria de qualidade de sistemas para robôs móveis, apresentando critérios de teste de integração para robôs móveis. Assim, espera-se contribuir com a atividade de teste aplicado a sistemas para robôs móveis, por meio da adaptação de critérios de testes de programas concorrentes para robôs móveis. Outra contribuição é apresentar uma proposta de adaptação de critérios de teste para programas concorrentes do nível de unidade para o nível de integração. Desse modo, a adaptação dos critérios de teste ocorre em duas diferentes dimensões: de programas concorrentes para sistemas embarcados robóticos, e do nível de unidade para o nível de integração. Espera-se também gerar resultados sobre a comparação entre diferentes ambientes de desenvolvimento de robótica móvel em relação ao esforço e efetividade da atividade de teste, buscando identificar os desafios impostos ao teste nesses ambientes de desenvolvimento. 4. Estado Atual do Trabalho Este projeto está vinculado a um doutorado em andamento, o qual explora um modelo para o teste de integração desses sistemas [Brito 2013], contribuindo com a melhoria da qualidade dos sistemas embarcados que vem sendo desenvolvidos no Instituto Nacional de Ciência e Tecnologia (INCT/SEC), com a utilização de técnicas de teste de software. 24 WTDSoft A etapa atual deste projeto, consiste no estudo sobre o modelo de teste de integração para sistemas embarcados críticos em desenvolvimento pelo grupo de Engenharia de Software do ICMC [Brito 2013]. Também está sendo realizado um estudo dos critérios para teste de programas concorrentes, em que são observados os critérios relacionados à comunicação e sincronização. Outra etapa que está sendo realizada é a adaptação dos critérios definidos para o teste de programas concorrentes para o contexto de sistemas para robôs móveis. Nessa fase estão sendo definidos e implementados os recursos necessários para que esses critérios possam ser utilizados nos ambientes de desenvolvimento de robôs móveis. 5. Trabalhos Relacionados Na literatura são encontrados trabalhos que propõem critérios de teste de integração para sistemas embarcados [Hossain and Lee 2013, Belli et al. 2009, Lee et al. 2002, Seo et al. 2007, Sung et al. 2011]. A maioria dos estudos apresentam critérios no nível de integração entre unidades que compõe estes sistemas como classes, métodos, funções, etc. A proposta deste projeto possui como objetivo a proposição de critérios de teste de integração para sistemas robóticos móveis considerando características de comunicação entre os componentes. Nos trabalhos relacionados, não foram encontrados estudos que descrevem a utilização dos critérios de teste propostos e sua aplicabilidade para sistemas para robôs móveis ou sistemas mais complexos como sistemas embarcados críticos. Os trabalhos apresentam estudos de caso, no geral, para sistemas embarcados que não são de natureza crítica como celulares, televisão, robôs não autônomos, dentre outros. Algumas característics encontradas em sistemas para robôs móveis autônomos devem ser levadas em consideração na aplicação dos critérios de teste para estes sistemas, as quais não são encontradas nos demais sistemas, como em progrmas concorrentes. Algumas destas características são: capacidade de percepção, capacidade de agir, robustez e inteligência [Wolf et al. 2009]. Desta maneira, requer que os critérios de teste para programas concorrentes sejam estudados e adaptados verificando-se também estas características. 6. Avaliação dos Resultados Até esta fase do projeto foram obtidos alguns resultados. Foi realizado um mapeamento sistemático sobre teste de integração para sistemas embarcados críticos e está sendo escrito um artigo que será submetido a conferências. Após a adaptação/implementação dos critérios, os mesmos serão validados com a realização de experimentos, os quais deverão englobar como estudos de caso os sistemas desenvolvidos tanto pelo INCT/SEC como CaRINA 2 , visando avaliar a aplicabilidade da proposta. Os experimentos serão conduzidos com base no processo experimental proposto por Wohlin [Wohlin et al. 2000]. Agradecimento Os autores gostariam de agradecer a Capes, pelo apoio financeiro. Referências Andrews, G. (2000). Foundations of Multithreaded, Parallel, and Distributed Programming. Addison-Wesley. 2 CaRINA - http://www.inct-sec.org/br/aplicacoes/carina 25 WTDSoft Belli, F., Hollmann, A., and Padberg, S. (2009). Communication sequence graphs for mutation-oriented integration testing. In Secure Software Integration and Reliability Improvement. SSIRI. Third IEEE International Conference on, pages 387–392. Brito, M. A. S. (2013). Estudo e definio do teste de integrao de software para o contexto de sistemas embarcados crticos. ICMC/USP - Projeto de doutorado em andamento. Delamaro, M. E., Maldonado, J., and Jino, M. (2007). Introdução ao Teste de Software. Rio de Janeiro: Elsevier (Editora Campus), 1a edition. Hausen, A. C., Verglio, S. R., Souza, S. R. S., Souza, P. S. L., and Simão, A. S. (2007). A tool for structural testing of MPI programs. In LAtin-American Test Workshop - LATW, volume 1, Cuzco. Hossain, M. I. and Lee, W. J. (2013). A scalable integration testing approach considering independent usage pattern of global variables. International Journal of Software Engineering and Its Applications, pages 195 – 204. Lee, N. H., Kim, T. H., and Cha, S. D. (2002). Construction of global finite state machine for testing task interactions written in message sequence charts. In Proceedings of the 14th international conference on Software engineering and knowledge engineering, SEKE ’02, pages 369–376, New York, NY, USA. ACM. Pacheco, P. (2011). An Introduction to Parallel Programming. Elsevier. Sarmanho, F. S., Souza, P. S. L., Souza, S. R. S., and ao, A. S. S. (2008). Structural testing for semaphore-based multithread programs. In International Conference on Computational Science, volume 5101, pages 337–346, Krakow. Springer-Verlag. Seo, J., Sung, A., Choi, B., and Kang, S. (2007). Automating embedded software testing on an emulated target board. In Proceedings of the Second International Workshop on Automation of Software Test, AST ’07, Washington, DC, USA. IEEE Computer Society. Souza, P. S. L., Souza, S. R. S., and Zaluska, E. (2012). Structural testing for messagepassing concurrent programs: an extended test model. Concurrency and Computation. Souza, S. R. S., Vergilio, S. R., Souza, P. S. L., Simão, T. G. Bliscosque, A. M. L. A. S., and Hausen, A. C. (2005). Valipar: A testing tool for message-passing parallel programs. pages 386–391. Souza, S. R. S., Vergilio, S. R., Souza, P. S. L., Simão, A. S., and Hausen, A. C. (2008). Structural testing criteria for message-passing parallel programs. Concurr. Comput. : Pract. Exper., 20(16):1893–1916. Sung, A., Choi, B., Wong, W. E., and Debroy, V. (2011). Mutant generation for embedded systems using kernel-based software and hardware fault simulation. Information and Software Technology, 53(10):1153 – 1164. Taylor, R. N., Levine, D. L., and Kelly, C. D. (1992). Structural testing of concurrent programs. IEEE Trans. Softw. Eng., 18(3):206–215. Wohlin, C., Runeson, P., Hst, M., Ohlsson, M. C., Regnell, B., and Wessln, A. (2000). Experimentation in Software Engineering: An Introduction. Kluwer Academic Publishers. Wolf, D. F., Osório, F. S., Simões, E., and Trindade Jr., O. (2009). Robótica inteligente: Da simulação às aplicações no mundo real. 1:279–330. Wong, W., Lei, Y., and Ma, X. (2005). Effective generation of test sequences for structural testing of concurrent programs. In Engineering of Complex Computer Systems, 2005. ICECCS 2005. Proceedings. 10th IEEE International Conference on, pages 539–548. 26 WTDSoft Avaliação de Arquiteturas Recuperadas com base em Métodos de Avaliação Precoce Mateus Passos Soares Cardoso1 , Christina von Flach G. Chavez1 , Crescencio Lima1 1 Programa Multiinstitucional de Pós-Graduação em Ciência da Computação - PMCC Universidade Federal da Bahia - UFBA {mateuspsc,flach,crescencio}@dcc.ufba.br Resumo. Em geral, a documentação de arquitetura de sistemas de software não existe ou está desatualizada. Ferramentas de recuperação de arquitetura automatizam parte do processo de obtenção da arquitetura a partir do código-fonte do sistema de software e apoiam a criação ou atualização da documentação. Entretanto, há pontos em aberto relacionados à avaliação das arquiteturas extraı́das por tais ferramentas. Por exemplo, como avaliar a qualidade de uma ou mais arquiteturas extraı́das se não houver arquitetura conceitual documentada ou se os arquitetos que originalmente projetaram o sistema não estiverem disponı́veis? Esta proposta apresenta uma abordagem para avaliar a qualidade de arquiteturas de software extraı́das por ferramentas de recuperação com base em métodos de avaliação precoce de arquitetura. Ferramentas de recuperação serão usadas para obter modelos de arquitetura de software e os métodos de avaliação – por exemplo, Software Architecture Analysis Method (SAAM) e Architecture Tradeoff Analysis Method (ATAM) – serão usados para avaliar a qualidade das arquiteturas extraı́das e riscos associados. Espera-se que a abordagem proposta contribua para a melhorar a compreensão e a documentação de arquitetura em sistemas de software existentes. Palavras - Chave. Arquitetura de Software, Recuperação de Arquitetura, Avaliação de Arquitetura, SAAM, ATAM, SAR. Ano de Ingresso no Programa:2013 Época prevista para conclusão: Maio de 2015 Data de Aprovação da proposta de tese/dissertação(qualificação):Abril de 2014 Eventos Relacionados:SBCARS, SBES 27 WTDSoft 1. Caracterização do Problema Ferramentas de recuperação de arquitetura fornecem mecanismos para arquitetos e desenvolvedores recuperarem a arquitetura de um software a partir de representações do código, de modo a remediar problemas comuns que ocorrem durante o desenvolvimento do sistema, por exemplo, erosão, documentação incompleta, inconsistência entre arquitetura documentada e a arquitetura implementada, entre outros [Pollet et al. 2007]. Normalmente, a avaliação da qualidade da arquitetura extraı́da é feita por comparação com a arquitetura conceitual documentada ou por meio de análise apoiada por arquitetos ou desenvolvedores do software implementado [Chardigny et al. 2008, Mancoridis et al. , Terceiro et al. 2010, Pinzger 2005]. Nesse contexto, métodos de avaliação tardia de arquitetura podem ser utilizados. Entretanto, para alguns sistemas de software, a arquitetura conceitual não está disponı́vel nem os arquitetos ou desenvolvedores que participaram de sua construção. Como então avaliar a qualidade da arquitetura extraı́da a partir de um sistema de software? Uma possı́vel solução para esse problema é utilizar métodos de avaliação precoce de arquitetura [Kazman et al. 2000, Clements et al. 2001]. Os métodos de avaliação precoce – por exemplo, SAAM (Scenario-Based Software Architecture Analysis Method) [Clements et al. 2001] e ATAM (Architecture based Tradeoff Analysis Method) [Kazman et al. 2000] – têm como objetivo definir se uma arquitetura é apropriada ou não para um sistema de software antes desta ser escolhida como a arquitetura definitiva [Roy and Graham 2008] e certamente antes da implementação do sistema. O método SAAM [Clements et al. 2001] busca avaliar se determinado conjunto de arquiteturas é apropriado para um determinado sistema. O método ATAM [Kazman et al. 2000] serve como uma extensão e avalia os possı́veis riscos que uma arquitetura candidata pode trazer para o sistema. Entretanto, estes dois métodos de avaliação não são simples de usar e deve-se investigar com cuidado a viabilidade de seu uso no contexto da avaliação de arquiteturas extraı́das a partir do sistema implementado. Este trabalho tem como objetivo explorar a viabilidade do uso de métodos de avaliação precoce de arquitetura para avaliar a qualidade de arquiteturas extraı́das com o apoio de ferramentas de recuperação. Os objetos de estudo serão sistemas de software de código aberto, cuja arquitetura documentada seja inexistente. Pretende-se utilizar os métodos de avaliação de arquitetura precoce SAAM e ATAM como base para a definição de uma técnica de avaliação de arquiteturas recuperadas com apoio de ferramentas de recuperação e seus riscos associados. 2. Fundamentação Teórica Nesta seção, são apresentados conceitos relacionados a recuperação de arquitetura de software, com ênfase em ferramentas de recuperação (Seção 2.1) e a avaliação de arquitetura de software, com ênfase em métodos (Seção 2.2). 2.1. Recuperação de Arquitetura de Software Recuperação de arquitetura de software (Software Architecture Recovery – SAR) é o processo de determinar a arquitetura de um sistema de software a partir de seu códigofonte ou outros artefatos de implementação. A recuperação de arquitetura permite a 28 WTDSoft identificação e a extração de representação de alto nı́vel de sistemas de software existentes [Eixelsberger et al. 1996]. Há várias abordagens para recuperação de arquitetura do software (SAR). A ideia geral é trabalhar com a arquitetura de software recuperada a partir do sistema implementado, que reflita com acurácia as decisões de design implementadas. Ducasse e Pollet [Pollet et al. 2007] realizaram um levantamento de diversas ferramentas existentes e as classificaram de acordo com seus (i) Objetivos (documentação, reuso, migração, etc.), (ii) Processos (bottom-up, top-down ou hı́brido), (iii) Dados de Entrada (código-fonte, documentos, etc.), (iv) Técnicas (quase-manual, semiautomática, quase-automática) e (v) Dados de Saı́da (representação visual da arquitetura, texto, etc.). Neste trabalho, usamos algumas destas dimensões para guiar a escolha de ferramentas para análise. 2.2. Avaliação de Arquitetura de Software A avaliação da arquitetura de um sistema de software é um processo que reune stakeholders com o objetivo de analisar documentos arquiteturais em busca de possı́veis problemas [Clements et al. 2001] e para verificar se requisitos de qualidade foram atendidos no projeto. Há diversas abordagens para avaliação de arquitetura de software [Barcelos and Travassos 2006]. De modo geral, a avaliação de arquitetura pode ser feita em dois momentos: antes da arquitetura do sistema estar pronta (avaliação precoce) ou após a arquitetura do sistema e o próprio sistema estarem prontos (avaliação tardia) [Clements et al. 2001]. Neste trabalho, serão utilizados dois métodos de avaliação precoce: SAAM [Clements et al. 2001] e ATAM [Kazman et al. 2000]. Os dois são métodos baseados em cenários, uma categoria considerada bastante madura [Babar et al. 2004]. O SAAM (Scenario-Based Software Architecture Analysis Method) [Roy and Graham 2008] é um método de avaliação precoce da arquitetura de sistemas de software. Sua análise verifica suposições a respeito da arquitetura (por exemplo, se uma arquitetura é adequada ao sistema em questão) em confronto com os documentos que descrevem a arquitetura. A análise busca encontrar problemas na arquitetura do software, por exemplo, conflitos ou design incompleto da arquitetura. Além disso, o SAAM ajuda a comparar arquiteturas candidatas de um sistema. Como informação necessária para análise da arquitetura, o SAAM utiliza a arquitetura candidata e os requisitos do sistema [Roy and Graham 2008]. Como resultado, o SAAM produz cenários sensı́veis a qualidade do sistema, o mapeamento entre os cenários e os componentes arquiteturais e o esforço necessário para realizar estes cenários na arquitetura. O processo de análise é composto de seis etapas: Especificação dos requisitos do sistema, descrição da arquitetura, extração de cenários, priorização de cenários, avaliação da arquitetura em relação aos cenários, interpretação e apresentação dos resultados. O ATAM (Architecture based Tradeoff Analysis Method) [Kazman et al. 2000] é uma extensão do SAAM que cobre pontos na avaliação arquitetural que não eram cobertos anteriormente, como os tradeoffs da arquitetura, ou seja, decisões arquiteturais que podem afetar atributos de qualidade do sistema (por exemplo: adquirir mais servidores para a aplicação aumentaria o desempenho e a disponibilidade, o que poderia deixar o sistema mais suscetı́vel a ataques) [Roy and Graham 2008]. 29 WTDSoft O ATAM é composto por nove atividades estruturadas e mais complexas do que as do SAAM: apresentação do ATAM, apresentação das regras de negócio, apresentação da arquitetura, identificação de abordagens arquiteturais, geração de árvore de utilidade, análise das abordagens arquiteturais, priorização de cenários, segunda análise da abordagens arquiteturais, apresentação dos resultados. Algumas atividades podem ocorrer em paralelo. 3. Objetivos e Contribuições Este trabalho de mestrado tem como objetivo principal apresentar uma abordagem baseada em métodos de avaliação precoce de arquitetura para apoiar a avaliação da qualidade de uma ou mais arquiteturas de software extraı́das automaticamente com ferramentas de recuperação a partir de um sistema implementado. As práticas de métodos de avaliação precoce usadas em situações em que os sistemas já estão implementados podem ajudar em tarefas de redocumentação. São objetivos especı́ficos deste trabalho: • Definir critérios para seleção, análise e comparação de ferramentas de recuperação de arquitetura, de forma a subsidiar a escolha das mais adequadas para uso. • Analisar a viabilidade do uso de métodos de avaliação baseados em cenários (SAAM) e cenários / atributos (ATAM) para situações em que os sistemas de software estão implementados, buscando também identificar atividades ou práticas que possam ser aplicáveis. • Propor uma abordagem de avaliação de arquiteturas recuperadas, com práticas adaptadas de métodos de avaliação precoce baseados em cenários e/ou atributos, para ser usada em sistemas de software implementados. • Avaliar empiricamente a abordagem proposta. São contribuições esperadas deste trabalho: • Um conjunto de critérios de avaliação de ferramentas de recuperação de arquitetura; • Uma abordagem de avaliação precoce de arquitetura que poderá ser usada em casos onde apenas métodos tardios são adotados, e • Uso de métodos de avaliação de arquitetura ainda pouco difundidos em ambientes de desenvolvimento de software de código aberto. 4. Cronograma e Estado Atual do Trabalho A Tabela 1 apresenta o cronograma de atividades previstas para o ano de 2014. Algumas das atividades representadas neste cronograma estão associadas aos objetivos apresentados na seção 3. Atualmente, o trabalho se encontra na fase de análise das ferramentas de recuperação e parte do resultado desta análise pode ser encontrado em: http://goo.gl/PzVoc3. 5. Trabalhos Relacionados Durante a fase de revisão de literatura, alguns trabalhos onde os autores buscaram avaliar as técnicas de recuperação de arquitetura e sua eficácia foram encontrados, a saber, [Wu et al. 2005], [Maqbool and Babri 2007] e[Garcia et al. 2013]. 30 WTDSoft Tabela 1. Cronograma 2014 Atividade Revisão da Literatura Análise das Ferramentas de Recuperação Análise dos Métodos de Avaliação Definição da Abordagem de Avaliação Avaliação da Abordagem Desenvolvida Apresentação dos Resultados JAN/FEV MAR/ABR MAI/JUN JUL/AGO SET/OUT NOV/DEZ Em seu trabalho, Wu [Wu et al. 2005] selecionou e aplicou seis algoritmos de clusterização em 6 sistemas distintos. Os algoritmos de clusterização foram avaliados em três aspectos: estabilidade, competência e distribuição dos clusters. Para realização da avaliação, a arquitetura recuperada foi comparada com a arquitetura original destes sistemas. Nos trabalhos de [Maqbool and Babri 2007] e [Garcia et al. 2013] foram escolhidas ferramentas de recuperação que usam algoritmos de clusterização – 8 ferramentas no estudo de [Maqbool and Babri 2007] e 6 ferramentas no estudo de [Garcia et al. 2013]. Para a avaliação das arquiteturas recuperadas, experts foram escolhidos para produzir arquiteturas para os sistemas que seriam analisados pelas ferramentas. Ao final do processo de recuperação, a arquitetura obtida pelas ferramentas foi comparada com a arquitetura produzida pelos experts. 6. Avaliação dos Resultados A viabilidade do uso de SAAM e ATAM para avaliação de arquiteturas será analisada por meio de um experimento-piloto. As arquiteturas recuperadas pelas ferramentas de recuperação servirão como entrada e serão apresentadas aos subjects do experimento. Uma ou mais visões arquiteturais poderão ser fornecidas. Os subjects serão divididos em dois grupos: um grupo irá avaliar as arquiteturas de acordo com as práticas do SAAM enquanto que o outro grupo irá avaliar de acordo as práticas do ATAM. Como resultado dos métodos, serão definidos cenários sensı́veis a qualidade que servirão como base para avaliação das arquiteturas recuperadas. Após o experimento, os participantes serão entrevistados sobre questões relacionadas a abordagem de avaliação utilizada. A depender dos resultados obtidos, outros estudos experimentais poderão ser definidos para avaliação da abordagem proposta. Referências Babar, M. A., Zhu, L., and Jeffery, R. (2004). A framework for classifying and comparing software architecture evaluation methods. In ASWEC2004. Barcelos, R. and Travassos, G. (2006). Evaluation approaches for software architectural documents: a systematic review. In IDEAS. Chardigny, S., Seriai, A., Oussalah, M., and Tamzalit, D. (2008). Extraction of Component-Based Architecture from Object-Oriented Systems. Seventh Working IEEE/IFIP Conference on Software Architecture (WICSA 2008), pages 285–288. Clements, P., Kazman, R., and Klein, M. (2001). Evaluating Software Architectures: Methods and Case Studies. Addison-Wesley Professional, 1 edition. 31 WTDSoft Eixelsberger, W., Warholm, L., and Klösch, R. (1996). A Framework for Software Architecture Recovery. International Workshop on Development and Evolution of Software Architectures for Product Families. Garcia, J., Ivkovic, I., and Medvidovic, N. (2013). A comparative analysis of software architecture recovery techniques. 2013 28th IEEE/ACM International Conference on Automated Software Engineering (ASE), pages 486–496. Kazman, R., Klein, M., and Clements, P. (2000). Atam: Method for architecture evaluation. Technical report, Carnegie-Mellon Univ Pittsburgh PA Software Engineering Inst. Mancoridis, S., Mitchell, B., Rorres, C., Chen, Y., and Gansner, E. Using automatic clustering to produce high-level system organizations of source code. Proceedings. 6th International Workshop on Program Comprehension. IWPC’98 (Cat. No.98TB100242), pages 45–52. Maqbool, O. and Babri, H. A. (2007). Hierarchical clustering for software architecture recovery. Software Engineering, IEEE Transactions on, 33(11):759–780. Pinzger, M. (2005). ArchView - Analyzing Evolutionary Aspects of Complex Software Systems Supervisors :. PhD thesis, Vienna University of Technology. Pollet, D., Ducasse, S., Poyet, L., Alloui, I., Cimpan, S., and Verjus, H. (2007). Towards A Process-Oriented Software Architecture Reconstruction Taxonomy. In 11th European Conference on Software Maintenance and Reengineering (CSMR’07), pages 137–148. IEEE. Roy, B. and Graham, T. N. (2008). Methods for evaluating software architecture: A survey. School of Computing TR, 545:82. Terceiro, A., Costa, J., and Miranda, J. (2010). Analizo: an extensible multi-language source code analysis and visualization toolkit. Brazilian Conference on Software: Theory and Practice (CBSoft)–Tools, pages 1–6. Wu, J., a.E. Hassan, and Holt, R. (2005). Comparison of clustering algorithms in the context of software evolution. 21st IEEE International Conference on Software Maintenance (ICSM’05), pages 525–535. 32 WTDSoft Um estudo comparativo sobre sínteses de estudos de métodos mistos na Engenharia de Software Aluno: Danilo Monteiro Ribeiro1, Orientador: Fábio Queda Bueno da Silva1 Co-orientador: Cesar França2 1 Centro de Informática – Universidade Federal de Pernambuco (UFPE) – Pernambuco, PE – Brasil 2 Centro de Estudos Avançados de Recife (C.E.S.A.R) – Pernambuco, PE – Brasil {dmr ,Fabio}@cin.ufpe.br, [email protected] Nível: Mestrado Ano de Ingresso: Março de 2013 - Previsão de Conclusão: Março de 2015 Aprovação da Proposta: não qualificado Evento: SBES Resumo.Contexto – A Engenharia de Software Baseada em Evidência é um importante paradigma que auxilia a pesquisa na Engenharia de Software, uma vez que ela busca sintetizar os resultados de diversos estudos empíricos em um só. No entanto, existem problemas relacionados a qualidade destas sínteses, visto que existe uma utilização maior de métodos de menor poder interpretativo, o que pode trazer uma menor qualidade da síntese. Métodos de maior qualidade interpretativa podem, por outro lado, consumir mais recursos (como tempo e esforço). Portanto existe a necessidade de clarificar pontos fortes e fracos de cada método de síntese. Objetivo –Este trabalho tem como objetivo realizar um estudo comparativo com métodos de síntese de estudos mistos (qualitativos e quantitativos) de maior e menor qualidades interpretativas, para identificar pontos fortes e fracos destes métodos e em quais situações cada método pode ser melhor utilizado de acordo com os recursos existentes. Método – A primeira fase foi uma revisão sistemática manual para encontrar os artigos que serão sintetizados, depois disso será realizada uma pesquisa de campo com pesquisadores que já realizaram revisões sistemáticas com o objetivo de identificar quais são os critérios mais importantes para escolha do método de síntese, a partir de um conjunto de critérios já apresentados por Dixon-Woods. Com os critérios estabelecidos, serão realizadas quatro sínteses com pesquisadores distintos que já realizaram revisões sistemáticas e ao final do processo serão comparados os resultados de cada síntese. Contribuições Esperadas –Este trabalho tem como principais contribuições: (i) Apresentar um passo-a-passo de um conjunto de métodos de sínteses de pesquisa, (ii) Avaliar métodos que ainda não são largamente utilizados na Engenharia de Software, (iii) Expor um conjunto de critérios para a seleção de métodos de sínteses de pesquisa, (iv) Comparar os resultados das sínteses e esclarecer as vantagens e desvantagens de cada método. Palavras chaves: Engenharia de Software Baseada em Evidência, sínteses, revisão sistemática. 33 WTDSoft 1. Caracterização do problema A Engenharia de Software Baseada em Evidência (ESBE) foi apresentada à comunidade por [Kitchenham 2007], a partir de conceitos utilizados com sucesso em outras áreas de pesquisa, como a medicina por exemplo. O paradigma baseado em evidências consiste na coleta e análise sistemáticas de dados empíricos disponíveis sobre um determinado fenômeno, a fim de obter uma perspectiva mais ampla e mais completa do que seria obtido a partir de um estudo individual [Kitchenham 2007], e tem como ferramenta para auxílio à revisão sistemática da literatura. Métodos de síntese de pesquisa são utilizados para resumir, integrar, combinar e comparar resultados de diferentes artigos sobre determinado tópico ou questão de pesquisa com o objetivo de apresentar novas interpretações, argumentos, teorias, e identificar áreas que precisam de uma concentração maior de esforços na resolução dos seus problemas [Dixon-Woods et al. 2005; Noblit e Hare 1988; Cruzes e Dyba 2011]. Apesar das revisões sistemáticas apresentarem resultados importantes para a Engenharia de Software, [Silva et al. 2011] acredita que as sínteses de estudos primários frequentemente não estão sendo conduzidos de maneira adequada. Além disso, um estudo executado por [Cruzes e Dyba 2011] aponta que 83,7% dos estudos realizados na Engenharia de Software utilizam algum método com pouca ou razoável qualidade interpretativa (estudo de escopo – 49%, síntese temática – 16,3% e síntese narrativa – 18,4%) de acordo com a classificação de qualidade interpretativa proposta por [Sandelowski e Barroso 2006 ], enquanto que cerca de 8,1% ( Meta-análise – 4,1%, Meta-etnografia – 2% e Case Survey – 2%) dos estudos utilizam um método de síntese com uma maior qualidade interpretativa ou integrativa. Apesar de já existirem esforços para melhorar a qualidade das sínteses e apresentar novos métodos [Cruzes e Dyba 2010; Cruzes e Dyba 2011; Silva et al. 2013], ainda é observado que existem dificuldades nas escolhas e suas utilizações corretas. Portanto, o objetivo deste trabalho é realizar um estudo comparativo com um conjunto de métodos de sínteses de maior e menor qualidade interpretativa para clarificar em quais situações cada tipo de método pode ser considerado adequado, de acordo com as necessidades e limitações dos pesquisadores. 2. Fundamentação Téorica 2.1. Engenharia de Software Baseada em Evidência De acordo [Kitchenham 2004], a ESBE é relevante para a Engenharia de Software, pois fornece os insumos necessários que podem ajudar os engenheiros de software na busca das melhores práticas, usando as tecnologias apropriadas e por consequência evitando as tecnologias inadequadas. [Budgen et al. 2007] afirmam que devido a sua essência, a ESBE tem o potencial de criar uma base muito mais sólida para os padrões, políticas e práticas o que também pode gerar uma melhor qualidade do software, resultado em benefícios para clientes e usuários. As Revisões Sistemáticas de Literatura são métodos utilizados pela ESBE que tem como objetivo aplicar uma abordagem baseada em evidência na pesquisa em Engenharia de Software. Revisões sistemáticas devem prover meios de executar revisões na literatura com uma maior qualidade devido às mesmas buscarem ser mais 34 WTDSoft abrangentes e menos tendenciosas, produzindo resultados com maior valor científico, de acordo com [Travassos e Biolchini 2007]. Para realizar isso, a revisão sistemática é dividida em três passos: (i) Planejamento da revisão, onde a revisão é estruturada e o protocolo é desenvolvido; (ii) Condução da revisão, onde os estudos primários são selecionados e lidos e (iii) Resultados da pesquisa, onde os dados extraídos devem ser integrados ou interpretados e uma síntese dos mesmos deve ser realizada [Miranda 2011]. 2.2. Sínteses na Engenharia de Software Baseada em Evidência [Noblit e Hare 1988] classificam sínteses de pesquisa em integrativa e interpretativa. A síntese de pesquisa integrativa visa analisar a combinação de um conjunto de dados de estudos primários que são semelhantes com relação a intervenções e variáveis quantitativas. Este tipo de síntese é bastante usado na área de saúde, e tem como principal método a meta-análise. Já a síntese interpretativa visa avaliar os estudos, que podem ser heterogêneos, e fornecer explicações interpretativas sobre eles, criando assim uma teoria que agrega diversos conceitos provenientes dos estudos primários. Exemplos de métodos interpretativos são: meta-etnografia, meta-sumário qualitativo e metasíntese qualitativa. De acordo com [Cruzes e Dyba 2011], os estudos na Engenharia de Software são frequentemente muito heterogêneos para permitir uma relação estatística e, portanto o uso de meta-análise, por isso os métodos de síntese qualitativos e mistos são necessários para um melhor entendimento da área. 3. Contribuições Esta dissertação tem quatro contribuições principais para ESBE, são elas: • Apresentar um passo-a-passo de um conjunto de métodos de sínteses de pesquisa; uma vez que vamos utilizar 4 métodos (meta-sumário qualitativo, meta-síntese qualitativa, análise de conteúdo e síntese narrativa), a dissertação poderá ser usada por outros pesquisadores como guia para realizar suas sínteses. • Avaliar métodos que ainda não são largamente utilizados na Engenharia de Software, como meta-sumário qualitativo e meta-síntese qualitativa, mas que são utilizados em outras áreas, de maneira que além de produzir o passo-a-passo de sua utilização sejam também entendidos seus pontos fortes e fracos, semelhante ao trabalho realizado por [Silva et al. 2013] na meta-etnografia. • Expor um conjunto de critérios para a seleção de métodos de sínteses de pesquisa: Uma vez que exista um conjunto de critérios para seleção do método de síntese, se tornará mais claro como escolher o mais adequado para a situação. • Comparar os resultados das sínteses e esclarecer as vantagens e desvantagens de cada método de maneira que outros pesquisadores estejam cientes deles quando escolherem utilizá-los. Os resultados desta dissertação poderão auxiliar na escolha do método de síntese de acordo com a necessidade dos pesquisadores, esclarecendo também que aquela escolha poderá acarretar, por exemplo, que uma síntese tenha um maior ou menor grau de interpretatividade, ou mesmo tenha um maior ou menor grau de complexidade na sua realização. 35 WTDSoft 4. Estado atual do trabalho Uma vez que a pesquisa é sobre métodos de sínteses, foi necessário obter um conjunto de artigos para serem sintetizados. Por isso, foi realizada uma revisão sistemática manual em quatro revisões sistemáticas [Cardozo 2012; Cruz et al. 2011; França et al. 2011; Miranda 2011] realizadas pelo grupo HASE (Human Aspects in Software Engineering) o qual os pesquisadores fazem parte. Estas revisões apresentaram um total de 281 artigos que tiveram seus títulos, resumos e métodos lidos por uma dupla de pesquisadores. Vale salientar que o principal objetivo da pesquisa é avaliar os métodos de sínteses e não utilizar os resultados provenientes da aplicação das mesmas para formação de uma teoria real sobre o que afeta a performance na Engenharia de Software. Por isso, uma vez que era necessário diminuir a quantidade de artigos para viabilizar a avaliação dos métodos de síntese propostos, foram selecionados apenas 15 artigos que apresentavam evidências sobre antecedentes de performance em equipes de software. A partir daí foram extraídos métodos, coleta de dados e resultados. Já foi realizado um estudo com os 15 artigos [Ribeiro et al. 2014] utilizando meta-sumário qualitativo em que foi observado que o método pode ajudar a Engenharia de Software Baseada em Evidência, pois seus resultados trazem uma maior interpretatividade devido aos passos recomendados no método, no entanto, não são tão poderosos quanto o da meta-etnografia que por sua vez é mais complexa e leva mais tempo para ser realizada. Além disso, já foi retirado de [Dixon-Woods et al. 2005] um conjunto de critérios (possibilidade de utilização de grande base de evidências, possiblidade de aceitar evidências de tipos diferentes, flexibilidade, possibilidade para ser usado na construção de teoria, buscar teorias de ordem superior, possiblidade de ser auditável por revisores, software disponíveis para sua realização, complexidade e sistematização) que serão analisados e deverão passar por um conjunto de pesquisadores que já realizaram sínteses em revisões sistemáticas para que seja avaliados quais critérios recebem maior consideração quando um pesquisador escolhe seus métodos de síntese. Por fim, a nossa pesquisa ainda irá selecionar pesquisadores para utilizar diferentes métodos de sínteses, para que assim possam ser avaliadas suas utilizações. O cronograma pode ser observado em: http://goo.gl/uLwg7y 5. Comparações com trabalhos relacionados Cruzes e Dyba [Cruzes e Dyba 2010, Cruzes e Dyba 2011] identificaram os métodos de síntese mais utilizados na Engenharia de Software e apresentam uma pequena descrição dos mesmos e um conjunto de desafios e forças dos métodos proveniente da pesquisa realizada na área de saúde por [Dixon-Woods et al. 2005]. O nosso trabalho se diferencia dos trabalhos realizados por Cruzes e Dyba, pois iremos conduzir uma avaliação experimental de cada método. Ele também difere do trabalho realizado por [Dixon-Woods et al. 2005] porque será realizado pela ótica da Engenharia de Software. O artigo desenvolvido por [Silva et al. 2013] sugere um passo-a-passo para utilizar meta-etnografia e apresenta o resultado de sua síntese como um exemplo de sua utilização. Os autores ainda fazem uma análise dos pontos fortes e fracos de sua utilização baseada nas dificuldades que tiveram. Nosso estudo será realizado de maneira semelhante a esse trabalho, no entanto utilizará outros métodos de síntese, e tentará classificar de acordo com os critérios observados por Dixon-Woods. Por fim, iremos 36 WTDSoft comparar os resultados de todas as sínteses desta etapa. Além desses, outros trabalhos que tentam melhorar a qualidade da ESBE também serão utilizados [Kitchenham et al. 2011; Kitchenham et al. 2012]. 6. Avaliações dos resultados Para definir quais critérios são mais interessantes para os pesquisadores, será realizado uma pesquisa de campo com os autores das 120 revisões sistemáticas identificados nos estudos terciários [Kitchenham et al. 2010; Silva et al. 2011]. Após essa etapa, esperase identificar quais fatores os pesquisadores levaram em consideração para realizar a sua síntese e quais são os mais importantes. Por fim, o primeiro pesquisador irá realizar um treinamento com outros pesquisadores sobre meta-síntese qualitativa, análise de conteúdo e síntese narrativa para que esses pesquisadores possam aplicar um desses métodos e o primeiro pesquisador possa avaliar a utilização deles de acordo com os fatores identificados. Estes métodos foram escolhidos devido a sua pouca utilização na ESBE (metasumário qualitativo e meta-síntese qualitativa) ou sua larga utilização (síntese narrativa e análise de conteúdo) e suas qualidades interpretativas [Cruzes e Dyba 2011, Sandelowski 2006]. Com isso o autor poderá comparar os resultados, criando um quadro comparativo com os pesos extraídos da pesquisa de campo, tentando explicar assim suas vantagens e desvantagens para a Engenharia de Software. 7. Agradecimentos Fabio Q. B. da Silva recebe uma bolsa de pesquisa do CNPq, processo #314523/2009-0. Danilo Monteiro Ribeiro recebe uma bolsa de pesquisa do CNPq, processo #132554/2013-5. Referências Budgen, D., Turner, M., Brereton, P., Kitchenham, B. (2007) “Using Mapping Studies in Software Engineering”, 2007. Cardozo, E. (2012). “Mapeamento Sistemático sobre o uso do Autogerenciamento em Equipes de Desenvolvimento de Software.” Pós-Graduação em Ciência da Computação. Centro de Informática. Universidade Federal de Pernambuco. Dissertação de Mestrado. Cruz, S., Silva, F., Monteiro, C., Santos, P., Santos, I. (2011) “Personality in software engineering: Preliminary findings from a systematic literature review. In: 15th International Conference on Evaluation and Assessment in Software Engineering, Durham, p 1-10 Cruzes, D., and Dyba, T. (2011), “Research synthesis in software engineering: A tertiary study. Information and Software Technology, Volume 53, Issue 5, May, 2011 p. 440-455 Cruzes, D., and Dyba, T. (2010), “Synthesizing evidence in software engineering research”. In 4th International Symposium on Empirical Software Engineering and Measurement (ESEM'10), pages 1-10, Bolzano/Bozen, Italy, Sept. 2010. ACM. Dixon-Woods, M.,Agarwal,S.,Jones, D., Young,B. Sutton, A. (2005)“Synthesising qualitative and quantitative evidence: a review of possible methods,” J. Health Ser. 37 WTDSoft Res. Policy 10 (1) p.45-53. Dyba, T.; Dingsøyr, T. (2008) “Empirical studies of agile software development : A systematic review. Information and Software Technology”. Volume 50, Issue 910,p.833-859 França, C., Gouveia, T., Santos, P., Santana, C., Silva, F. (2011) “Motivation in Software Engineering: a Systematic Review Update” In: 15th International Conference on Evaluation and Assessment in Software Engineering, Durham, p. 154 – 163. Kitchenham, B. (2007) “Guidelines for Performing Systematic Literature Reviews in Software Engineering.” Technical Report, Department of Computer Science, University of Durham, 2007. Kitchenham, B. Brereton P., and Budgen D (2012) “Mapping study completeness and reliability – a case study” Evaluation and Assessment in Software Engineering EASE, p.126-135 Kitchenham, B., Brereton P., and Budgen D (2011) “Using mapping studies as the basis for further research – A participant-observercase study” Information & Software Technology Volume 53, Issue 6, p. 638-651 Kitchenham, B., Pretorius, R., Budgen, D., Brereton, O., Tuner, M., Niazi, M., Linkman, S.(2010) “Literature reviews in software engineering – a tertiary study”, Information and Software Technology, Volume 52, Issues 8, p.792– 805. Miranda, R. (2011) “Uma Revisão Sistemática Sobre Equipes de Desenvolvimento de Software: Tipologia, Características e Critérios de Formação" Dissertação de mestrado, Universidade Federal de Pernambuco Noblit, G.W and Hare G.W.(1988), Meta-ethnography: Synthesizing Qualitative Studies, Sage. Ribeiro, D., França, C., Silva, F., Cardoso, M. (2014) “Using Qualitative Metasummary to Synthesize Empirical Findings in Literature Reviews” In International Symposium on Empirical Software Engineering and Measurement (ESEM) Silva, F., Santos, A., Soares., S França, C., Monteiro, C., Maciel, F. (2011) “Six years of systematic literature reviews in software engineering: An updated tertiary study.” In Information and Software Technology, Volume 53, p. 899–913. Silva, F., Cruz, S., Gouveia, T., and Capretz, L. (2013) “Using meta-ethnography to synthesize research: A worked example of the relations between personality”. International Symposium on Empirical Software Engineering and Measurement (ESEM), Issue 7, p. 153 – 162. 38 WTDSoft EvolTrack-Process: Uma ferramenta para visualização e acompanhamento da colaboração em processos de software Francisco Werther Silva de Santana Júnior Orientadores: Cláudia Maria Lima Werner, Andréa Magalhães Magdaleno Programa de Pós-Graduação em Engenharia de Sistemas e Computação – COPPE/UFRJ Caixa Postal 68511 – CEP 21945-970 – Rio de Janeiro, RJ {fwsantana, werner, andrea}@cos.ufrj.br Nível: Mestrado Ano de Ingresso: 2012 Previsão de conclusão: Março/2015 Aprovação da Proposta: Julho de 2013 Eventos Relacionados: SBES Resumo. Embora reconhecida como essencial para o desenvolvimento de software, a colaboração é pouco explorada no contexto de processos de software, tida em geral como um elemento que surge naturalmente e que não pode ser previsto ou planejado. Lidar com a colaboração de forma mais explícita pode oferecer melhorias para processos, conferindo maior eficiência ao desenvolvimento e qualidade ao produto final. Esta dissertação de mestrado tem como objetivo oferecer mecanismos para explicitar e acompanhar a colaboração em processos de software, propondo para isso a utilização de técnicas de visualização interativas aplicadas aos processos através de uma ferramenta denominada EvolTrack-Process. Palavras-chave: processos de software; colaboração; técnicas de visualização. 39 WTDSoft 1. Caracterização do Problema Para conseguir uma maior chance de sucesso no desenvolvimento de software, um processo – independentemente do seu nível de formalidade – deve ser definido e seguido [Fuggetta 2000]. Ainda de acordo com essas pesquisas, melhorias na qualidade do processo podem refletir na qualidade do produto desenvolvido, bem como auxiliar empresas a atingir seus objetivos e cumprir os seus prazos em um negócio onde o tempo de mercado pode ser decisivo. Além de tarefas, artefatos e agentes, processos de software também definem outros elementos e características fundamentais para o desenvolvimento de sistemas que não são imediatamente reconhecidos em diagramas e modelos, como por exemplo a colaboração entre os envolvidos na sua produção. Uma vez que o desenvolvimento de software não-trivial é um exemplo típico de trabalho colaborativo, no qual diferentes agentes assumem diversos papeis e executam tarefas interdependentes, a colaboração é essencial para a produção de software, quer esse desenvolvimento ocorra em um mesmo local ou em um ambiente distribuído [Herbsleb et al., 2005, de Souza et al., 2011]. Apesar de sua importância, a colaboração é muitas vezes negligenciada durante a definição do processo, sendo tipicamente considerada como algo que surge naturalmente e não pode ser prevista, muito menos planejada [Magdaleno 2013]. Com relação às ferramentas, apesar de existirem várias abordagens para enfrentar as dificuldades e desafios em matéria de processos – entre essas soluções, Process-centered Software Engineering Environments (PSEEs) e Business Process Management Systems (BPMS) – a colaboração não é seu foco e acaba restrita à alocação de agentes. Nesse cenário, se torna difícil entender e acompanhar como ocorre a colaboração entre os agentes nos processos de software sem ferramental de apoio dedicado, dando origem a seguinte questão de pesquisa: “Como explicitar e acompanhar a colaboração em processos de software?”. A hipótese considerada é de que técnicas de visualização podem auxiliar nessa compreensão e acompanhamento da colaboração, e que as mesmas técnicas gerais aplicadas na visualização de software também podem ser úteis no contexto de processsos. O objetivo dessa dissertação de mestrado é construir uma ferramenta para visualizar e monitorar a colaboração em processos de software, visando auxiliar na gestão e evolução de processos a partir do acompanhamento de execuções em andamento ou de instâncias de processo previamente executadas. 2. Fundamentação Teórica Os trabalhos que motivam e fundamentam a proposta desse trabalho são aqueles que abordam colaboração em processos (Seção 2.1) e técnicas de visualização (Seção 2.2). 2.1. Colaboração em Processos A colaboração é foco de diversos estudos de processos, tanto no cenário de software como também em processos de negócio em geral. Essas propostas incluem a definição de processos de software que lidam mais explicitamente com colaboração, como o Collaborative Software Process [Williams 2000], um modelo de processo composto por 40 WTDSoft uma série de formulários, checklists e atividades adaptadas para a prática de desenvolvimento em pares, visando ampliar a percepção de desenvolvedores e facilitar o trabalho em equipe. Voltada para processos de negócios, existe a iniciativa BPM4People [Brambilla et al., 2012], que propôs uma extensão da Business Process Model and Notation (BPMN), incluindo novas representações de caráter colaborativo, como por exemplo a noção de atividades onde os agentes que a realizarão serão convidados durante a execução. Em outra linha de trabalhos, alguns pesquisadores propuseram modelos de maturidade e sistemáticas voltados explicitamente para colaboração [Magdaleno et al., 2011]. Os modelos de maturidade atuam como um roteiro, definindo um conjunto ordenado de práticas para a melhoria incremental, comparação ou avaliação da situação atual das organizações, apresentando etapas e guias para colocar a empresa em um caminho evolutivo, partindo de um processo caótico ad-hoc até um ambiente controlado e mais disciplinado. Há ainda a COMPOOTIM [Magdaleno 2013], uma sistemática para gestão da colaboração nos processos compostos para projetos de software, com propósito de apoiar gerentes de projeto. É importante notar que esses modelos de processo e maturidade reconhecem que algumas de suas práticas são difíceis de cumprir sem o apoio de ferramentas apropriadas, reforçando a importância de iniciativas como a ferramenta proposta por essa dissertação. 2.2. Técnicas de Visualização Técnicas de visualização da informação têm sido empregadas com sucesso por pesquisadores que tentam entender as características de um software, especialmente aqueles relacionados à estrutura, comportamento e evolução, dando origem a subárea de visualização de software [Diehl 2007]. A motivação geral para a utilização de técnicas de visualização de software está na facilidade para a detecção de padrões e estruturas, difíceis de serem analisados sob a forma de dados brutos sem representações gráficas associadas. No contexto de processos, o uso de visualizações é reconhecidamente importante para a avaliação, representação e comunicação dos estados de um processo, sendo um desafio o desenvolvimento de técnicas e novos paradigmas para transmitir informações de um processo de forma intuitiva [Fugetta & Nitto, 2014]. Em nosso trabalho em particular, é esperado que o uso de visualizações facilite a avaliação da colaboração medida nos processos, apresentando informações tipicamente difíceis de serem interpretadas em conjunto sob uma forma visual integrada interativa e mais intuitiva. 3. Contribuições A principal contribuição dessa proposta é a criacão de uma ferramenta, denominada EvolTrack-Process. A ferramenta está inserida dentro do projeto EvolTrack, que tem por objetivo o rastreamento e visualização da evolução de projetos de software sob diferentes perspectivas [Cepeda et al., 2010]. A ideia é criar novas perspectivas na infraestrutura oferecida pelo EvolTrack, oferecendo aos usuários uma coleta de dados automatizada e visualizações interativas acerca de processos de software com foco em colaboração. Dentre as possibilidades de uso da EvolTrack-Process, destacam-se: 41 WTDSoft A visualização de redes de colaboração entre agentes envolvidos na execução das atividades dos processos, incluindo dados da localização geográfica; A visualização de informações relacionadas às atividades de processos, incluindo a comparação do tempo gasto para sua realização em outras instâncias e informações sobre atores que já desempenharam as atividades na organização através de gráficos de área empilhada e de linha; A visualização de como um processo foi evoluindo e se modificando ao longo do tempo através da comparação simultânea de várias instâncias, possibilitando a identificação de desvios na execução do processo e de agentes que são alocados com frequência para as atividades através da reconstrução de vários modelos do mesmo processo apresentados de forma integrada; A interação com as visualizações, possibilitando, por exemplo, a obtenção de informações mais detalhadas sobre uma determinada atividade do processo durante a análise de um modelo, mostrando diferenças de tempo de execução da atividade nas suas execuções. Uma vez concluída, essa ferramenta poderá contribuir para a gestão e evolução de processos de software, conferindo à organização uma maior compreensão de seus processos, facilitando, por exemplo, a alocação de recursos humanos para as atividades, ou o reconhecimento de problemas durante a execução de uma instância em particular. Outra contribuição importante desse trabalho está na avaliação do uso de visualizações para acompanhar a colaboração em processos de software. Embora a utilização de visualizações aplicadas em processos não seja uma novidade desse trabalho, a coleta de indícios sobre a eficácia do uso de visualização no apoio aquilo que se propõem auxiliar não era uma preocupação desses estudos anteriores, dificultando a escolha de técnicas adequadas para apresentação das informações de processos. Dessa forma, uma vez concluídos os estudos planejados para o protótipo, será possível coletar indícios sobre a utilização das visualizações adotadas nessa proposta, avaliar se são apropriadas para outros trabalhos que tenham objetivos similares ou reforçar a necessidade do desenvolvimento de novas técnicas de visualização mais específicas. 4. Estado Atual Foram propostas as seguintes atividades para esse trabalho: duas revisões informais da literatura, uma com foco em indicadores de colaboração e outra em técnicas de visualizações de processo; a elaboração do projeto técnico e implementação da ferramenta proposta; e, finalmente, o planejamento e execução da avaliação da solução, bem como a análise de seus resultados. Dentre essas atividades, ambas as revisões informais da literatura já foram realizadas, identificando diversos trabalhos e técnicas importantes para a proposta. Em relação ao desenvolvimento da ferramenta, o projeto técnico de alguns módulos já foi finalizado e um protótipo está em desenvolvimento. Atualmente, estão sendo escolhidas as técnicas de visualização de software que serão utilizadas, incluindo grafos para retratar a interação sociotécnica entre os atores, 42 WTDSoft acrescentado de um mapa mostrando a distribuição geográfica dos mesmos, a representação do processo usando o metamodelo definido pelo Software & System Process Engineering Meta-Model (SPEM) – uma notação proposta especificamente para o contexto de software, definida como padrão pelo Object Management Group (OMG) –, e outras técnicas de visualização mais tradicionais, como gráficos de área empilhada e diagramas de caixa para dados com possível relevância estatística. 5. Avaliação dos Resultados A avaliação planejada para o trabalho se dará sobre a ferramenta desenvolvida, a partir de estudos com objetivo de caracterizar a aplicabilidade de técnicas de visualização de software para a visualização e acompanhamento da colaboração em processos. Para tanto, foi planejado o uso de dois questionários diferentes aplicados a duas populações distintas: uma composta por participantes advindos da indústria de software, usando dados de instâncias de seus próprios processos; e outro usando a comunidade acadêmica, envolvendo a utilização de dados de processos fictícios criados para ilustrar cenários de utilização da ferramenta. Esse tipo de estudo foi escolhido diante da dificuldade para a realização de experimentos na área de processos de software, onde os custos e riscos associado ao acompanhamento ao longo de todo o processo de desenvolvimento de um sistema, inserindo dois tratamentos, com e sem a ferramenta proposta nesse trabalho, torna o método inviável. Com essa pesquisa, espera-se obter dados do potencial de uso da ferramenta proposta e, consequentemente, da utilidade de visualizações para o acompanhamento da colaboração em processos de software. 6. Comparação com Trabalhos Relacionados Assim como essa proposta, outros trabalhos foram realizados com o objetivo de enriquecer a percepção de usuários acerca de processos de software. Os trabalhos de visualização de software com foco em processo, tal como [Rilling et al., 2007], têm como objetivo a representação de elementos de processos de software, desenvolvendo suas próprias metáforas visuais ou usando técnicas já existentes. Esses trabalhos podem servir como inspiração para algumas visualizações utilizadas em nossa proposta, mas nenhum deles tem um foco específico em colaboração em processos de software. Os trabalhos de mineração de processos, tal como [van der Aalst et al., 2007], têm como objetivo a identificação automática de relações a partir de logs de execução de processos. Embora grande parte dessas ferramentas utilize técnicas que também são importantes para essa proposta, sobretudo relacionadas à coleta de dados de processos, os objetivo são diferentes: enquanto ferramentas de mineração visam extrair relações relevantes automaticamente, nossa proposta tem como intenção oferecer visualizações para que o usuário tome conclusões com base em sua experiência, além de poder ser utilizada sem a necessidade de um grande volume de execuções de processos anteriores. Finalmente, as ferramentas que promovem colaboração, como as discutidas em [Costa et al., 2011], têm como objetivo oferecer aos usuários facilidades para trabalhar em equipe, através da ampliação da percepção de suas atividades, por facilitar a 43 WTDSoft coordenação de suas atividades, entre outros aspectos associados a colaboração. Todavia, essas ferramentas tipicamente têm foco voltado para os desenvolvedores de software, apresentando informações advindas de lista de mensagens e repositórios de controle de versão, deixando de lado elementos de processos. Referências van der Aalst, W. M. P., Reijers, H. A., Weijters, A. J., van Dongen, B. F., de Medeiros, A. K., Song, M. Verbeek, H. M. (2007). Business process mining: An industrial application. Inf. Syst. 32, 5, pp. 713-732. Brambilla, M., Fraternali, P., Vaca, C., Butti, S. (2012). “Combining Social Web and BPM for Improving Enterprise Performances: the BPM4People Approach to Social BPM”, WWW2012 Conference, European-projects track, Lyon, France, pp. 223-226. Cepeda, R. S. V., Magdaleno, A. M., Murta, L. G. P., Werner, C. M. L. (2010). “EvolTrack: improving design evolution awareness in software development”, Journal of the Brazilian Computer Society, v. 16, pp. 117-131. Costa, J. M., Cataldo, M., de Souza, C. R. B. (2011). “The scale and evolution of coordination needs in large-scale distributed projects: implications for the future generation of collaborative tools”. Proceedings of the SIGCHI Conference on Human Factors in Computing Systems (CHI '11), Vancouver, BC, pp. 3151-3160. Diehl, S. (2007). Software Visualization: Visualizing the Structure, Behaviour, and Evolution of Software, Springer Press. Fuggetta, A. (2000). "Software process: a roadmap". In: Proceedings of the Conference on The Future of Software Engineering, pp. 25–34, Limerick, Ireland. Fuggetta, A., Nitto, E. (2014). “Software process”. In: Proceedings of the on Future of Software Engineering (FOSE 2014). ACM, New York, NY, USA, pp. 1-12. Herbsleb, J. D., Paulish, D. J., and Bass, M. (2005). “Global software development at siemens: experience from nine projects”. Proceedings of the 27th international conference on Software engineering, St. Louis, MO, USA: ACM, pp. 524-533. Magdaleno, A. M., de Araujo, R. M., Werner, C. M. L. (2011). “A roadmap to the Collaboration Maturity Model (CollabMM) evolution” 15th International Conference on Computer Supported Cooperative Work in Design (CSCWD), Lausanne, Switzerland, vol. 105, no. 112, pp. 8-10. Magdaleno, A. M. (2013). “Compootim: em direção ao planejamento, acompanhamento e otimização da colaboração na definição de processos de software”. PhD dissertation, COPPE, UFRJ. Rilling, J., Meng, W.J., Fuzhi C., Charland, P. (2007) “Software Visualization - A Process Perspective,” IEEE International Workshop on Visualizing Software for Understanding and Analysis, VISSOFT 2007, Alberta, Canada, pp. 24-25. de Souza, C. R. B., Marczak, S., Prikladnicki, R. 2011, “Desenvolvimento colaborativo de software”, Sistemas Colaborativos, Rio de Janeiro, RJ, Brasil: Elsevier. Williams, L. (2000). “The Collaborative Software Process”. PhD dissertation, The University of Utah. 44 WTDSoft Execução paralela de programas como suporte ao teste de mutação Stevão Alves de Andrade1 , Orientador: Márcio Eduardo Delamaro1 1 Instituto de Ciências Matemáticas e de Computação (ICMC) – Universidade de São Paulo (ICMC/USP) Caixa Postal 668 – 13.560-970 – São Carlos – SP – Brasil {stevao,delamaro}@icmc.usp.br Abstract. This paper presents a Master’s Degree project under development that aims to propose a solution for decreasing the computational cost involved in applying mutation testing. There are being investigated alternatives for parallelization of test run by applying techniques of concurrent programming. Thus, studies are being conducted aiming to identify phases of testing that require a greater cost during its execution, in order to improve efficiency when applying a solution with use of parallelization techniques. Resumo. Este artigo apresenta um projeto de mestrado em desenvolvimento que tem como objetivo propor uma solução para a redução do custo computacional envolvido na aplicação do teste de mutação. Estão sendo investigadas alternativas para paralelização da execução do teste aplicando técnicas de programação concorrente. Neste sentido, estudos vêm sendo conduzidos com objetivo de identificar as fases do teste que exigem maior custo durante sua execução, com intuito de melhorar sua eficiência ao aplicar uma solução com uso de técnicas de paralelização. 1. Introdução Dentre as técnicas de verificação e validação de software, a atividade de teste é uma das mais utilizadas, constituindo-se em uma técnica para fornecer evidências da confiabilidade de um produto, consistindo em uma análise dinâmica do produto [Delamaro et al. 2007]. Em geral, os critérios de teste de software são estabelecidos a partir de três técnicas: a funcional, a estrutural e a baseada em erros. Na técnica baseada em erros, que é o foco deste trabalho, os critérios e requisitos de teste são derivados a partir dos erros típicos cometidos no processo de desenvolvimento de software [Myers et al. 2004]. Um dos critérios baseados em erros é o Teste de Mutação. Esse critério surgiu com o objetivo de avaliar a efetividade/qualidade de um conjunto de casos de teste. Os erros típicos de um domínio ou paradigma de desenvolvimento são caracterizados e desenvolvidos como operadores de mutação que, durante a atividade de teste, geram versões modificadas (mutantes) do programa em teste. A intenção, com isso, é auxiliar na seleção de casos de teste que demonstrem que os erros modelados pelos operadores de mutação não estão presentes no programa em teste [Delamaro and Maldonado 1999]. Além de ser uma técnica eficaz quando aplicada para testar um programa, essa técnica tem sido amplamente utilizada para avaliar a eficácia de outras técnicas de validação 45 WTDSoft em revelar defeitos. Experimentos são conduzidos para avaliar o quanto que uma técnica ou critério de teste é capaz de revelar defeitos modelados pelos operadores de mutação. A vantagem do uso de teste de mutação nesse contexto é o fato dessa abordagem apresentar um processo bem definido e preciso para semear os defeitos no produto a ser avaliado. Isso facilita a replicação dos resultados em outros experimentos [Andrews et al. 2005]. 2. Caracterização do Problema Um dos maiores problemas para a aplicação do teste de mutação está relacionado ao seu alto custo computacional, uma vez que o número de mutantes gerados, mesmo para pequenos programas, pode ser muito grande. Esse custo está relacionado ao tempo de análise dos mutantes, normalmente realizado manualmente [Delamaro et al. 2007] e com o tempo necessário para executar os mutantes gerados, representado pela seguinte equação [Mateo and Usaola 2013]: Mt = Gt * Nm + Et * Nt * (Nm + 1) Onde Mt é o tempo total da aplicação da técnica, Gt é o tempo para a geração de um único mutante, Et é o tempo de execução para um caso de teste, Ntc é o número total de casos de teste e Nm o número de mutantes gerados. Abordagens como a geração automática de casos de testes possibilitam a verificação do sistema de maneira intensiva. A geração de dados de teste é um processo de identificação de dados do domínio de entrada válidos para um programa de acordo com os critérios de teste e é utilizada com objetivo de verificar se uma dada implementação contém falhas [Korel 1990]. Quando aplicada em conjunto ao teste de mutação, os mutantes gerados precisam ser executados diversas vezes com um número elevado de casos de teste, o que faz com que a eficiência na execução do critério se torne ainda mais importante. Além disso, avaliações experimentais necessitam que mutantes gerados sejam executados com todo o domínio de casos de teste disponíveis, para que os dados referentes ao processo possam ser colhidos para análise. Várias estratégias foram desenvolvidas com o objetivo de reduzir esses custos, dentre as quais se destacam a utilização de arquiteturas de hardware avançadas para reduzir o tempo de execução dos mutantes [Choi and Mathur 1993], a determinação de um conjunto reduzido e efetivo de operadores de mutação[Barbosa 1998, Mathur and Wong 1993, Offutt et al. 1996] e abordagens para reduzir o número de mutantes gerados com uso de análise estatística de anomalias de fluxo de dados [Marshall et al. 1990]. Uma importante técnica para redução de custo é a execução paralela, a qual é amplamente explorada em outros contextos, como previsão de tempo, dinâmica de fluídos, processamento de imagens, química quântica entre outros [Quinn 2004]. Em [Jia and Harman 2011] é apresentado um survey sobre o teste de mutação e são descritas técnicas para a paralelização da execução do teste de mutação. Em geral as abordagens concentram-se em explorar diferentes arquiteturas computacionais disponíveis na época. Com os avanços computacionais atuais, novas abordagens podem ser exploradas visando aperfeiçoar essa paralelização, incluindo o uso de clusters. 46 WTDSoft 3. Caracterização da Contribuição O objetivo deste trabalho é propor uma alternativa para melhorar a eficiência da aplicação do teste de mutação reduindo o tempo de resposta envolvido na aplicação da técnica. Pretende-se desenvolver um modelo para a aplicação do teste de mutação utilizando técnicas de programação concorrente com objetivo de aperfeiçoar os recursos computacionais utilizados durante essa atividade, considerando questões fundamentais como disponibilidade e escalabilidade. Com base nos objetivos do projeto e nas atividades a serem realizadas durante a sua condução, esperam-se que os seguintes resultados sejam atingidos: • Contribuir com a atividade de teste de mutação, por meio da definição de um modelo para a aplicação do teste de mutação adaptado aos moldes de programas concorrentes; • Instanciar para a ferramenta Proteum [Delamaro 1993] o modelo proposto, objetivando aumentara eficiência da aplicabilidade do critério; • Viabilizar a aplicação do teste de mutação em conjunto com outras abordagens como, por exemplo, geração automática de dados de teste, de forma a tornar uma alternativa prática para verificação intensiva do produto em teste; • Gerar resultados e discussões com base na experimentação dos resultados obtidos e comparar com outras abordagens existentes. 4. Estado Atual do Trabalho Para fornecer os subsídios teóricos necessários para a conclusão dos objetivos deste projeto, inicialmente foi realizada uma investigação de conceitos básicos relacionados à área de engenharia de software e programação concorrente. Entre as atividades que estão sendo desenvolvidas, pode-se destacar: • Decomposição da atividade do teste de mutação em pequenas porções com objetivo de identificar quais atividades podem ser executadas de maneira concorrente ou em paralelo; • Criação do grafo de dependência entre de tarefas identificadas. Com base na decomposição das atividades, o objetivo é identificar as porções de trabalho que são dependentes entre si; • Mapear as tarefas que podem ser executadas em diferentes processadores; • Implementação dos algoritmos de balanceamento de carga apresentados em [Mateo and Usaola 2013]; • Adequação da ferramenta de teste de mutação Proteum [Delamaro 1993] para execução em paralelo, fazendo uso dos algoritmos de balanceamento de carga. 5. Trabalhos Relacionados Existem diversos trabalhos na literatura que tratam sobre a execução paralela de mutantes. Em um survey sobre mutação [Jia and Harman 2011] identificaram três linhas de investigação: (i) execução de mutantes em máquinas de única instrução e múltiplos dados (SIMD), (ii) execução de mutantes em máquinas de múltiplas instruções e múltiplos dados (MIMD) e (iii) uso de algoritmos seriais otimizados. Além dessas abordagens, também 47 WTDSoft é possível destacar o trabalho apresentado em [Mateo and Usaola 2013], que versa sobre algoritmos de balanceamento de carga. Esses trabalhos se relacionam com este trabalho de Mestrado por apresentarem abordagens semelhantes a qual está sendo desenvolvida neste. No entanto, diferenciam-se por serem abordagens aplicadas em contextos diferentes. Esses trabalhos, em sua maioria, servem como base para adaptação de padrões e criação de métricas que vêm sido desenvolvidos neste projeto de Mestrado. 6. Avaliação dos Resultados Pretende-se avaliar os resultados obtidos aplicando métricas de avaliação de desempenho. A avaliação de desempenho tem como objetivo avaliar e analisar o desempenho do software, com intuito de entender melhor o seu comportamento. Além disso, fornece informações importantes para tomadas de decisões de projeto e implementação, necessárias para a melhoria de um produto. Nesse sentido, entende-se que é a abordagem mais apropriada a ser utilizada para validar os resutados obtidos por meio de experimentos. Dentre as avaliações que pretende-se realizar, destacam-se: • Instanciar a abordagem de execução paralela do teste de mutação, proposta na ferramenta de teste de mutação Proteum; • Avaliar, por meio de experimentos científicos, o ganho em eficiência (speedup) da versão paralela da ferramenta Proteum em relação à versão sequencial existente; • Realizar estudo comparativo à abordagem apresentada em [Mateo and Usaola 2013], com intuito de verificar o comportamento dos algoritmos de balanceamento de carga apresentados, quando aplicados à ferramenta de teste de mutação Proteum. Referências Andrews, J., Briand, L., and Labiche, Y. (2005). Is mutation an appropriate tool for testing experiments? In International Conference on Software Engineering (ICSE/´05), pages 15–21, St. Louis, Missouri, USA. Barbosa, E. F. (1998). Uma contribuição para a determinação de um conjunto essencial de operadores de mutação no teste de programas C. Master’s thesis, ICMC-USP, São Carlos, SP. Choi, B. J. and Mathur, A. P. (1993). High-performance mutation testing. The Journal of Systems and Software, 1(20):135–152. Delamaro, M. E. (1993). Proteum - um ambiente de teste baseado na análise de mutantes. Master’s thesis, Instituto de Ciências Matemáticas e de Computação da Universidade de São Paulo (ICMC/USP), São Carlos, SP. Delamaro, M. E. and Maldonado, J. C. (1999). Interface mutation: Assessing testing quality at interprocedural level. In International Conference of the Chile an Computer Science Society (19th SCCC), pages 78–86. Delamaro, M. E., Maldonado, J. C., and Jino, M. (2007). Introdução ao teste de software. In Delamaro, M. E., Jino, M., and Maldonado, J. C., editors, Introdução ao Teste de Software, pages 1 – 7. Elsevier. Jia, Y. and Harman, M. (2011). An analysis and survey of the development of mutation testing. IEEE Transactions on Software Engineering, 37(5):649–678. 48 WTDSoft Korel, B. (1990). Automated software test data generation. IEEE Trans. Softw. Eng., 16(8):870–879. Marshall, A., Hedley, D., Riddell, I., and Hennell, M. (1990). Static dataflow-aided weak mutation analysis (sdawm). Information and Software Technology, 32(1):99 – 104. Special Issue on Software Quality Assurance. Mateo, P. R. and Usaola, M. P. (2013). Parallel mutation testing. Software Testing, Verification and Reliability, 23(4):315–350. Mathur, A. P. and Wong, W. E. (1993). Evaluation of the cost alternate mutation strategies. In VII Simpósio Brasileiro de Engenharia de Software (VII SBES), pages 320–334, Rio de Janeiro, RJ. Myers, G., Sandler, C., Badgett, T., and Thomas, T. (2004). The Art of Software Testing. Business Data Processing: A Wiley Series. Wiley. Offutt, A. J., Rothermel, A. J., Untch, R. H., and Zapf, C. (1996). An experimental determination of sufficient mutant operators. ACM Transactions on Software Engineering Methodology, 5(2):99–118. Quinn, M. (2004). Parallel Programming in C with MPI and OpenMP. McGraw-Hill Higher Education. McGraw-Hill Higher Education. 49 WTDSoft Um estudo sobre geração de testes com BETA: Avaliação e aperfeiçoamento∗ João Batista de Souza Neto, Anamaria Martins Moreira (Orientadora) 1 Programa de Pós-Graduação em Sistemas e Computação (PPgSC) Departamento de Informática e Matemática Aplicada (DIMAp) Universidade Federal do Rio Grande do Norte (UFRN) [email protected], [email protected] Nı́vel: Mestrado Ano de ingresso: 2013 Previsão de qualificação: agosto/2014 Previsão de conclusão: fevereiro/2015 Resumo. Das várias formas de se buscar qualidade de software, Teste de Software e Métodos Formais são duas que merecem destaque. Vários esforços vem sendo feitos pela comunidade para unir essas duas metodologias, que podem se complementar e trazer mais qualidade para o software. Um desses esforços foi a criação da abordagem e ferramenta BETA (B Based Testing Approach), que gera casos de teste a partir de especificações formais na notação do Método B. O presente trabalho tem o objetivo de aplicar BETA em novos estudos de caso com o intuito de fazer um estudo mais aprofundado sobre a abordagem e ferramenta, identificando seus problemas e limitações, assim como propor e implementar melhorias, contribuindo para o seu aperfeiçoamento. Eventos do CBSoft relacionados: SBES, SBMF ∗ Este trabalho recebe apoio financeiro da CAPES e CNPq (Instituto Nacional de Ciência e Tecnologia para Engenharia de Software–INES, processo 573964/2008-4) 50 WTDSoft 1. Introdução e Caracterização do Problema O software passou a ser essencial para a vida moderna, estando presente nos principais afazeres do cotidiano. Esse fato faz com que a preocupação em se desenvolver software de qualidade cresça a cada dia. Teste de Software e Métodos Formais são duas das disciplinas que visam a qualidade no desenvolvimento de um software. Métodos formais fazem uso de um formalismo matemático para descrever informações de uma forma completa, consistente e não-ambı́gua. Por conta disso, fornecem informações mais precisas sobre os requisitos do software, que podem ser de grande auxı́lio na criação de testes. Neste sentido, existem várias iniciativas que buscam unir essas duas metodologias. Uma importante iniciativa pode ser encontrada em [Satpathy et al. 2007], que apresenta o ProTest, uma ferramenta que cria testes para uma especificação formal na notação do Método B [Abrial 2005]. Outra iniciativa também pode ser vista em [Aydal et al. 2009], que apresenta uma abordagem de criação de testes a partir de especificações escritas em Alloy [Jackson 2012]. Estas são apenas duas das várias iniciativas que unem métodos formais e teste de software, mostrando que esta é uma área de estudo bastante ativa. Em [Matos and Moreira 2012, Matos and Moreira 2013] é apresentada a abordagem e ferramenta BETA (B Based Testing Approach)1 . Nesta abordagem, casos de teste de unidade são gerados a partir de especificações formais escritas na notação do Método B. Fazendo uso de particionamento do espaço de entrada [Ammann and Offutt 2008], a abordagem gera casos de teste positivos, que respeitam as restrições da especificação, e negativos, que desrespeitam as restrições da especificação, exercitando ações não esperadas pelo software. As experiências realizadas em [Matos and Moreira 2012, Matos and Moreira 2013] foram importantes para uma validação inicial da abordagem e da ferramenta, entretanto, se limitaram apenas ao projeto de casos de teste, não tendo sido realizadas a implementação e execução dos mesmos. Além disso, a ferramenta continua em desenvolvimento, o que faz com que novas avaliações sejam necessárias. Neste contexto, a proposta do presente trabalho é aplicar a abordagem e ferramenta BETA em novos estudos de caso, de modo a avaliar o comportamento de BETA em situações mais complexas, assim como realizar todo processo de projeto, implementação e execução de testes. Com isso, este trabalho pretende explorar BETA, identificando suas limitações e qualidades, além de propor e implementar melhorias. O restante deste trabalho está organizado da seguinte forma: na Seção 2 são apresentados alguns conceitos relacionados a Método B e Teste de Software; na Seção 3 é apresentada a abordagem e ferramenta BETA; na Seção 4 são apresentados os objetivos e contribuições deste trabalho; a Seção 5 descreve o estado atual do trabalho; na Seção 6 são apresentados os resultados que serão esperados com esta pesquisa. 2. Fundamentação Teórica Nesta seção serão apresentados os principais conceitos que embasam esta pesquisa. Será apresentado uma breve introdução ao Método B e, em seguida, serão apresentados alguns conceito relacionados a teste de software. 1 Informações e detalhes técnicos sobre a abordagem e ferramenta BETA podem ser encontrados no site http://www.beta-tool.info/, onde a ferramenta pode ser baixada. 51 WTDSoft 2.1. Método B O Método B é uma metodologia formal para especificação, projeto e codificação de sistemas [Abrial 2005]. Utilizando conceitos da teoria dos conjuntos, lógica de primeira ordem, aritmética de inteiros e substituições generalizadas (transformadores de predicados), o processo do Método B se inicia com a criação de um módulo abstrato, chamado máquina abstrata, que especifica o comportamento do sistema. A partir de um processo contı́nuo, a máquina abstrata vai sendo refinada de modo a chegar a uma forma mais concreta. O último passo do método B é a implementação, que é o nı́vel mais concreto da especificação, de modo que o código do sistema pode ser gerado automaticamente. Os principais componentes de um módulo do Método B são as variáveis de estado, o invariante, que especifica a validade e restrições para o estado, e as operações, que modificam e consultam o estado. As operações são definidas em termos de substituições generalizadas e possuem pré-condições, que devem ser satisfeitas para que as operações possam ser executadas sem inconsistências. A coerência da máquina é garantida através das obrigações de prova, que são expressões lógicas geradas a partir da especificação, que devem ser provadas com o auxı́lio de um provador de teoremas. 2.2. Teste de Software O Teste de Software é uma das abordagens que buscam aumentar a qualidade do software, pois tem o objetivo de identificar os seus defeitos. Neste trabalho são considerados os testes funcionais, classicamente chamados de testes de caixa preta, projetados a partir da especificação do sistema. Os testes também podem ser classificados de acordo com a atividade do processo de desenvolvimento a que estão relacionados. Os testes de unidade, que estão relacionados à atividade de implementação e verificam cada unidade (um método ou operação, por exemplo) do sistema de forma isolada, são considerados neste trabalho. Um conceito importante em teste de software é o de critério de cobertura, que em [Ammann and Offutt 2008] é definido como uma regra ou conjunto de regras que definem requisitos de teste para um conjunto de teste. Critérios de cobertura são importantes porque estabelecem limites na quantidade de testes a serem criados, mantendo ainda uma boa qualidade. Existem vários tipos de critérios de cobertura, dentre os quais se destacam a cobertura de grafos, cobertura lógica, particionamento do espaço de entrada e testes baseados em sintaxe. Outro conceito importante é o de oráculo de teste, que é o mecanismo responsável por determinar o sucesso ou falha de um teste. Em [Li and Offutt 2014] são apresentadas algumas estratégias de oráculo de teste, que consistem em fazer verificações no estado interno do software, variáveis e invariante de estado, e nos resultados das operações, entre outras verificações. 3. BETA É uma abordagem e ferramenta para geração de casos de teste de unidade a partir de especificações formais em B, apresentada em [Matos and Moreira 2012, Matos and Moreira 2013]. Utilizando como tipo de critério de cobertura o particionamento do espaço de entrada [Ammann and Offutt 2008], BETA gera casos de teste positivos e negativos para uma unidade (operação) de uma máquina abstrata B. A Figura 1 apresenta uma visão geral 52 WTDSoft Figura 1. Visão geral da abordagem BETA. da abordagem BETA. Os quadros brancos representam os artefatos utilizados e produzidos durante o processo e os quadros cinzas representam as etapas da abordagem. Na etapa (1), é preciso caracterizar o espaço de entrada da operação sob teste, que consiste em identificar as variáveis do domı́nio de entrada da operação e suas caracterı́sticas, que são obtidas a partir do invariante de estado da máquina e pré-condição da operação. Em (2), o espaço é particionado em blocos disjuntos correspondentes a cada caracterı́stica. Feito o particionamento, os blocos são combinados em (3) resultando em um conjunto de fórmulas. Cada fórmula estabelece restrições para o domı́nio de entrada e representa um caso de teste. Na etapa (4) são obtidos valores para as variáveis do espaço de entrada que satisfazem as restrições impostas pelas fórmulas. Para a obtenção desses valores, a abordagem sugere o uso de um solucionador de restrições2 . De posse desses valores, é criada uma especificação contendo os dados de teste. Outro elemento importante em um teste, além dos dados de entrada, é o oráculo que determina seu sucesso ou falha, por isso, na etapa (5) são definidos os oráculos de teste. A abordagem apresenta um método para a geração de oráculos para testes positivos. A última etapa da abordagem (6), consiste na implementação dos testes concretos, que leva em consideração a especificação e os oráculos gerados nas etapas anteriores. Atualmente, a ferramenta BETA automatiza os passos (1) ao (4) da abordagem, já os passos (5) e (6) ainda são feitos de forma manual. 4. Objetivos e Contribuições Este trabalho tem o objetivo de aplicar BETA em dois novos estudos de caso com o intuito de fazer um estudo mais aprofundado sobre a abordagem e ferramenta, identificando seus defeitos e possı́veis melhorias, assim como contribuir para o seu aperfeiçoamento. O primeiro estudo de caso consiste em desenvolver testes para a API da linguagem de programação Lua [Ierusalimschy 2012] a partir da especificação criada em [Moreira and Ierusalimschy 2013]. Com esse estudo, este trabalho pretende validar a especificação verificando se os testes criados a partir dela são condizentes com a API real, ou seja, pretendese verificar se o comportamento real da API foi especificado corretamente. Além disso, 2 O solucionador de restrições utilizado pela ferramenta BETA é o ProB, uma ferramenta para verificação de modelo e execução de especificações B – http://www.stups.uni-duesseldorf.de/ProB/ 53 WTDSoft a especificação da API possui um grande número de operações e utiliza muitos recursos do Método B, o que permitirá aplicar BETA em situações mais complexas até então não exploradas, que é o nosso principal objetivo. O segundo estudo de caso consiste em utilizar BETA para contribuir com a validação do compilador B2LLVM [Déharbe and Medeiros Jr. 2013], que gera código LLVM [Lattner and Adve 2004] a partir de implementações B. O código gerado pelo B2LLVM será testado com os casos de teste gerados por BETA a partir da especificação B que originou o código. Ao verificar que o código LLVM gerado segue a especificação, pode-se ter uma maior segurança que o B2LLVM está gerando o código corretamente. Além dos estudos de caso, este trabalho pretende trazer contribuições para as duas últimas etapas de BETA. A forma de obtenção dos oráculos de teste apresentada na penúltima etapa da abordagem é fixa e foca apenas em testes positivos, não abordando testes negativos. Por esse motivo, serão propostas estratégias de oráculo de teste para diminuir essas deficiências da abordagem. Além disso, será desenvolvido um gerador de guias de teste para a ferramenta com o intuito de automatizar parte da implementação dos testes concretos, diminuindo o esforço gasto na última etapa da abordagem. 5. Estado Atual do Trabalho Para contribuir com a penúltima etapa da abordagem, este trabalho está propondo quatro estratégias de oráculo de teste baseadas nas estratégias apresentadas em [Li and Offutt 2014]. As estratégias consistem em: 1) verificar a ocorrência de exceções; 2) verificar o invariante de estado após a execução da operação; 3) verificar os valores das variáveis de estado após a execução da operação; 4) verificar o retorno da operação. As estratégias de oráculo podem ser combinadas para uma melhor verificação, provendo uma melhor flexibilidade, inclusive em testes negativos. Para diminuir o trabalho realizado na última etapa da abordagem, foi desenvolvido um gerador de guias de teste. O gerador traduz os dados da especificação de casos de teste gerada por BETA para um guia de teste em Java e C, utilizando as notações de teste JUnit3 e CuTest4 , respectivamente. O guia contém parte do código do teste concreto e precisa ser adaptado pelo desenvolvedor para poder ser executado. O gerador também automatiza parte da criação dos oráculos de teste com base nas estratégias propostas. Os dois estudos de caso propostos neste trabalho já foram iniciados. No primeiro estudo de caso, a especificação da API de Lua foi aplicada na ferramenta BETA. Inicialmente, a ferramenta não conseguiu gerar casos de teste para nenhuma operação da especificação. Ao investigar o motivo, foi detectado que o solucionador de restrições utilizado pela ferramenta, o ProB, não estava conseguindo gerar valores para as variáveis da especificação devido ao grande número de tipos de Lua considerados, que gerou uma explosão combinatória. Dada esta limitação, este trabalho optou por diminuir o escopo da especificação ao reduzir o número de operações e tipos de Lua que estavam sendo considerados. Com a redução, BETA conseguiu gerar a especificação de casos de teste para algumas operações da API. Os testes concretos serão implementados com o auxı́lio do gerador de guias de teste. 3 4 JUnit é um framework de testes para Java – http://www.junit.org/ CuTest é um framework de testes para C – http://cutest.sourceforge.net/ 54 WTDSoft Para o segundo estudo de caso, foi escolhido um pequeno conjunto de máquinas abstratas e suas implementações B. As implementações foram aplicadas no B2LLVM, que gerou códigos LLVM correspondentes. As máquinas abstratas foram aplicadas na ferramenta BETA, que gerou as especificações de casos de teste. Os testes concretos foram implementados em C com o auxı́lio do gerador desenvolvido neste trabalho, sendo necessário apenas algumas adaptações. Os primeiros resultados da execução dos testes foram positivos. 6. Resultados Esperados Os resultados deste trabalho serão importantes para contribuir com o aperfeiçoamento da abordagem e ferramenta BETA. Em um primeiro momento, este trabalho conseguiu mostrar que a abordagem e ferramenta são aplicáveis em situações reais, além da identificação de algumas limitações, relacionadas ao solucionador de restrições utilizado pela ferramenta, algo que será alvo de um futuro estudo (fora do escopo deste trabalho). Além disso, este trabalho trouxe contribuições para BETA com a proposta de estratégias de oráculo de teste e o gerador de guias de teste, que já estão sendo utilizados nos estudos de caso em andamento. Referências Abrial, J. (2005). The B-Book: Assigning Programs to Meanings. Cambridge U. Press. Ammann, P. and Offutt, J. (2008). Introduction to Software Testing. Cambridge U. Press. Aydal, E., Paige, R., Utting, M., and Woodcock, J. (2009). Putting formal specifications under the magnifying glass: Model-based testing for validation. In International Conference on Software Testing, Verification and Validation, 2009, pages 131–140. Déharbe, D. and Medeiros Jr., V. (2013). Proposal: Translation of B Implementations to LLVM-IR. Brazilian Symposium on Formal Methods. Ierusalimschy, R. (2012). Programming in Lua, Third Edition. Lua.org. Jackson, D. (2012). Software Abstractions: Logic, Language, and Analysis. MIT Press. Lattner, C. and Adve, V. (2004). LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation. In Proceedings of the 2004 International Symposium on Code Generation and Optimization (CGO’04), pages 75–88. Li, N. and Offutt, J. (2014). An Empirical Analysis of Test Oracle Strategies for Modelbased Testing. IEEE 7th Int. Conf. on Software Testing, Verification and Validation. Matos, E. C. B. and Moreira, A. M. (2012). BETA: A B Based Testing Approach. In Formal Methods: Foundations and Applications, pages 51–66. Springer. Matos, E. C. B. and Moreira, A. M. (2013). BETA: a tool for test case generation based on B specifications. In Proceedings of Congresso Brasileiro de Software: Teoria e Prática, CBSoft Tools, Brası́lia - DF. Moreira, A. M. and Ierusalimschy, R. (2013). Modeling the Lua API in B. Draft. Satpathy, M., Butler, M., Leuschel, M., and Ramesh, S. (2007). Automatic testing from formal specifications. In Tests and Proofs, pages 95–113. Springer. 55 WTDSoft O Impacto dos Fatores Humanos em Metodologias Ágeis Aluna Aline Chagas Rodrigues Marques Orientador Prof. Alexandre Marcos Lins de Vasconcelos Co-orientador Prof. Célio Andrade de Santana Júnior Pós-graduação em Ciência da Computação - Centro de Informática (CIn) Universidade Federal de Pernambuco (UFPE) – Pernambuco, PE – Brasil. {acrm2, amlv, casj}@cin.ufpe.br Nível: Mestrado Ano de Ingresso: março de 2013 Previsão de Conclusão: fevereiro de 2015 Aprovação da Proposta: não qualificado Evento: SBES Resumo. Fatores humanos têm um grande impacto nas etapas da construção de software, seja na linha tradicional ou ágil de desenvolvimento. Pesquisas considerando estes fatores no desenvolvimento de software ainda são escassas. Esta dissertação visa realizar um estudo qualitativo sobre o impacto dos fatores humanos no desenvolvimento ágil de software. Para isto, será realizada uma revisão sistemática da literatura e uma pesquisa qualitativa através de entrevistas, aplicando Teoria Fundamentada em Dados. Assim, espera-se obter dados empíricos sobre o contexto desta pesquisa e contribuir para a melhoria dos projetos de desenvolvimento de software das empresas sediadas no Porto Digital de Pernambuco. Palavras - Chaves: Fatores Humanos, Metodologias Ágeis. 56 WTDSoft 1. Caracterização do Problema Segundo Pirzadeh (2010) o desenvolvimento de software é um processo centrado no ser humano e desta forma, considera-se que fatores humanos têm um grande impacto nas etapas da construção de software, ou seja, de acordo com o papel desempenhado pelos stakeholders, o processo de desenvolvimento de software pode ser afetado de diferentes formas, podendo variar de fatores organizacionais e interpessoais para características individuais. Por exemplo, se o papel exercido por um dos stakeholders for um desenvolvedor, o qual está motivado, pode influenciar as fases de construção de software aumentando os níveis de produtividade, já um gerente pode impactar fortemente sobre o desempenho e o sucesso do processo de desenvolvimento. O desenvolvimento ágil de software valoriza a interação humana no processo de desenvolvimento, conforme se pode observar no manifesto ágil quando se fala em "Indivíduos e interação" e "Colaboração com o cliente". Esta importância dada aos fatores humanos também pode ser observada nos princípios citados no manifesto quando descreve que o método mais eficiente para transmissão de informações entre o time, é a conversa “face-to-face”, valorizando assim a comunicação entre a equipe de desenvolvimento (MANIFESTO ÁGIL, 2014). Porém, pesquisas considerando os fatores humanos no processo de desenvolvimento de software são escassas (PIRZADEH, 2010). Ainda se faz necessário avaliar o impacto dos fatores humanos no processo de desenvolvimento de software, uma vez que os trabalhos encontrados em Pirzadeh (2010), Sharp (2005) e Dyba (2008) relatam que fatores humanos e/ou sociais, sobre diferentes perspectivas na engenharia de software, são observados no desenvolvimento tradicional de software e na programação extrema (XP). Desta forma, este trabalho visa realizar um estudo qualitativo sobre o impacto dos fatores humanos em metodologias ágeis em um contexto real na indústria com base nos resultados de uma revisão sistemática da literatura (RSL). Este artigo está dividido como segue: Na seção 2 tem-se a fundamentação teórica com os principais conceitos desta dissertação. Na seção 3 as principais contribuições deste trabalho. Na seção 4 descreve-se o estado atual do estudo. Na seção 5 são elencados e descritos os principais trabalhos que se relacionam com esta pesquisa e por fim na seção 6 são descritos os resultados parciais desta dissertação. 2. Fundamentação Teórica Nesta seção, descreve-se os conceitos fundamentais sobre fatores humanos em engenharia de software e em desenvolvimento ágil de software. 2.1. Fatores humanos em engenharia de software O termo fator humano em engenharia de software é definido como alguns tipos de fatores sociais que surgem a partir de diversas interações e que precisam ocorrer para que o processo de desenvolvimento de software possa fluir. Estes fatores se encaixam em três categorias principais para a área de engenharia de software: (i) sob o ponto de vista do indivíduo, (ii) ou de um grupo coletivo, ou (iii) resultados da utilização das técnicas e abordagens usadas por engenheiros de software (SHARP, 2005). Para Pirzadeh (2010) o fator humano indica diferentes aspectos do ser humano que são envolvidos e impactam no desenvolvimento de software. Tais fatores podem ser abordados dentro de três categorias: 57 WTDSoft 1) Individual: Abrange questões humanas individuais relacionadas à engenharia ou desenvolvimento de software, como características individuais, personalidade, cultura entre outros. 2) Interpessoal: É relacionada a fatores humanos entre os indivíduos que afetam ou são afetados pela Engenharia ou processo de desenvolvimento de software, como cooperação, aprendizado em grupo, trabalho dos times, dentre outros. 3) Organizacional: Inclui fatores humanos relacionados às organizações e ambientes de trabalho, como tomada de decisão nas organizações, consultores, ambiente organizacional e outros. 2.2. Fatores humanos em desenvolvimento ágil de software Segundo Cockburn (2002) fator humano pode ser descrito como alguma questão humana causada por um time de pessoas trabalhando juntas. Desta forma, este conceito pode ser repassado para o desenvolvimento ágil de software quando considera qualquer aspecto humano que esteja envolvido na formação de times para a construção de software, uma vez que este tipo de desenvolvimento tem o foco na interação das pessoas e nos indivíduos. Em Alistair e Highsmith (2002) são enfatizados alguns fatores humanos para metodologias ágeis de desenvolvimento como: cordialidade, talento, habilidades e comunicação. Esses fatores podem emergir quando um grupo de indivíduos está trabalhando junto como um time. 3. Contribuições Algumas contribuições podem ser identificadas ao término desta pesquisa: Fornecer um guia sobre o impacto dos fatores humanos em projetos de desenvolvimento de software, os quais usam metodologias ágeis; Auxiliar à academia com evidências empíricas para a comunidade de engenharia de software que sirvam de base para futuras pesquisas; Contribuir para a indústria na melhoria dos projetos de desenvolvimento de software das empresas sediadas no Porto Digital de Pernambuco. 4. Estado Atual do Trabalho Para se obter maior familiaridade com o tema proposto desta dissertação, objetivou-se realizar uma pesquisa bibliográfica como forma de encontrar quais fatores humanos estão sendo utilizados recentemente em projetos de desenvolvimento de software e, por conseguinte, quais destes utilizam desenvolvimento ágil de software. Esta pesquisa bibliográfica permitiu o conhecimento de uma gama de fenômenos que estão dispersos na literatura (vide Tabela 2). Após esta pesquisa, está sendo conduzida uma revisão sistemática da literatura com o objetivo de identificar, analisar e interpretar as evidências empíricas da literatura, no que se refere ao impacto dos fatores humanos sobre os projetos de desenvolvimento ágil de software. A revisão encontra-se na fase de análise e extração dos dados. 58 WTDSoft Ao final da Revisão sistemática uma pesquisa qualitativa será conduzida. De acordo com Lutters e Seaman (2007) tais pesquisas são geralmente utilizadas para coletar opiniões ou impressões sobre uma determinada situação. Para coletar os dados podem ser utilizados questionários, análise de documentos e entrevistas. Segundo Gray (2012) as entrevistas podem ser classificadas em cinco categorias: estruturadas, semiestruturadas, não direcionadas, direcionadas, e com conversas informais. Esta dissertação optou por realizar entrevistas semiestruturadas, pois, de acordo com Flick (2009), esta abordagem permite utilizar um planejamento aberto e aceita que os pontos de vista dos sujeitos entrevistados sejam melhor expressados, a que em uma entrevista padronizada ou a partir da aplicação de um questionário. A população de estudo serão os envolvidos com os processos de desenvolvimento de software das empresas associadas ao Porto Digital de Pernambuco que utilizam as Metodologias Ágeis. Para este estudo, serão realizadas entrevistas que serão gravadas em áudio e posteriormente transcritas. A extração dos dados das entrevistas será executada com base nos procedimentos de codificação aberta, seletiva e posteriormente a axial. Para a análise e síntese dos dados será aplicada a Teoria Fundamentada em Dados, juntamente com o procedimento de comparação (GLASER e STRAUSS, 1967). O cronograma desta pesquisa pode ser visualizado na Tabela 1 abaixo: Tabela 1. Cronograma de atividades Atividades/Período 2013 1º 2014 2º 1º 2º 1 – Estudos iniciais e disciplinas do programa 2 – Pesquisa bibliográfica 3 – Condução da revisão sistemática 4 – Aplicação das entrevistas 5 – Escrita da dissertação 5. Comparação com Trabalhos Relacionados Pirzadeh (2010) conduziu uma revisão sistemática para identificar e caracterizar fatores humanos que influenciam o processo de desenvolvimento de software em cascata, considerando o ciclo de desenvolvimento e a gerência de software. Foram criadas categorias para os fatores humanos em níveis organizacionais, interpessoais e individuais, a qual se destacou como a mais importante. A autora também investigou quais fases do desenvolvimento eram mais pesquisadas e encontrou que a fase de Engenharia de requisitos era a de maior relevância dentre os estudos selecionados. Livermore (2007) aplicou um survey online que procurava investigar quais fatores estavam relacionados à implementação de metodologias ágeis. Encontrou fatores como: treinamento, envolvimento da gerência, acesso a recursos externos e tamanho da corporação. Tais resultados somente consideraram o aspecto técnico e organizacional e não abordaram a relevância de fatores humanos nesse contexto. 59 WTDSoft Em um relato de experiência, Law e Charron (2005) estavam interessados em pesquisar os efeitos das práticas ágeis em fatores sociais. Os autores não descreveram de que forma selecionaram os fatores como: compartilhamento do conhecimento, motivação e colaboração do cliente. Foram utilizados dois projetos industriais de software que obtiveram sucesso ao se adaptarem aos fatores sociais elencados. Em Gandomani et.al (2014) foi realizado uma pesquisa qualitativa com o objetivo de investigar como fatores humanos impactam na adoção e transição para desenvolvimento ágil de software. Foram realizadas entrevistas semiestruturadas e para análise dos dados utilizou-se Grounded Theory (GT). Como resultado, construiu-se uma teoria em que há fatores que facilitam e outros que impedem a mudança para a abordagem das metodologias ágeis. Todos estes trabalhos mencionados buscam a influência dos fatores humanos em desenvolvimento de software, seja da forma tradicional ou ágil e tem como contexto de estudo, a academia ou a indústria. Sendo assim, este estudo difere-se dos demais por estudar empresas que utilizam metodologias ágeis, realizando uma pesquisa qualitativa para investigar o impacto dos fatores humanos no desenvolvimento ágil de software, apoiada pelos dados resultantes da revisão sistemática da literatura. 6. Avaliação dos Resultados Os resultados desta pesquisa encontram-se na fase incipiente, a qual apresenta a formação de um catálogo de fatores humanos que foram encontrados durante a realização da pesquisa bibliográfica. O catálogo pode ser visualizado na Tabela 2 abaixo: Tabela 2. Catálogo de fatores humanos Fator Autores Resultado Tsun Chow e Dac-Buu Cao Fatores de sucesso projetos ágeis Cordialidade, talento, habilidade e comunicação Alistair Cockburn Highsmith Fatores que promovem bem-estar de um time ágil Responsabilidade, capacitação, liderança, comunicação e confiança Vikash Lalsing, Somveer Kishnah e Sameerchand Pudaruth Fatores pessoais em desenvolvimento ágil de software e em gerência de projeto Interpessoal, individual organizacional e Laleh Pirzadeh Categorias de fatores relacionados aos ciclos de desenvolvimento de software Bom relacionamento confiança e Dyba e Dingsøyr Fatores para o sucesso de um time XP Compartilhando conhecimento, colaboração do cliente e motivação Amy Law e Raylene Charron Efeito das práticas ágeis sobre esses fatores sociais Competência, características pessoais, comunicação, cultura, treinamento e aprendizagem Subhas Chandra Misra, Vinod Kumar, Uma Kumar Fatores de sucesso ao adotar práticas de desenvolvimento ágil de software Capacidade do time envolvimento do cliente e 60 e Jim em o WTDSoft A revisão sistemática ainda está na fase de análise e extração de dados. Tal revisão permitirá responder as seguintes perguntas de pesquisa: RQ1: O que se sabe sobre quais fatores humanos interferem na utilização de métodos ágeis? RQ2: Qual o impacto dos fatores humanos em métodos ágeis?. Pretende-se ao longo desta revisão verificar se existem outros fatores humanos além dos encontrados na pesquisa bibliográfica para que o mesmo faça parte do catálogo. Os dados mais aguardados serão os obtidos através da aplicação de entrevistas semiestruturadas que fornecerão dados empíricos sobre o impacto dos fatores humanos em desenvolvimento ágil de software, de forma a se obter uma visão de como esses aspectos estão sendo considerados pela indústria. Com os dados dessas entrevistas, pretende-se evidenciar os pontos positivos e negativos, estes principalmente, dos fatores humanos em metodologias ágeis. Referências COCKBURN, A. (2002) “Agile Software Development”. Boston: Addison Wesley. COCKBURN, A. HIGHSMITH, J. (2001) “Agile Software Development: The People Factor,” Computer, pp. 131-133. DYBÅ, T.; DINGSøYR, T. (2008) “Empirical Studies of Agile Software Development: A Systematic Review”. Information and Software Technology, ButterworthHeinemann Newton, MA, USA, v. 50, n. 9, p. 833-859. FLICK, U. (2009) “Introdução à pesquisa qualitativa”. Tradução de Joice Elias Costa. Porto Alegre: Artmed. GANDOMANI, T.J; ZULZALIL, H; GHANI, A.A.A; SULTAN, A.B.M; SHARIF, K.Y. (2014) “How Human Aspects Impress Agile Software Development Transition and Adoption”. International Journal of Software Engineering and Its Applications Vol.8, No.1. GLASER, B. G.; STRAUSS, A. L. (1967) “The Discovery of Grounded Theory: Strategies for Qualitative Research”. Chicago: Aldine Transaction. GRAY, D. E. (2012) “Pesquisa no mundo real”. Tradução de Roberto Cataldo Costa. 2a.ed. Porto Alegre: Penso. LAW, A; CHARRON, R. (2005) “Effects of Agile Practices on Social Factors”. Human and Social Factors of Software Engineering (HSSE). St. Louis, Missouri, USA. LIVERMORE, J. A. (2007) “Factors that Impact Implementing an Agile Software Development Methodology”. SoutheastCon. Proceedings. IEEE. LUTTERS, W. G.; SEAMAN, C. B. (2007) “The Value of War Stories in Debunking the Myths of Documentation in Software Maintenance”. Information and Software Technology, v. 49, n. 6, p. 576–587. MANIFESTO ÁGIL. Disponível em: http://agilemanifesto.org/principles.html. Acesso em 26 de abril de 2014. PIRZADEH, L. (2010) “Human Factors in Software Development: A Systematic Literature Review”. Master of Science Thesis in Computer Science and Engineering. Department of Computer Science and Engineering - Division of Networks and Distributed Systems. Chalmers university of technology. Göteborg, Sweden. SHARP, H; ROBISON, H. (2005) “Some Social Factors of Software Engineering: the maverick, community and technical practices”. Human and Social Factors of Software Engineering (HSSE). St. Louis, Missouri, USA. 61 WTDSoft Um Método de Extração de Valores Referência para Métricas de Softwares Orientados por Objetos Tarcı́sio G. S. Filó1 , Mariza A. S. Bigonha1 , Kecia Aline Marques Ferreira2 1 Programa de Pós-Graduação em Ciências da Computação (PPGCC) Departamento de Ciência da Computação - Universidade Federal de Minas Gerais (UFMG) - Belo Horizonte - MG - Brasil 2 Departamento de Computação - Centro Federal de Educação Tecnológica de Minas Gerais (CEFET-MG) - Belo Horizonte - MG - Brasil {tfilo,mariza}@dcc.ufmg.br, [email protected] Nı́vel: Mestrado Ano de ingresso no programa: 2012 Época prevista de conclusão: março de 2014 Data da aprovação da proposta de dissertação: março de 2013 Eventos Relacionados: SBES Resumo. Valores referência para métricas de softwares orientados por objetos são úteis em diversos campos da Engenharia de Software, tais como processos de filtragem em estratégias de detecção de bad smells e identificação de medições anômalas em um processo de medição de produto, parte integrante de um programa de qualidade de software. Nesse trabalho apresentamos um método de extração de valores referência para métricas de softwares orientados por objetos, bem como mostramos a sua aplicação na identificação de valores referência para 18 métricas em um dataset de 111 softwares open-source. Os próximos passos do trabalho consistem em avaliar empiricamente a eficácia dos valores referência na avaliação da qualidade do software. Palavras-chave: métricas, valores referência, qualide de software, medição de software. Abstract. Thresholds for object-oriented software metrics are helpful in severous fields of Software Engineering, such as filtering mechanisms in bad smells detection strategies and identification of anomalous measurements in a software quality program. In this work, we present a method to extract thresholds of object-oriented software metrics and show its application in the thresholds identifying thresholds for 18 metrics of an 111 open-source software systems dataset. The next steps are related to the empirical evaluation of the thresholds effectiveness in software quality evaluation. Keywords: metrics, thresholds, software quality, software measurement. 62 WTDSoft 1. Introdução Pesquisas relacionadas com valores referência para métricas de software orientado por objetos vem sendo realizadas a partir de diferentes metodologias e apresentam valores referência de formatos e significados distintos. Além disso, valores referência para diversas métricas propostas na literatura ainda não são conhecidos. Uma consequência direta desse problema é a inexistência de condições adequadas para avaliar quantitativamente e de forma eficaz a qualidade dos softwares. Valores referência permitem responder questões simples como “Quais métodos do sistema possuem uma quantidade excessiva de parâmetros?” ou “Quais classes do sistema possuem muitos métodos?”. Nesse contexto, o trabalho de pesquisa proposto tem por objetivo contribuir para a solução desse problema, catalogando e avaliando valores referência para um conjunto de 18 métricas de softwares orientados por objetos, a partir de um método sólido e embasado em dados estatı́sticos para derivação desses valores. Com valores referência catalogados, vislumbra-se que as métricas possam ser efetivamente aplicadas na indústria de software, e, consequentemente, a qualidade dos softwares possa ser avaliada de forma automática. 2. Solução Proposta Nesta seção é descrita a metodologia a ser aplicada na derivação de valores referência para as métricas de softwares orientados por objetos coletadas no Qualitas.class Corpus [Terra et al. 2013], que é uma versão compilada do Qualitas Corpus proposto por Tempero et al. (2010), no qual são disponibilizados arquivos XML referentes aos 111 sistemas contendo medições de 18 métricas de softwares: • Básicas: número de classes por pacote, número de métodos, número de atributos, número de métodos sobrescritos, número de parâmetros, número de métodos estáticos e número de atributos estáticos. • Complexidade: linhas de código por método, ı́ndice de especialização, complexidade de McCabe, profundidade de blocos aninhados e distância normalizada. • Conjunto CK: métodos ponderados por classe, profundidade de árvore de herança, número de filhas e ausência de coesão em métodos. • Acoplamento: acoplamento aferente e acoplamento eferente. Para a preparação dos dados, neste trabalho, foi desenvolvida uma ferramenta que lê os arquivos XML disponibilizados no Qualitas.class Corpus e alimenta um banco de dados Mysql com o objetivo de normalizar as medidas. Realizada a conversão por meio dessa ferramenta, têm-se uma forma rápida e ágil de agregar e sumarizar os dados. 2.1. Data-Fitting Um problema importante em Estatı́stica é obter informação sobre a distribuição seguida pelo conjunto de dados analisados [Gibbons and Chakraborti 2003]. Para esse propósito, a ferramenta EasyFit (2013), por meio do teste de aderência de Kolmogorov-Smirnov, realiza a seleção da distribuição apropriada aos dados, o qual é o procedimento de escolher uma distribuição que tenha melhor ajuste para um conjunto de dados. O objetivo dessa etapa é estabelecer a distribuição apropriada a cada métrica de software estudada. Segundo Baxter et al. (2006), explorar as distribuições dos valores das métricas de software é fundamental para avançar no entendimento das estruturas internas de softwares. A partir da distribuição é possı́vel identificar e entender suas caracterı́sticas, como por exemplo, se o valor médio é ou não representativo para a análise. 63 WTDSoft 2.2. Análise dos Dados EasyFit gera um histograma de probabilidade dos dados ajustados a distribuição. A partir dessa visualização gráfica e do conhecimento das caracterı́sticas da distribuição mais aderente aos dados, é possı́vel derivar valores referência para as métricas. Na abordagem de Ferreira et al. (2012), quando a métrica apresenta uma distribuição que possui valor médio representativo, como por exemplo, a distribuição de Poisson, este valor representa o valor tı́pico da métrica. Senão, são identificadas três faixas de valores: Bom/Frequente, Regular/Ocasional e Ruim/Raro, onde Bom/Frequente corresponde a valores com alta frequência, caracterizando os valores mais comuns da métrica, na prática. Para os autores, esses valores não expressam necessariamente as melhores práticas da Engenharia de Software, e sim um padrão seguido pela maioria dos softwares. Ruim/Raro corresponde a valores com baixa frequência, e a faixa Regular/Ocasional é intermediária, e são valores que não são nem muito frequentes nem raros. A frequência é estabelecida via uma análise gráfica do histograma de probabilidade dos dados ajustados a distribuição. 3. Avaliação dos Resultados Ferreira et al. (2012) avaliaram os valores referência propostos via estudos de casos, considerando que a sua aplicação pode resultar em duas situações possı́veis: o valor referência avalia corretamente ou não o método, a classe ou o pacote. A avaliação correta ocorre quando a faixa em que a métrica cai reflete a situação real do artefato avaliado. Quando não há avaliação correta do valor referência, os estudos de caso consideram duas situações: (1) falso-positivo - o valor referência gera uma classificação ruim e a inspeção qualitativa não identifica problemas estruturais; (2) falso-negativo - o valor não classifica a classe como ruim, mas a inspeção qualitativa identifica problemas em sua estrutura. A identificação de casos falsos-negativos demanda uma avaliação qualitativa de um número muito grande de classes. No entanto, considerando que a derivação é feita de forma quantitativa, via análise de distribuição das medidas coletadas de uma grande quantidade de sistemas, uma inspeção manual é inviável, dada a dimensão da amostra. Por essa razão, Ferreira et al. avaliaram os casos falsos-positivos a partir da inspeção manual apenas daquelas classes identificadas nas faixas Ruim/Raro, com o objetivo de avaliar a eficácia do valor referência para identificar problemas. Neste trabalho de dissertação é proposta a condução de 3 estudos de casos com os seguintes objetivos: • Estudo de Caso 1: avaliar um software proprietário com a qualidade interna deteriorada, com o propósito de verificar a capacidade dos valores referência propostos em indicar essa má qualidade. Nesse sentido, esse estudo de caso investiga se a aplicação dos valores referência de fato identifica métodos e classes de qualidade, não produzindo assim resultados falsos-negativos. Em um software qualitativamente definido como ruim, espera-se que métodos e classes não sejam bem avaliados em consonância com a opinião dos desenvolvedores, refletindo o panorama de baixa qualidade. Esse estudo busca avaliar, respectivamente, as métricas de métodos, as métricas de classes e a correlação dessas métricas não avaliarem bem os métodos e classes devido a ocorrência de bad smells bem conhecidos. • Estudo de Caso 2: avaliar uma amostra de métodos e classes classificadas como Ruim/Raro por meio dos valores referência estabelecidos, com o objetivo principal de verificar a presença de casos falsos-positivos. 64 WTDSoft • Estudo de Caso 3: avaliar o software JHotDraw, de reconhecida qualidade estrutural, com o objetivo de verificar a capacidade dos valores referência em indicar essa qualidade. Se isso se confirmar, a aplicação dos valores referência possui baixo risco de levarem a resultados falsos-positivos, afinal, as classes são de boa qualidade e, de fato, são bem avaliadas pelos valores referência. Outra confirmação dessa capacidade é que os valores referência são confiáveis quando sugerem um panorama de qualidade, minimizando o problema de avaliações com resultados falsos-negativos, que ocorre quando a classe não possui problemas estruturais, mas os valores referência os indicam. 4. Estado Atual do Trabalho A preparação dos dados, data-fitting (Seção 2.1), análise dos dados (Seção 2.2) e a identificação dos valores referência para 18 métricas de softwares orientados por objetos foram concluı́das. A Tabela 1 sumariza 5 dos 18 valores referência propostos. A avaliação dos resultados (Seção 3) está parcialmente concluı́da. Table 1. Valores Referência Identificados. Métrica Acoplamento Aferente Acoplamento Eferente Número de Atributos Número de Métodos Complexidade de McCabe Bom/Frequente Regular/Ocasional Ruim/Raro m≤7 7 < m ≤ 39 m > 39 m≤6 6 < m ≤ 16 m > 16 m≤3 3<m≤8 m>8 m≤6 6 < m ≤ 14 m > 14 m≤2 2<m≤4 m>4 O processo de derivação para a métrica Número de Métodos é o seguinte: o Gráfico de Frequência Relativa Acumulada, Figura 1(a), sugere uma distribuição de cauda-pesada. Isso significa que há um grande número de classes com poucos métodos e um pequeno número de classes com muitos métodos. Como mostrado na Figura 1(b), o conjunto de valores dessa métrica possui melhor ajuste à distribuição Weibull. A Figura 1(c) mostra esses dados em escala logarı́tmica, sugerindo uma lei de potência. Foram identificados os valores que representam o 70 ◦ e 90 ◦ percentil dos dados, que correspondem aos valores 6 e 14 (Tabela 1). Os valores 70% e 90% foram identificados via uma análise visual no Gráfico de Frequência Relativa Acumulada da Figura 1(a). Pontos marcados em formato de quadrado e losango representam as regiões identificadas nessa análise. Também determinam a escolha desses percentis os conceitos das faixas Bom/Frequente, Regular/Ocasional e Ruim/Raro, que devem caracterizar, respectivamente, valores muito frequentes, que ocorrem ocasionalmente e raros. 5. Contribuições Pretendidas As principais contribuições pretendidas, oriundas da pesquisa proposta, incluem: 1. Um catálogo de valores referência para 18 métricas de softwares orientados por objetos, derivados a partir de um dataset de 111 softwares open-source. 2. Um catálogo de distribuições estatı́sticas que possuam melhor encaixe em relação as 18 métricas de softwares orientados por objetos, permitindo identificar caracterı́sticas acerca de como os softwares estão sendo construı́dos. 65 WTDSoft (a) (b) (c) Figure 1. Número de Métodos: (a) Frequência Relativa Acumulada (b) Densidade de Probabilidade ajustada à Distribuição Weibull (c) Histograma em escala loglog. 3. Ampliação do universo de métricas com valores referência derivados a partir da metodologia de Ferreira et al. (2012), permitindo realizar uma análise comparativa em termos de resultados com outros trabalhos. 4. Avaliações dos valores referência em: (1) um software proprietário mal projetado, com o objetivo de estender a validação proposta a softwares fora do universo de código aberto e, (2) do dataset utilizado no processo de derivação. 5. Avaliação dos valores referência na identificação de métodos, classes e pacotes de baixa qualidade, bem como a avaliação em um software bem projetado. 6. Trabalhos Relacionados Alves et al. (2010) propuseram um método empı́rico para determinar valores referências a partir de um conjunto de softwares, onde as medições coletadas são agregadas gerando informações no formato: o valor 17 da métrica McCabe representa 0,658% de todos os sistemas. Esses valores são ordenados e os valores referência são identificados pela escolha do 70%, 80% e 90% percentil do conjunto, caracterizando os perfis de qualidade: low risk (entre 0 - 70%), moderate risk (70 - 80%), high risk (80 - 90%) and very high risk (> 90%). Alves et al. não consideram a distribuição apropriada aos dados na definição dos percentis que definem os perfis. Ferreira et al. (2012) identificam valores referência para 6 métricas de softwares orientados por objetos via medição das estruturas de um conjunto de 40 softwares de código aberto desenvolvidos em Java, de diferentes tamanhos, domı́nios e tipos, e uma análise estatı́stica dos dados baseada em uma distribuição estatı́stica apropriada. Oliveira et al. (2014) propuseram o conceito de valores referência relativos para avaliar métricas aderentes a uma distribuição de cauda-pesada. Os valores referência são relativos pois devem ser seguidos pela maioria das entidades, mas considera-se natural que um determinado número de entidades não siga os limites definidos. O formato dos valores referência é o seguinte: p% das entidades devem ter M ≤ k, aonde M é uma métrica de código-fonte, k é o limite definido p é a porcentagem mı́nima. Quando as contribuições desse trabalho são comparadas com os resultados apresentados por Ferreira et al. (2012) e estudos anteriores, identificam-se três diferenças prin66 WTDSoft cipais: (1) Foram introduzidas melhorias no método de derivação de valores referência de Ferreira et al., bem como, houve um avanço nas discussões acerca de suas limitações e qualidades em relação ao panorama atual da área. (2) Foram identificados valores referência para um número maior de métricas. (3) Os valores referência propostos provêem um benchmark para a avaliação quantitativa da qualidade interna de softwares orientados por objetos, considerando não somente classes, mas também métodos e pacotes. 7. Conclusões O objetivo dessa proposta de dissertação é definir um método para extração de valores referência para métricas de softwares orientados por objetos. O método proposto consiste na análise estatı́stica da distribuição de um conjunto de medidas extraı́das de um dataset de softwares, apresentando três faixas de valores: Bom/Frequente, Regular/Ocasional e Ruim/Raro. O método não usa técnicas estatı́sticas muito complexas, é reprodutı́vel e foi aplicado a uma grande quantidade de softwares para extração dos valores referência. Desde a submissão desse artigo até hoje, avançamos em nossa pesquisa e obtivemos alguns resultados preliminares bem animadores sobre os valores referência propostos via estudos de casos realizados. Na continuidade do trabalho, pretendemos aprimorar os estudos de casos realizados, afim de avaliar os valores referência de forma a verificar se eles de fato auxiliam na identificação de problemas estruturais de software. References Alves, T. L., Ypma, C., and Visser, J. (2010). Deriving metric thresholds from benchmark data. In ICSM, pages 1–10. IEEE Computer Society. Baxter, G., Frean, M., Noble, J., Rickerby, M., Smith, H., Visser, M., Melton, H., and Tempero, E. (2006). Understanding the shape of java software. In OOPSLA ’06: Proceedings of the 21st annual ACM SIGPLAN, pages 397–412, NY, USA. ACM. EasyFit (2013). Easyfit. Disponı́vel em: http://www.mathwave.com/products/easyfit.html. Acesso em 09/2013. Ferreira, K. A., Bigonha, M. A., Bigonha, R. S., Mendes, L. F., and Almeida, H. C. (2012). Identifying thresholds for object-oriented software metrics. Journal of Systems and Software, 85(2):244–257. Fowler, M. (2003). Anemic domain model. Disponı́vel em: http://www.martinfowler.com/bliki/AnemicDomainModel.html. Acesso em 09/2013. Gibbons, J. D. and Chakraborti, S. (2003). Nonparametric Statistical Inference (Statistics: a Series of Textbooks and Monogrphs). CRC, 4 edition. Oliveira, P., Valente, M. T., and Lima, F. P. (2014). Extracting relative thresholds for source code metrics. In CSMR-WCRE, 2014 Software Evolution Week - IEEE Conference on, pages 254–263. Tempero, E., Anslow, C., Dietrich, J., Han, T., Li, J., Lumpe, M., Melton, H., and Noble, J. (2010). Qualitas corpus: A curated collection of java code for empirical studies. In 2010 Asia Pacific Software Engineering Conference (APSEC2010), pages 336–345. Terra, R., Miranda, L. F., Valente, M. T., and Bigonha, R. S. (2013). Qualitas.class Corpus: A compiled version of the Qualitas Corpus. Software Engineering Notes, 38(5):1–4. 67 WTDSoft Um Modelo Conceitual para Caracterização da Qualidade Interna de Sistemas de Software Open-Source Orientados a Objeto Mariana Santos1, Paulo Bermejo (coorientador)2, Heitor Costa (orientador)1,2 1 Programa de Pós-Graduação em Ciência da Computação (PPGCC) Universidade Federal de Lavras (UFLA) - Lavras, MG - Brasil 2 Departamento de Ciência da Computação Universidade Federal de Lavras (UFLA) - Lavras, MG - Brasil [email protected], [email protected], [email protected] Ano de ingresso ao programa: Maio/2013 Data prevista para término: Abril/2015 Data de aprovação da proposta: 26/03/2014 Evento relacionado: SBES Resumo. Projetos de software open-source recentemente ganharam importância na academia e na indústria. Com a crescente tendência de uso e os benefícios advindos da iniciativa, como a troca de conhecimentos e a capacidade de conduzir rapidamente inovações, pesquisas sobre a qualidade de software open-source tem ganhado renovado interesse. Além disso, dada a diversidade de habilidades e a experiência dos colaboradores e do estilo de gestão do seu código, a qualidade do código de software open-source precisa ser estudada e avaliada. Nesse sentido, modelos de qualidade de software criados utilizando técnicas estatísticas tornam-se uma alternativa eficiente para obter informações a fim de caracterizar a qualidade interna em sistemas de software open-source orientados a objeto. O objetivo deste trabalho é elaborar um modelo conceitual para a caracterização da qualidade interna de software, criado a partir da experiência de projetos desenvolvidos em Java, considerando domínios. Para tanto, são utilizadas técnicas estatísticas exploratórias e confirmatórias para obtenção dos resultados. Os resultados podem ser utilizados para prever características em sistemas de software em relação à sua manutenibilidade. Palavras-chave: Qualidade de software, orientação a objetos, projetos opensource, análise multivariada de dados, manutenibilidade. 68 WTDSoft 1. Caracterização do Problema Sistemas de software precisam evoluir continuamente durante o seu ciclo de vida [Badri et al, 2012]. Nesse sentido, organizações do ramo de desenvolvimento de software estão cada vez mais preocupadas com a sua manutenção e garantia da sua qualidade, como o desenvolvimento a baixos custos e fáceis de serem evoluídos [Hamid; Hasan, 2010; Badri et al, 2012; Singh; Kannojia, 2013]. Apesar de serem necessárias e vitais para o desenvolvimento de software, atividades relacionadas à garantia da qualidade e à manutenção são dispendiosas. Pesquisas relatam aumento no custo dessas atividades de 35-40% para mais de 90% nas últimas décadas [Hildburn; Towhidnejad, 2002; Seliya; Khoshgoftaar, 2007; Midha; Bhattacherjee, 2012]. O desenvolvimento de sistemas de software open-source (OS) está se tornando cada vez mais importante nos dias de hoje [Cheliotis; 2009; Midha; Bhattacherjee, 2012]. Esses sistemas são disponibilizados em repositórios, tais como, Sourceforge e Github, e possuem ampla gama de domínios de software como negócios, desenvolvimento (navegadores web, IDE’s, etc.) e educação [Midha; Bhattacherjee, 2012]. Aproveitando essa tendência crescente e os benefícios advindos da iniciativa, como a extensa troca de conhecimentos e a capacidade de conduzir rapidamente inovações, pesquisas sobre a qualidade de software OS tem ganhado renovado interesse [Briand et al, 2000; Hao Zhong et al, 2012; Souza; Maia, 2013]. Além disso, dada a diversidade de habilidades e a experiência dos colaboradores e do estilo de gestão do seu código, a qualidade do código de software OS precisa ser estudada e avaliada [Midha; Bhattacherjee, 2012]. Nesse contexto, modelos de qualidade de software criados por meio de técnicas estatísticas tem se mostrado uma alternativa eficiente para obter informações sobre a qualidade em software OS [Seliya; Khoshgoftaar, 2007]. Modelos de qualidade de software são definidos como um conjunto de características que provê um framework com requisitos de qualidade e meios de avaliar o software [ISO/IEC 25010, 2011]. Podem ser utilizados para identificar sistemas de software propensos a falhas e defeitos ou baixa manutenibilidade, modularidade e reusabilidade. O objetivo do trabalho é elaborar um modelo conceitual para caracterizar a qualidade interna de software, criado a partir da experiência de sistemas de software Java, considerando domínios. O uso de sistemas de software orientados a objetos (OO) justifica-se em decorrência da sua popularidade nos dias de hoje na comunidade de software. Portanto, é necessário que sistemas OO permaneçam manuteníveis [Hamid; Hasan, 2010; Dallal; 2013; Srivastava; Kumar, 2013]. Este trabalho está organizado da seguinte forma. Fundamentação teórica é apresentada na Seção 2. Contribuições são apresentadas na Seção 3. Trabalhos relacionados são apresentados na Seção 4. Cronograma e estado atual da pesquisa são apresentados na Seção 5. Avaliação dos resultados é discutida na Seção 6. 2. Fundamentação Teórica 2.1. Qualidade de Software Qualidade pode ser definida como o grau em que características de um produto ou serviço de software satisfazem necessidades explícitas e implícitas dos stakeholders, agregando valor a esse produto ou serviço [ISO/IEC 25010, 2011]. Qualidade interna é a totalidade das características do software do ponto de vista interno. Essa qualidade é 69 WTDSoft mensurada e avaliada em relação à qualidade do código-fonte por meio de medidas de software [ISO/IEC 25010, 2011; Kayarvizhy; Kanmani, 2011]. Na ISO/IEC 25010, a qualidade interna é parte do modelo de qualidade de sistemas de software. 2.2. Medidas de Software Medida é uma escala utilizada para a categorização de dados qualitativos de um sistema de software ou de suas especificações internas e externas [ISO/IEC 25010, 2011]. Elas podem ser coletadas durante o processo de desenvolvimento de software, identificando aspectos como [Yingjie Tian et al, 2008] quantidade de esforço, custo e complexidade. Quando medidas são específicas, elas representam características inerentes à tecnologia de programação adotada; por exemplo, herança na orientação a objetos. 2.3. Avaliação da Qualidade utilizando Técnicas Estatísticas Técnicas e abordagens são utilizadas para analisar dados, sejam qualitativos ou quantitativos. A análise multivariada de dados, tipo de análise estatística frequentemente utilizada para extrair conhecimento de grandes conjuntos de dados, tem se mostrado uma escolha apropriada para analisar a qualidade de sistemas de software [Zhong et al, 2004; Treiblmaier; Filzmoser, 2010; Muhammad et al, 2012]. Técnicas de dependência (e.g. regressão múltipla, análise discriminante e análise multivariada de variância) e interdependência (e.g. testes de correlação, agrupamento ou clustering e análise fatorial) são as mais utilizadas para fazer inferências sobre o relacionamento entre as diferentes variáveis [Hair et al, 2009] e propor modelos com base nos resultados encontrados. 3. Contribuições Algumas contribuições deste trabalho são (i) avaliação da qualidade interna de sistemas open-source OO de diferentes domínios sob a característica Manutenibilidade, considerando a amplitude das medidas, suas propriedades e relevância, (ii) identificação da similaridade entre características de sistemas open-source de diferentes domínios - o que é genérico/específico de cada domínio e (iii) construção de um modelo conceitual para caracterizar a qualidade de sistemas OS sobre diferentes propriedades. Como parte dos resultados esperados, o valor médio das medidas utilizadas é apresentado na Tabela 1, em que o maior valor está grafado em negrito e o menor valor está em itálico e sublinhado. Esses valores foram obtidos utilizando os plug-ins Metrics e VizzMaintenance. A seleção das medidas seguiu o critério de relevância: as mais citadas por artigos identificados em uma Revisão Sistemática de Literatura [Santos et al., 2014]. A análise descritiva dessas medidas foi realizada em parte dos sistemas selecionados para o trabalho (15 sistemas para cada domínio do Sourceforge), coletados nos repositórios Sourceforge (http://sourceforge.net/) e Github (https://github.com/). Tabela 1- Análise Descritiva dos Sistemas Selecionados por Domínio Domínios WMC CBO RFC LCOM 6.782 4.035 12.209 0.245 Áudio & Vídeo (AV) Business & Enterprise (BE) 25.370 6.164 16.805 0.273 4.822 4.209 13.326 0.266 Communications (C) 8.589 4.182 11.073 0.208 Development (D) 5.687 5.060 14.189 0.183 Games (G) 8.844 3.514 13.363 0.276 Graphics (GPH) 8.596 4.506 13.745 0.283 Home & Education (HE) Science & Engineering (SE) 12.123 4.872 14.852 0.273 4.823 3.669 11.282 0.262 Security & Utilities (SU) System Administration (AS) 4.803 4.267 10.499 0.243 70 NOC 211.0 705.0 112.0 162.0 166.0 113.0 149.0 227.0 87.00 219.0 DIT LOC NOM 2.259 56.829 2.732 2.304 220.074 11.840 2.115 40.205 1.773 1.964 66.062 3.617 2.019 121.000 2.016 2.279 77.442 3.012 2.431 58.916 3.550 2.110 95.151 3.781 2.256 38.229 1.705 2.287 37.997 2.309 CC 2.418 2.022 2.441 1.891 2.061 2.359 2.556 2.534 3.372 2.031 NOA 1.131 4.736 738.0 1.038 770.0 1.126 1.425 1.896 648.0 935.0 TCC 0.735 0.993 0.799 1.216 1.537 0.168 1.729 1.849 1.139 1.287 WTDSoft Esses valores indicam que sistemas do domínio BE tendem a ser mais complexos, modularizados e com maior quantidade de filhos, de métodos e de linhas de código. Sistemas nos domínios D e SA tendem a ser menos complexos (valores menores para WMC e CC, respectivamente). Quanto à propriedade coesão, sistemas nos domínios G e GPH tendem a ser mais coesos (valores menores para LCOM e TCC, respectivamente); por outro lado, sistemas nos domínios HE e SE tendem a ser menos coesos. Em relação à propriedade herança, sistemas no domínio HE tendem a ter a maior hierarquia entre classes; em contrapartida, sistemas no domínio D tendem a ter menor hierarquia entre classes. Para medidas de tamanho, sistemas no domínio SU tendem a ter menor quantidade de métodos em contraste com sistemas no domínio BE. Em relação à quantidade de atributos, sistemas no domínio D possuem menor média de atributos, contrapondo-se aos sistemas no domínio SA. O resultado preliminar da análise descritiva mostra que o comportamento das medidas varia de domínio para domínio. Esses resultados apoiam a etapa exploratória da pesquisa na descrição dos fatores extraídos pela Análise Fatorial Exploratória (AFE) e na descrição dos clusters encontrados pela Análise de clusters. A elaboração do modelo seguirá a estratégia de modelagem confirmatória (Figura 1). A construção do modelo será baseada na técnica de modelagem de equações estruturais, que avalia o quão os parâmetros (variáveis que compõem os construtos - medidas de software, representadas pela variável m e seus pesos) são invariantes (equivalentes) para diferentes grupos [Hair et al, 2009]. Cabe ressaltar que esses constructos (fatores da AFE), os pesos e as hipóteses de inter-relacionamento serão obtidos na etapa exploratória utilizando AFE. Figura 1 - Exemplo de Estratégia de Modelagem Confirmatória 4. Comparação com Trabalhos Relacionados Os trabalhos relacionados à proposta do trabalho consistem em investigar como medidas de software podem prever a propensão a falhas em classes [Briand et al, 2000] e outras características como modularidade [Kayarvizhy; Kanmani, 2011] e manutenibilidade [Al Dallal; 2013]. Além disso, há a criação de modelos de qualidade para avaliação da aquisição de sistemas OS [Soto e Ciolkowski, 2009], para definição/aplicação de tecnologias, processos e políticas de uso em sistemas OS [QualiPSo; 2014] e descrição de características de modularidade considerando vários domínios [Souza; Maia, 2013]. Mas, nesses estudos as limitações são quantidade reduzida de sistemas [Briand et al, 2000; Kayarvizhy; Kanmani, 2011; Al Dallal; 2013], não consistência entre os domínios de software e aspectos da OO. Além disso, com amostra de tamanho considerável para utilização de técnicas estatísticas mais robustas, analisam a qualidade em carácter exploratório [Soto; Ciolkowski, 2009; Terceiro et al.; 2012] ou apenas a modularidade 71 WTDSoft com objetivos descritivos, propondo valores de referência [Souza; Maia, 2013]. Este trabalho diferencia-se desses estudos ao propor a elaboração de um modelo conceitual para caracterizar a qualidade interna de sistemas de software Java, considerando domínios e utilizando técnicas estatísticas exploratórias e confirmatórias para obtenção dos resultados. Considerando os gaps mencionados, acredita-se que qualidade de um software OS e soluções para a sua melhoria podem ser representadas por fatores comuns e específicos em diferentes domínios. Com isso, neste trabalho, o objetivo é identificá-los e utilizá-los para prever fatores quanto à manutenibilidade. 5. Cronograma e Estado Atual do Trabalho O cronograma das atividades realizadas e previstas é apresentado na Tabela 2. Essas atividades são: 1) Caracterizar medidas associadas à qualidade interna de software OO por meio de uma Revisão Sistemática de Literatura; 2) Coletar valores para as medidas selecionadas nos sistemas (~500 sistemas de software); 3) Analisar a correlação entre as medidas e identificar fatores usando a técnica AFE; 4) Análise de cluster para identificar características semelhantes entre os sistemas estudados; 5) elaborar um modelo confirmatório das características internas dos sistemas OO Java a partir dos constructos extraídos da AFE; 6) Escrever a dissertação e realizar a defesa. No cronograma, de Jan/2014 a Mai/2014, a atividade 2 está em processo de finalização. A atividade 3 foi iniciada em Jun/2014. A atividade 4 terá início em Ago/2014. Pretende-se iniciar a criação do modelo confirmatório em Out/2014. Tabela 2 - Cronograma Ativ. 2013 2014 2015 Mai Jun Jul Ago Set Out Nov Dez Jan Fev Mar Abr Mai Jun Jul Ago Set Out Nov Dez Jan Fev Mar Abr 1 2 3 4 5 6 6. Avaliação dos Resultados A caracterização da amostra (incluindo características dos domínios de software) será feita utilizando a técnica de inferência Análise Descritiva. Em seguida, será executada a etapa exploratória, utilizando a AFE e Análise de cluster. A última etapa do estudo consiste na confirmação estatística dos resultados, por meio do uso da técnica Partial Least-Squares para confirmar relacionamentos e inter-relacionamentos entre os constructos encontrados na AFE, tendo como produto um modelo estatístico que pode explicar as características de qualidade dos sistemas de software OS analisados. Referências Al Dallal, J. Object-Oriented Class Maintainability Prediction Using Internal Quality Attributes. In: Information and Software Technology. 55, 11, pp.2028-2048, 2013. Badri, M.; Drouin, N.; Toure, F. On Understanding Software Quality Evolution from a Defect Perspective: A Case Study on an Open Source Software System. In: Int. Conference on Computer Systems and Industrial Informatics pp.1-6, 18-20, 2012. Briand, L. C.; Wüst, J.; Daly, J. W.; Porter, V. D. Exploring the Relationship Between Design Measures and Software Quality in Object-Oriented Systems. In: Journal of Systems and Software, vol. 51, no. 3, pp. 245-273, 2000. Cheliotis, G. From Open Source to Open Content: Organization, Licensing and Decision 72 WTDSoft Processes in Open Cultural Production. In: Decision Support Systems. 47, 3. pp. 229244, 2009. Hair, J. F.; Black, W. C.; Babin, B. J.; Anderson, R. E.; Tatham, R. L. Análise Multivariada de Dados. Bookman. 688p. 2009. Hamid, N. F. I. A.; Hasan, M. K. Industrial-Based Object-Oriented Software Quality Measurement System and Its Importance. In: International Symposium in Information Technology, vol.3, pp.1332-1336, 2010. Hilburn, T. B.; Towhidnejad, M. Software Quality Across the Curriculum. In: Annual Frontiers in Education. vol.3, pp.S1G-18, S1G-23 vol.3, 2002. ISO/IEC 25010:2011 Systems and Software Engineering - Systems and Software Quality Requirements and Evaluation - System and Software Quality Models. 2011. Kayarvizhy, N.; Kanmani, S. Analysis of Quality of Object Oriented Systems Using Object Oriented Metrics. In: International Conference on Electronics Computer Technology. vol.5, pp. 203-206. 2011. Midha, V.; Bhattacherjee, A. Governance Practices and Software Maintenance: A Study of Open Source Projects. In: Decision Support Systems, 54(1), pp. 23-32. 2012. Muhammad, S.; Maqbool, O.; Abbasi, A.Q. Evaluating Relationship Categories for Clustering Object-Oriented Software Systems. In: Software, v.6, no.3, pp.260-274, 2012. QualiPSo. Disponível em: http://www.qualipso.org. Acessado em: 26/07/2014. Seliya, N.; Khoshgoftaar, T. M. Software Quality Analysis of Unlabeled Program Modules with Semi supervised Clustering. In: Transactions on Systems, Man and Cybernetics, Part A: Systems and Humans, vol.37, no.2, pp. 201-211, 2007. Santos, M. A.; Bermejo, P.; Costa, H. Uma revisão sistemática sobre o uso de técnicas estatísticas para a avaliação da qualidade interna de sistemas de software orientados a objetos. In: SBES, 2014. Submetido. Soto, M.; Ciolkowski, M. The QualOSS open source assessment model measuring the performance of open source communities. In: 3rd International Symposium on Empirical Software Engineering and Measurement, pp.498-501, 2009. Souza, L. B. L. de; Maia, M. de A. Do Software Categories Impact Coupling Metrics? In: Working Conference on Mining Software Repositories. pp. 217-220. 2013. Srivastava, S.; Kumar, R. Indirect method to measure software quality using CK-OO suite. In: 2013 International Conference on Intelligent Systems and Signal Processing (ISSP), pp.47-51, 2013. Terceiro, A; Mendonça, M.; Chavez, C.; Cruzes, D.S. Understanding Structural Complexity Evolution: A Quantitative Analysis. In: 16th European Conference on Software Maintenance and Reengineering (CSMR), pp.85-94, 2012. Treiblmaier, H.; Filzmoser, P. Exploratory Factor Analysis Revisited: How Robust Methods Support the Detection of Hidden Multivariate Data Structures in IS Research. In: Information & Management. V. 47, Is. 4, pp. 197-207. 2010. Yingjie Tian; Chuanliang Chen; ChunHua Zhang. AODE for Source Code Metrics for Improved Software Maintainability. In: International Conference on Semantics, Knowledge and Grid. pp. 330-335. 2008. Zhong, S.; Khoshgoftaar, T. M.; Seliya, N. Analyzing Software Measurement Data with Clustering Techniques. In: Intelligence Systems. v. 19, no. 2, pp. 20-27. 2004. Zhong; H.; Yang, Y.; Keung, J. Assessing the Representativeness of Open Source Projects in Empirical Software Engineering Studies. In: Asia-Pacific Software Engineering Conference. vol.1, pp. 808-817. 2012. 73 WTDSoft Análise da Qualidade de Experimentos da Computação em Nuvem Helaine Lins1 , Vinicius Garcia1 , Sergio Soares1 1 Centro de Informática – Universidade Federal de Pernambuco (UFPE) Recife – PE – Brasil {hsl,vcg,[email protected]} Abstract. Context: Despite the increasing number of studies evaluating Cloud Computing (CC), results become obsolete quickly. Furthermore, indications point low methodological quality in their conceptions. Objective: Measure and analyze the methodological quality of experiments in the context of CC. Method: Through a Systematic Literature Review the experiments on CC will be identified and analyzed regarding their quality. A measurement instrument will be constructed for measuring the quality of experiments, based on Empirical Software Engineering. Results: The characterization and analysis of the evolution of the quality of experiments in CC in order to contribute to efforts for conducting evaluation studies of higher methodological quality in CC. Resumo. Contexto: Apesar do aumento do número de experimentos na Computação em Nuvem (CN) seus resultados se tornam obsoletos rapidamente, além disso indícios apontam baixa qualidade metodológica em suas concepções. Objetivo: Caracterizar, analisar e medir a qualidade metodológica dos experimentos no contexto da CN. Método: Através de uma Revisão Sistemática da Literatura (RSL) serão identificados e qualificados os experimentos da CN. Será proposto instrumento sistemático para aferição de qualidade com base na Engenharia de Software Empírica (ESE). Resultados: Espera-se caracterizar e analisar a evolução da qualidade dos experimentos na CN com o intuito de contribuir com os esforços para realização de experimentos de melhor qualidade metodológica na CN. 1. Caracterização do Problema A Computação em Nuvem foi vislumbrada em 1961 por McCarthy [Garfinkel 1999]. O conceito propôs que os recursos de TI fossem providos sob demanda e bilhetados como serviço utilitário. Porém, por questões de evolução tecnológica só veio à tona apenas R em 1999 quando a Salesforce disponibilizou o primeiro produto cloud. Ao se firmar como um dos paradigmas mais promissores da computação [Buyya et al. 2009], a CN vem atraindo os olhares de gigantes como a Amazon, Google, Microsoft, IBM, HP, entre outras, que provêem uma grande variedade de serviços. Para reforçar a tendência de crescimento, segundo estimativas do International Data Corporation (IDC)1 , os investimentos em CN devem alcançar a casa dos US$100 bilhões em 2014. Esta grande variedade de ofertas torna natural a prática de avaliação entre os diferentes serviços disponíveis. Porém estas comparações são trabalhosas, já que os serviços existentes mudam e se renovam rapidamente [Prodan and Ostermann 2009], o que torna obsoleta a validade dos seus resultados. Outro fator agravante são as diferentes 1 http://www.idc.com/research/Predictions14/index.jsp 74 WTDSoft terminologias, definições e falta de padronização ao se registrar e reportar os resultados. Estes problemas diminuem as possibilidades de continuidade a partir dos estudos existentes, pois se torna ineficiente o reaproveitamento em novos estudos, tanto acadêmicos quanto industriais. Apesar dos estudos de avaliação possuem relação bem próxima com a prática de experimentação [Stantchev 2009], evidências apontam a presença de problemas relacionados ao relato de seus resultados [Li et al. 2013, Huang et al. 2013, Nasir and Niazi 2011, Silva et al. 2013, Durao et al. 2014]. Assim, a presente pesquisa pretende: (i) identificar e caracterizar os experimentos da CN, (ii) propor um instrumento para análise da qualidade dos experimentos da CN e (iii) analisar a evolução da qualidade dos experimentos da CN e realizar um paralelo com os realizados na ESE. 2. Fundamentação Teórica O crescimento acelerado de tecnologias de comunicação como a Internet, tem atraído a atenção de grande parte da indústria de Tecnologia da Informação (TI). Conceitos como a Computação em Nuvem, Utility Computing e Everything-as-a-Service vem possibilitando a consolidação de um modelo em que os serviços de computação são utilizados como serviços utilitários sob demanda, como a telefonia [Kleinrock 2003]. Dentre os conceitos citados, a CN é o mais recente e segundo o National Institute of Standards and Technology (NIST) possui cinco características essenciais [Mell and Grance 2009]: (i) alocação de recursos sob demanda, (ii) amplo acesso à rede, (iii) recursos disponíveis sob demanda, (iv) recursos em qualquer quantidade e a qualquer momento e (v) serviço medido (recursos monitorados com transparência). Ainda segundo o NIST, CN possui três modelos de serviços: (i) Software como Serviço (SaaS), (ii) Plataforma como Serviço (PaaS) e (iii) Infraestrutura como Serviço (IaaS). Quando se deseja avaliar serviços cloud é necessária a aplicação de técnicas e instrumentos capazes de mensurar, de maneira controlada, o fenômeno investigado e que considere as características idiossincráticas desta tecnologia. Uma das abordagens bem utilizadas em CN é a prática de benchmarking, que através da aplicação de determinadas cargas de trabalho no sistema em teste [Poess and Floyd 2000], coleta dados que permitem um especialista mensure um conjunto de índices de performance sobre o referido sistema. Estas práticas de avaliação, assim como em outras ciências, devem ser realizadas com um determinado nível de controle de medição, execução, custo e replicabilidade. A ESE é uma área da Engenharia de Software (ES) que tem como objetivo auxiliar a realização de estudos experimentais, preocupando-se com ferramentas e processos de desenvolvimento para a compreensão de seus limites para projeções de melhorias. Dentre os métodos empíricos existentes na ESE, o Experimento Controlado (EC) é a estratégia que permite a investigação de uma hipótese testável, onde uma ou mais variáveis são manipuladas para medir o seu efeito sobre outras variáveis [Easterbrook et al. 2008]. A força de um EC encontra-se no controle sobre o processo, relacionamento tratamentoresultado, rigor estatítico, maior relação entre teoria-prática, bem como a possibilidade de replicá-lo. Segundo [Wohlin et al. 2012] um experimento pode ser clasificado segundo duas perspectivas: (i) base humana: onde aspectos humanos influenciam na realização do experimento e (ii) base tecnológica: onde os aspectos humanos não influenciam na realização do experimento. Este trabalho destina-se a investigar somente os experimentos de base tecnológica na CN, excluíndo-se do escopo os de base humana. Estudos secundários foram introduzidos na ES através da Engenharia de Software Baseada em Evidência (ESBE). Seu objetivo é permitir que evidências de pesquisas pos75 WTDSoft sam ser integradas com a prática e valores humanos na tomada de decisão no desenvolvimento e manutenção de software [Kitchenham et al. 2004]. Através destes é possível identificar, avaliar e interpretar todos os resultados relevantes a um determinada questão de pesquisa. A Revisão Sistemática da Literatura (RSL) é um estudo secundário que permite a análise ampla e exploratória de diversos estudos primários correlatos, como fonte de informação, para a construção de conhecimentos em ES. Na ESE, a Avaliação da Qualidade (AQ) foi inicialmente introduzida por Kitchenham et al. através de guidelines para auxiliar a qualidade na realização de estudos empíricos [Kitchenham et al. 2002]. Desde o primeiro passo de Kitchenham novos checklists de qualidade para diferentes tipos de estudos experimentais foram propostos na EBSE. Apesar de não existir um conceito absoluto de “qualidade” em estudos empíricos algumas constatações apontam que o conceito deve estar relacionado ao viés da pesquisa, aumento da validade (interna e externa) e à correta interpretação dos dados [Moher et al. 1995, Kitchenham et al. 2002]. 3. Objetivos e Contribuições O objetivo principal deste trabalho é investigar e delinear a evolução da qualidade dos experimentos de base tecnológica realizados no contexto da CN. Para tal, planeja-se (i) Realizar uma RLS para identificar e caracterizar os experimentos de base tecnológica da CN, (ii) Propor um instrumento de avaliação da qualidade de experimentos de base tecnológica da CN e (iii) Avaliar a qualidade dos experimentos identificados. Quanto à RSL, as contribuições esperadas são: (i) identificar e caracterizar os experimentos de base tecnológica da CN, (ii) delinear a evolução histórica destes experimentos, (iii) identificar novas oportunidades de pesquisa e (iv) disponibilizar um os dados da pesquisa de forma a contribuir com futuras pesquisas e análises. Quanto ao instrumento de avaliação de qualidade, esperamos contribuir no desenvolvimento de pesquisas futuras: (i) como um instrumento de aferição da qualidade metodológica de experimentos de base tecnológica da CN e (ii) os elementos do instrumento podem embasar a construção de guias que auxiliem o desenvolvimento de experimentos da CN com maior qualidade metodológica. Com a avaliação da qualidade em si, espera-se: (i) prover uma identificação do perfil metodológico dos experimentos de base tecnológica realizados na CN, (ii) identificar comonalidades e peculiaridades específicas de experimentos de base tecnológica realizados na CN em relação a ESE, (iii) racionalizar a importância do problema de qualidade metodológica dos experimentos da CN e (iv) identificar oportunidades de melhorias metodológicas que possam contribuir para a melhoria de experimentos da CN. 4. Cronograma e Estado Atual do Trabalho Durante o primeiro ano no programa de mestrado todas os créditos de disciplinas foram cumpridos. Também participo de reuniões periódicas e workshops do grupo de pesquisa Assert2 e ESEG3 . A pretensão de defesa é para fevereiro de 2015 e o cronograma de pesquisa proposto é apresentado na tabela 1. 5. Trabalhos Relacionados Em sua RSL Li et al.[Li et al. 2013] avaliou a qualidade de estudos de avaliação em sistemas cloud observando aspectos relacionados à organização, apresentação dos resultados 2 3 http://assertlab.com/ https://sites.google.com/site/eseportal/ 76 WTDSoft Atividade Jun Jul Agos Meses Set Out Nov Dez Jan Revisão Sistemática da Literatura Instrumento de Avaliação Avaliação da Qualidade Escrita da Dissertação Tabela 1. Cronograma Proposto e descrição. Apesar de conseguir identificar em sua investigação que, em geral, os estudos de avaliação são conduzidos ou reportados inadequadamente, sua análise considerou apenas as avaliações de sistemas comerciais, excluindo os experimentos controlados e os sistemas cloud não comerciais. O projeto proposto investigará todos os experimentos de base tecnológica em todas as plataformas da CN, e realizará uma investigação mais detalhada e analisará criteriosamente a evolução da qualidade destes quanto aos mecanismos de suporte utilizados, replicabilidade e rigor estatístico. Também será realizado um paralelo da qualidade comparando-se aos experimentos da ESE. Teixeira propôs uma escala de qualidade baseada em listas de verificação que permitem analisar quantitativamente a qualidade de estudos empíricos [Teixeira 2014]. Também foi proposto critérios de avaliação gerais e específicos que possibilitam sua aplicação em diferentes tipos de estudos. O mecanismo é baseado em critérios de qualidade aplicáveis ao contexto proposto pela pesquisa e como o mesmo permite a avaliação de estudos empíricos como um todo, ele se torna genérico incluindo aspectos baseados em experimentos baseado em humanos. Assim sendo, será proposto um novo mecanismo capaz de avaliar os experimentos de base tecnológica no contexto da CN. 6. Avaliação dos Resultados A RSL terá seu protocolo revisado por pares mais experientes dos grupos de pesquisa, em ESE e CN, que colaboram com a realização da pesquisa. Desta forma, a experiência de integrantes que já participaram de estudos sistemáticos anteriores será um elemento muito importante que poderá a vir influenciar positivamente a qualidade do estudo. O protocolo da RSL será revisado por especialistas em CN para ratificar as strings de buscas, a definição dos termos, os critérios de inclusão/exclusão e critérios de qualidade utilizados. Quanto ao processo de avaliação da qualidade por meio do instrumento a ser aplicado, iremos utilizar métricas para analisar a confiabilidade do instrumento através do coeficiente para escalas nominais amplamente utilizado na literatura, o Cohen’s Kappa [Cohen 1968]. Referências Buyya, R. et al. (2009). Cloud computing and emerging it platforms: Vision, hype, and reality for delivering computing as the 5th utility. Future Generation computer systems, 25(6):599–616. Cohen, J. (1968). Weighted kappa: Nominal scale agreement provision for scaled disagreement or partial credit. Psychological bulletin, 70(4):213. Durao, F., Carvalho, J. F. S., Fonseka, A., and Garcia, V. C. (2014). A systematic review on cloud computing. The Journal of Supercomputing. 77 WTDSoft Easterbrook, S., Singer, J., Storey, M.-A., and Damian, D. (2008). Selecting empirical methods for software engineering research. In Guide to advanced empirical software engineering, pages 285–311. Springer. Garfinkel, S. (1999). Architects of the information society: 35 years of the Laboratory for Computer Science at MIT. MIT press. Huang, Q., Yang, C., Liu, K., Xia, J., Xu, C., Li, J., Gui, Z., Sun, M., and Li, Z. (2013). Evaluating open-source cloud computing solutions for geosciences. Computers & Geosciences, 59:41–52. Kitchenham, B. A., Dyba, T., and Jorgensen, M. (2004). Evidence-based software engineering. In Software Engineering, 2004. ICSE 2004. Proceedings. 26th International Conference on, pages 273–281. IEEE. Kitchenham, B. A., Pfleeger, S. L., Pickard, L. M., Jones, P. W., Hoaglin, D. C., El Emam, K., and Rosenberg, J. (2002). Preliminary guidelines for empirical research in software engineering. Software Engineering, IEEE Transactions on, 28(8):721–734. Kleinrock, L. (2003). An internet vision: the invisible global infrastructure. Ad Hoc Networks, 1(1):3–11. Li, Z., Zhang, H., O’Brien, L., Cai, R., and Flint, S. (2013). On evaluating commercial cloud services: A systematic review. Journal of Systems and Software, 86(9):2371– 2393. Mell, P. and Grance, T. (2009). The nist definition of cloud computing. National Institute of Standards and Technology, 53(6):50. Moher, D., Jadad, A. R., Nichol, G., Penman, M., Tugwell, P., and Walsh, S. (1995). Assessing the quality of randomized controlled trials: an annotated bibliography of scales and checklists. Controlled clinical trials, 16(1):62–73. Nasir, U. and Niazi, M. (2011). Cloud Computing Adoption Assessment Model (CAAM) BT - 12th International Conference on Product Focused Software Development and Process Improvement, PROFES 2011, June 20, 2011 - June 22, 2011. Poess, M. and Floyd, C. (2000). New tpc benchmarks for decision support and web commerce. ACM Sigmod Record, 29(4):64–71. Prodan, R. and Ostermann, S. (2009). A survey and taxonomy of infrastructure as a service and web hosting cloud providers. In Grid Computing, 2009 10th IEEE/ACM International Conference on, pages 17–25. IEEE. Silva, G. C., Rose, L. M., and Calinescu, R. (2013). A Systematic Review of Cloud Lock-In Solutions. 2013 IEEE 5th International Conference on Cloud Computing Technology and Science, pages 363–368. Stantchev, V. (2009). Performance evaluation of cloud computing offerings. In Advanced Engineering Computing and Applications in Sciences, 2009. ADVCOMP’09. Third International Conference on, pages 187–192. IEEE. Teixeira, E. O. (2014). Análise da Qualidade de Experimentos Controlados no Contexto da Engenharia de Software Empírica. Mestrado em ciência da computação, Universidade Federal de Pernambuco. Wohlin, C., Runeson, P., Höst, M., Ohlsson, M. C., Regnell, B., and Wesslén, A. (2012). Experimentation in software engineering. Springer. 78 WTDSoft Definição de um Framework para Avaliação Sistemática de Técnicas de Teste no Contexto de Programação Concorrente Silvana M. Melo1 , Orientadora: Simone R. S. Souza1 1 Instituto de Ciências Matemáticas e de Computação (ICMC) – Universidade de São Paulo (ICMC/USP) Caixa Postal 668 – 13.560-970 – São Carlos – SP – Brasil {morita,srocio}@icmc.usp.br Resumo. Este artigo apresenta um projeto de doutorado em andamento cujo objetivo é investigar as principais alternativas para a atividade de teste que têm sido empregadas no contexto de aplicações concorrentes, a fim de desenvolver um framework que auxilie a avaliação sistemática dessas técnicas, facilitando a realização de estudos futuros e, principalmente, ajudando os profissionais da academia e da indústria a selecionar a melhor técnica/ferramenta de teste considerando suas necessidades e diversos fatores de qualidade como satisfação, custo, eficácia e eficiência. 1. Fundamentação Teórica Com objetivo de identificar e eliminar defeitos presentes no produto de software, atividades de VV&T (Verificação, Validação e Teste) visam garantir a qualidade do software produzido. Dentre essas, o teste de software é uma atividade de garantia de qualidade que tem como objetivo identificar defeitos no produto em teste. A atividade de teste consiste de uma análise dinâmica do produto e é uma atividade relevante para a identificação e eliminação de erros que persistem. No contexto de programas tradicionais (ou programas com características sequenciais), foram identificadas ao longo dos anos várias iniciativas de técnicas e critérios para a validação, as quais consideram duas questões importantes em relação à atividade de teste: 1) seleção de casos de teste, e 2) avaliação da adequação dos casos de testes em relação ao programa em teste [Beizer 1990, Coward 1988, DeMillo et al. 1978, Herman 1976, Laski and Korel 1983, Maldonado 1991, Mathur and Wong 1993, Rapps and Weyuker 1985]. Outra tendência é explorar e adaptar esses conceitos de teste para outros domínios de aplicação, tais como: Sistemas de Informação, Aplicações Concorrentes/Distribuídas, Sistemas de Tempo Real e Sistemas Embarcados. Diferentemente dos programas tradicionais, a computação distribuída envolve programas concorrentes que interagem para realizar as tarefas. Essa interação pode ocorrer de forma sincronizada ou não, na qual esses programas (ou processos) podem ou não concorrerem pelos mesmos recursos computacionais. A construção de processos concorrentes requer o uso de primitivas para: definir quais processos serão executados em paralelo, iniciar e finalizar processos concorrentes e a garantir a coordenação entre os processos concorrentes enquanto estes estiverem executando [Almasi and Gottlieb 1989]. Desses três tipos de primitivas, destacam-se as primitivas necessárias à interação (comunicação e sincronização) entre os processos, devido à sua frequência de utilização, bem 79 WTDSoft como impacto no desempenho final do programa concorrente. A construção de programas concorrentes pode seguir dois diferentes paradigmas, classificados de acordo com a memória disponível [Almasi and Gottlieb 1989]. O paradigma de memória distribuída estabelece a comunicação e a sincronização entre os processos por meio da passagem de mensagens, no qual cada processo é executado por uma unidade de processamento que possui seu próprio espaço de endereçamento. No paradigma de memória compartilhada, a sincronização é obtida com a utilização de semáforos e monitores e variáveis compartilhadas são usadas para permitir a comunicação entre os processos que compartilham o mesmo espaço de endereçamento. Esses dois paradigmas apresentam características diferentes, as quais necessitam ser consideradas durante os testes. O teste de aplicações concorrentes é mais complicado, pois além das dificuldades inerentes à atividade de teste, novos desafios são impostos devido principalmente ao comportamento não determinístico no qual diferentes sequências de sincronização podem ser obtidas com utilização de uma mesma entrada. Diversos trabalhos relevantes têm sido propostos na área de teste de programas concorrentes e eles podem ser classificados em diferentes abordagens, considerando por exemplo: análise estática ou dinâmica [Chen et al. 2009], paradigma de passagem de mensagem [Silva et al. 2005] ou memória compartilhada [Yang and Pollock 2003] e considerando a linguagem e/ou o uso de padrões [Sadowski and Yi 2009, Farchi et al. 2003]. Embora existam diversas propostas de técnicas e ferramentas para o teste de programas concorrentes, não há ainda uma maneira de auxiliar os profissionais que trabalham com programas concorrentes na indústria ou na academia, sobre qual dentre as inúmeras abordagens de teste existentes seria mais apropriada para as suas necessidades. Informações sobre custo-benefício, alcançabilidade e limitações são necessárias para a escolha da estratégia de teste adequada. Segundo kitchenham et al. [Kitchenham et al. 2004], a proposta de novas metodologias pela academia, por si só, não é suficiente para a melhoria da qualidade do processo de software. Há que se considerar evidências sobre potenciais benefícios, limitações, custo e riscos associados a sua implantação na academia ou na indústria. 2. Caracterização do Problema Dado o panorama atual das pesquisas desenvolvidas para o teste de programas concorrentes como apresentado na revisão sistemática em [Souza et al. 2011], pode-se notar a relevância e diversidade das pesquisas que propõe abordagens de teste para o software concorrente. Porém, até o momento nenhum trabalho que propõe uma metodologia de avaliação de técnicas de teste para a área de programação concorrente foi encontrado. Nesse sentido, esta proposta de doutorado visa a investigar a definição de um framework de apoio para avaliação de técnicas e ferramentas de teste no contexto de programação concorrente. Tendo como base os trabalhos de Vos et al. [Vos et al. 2012] e Shull et al. [Shull et al. 2001], esse framework deverá apoiar os desenvolvedores de software concorrente na indústria e na academia, na escolha dos mecanismos de teste mais apropriados para os seus interesses e suas restrições de tempo/custo. 80 WTDSoft 3. Metodologia e Estado Atual do Trabalho Para o desenvolvimento deste projeto serão previamente reunidos e classificados os principais trabalhos que propõem metodologias de teste para o contexto da programação concorrente. A fim de auxilar a avaliação dessas metodologias, um framework será definido. Para isso, a metodologia proposta por Vos et al. [Vos et al. 2012] será instanciada para o contexto de programação concorrente, o que facilitará a realização de estudos secundários e formação de um corpo de evidência que juntos irão compor o framework, proporcionando uma base de conhecimento sólida, funcionando como base de pesquisa e norteando a avaliação sistemática de ferramentas/métodos/técnicas de teste propostos para este contexto. Sendo assim, a metodologia de desenvolvimento do projeto pode ser dividida em quatro grandes fases, descritas a seguir: • Realização de uma revisão de literatura: a fim de identificar, reunir e analisar pesquisas relacionadas às metodologias utilizadas para o teste de programas concorrentes, disponíveis na literatura. A replicação da revisão sistemática apresentada em [Souza et al. 2011], incluindo trabalhos mais recentes publicados na academia é um dos objetivos nessa fase. • Seleção e estudo das tecnologias de teste a serem investigadas: com o objetivo de identificar as principais tecnologias propostas por pesquisadores e desenvolvedores no contexto do teste de programas concorrentes, trabalhos que disponibilizam metodologias consolidadas de teste serão selecionados com base nos resultados obtidos com a realização da revisão sistemática. Tais trabalhos serão classificados de acordo com suas contribuições. • Instanciação da metodologia proposta em [Vos et al. 2012] para o contexto de programação concorrente: a metodologia de avaliação de técnicas e ferramenta de teste deve ser instanciada a fim de apoiar técnicas de teste que tratam características específicas das aplicações concorrentes, como: não determinismo, comunicação e sincronização de processos e threads. • Construção e disponibilização do corpo de conhecimento: todos os resultados obtidos por meio da realização deste trabalho deverão ser reunidos para construção de um corpo de evidências disponibilizado como base de conhecimento. Atualmente o trabalho encontra-se na fase de seleção e classificação das tecnologias a serem investigadas. Um mapeamento sistemático está sendo conduzido com objetivo de identificar as principais técnicas/ferramentas que têm sido propostas para o teste de programa concorrentes que servirão como base para o framework proposto. Um artigo científico com os resultados obtidos no mapeamento sistemático está sendo produzido e deverá ser submetido a um periódico ou evento da área. 4. Trabalhos Relacionados Diversos trabalhos têm proposto técnicas e ferramentas para o teste de software concorrente, e tratam as mais diferentes abordagens, como: injeção de falhas [Artho et al. 2006], verificação formal [Wu et al. 2009], desenvolvimento dirigido a teste [Jagannath et al. 2010], execução controlada [Ball et al. 2009], teste de mutação [Gligoric et al. 2013], verificação de modelos [Yang et al. 2008], teste baseado em modelos [Aichernig et al. 2009], teste estrutural [Souza et al. 2014], análise simbólica 81 WTDSoft [Kundu et al. 2010], teste baseado em busca [Krena et al. 2010], teste de cobertura de interleaving [Yu et al. 2012], teste de concorrência probabilística [Burckhardt et al. 2010], teste de alcançabilidade [Lei and Carver 2006], métricas de cobertura [Deng et al. 2013] e geração de casos de teste [Xiaoan et al. 2009]. Tendo em vista a vasta diversidade de técnicas existentes, torna-se complexa a tarefa de escolha da técnica mais adequada a um determinado projeto. Nesse sentido, alguns trabalhos na área da programação sequencial tem explorado a avaliação de técnicas e ferramentas a fim de classificar quais apresentam maiores benefícios quando aplicadas a um determinado contexto [Kitchenham et al. 1995, Vos et al. 2012, Vegas et al. 2006, Pilar et al. 2014]. Esses estudos proporcionam aos profissionais de teste uma maneira de selecionar técnicas e ferramentas de maneira mais sistemática e metodológica, tomando como base evidências científicas. Vos et al. [Vos et al. 2012] propõem um framework que disponibiliza uma metodologia para facilitar a realização de estudos de caso para avaliar e comparar técnicas e ferramentas de teste. A Figura 1 ilustra a metodologia, que propõe um framework genérico para auxiliar a instanciação de estudos primários (casos de teste) para avaliar técnicas e ferramentas de teste. Os estudos primários são reunidos em um corpo de evidência, que pode ser usado em estudos secundários (revisões de literatura) a fim de auxiliar os profissionais de teste a tomar decisões informadas sobre o uso de uma técnica e estimar o tempo/esforço que é necessário para sua implantação. O principal objetivo da metodologia é gerar estudos empíricos suficientes para servir como base de experiências documentadas e que sigam os princípios da Engenharia de Software Baseada em Evidências (ESBE), uma abordagem que procura integrar as melhores evidências de pesquisas com experiências práticas e valores humanos para auxiliar no processo de tomada de decisão sobre o desenvolvimento e manutenção de software [Kitchenham et al. 2004]. Figura 1. Metodologia para criação de um corpo de evidência [Vos et al. 2012]. O framework proposto por Vos et al. [Vos et al. 2012] define uma metodologia de avaliação de técnicas de teste apenas para o contexto da programação sequencial. Há a necessidade de extender o framework para o contexto da programação concorrente, pois 82 WTDSoft características específicas deste tipo de aplicação que influenciam diretamente na atividade de teste devem ser consideradas durante sua avaliação. Características como: o comportamento não determinístico, o elevado número de sincronizações a serem exercitadas durante o teste; a necessidade de detectar e corrigir erros típicos desse tipo de software, como: deadloks, condições de disputa, interferência e livelocks, não são encontradas em aplicações sequenciais e portanto não suportadas pelo framework proposto em [Vos et al. 2012]. 5. Resultados Esperados Com o desenvolvimento deste projeto de doutorado esperam-se as seguintes contribuições e resultados: 1. Desenvolvimento de um framework para auxiliar a avaliação sistemática de técnicas de teste para o contexto de programas concorrentes. 2. Disponibilização do material gerado nas avaliações conduzidas a fim de facilitar a realização de estudos secundários e comparações entre tecnologias de teste. 3. Contribuir para a transferência de tecnologia gerada na academia para centros desenvolvedores de software concorrente na academia e indústria. 4. Ampliar o uso do teste, hoje fortemente concentrado na academia, permitindo com isso a geração de novas demandas de teste, as quais realimentarão as pesquisas feitas formando-se um ciclo no desenvolvimento de novos conhecimentos. 5. Possibilitar o desenvolvimento de aplicações distribuídas com maior qualidade, através da criação de um framework de aplicação das técnicas de VV&T considerando diversos fatores como satisfação, custo, eficácia e eficiência. 6. Formação de recursos humanos em VV&T de aplicações distribuídas considerando desenvolver 1 projeto de iniciação científica atrelado ao projeto em questão e desdobramento para novos projetos de iniciação científica, mestrado e doutorado. 6. Avaliação dos resultados A avaliação da metodologia proposta deverá ser feita por meio da condução de estudos empíricos na academia e indústria, visando aumentar a compreensão dos pesquisadores, tornando o processo de desenvolvimento de software mais previsível e contribuindo para o refinamento e aperfeiçoamento da tecnologia, auxiliando a busca por melhores práticas de teste. Segundo Shull et al. [Shull et al. 2001] a metodologia de avaliação de transferência de uma nova tecnologia para indústria deve sempre partir da definição conceitual até sua aplicação prática, com equilíbrio constante entre as necessidades de pesquisa e da indústria. A proposta de utilização da metodologia no contexto industrial tem por objetivo a avaliação da aplicabilidade das abordagens definidas no ambiente acadêmico também em um ambiente prático real, principalmente considerando tecnologias que propõem ferramentas de suporte ao teste que podem atender as necessidades da indústria. Parcerias estão sendo estudadas entre profissionais da área de teste que trabalham com software concorrente tanto dentro da academia, quanto no âmbito industrial. Empresas parceiras de projetos relacionados a este trabalho são possíveis candidatas nessa tarefa de colaboração para validação do trabalho e devem ser contatadas durante a fase de definição e validação da metodologia. 83 WTDSoft Agradecimento Os autores gostariam de agradecer a FAPESP, pelo apoio financeiro (processo número: 2013/05046-9). Referências Aichernig, B., Griesmayer, A., Schlatte, R., and Stam, A. (2009). Modeling and testing multi-threaded asynchronous systems with Creol. ENTCS, 243:3–14. Almasi, G. S. and Gottlieb, A. (1989). Highly parallel computing. Benjamin-Cummings Publishing Co., Inc., Redwood City, CA, USA. Artho, C., Biere, A., and Honiden, S. (2006). Enforcer - efficient failure injection. LNCS, 4085:412–427. Ball, T., Burckhardt, S., Coons, K. E., Musuvathi, M., and Qadeer, S. (2009). Preemption sealing for efficient concurrency testing. Technical report, Microsoft. Beizer, B. (1990). Software testing techniques. Van Nostrand Reinhold Co., New York, NY, USA, 2 edition. Burckhardt, S., Kothari, P., Musuvathi, M., and Nagarakatte, S. (2010). A randomized scheduler with probabilistic guarantees of finding bugs. In ASPLOS, pages 167–178, Pittsburgh, PA. Chen, Q., Wang, L., Yang, Z., and Stoller, S. D. (2009). Have: Detecting atomicity violations via integrated dynamic and static analysis. In Chechik, M. and Wirsing, M., editors, FASE, volume 5503 of LNCS, pages 425–439. Springer. Coward, P. D. (1988). A review of software testing. Inf. Softw. Technol., 30:189–198. DeMillo, R. A., Lipton, R. J., and Sayward, F. G. (1978). Hints on test data selection: Help for the practicing programmer. Computer, 11(4):34–41. Deng, D., 0022, W. Z., and Lu, S. (2013). Efficient concurrency-bug detection across inputs. In Hosking, A. L., Eugster, P. T., and Lopes, C. V., editors, OOPSLA, pages 785–802. ACM. Farchi, E., Nir, Y., and Ur, S. (2003). Concurrent bug patterns and how to test them. In IPDPS’ 03, pages 286.2–, Washington, DC, USA. IEEE Computer Society. Gligoric, M., Zhang, L., Pereira, C., and Pokam, G. (2013). Selective mutation testing for concurrent code. In ISSTA, pages 224–234. ACM. Herman, P. M. (1976). A data flow analysis approach to program testing. Australian Computer Journal, 8(3):92–96. Jagannath, V., Gligoric, M., Jin, D., Rosu, G., and Marinov, D. (2010). Imunit: improved multithreaded unit testing. In IWMSE ’10, pages 48–49, New York, United States. ACM. Kitchenham, B., Pickard, L., and Pfleeger, S. L. (1995). Case studies for method and tool evaluation. Software, IEEE, 12(4):52–62. Kitchenham, B. A., Dybaa, T., and Jorgensen, M. (2004). Evidence-Based Software Engineering. In Proceedings of ICSE 2004, pages 273–281. IEEE Computer Society Press. Krena, B., Letko, Z., Vojnar, T., and Ur, S. (2010). A platform for search-based testing of concurrent software. In International Workshop on Parallel and Distributed Systems: Testing, Analysis, and Debugging (PADTAD 2010), pages 48–58, Trento, Italy. 84 WTDSoft Kundu, S., Ganai, M. K., and Wang, C. (2010). Contessa: Concurrency testing augmented with symbolic analysis. Lecture Notes in Computer Science (LNCS), 6174:127–131. Laski, J. W. and Korel, B. (1983). A data flow oriented program testing strategy. IEEE Trans. Softw. Eng., 9:347–354. Lei, Y. and Carver, R. H. (2006). Reachability testing of concurrent programs. IEEE Transactions on Software Engineering, 32:382–403. Maldonado, J. C. (1991). Critérios Potenciais Usos: Uma Contribuição ao Teste Estrutural de Software. PhD thesis, DCA/FEEC/UNICAMP, Campinas, SP. Mathur, A. P. and Wong, E. W. (1993). An empirical comparison of mutation and data flow based test adequacy criteria. Journal of Software Testing, Verification, and Reliability 4(1): 9–31. Pilar, M., Simmonds, J., and Astudillo, H. (2014). Semi-automated tool recommender for software development processes. Electronic Notes in Theoretical Computer Science, 302(0):95 – 109. Proceedings of the Latin American Computing Conference (CLEI 2013). Rapps, S. and Weyuker, E. J. (1985). Selecting Software Test Data Using Data Flow Information. IEEE Trans. Softw. Eng., 11(4):367–375. Sadowski, C. and Yi, J. (2009). Tiddle: A trace description language for generating concurrent benchmarks to test dynamic analyses. In WODA. Shull, F., Carver, J., and Travassos, G. H. (2001). An empirical methodology for introducing software processes. In ESEC, pages 10–14. Silva, R., Pezzi, G., Maillard, N., and Diverio, T. (2005). Automatic data-flow graph generation of mpi programs. In SBAC-PAD, pages 93–100. Souza, P. S. L., do Rocio Senger de Souza, S., and Zaluska, E. (2014). Structural testing for message-passing concurrent programs: an extended test model. Concurrency and Computation: Practice and Experience, 26(1):21–50. Souza, S. R. S., Brito, M. A. S., Silva, R. A., Souza, P. S. L., and Zaluska, E. (2011). Research in concurrent software testing: a systematic review. In PADTAD, pages 1–5. Vegas, S., Juzgado, N. J., and Basili, V. R. (2006). Packaging experiences for improving testing technique selection. Journal of Systems and Software, 79(11):1606–1618. Vos, T. E. J., Marín, B., Escalona, M. J., and Marchetto, A. (2012). A methodological framework for evaluating software testing techniques and tools. In QSIC, pages 230– 239. Wu, M., Zhou, B., and Shi, W. (2009). A self-adaptive test framework for concurrent programs. In MEDES, pages 456–457, Lyon, France. Xiaoan, B., Na, Z., and Zuohua, D. (2009). Test case generation of concurrent programs based on event graph. In 5th International Joint Conference on INC, IMS, and IDC (NCM 2009), pages 143–149, Seoul, Korea. Yang, C.-S. D. and Pollock, L. L. (2003). All-uses testing of shared memory parallel programs. Softw. Test., Verif. Reliab., 13(1):3–24. Yang, Y., Chen, X., and Gopalakrishnan, G. (2008). Inspect: a runtime model checker for multithreaded C programs. Technical report, University of Utah. Yu, J., Narayanasamy, S., Pereira, C., and Pokam, G. (2012). Maple: a coverage-driven testing tool for multithreaded programs. In Leavens, G. T. and Dwyer, M. B., editors, OOPSLA, pages 485–502. ACM. 85 WTDSoft Integração de Práticas Ágeis: Uma abordagem para melhorar a qualidade de especificações de software em projetos mobile Juliana Dantas R. V. de Medeiros1, Alexandre M. L. de Vasconcelos 2, Carla T. L. L. Silva Schuenemann 2 1 2 Instituto Federal de Educação, Ciência e Tecnologia da Paraíba (IFPB) Jaguaribe, CEP: 58.015-020, João Pessoa-PB, Brasil Centro de Informática (Cin) – Universidade Federal de Pernambuco (UFPE) Cidade Universitária - 50740-560, Recife-PE, Brasil. [email protected], {amlv,ctllss}@cin.ufpe.br Abstract. The requirements engineering has been identified as a source of problems in adopting agile approaches. This research proposes an exploratory study in the industry. The aim is to investigate how the requirements engineering has been used in agile projects. In this context, a case study will be conducted in companies that develop mobile applications in Pernambuco. Then a new approach for specifying requirements in mobile projects will be defined, integrating the best practices of agile and adhering to CMMI-DEV. A controlled experiment will be performed to assess the quality and productivity of the proposed approach. Resumo. A engenharia de requisitos vem sendo apontada como uma das fontes de problemas na adoção das abordagens ágeis. Esta pesquisa propõe um estudo exploratório na indústria que tem por objetivo investigar como a engenharia de requisitos vem sendo utilizada em projetos ágeis e qual a qualidade das especificações geradas. Nesse contexto, será realizado um estudo de caso em empresas que desenvolvem aplicativos mobile em Pernambuco. Em seguida será elaborada uma nova abordagem para especificação de requisitos em projetos mobile, integrando as melhores práticas das metodologias ágeis e aderente ao CMMI-DEV. Para avaliar a qualidade e a produtividade da abordagem proposta será realizado um experimento controlado. 1. Caracterização do Problema De acordo com Thayer (1997), a Engenharia de Requisitos (ER) fornece o mecanismo apropriado para entender o que o cliente deseja, analisando as necessidades, verificando a viabilidade, negociando soluções, especificando-as sem ambiguidade e gerenciando suas mudanças. Apesar da importância da ER no sucesso do desenvolvimento do software e na minimização dos riscos de projeto, essa atividade é vista nos métodos ágeis como burocrática que torna o processo menos ágil. As Metodologias Ágeis possuem processos flexíveis e adaptativos e que aceitam as mudanças como parte inseparável do seu processo de desenvolvimento, visando à melhoria na qualidade de software e o aumento da satisfação do cliente [Highsmith 86 WTDSoft 2000]. Alguns autores como Paetsh (2003) entendem que a engenharia de requisitos e os métodos ágeis podem ser considerados atividades incompatíveis. Além disso, evidências de pesquisas [Kamei 2012] em projetos que adotam Metodologias Ágeis apontam problemas de backlogs muito instáveis, dificuldades dos engenheiros de software em se adaptarem às mudanças constantes de requisitos, e ainda em aplicar práticas ágeis como User Stories e TDD (Test Driven Development). Analisando a duas principais lojas de aplicativos móveis (App Store e Google Play) é possível constatar que houve um crescimento de 50% nos últimos 12 meses na quantidade de aplicativos disponíveis. Estima-se que atualmente existem mais de 2.500.000 aplicativos nessas duas plataformas [Techcrunch 2014]. Associado a este crescimento, tem-se o fato das aplicações estarem cada vez mais complexas, sendo essencial a aplicação dos princípios da engenharia de software. Entretanto, Wasserman (2010) relata a existência de poucas pesquisas científicas envolvendo a engenharia de software para dispositivos móveis, e considera que as atuais metodologias ágeis não atendem às peculiaridades do desenvolvimento para dispositivos móveis, apontando diversas áreas problemáticas que necessitam de estudos, dentre elas o levantamento de requisitos. Nesse contexto, o objetivo geral desta pesquisa é investigar como a engenharia de requisitos vem sendo conduzida em projetos que adotam práticas ágeis para desenvolver software. Com resultado dessa investigação, pretende-se propor uma nova abordagem que, através da integração de práticas ágeis, contribua para uma melhoria na qualidade das especificações de requisitos, em especial, para projetos de desenvolvimento de software para dispositivos móveis. Para isso foi definida a seguinte Questões de Pesquisa Principal (QP): QP: Como a engenharia de requisitos está sendo utilizadas em projetos que utilizam metodologias ágeis? 2. Fundamentação Teórica e Trabalhos Relacionados 2.1. Metodologias Ágeis As definições modernas de desenvolvimento de software ágil evoluíram a partir da metade de 1990 como parte de uma reação contra métodos "pesados". O processo originou-se da visão de que o modelo em cascata era burocrático, lento e contraditório à forma usual que os engenheiros de software trabalham. As Metodologias Ágeis foram criadas com intuito de eliminar os problemas causados pelas metodologias tradicionais. A definição oficial de Desenvolvimento Ágil de software foi criada sob forma de um Manifesto Ágil [Agile 2001] publicado em fevereiro de 2001 por um grupo de 17 especialistas em desenvolvimento de software que se reuniram com o objetivo de propor melhores práticas para desenvolver software. Este grupo foi denominado Aliança Ágil e, apesar de não terem chegado num consenso para definição de uma metodologia única, definiram quatro valores e doze princípios para nortear as metodologias ágeis. Baseadas nos princípios e valores do Manifesto, diversas metodologias têm sido propostas. Mais de uma década se passou desde o manifesto, entretanto, evidências de pesquisas em projetos que usam abordagens ágeis apontam limitações na sua adoção na indústria, alguns das quais relacionados à engenharia de requisitos [Kamei 2012]. 87 WTDSoft 2.2. Engenharia de requisitos Requisitos são o ponto de partida para a definição de sistemas e consequentemente, são fatores decisivos no desenvolvimento do produto final. Pressman (2011) define requisito como sendo uma especificação do que deve ser implementado ou um algum tipo de restrição do sistema, e define a Engenharia de Requisitos (ER) como uma das importantes disciplinas da engenharia de software, sendo constituída de 7 tarefas: concepção, levantamento, elaboração, negociação, especificação, validação e gestão. As metodologias ágeis tratam a ER de modo bastante distinto dos modelos tradicionais. Quanto à identificação dos requisitos, os modelos ágeis prezam por um overview geral do problema sem maiores detalhes, e focam na elaboração de uma divisão desses itens de modo a serem definidos de maneira iterativa e incremental. Para isso, são definidos períodos fixos e curtos chamados de iterações em que um subconjunto de itens é detalhado e implementado. Nas metodologias ágeis só se deve focar no essencial e emergente para aquele momento, enquanto nas metodologias tradicionais as atividades de projeto e implementação necessitam da precedência de grandes esforços para especificação das funcionalidades [Filho 2011]. Dependendo da metodologia ágil empregada, técnicas\estratégias diferentes podem ser utilizadas para especificar requisitos. Ambler (2002) e Swaber (2002) realizaram estudos procurando analisar como a engenharia de requisitos pode ser melhor empregada em projetos ágeis. Entretanto, segundo o Standish Group (2013), apenas 39% dos projetos que utilizaram metodologias ágeis tiveram sucesso. Ou seja, continuamos nos deparando com altos índices de projetos com prazos e orçamentos estourados e que não atendem aos requisitos dos usuários. 3. Contribuições Esta pesquisa tem o objetivo de trazer contribuições para a Engenharia de Requisitos, especificamente quando aplicada em projetos ágeis de desenvolvimento de software para dispositivos móveis. A seguir destacamos as principais contribuições da pesquisa: • A primeira contribuição é a realização de uma pesquisa indutiva e qualitativa, por meio de uma Revisão Sistemática da Literatura (RSL) como instrumento para observação do problema. O objetivo da revisão é coletar evidências que possam ser usadas para apoiar nas próximas atividades previstas para esta pesquisa; • Realização de uma pesquisa qualitativa, mais especificamente, um Estudo de Caso em empresas do Porto Digital de Pernambuco. O objetivo é investigar e compreender a utilização, prática na indústria, das atividades de engenharia de requisitos que estão sendo aplicadas em projetos mobile, procurando identificar as limitações e a relação entre o uso das técnicas e a qualidade das especificações geradas e os atrasos nos projetos. Espera-se que o Estudo de Caso gere ideias e hipóteses que irão subsidiar a elaboração da nova abordagem. • Elaboração de uma nova abordagem para especificação de requisitos em projetos mobile, integrando as melhores práticas das metodologias ágeis e aderente ao CMMI-DEV. Essa nova abordagem deverá ser um processo para engenharia de requisitos, descrevendo as técnicas de requisitos a serem utilizadas, as entradas e 88 WTDSoft as saídas previstas, e os procedimentos envolvidos. No contexto deste artigo, essa nova abordagem será chamada de BRA. • Estudos realizados por Kamei (2012) apontam diversas limitações na adoção das Metodologias Ágeis, sendo uma delas a falta de estudos empíricos que apresentem resultados sobre as mesmas. Para avaliar a nova abordagem proposta será realizada uma pesquisa quantitativa, mais especificamente, um experimento controlado, sendo essa mais uma contribuição deste trabalho. O experimento será utilizado para avaliar a abordagem BRA e uma outra abordagem já existente, que será selecionada a partir dos resultados obtidos na RSL e no Estudo de Caso. Neste artigo, essa outra abordagem será chamada de XXX. 4. Estado Atual do Trabalho A seguir serão detalhadas as atividades já realizadas e o que está em andamento. 4.1. Revisão Sistemática da Literatura Os guidelines definidos por Kitchenham (2007) foram seguidos para planejar e executar a RSL, tendo sido feitas algumas adaptações propostas por Silva et al. (2011). A Figura 1 ilustra as etapas da revisão. Já foram concluídas as atividades (A), (B) e (C). Figura 1. Etapas da Revisão Sistemática - Adaptado de Silva et al. (2001) Foram definidas duas Questões de Pesquisa específicas para a realização da RSL: • QP1.1: Quais práticas (atividades e técnicas) de engenharia de requisites de software estão sendo utilizadas em projetos de desenvolvimento de software que adotam metodologias ágeis? • QP1.2: Quais os benefícios e limitações das atuais práticas de Engenharia de Requisitos quando adotadas em projetos que usam abordagens ágeis? Foram definidos 4 (quatro) critérios de inclusão e 8(oito) critérios de exclusão. O processo de pesquisa desta RSL foi realizado combinando busca automática e manual a fim de atingir uma ampla cobertura. Como fonte de dados manual foram selecionados artigos de 2008 à 2013 provenientes de uma conferência da área de Requisitos e de outra conferência específica da área de Metodologias Ágeis. Foram definidos 6 (seis) motores de busca como fonte de dados automática. A string utilizada para a busca automática foi construída com base em três termos extraídos das questões de pesquisa: requisitos, metodologias ágeis e software. A busca automática foi realizada através da ferramenta Reviewer1. Para a busca automática não houve limitação de período de ano de publicação. 1 Reviewer (https://github.com/bfsc/reviewer) 89 WTDSoft Com objetivo de diminuir o viés da pesquisa, os artigos resultantes da busca manual e automática foram distribuídos em 3 partes, sendo cada parte também analisada por um outro pesquisador, aluno de mestrado. A primeira etapa da Seleção dos Estudos (D) foi realizada aplicando-se os critérios de inclusão e exclusão analisando o título e o resumo de todos os artigos. No momento, está sendo feita a segunda etapa da seleção que consiste na aplicação dos critérios lendo a introdução e a conclusão dos artigos selecionados na primeira etapa. 4.2. Estudo de Caso O estudo de caso será conduzido seguindo o processo recomendado por Yin (2010), conforme apresentado na Figura 2. A disponibilidade das empresas que irão participar do Estudo de Caso será um fator essencial para o sucesso desta pesquisa. Figura 2. Processo para condução do Estudo de Caso - Adaptado de Yin (2010) A fase de Planejamento foi realizada tendo sido definida a Questão de pesquisa (QP) específica abaixo, além das duas Questões de Pesquisa definidas para a RSL: • QP1.3: Existe relação entre a maneira como as equipes especificam os requisitos e o cumprimento dos prazos e a quantidade de bugs identificados? Como instrumento para a coleta de dados foi definida a utilização de entrevistas com engenheiros de software e a análise de documentos. Os dados serão analisados qualitativamente com o intuito de obter um entendimento sobre o processo a ser realizado. Os dados serão codificados de forma a extrair os significados dos relatos das entrevistas. Na análise de resultados haverá a triangulação como mecanismo para limitar os efeitos de interpretação de uma única fonte, além de aumentar a qualidade da pesquisa e reduzir as ameaças à validade. As demais fases previstas na Figura 2 serão iniciadas após o término da RSL, podendo eventualmente, haver algum ajuste nesse planejamento. 4.3. Elaboração de nova abordagem A elaboração da nova abordagem será feita levando-se em conta as peculiaridades intrínsecas do desenvolvimento para dispositivos móveis, dentre as quais: Regras de negócio compartilhadas com outros aplicativos tradicionais; Impacto do surgimento de novos dispositivos móveis na mudança de requisitos; Adequação das necessidades do usuário aos recursos de interface, memória, processamento e segurança disponíveis; Para elaboração da nova abordagem serão consideradas as metas e práticas do CMMI-DEV relacionadas à área de processo Desenvolvimento de Requisitos (RD - 90 WTDSoft Requirements Development). O objetivo é tornar a nova abordagem aderente ao referido modelo de qualidade no que diz respeito aos requisitos de software. 4.4. Experimento Controlado O planejamento para execução do experimento já foi realizado, tendo sido definida a seguinte Questão de Pesquisa (QP): • QP1.4: Há diferença na utilização das abordagens BRA e da abordagem XXX no que diz respeito à qualidade das especificações geradas e do protótipo das telas construídos, e com relação à produtividade (tempo gasto para executar as atividades de ER)? Como parte do planejamento foram definidas as variáveis dependentes (resposta) e o Fator (variável independente), conforme Figura 3. Figura 3. Modelo Conceitual do Experimento Pretende-se executar o experimento utilizando projetos voltados para a indústria. O desenho experimental definido para um fator foi o Within-Subjects, onde os sujeitos recebem os dois tratamentos (abordagem BRA e XXX). Foras definidas três Hipóteses Nulas para avaliar se as abordagens são iguais no que diz respeito à qualidade e produtividade. Como forma de garantir uma maior confiabilidade de conclusão, será utilizado um teste estatístico, por exemplo, TESTE-T para análise dos dados coletados. 5. Avaliação dos Resultados 5.1. Resultados parciais da Revisão Sistemática da Literatura (RSL) A execução da busca automática retornou 2501 artigos. E a busca de dados manual retornou 344 artigos, totalizando assim, 2845 artigos. A utilização da ferramenta Reviewer para a busca automática agilizou a seleção inicial feita a partir do título e do resumo, tendo em vista que não foi necessário fazer o download dos artigos, pois no resultado gerado pela ferramenta já constavam essas informações. Após a primeira etapa da Seleção, o total de artigos foi reduzido à 305. A realização da segunda etapa da seleção tem demandado um esforço maior, tendo em vista a necessidade de se fazer o download dos artigos, e muitas vezes os artigos não são facilmente localizados. A RSL ainda não foi concluída, mas já proporcionou resultados importantes, tendo direcionado o foco da pesquisa para aplicação da ER em projetos mobile. A análise dos artigos sinalizou uma carência de pesquisas nessa área. 5.2. Resultados parciais do Estudo de Caso e Experimento A realização do planejamento antecipado do Estudo de Caso e do Experimento Controlado foi importante para permitir uma melhor compreensão do problema e uma 91 WTDSoft maior percepção do que deve fazer parte da solução proposta. Por exemplo, a ideia inicial para BRA era propor uma nova técnica focada na especificação de requisitos. Entretanto, durante a fase de planejamento do experimento controlado, analisando as ameaças à validade, foi possível perceber que uma abordagem focada apenas na especificação poderia comprometer a qualidade. A partir dessa análise, identificamos a necessidade da abordagem contemplar todo o processo de ER. Referências Agile Manifesto. (2001) “Manifesto for Agile Software Development”, 17 February 2001. Disponível em: <http://www.agilemanifesto.org/>. Acesso em: 26/05/2014. Ambler, S. W. (2002) “Agile Modeling: Effective Practices for eXtreme Programming and the Unified Process”. Wiley Chichester, ISBN 978-0471202820. Filho, H. F. B. P. (2011) “Um estudo analítico entre as abordagens de Engenharia de Requisitos nas Metodologias Ágeis XP, SCRUM e Crystal”. Monografia, UFPE. Highsmith, J. A. (2000) “Adaptive software development: a collaborative approach to managing complex systems”. New York, NY, USA: Dorset House Publishing. Kamei, F. K. (2012). “Benefícios e Limitações das Metodologias Ágeis no Desenvolvimento de Software”. Dissertação de mestrado, UFPE. Kitchenham, B.; Charters S. (2007) “Guidelines for performing Systematic Literature Reviews in Software Engineering”. Vol 2.3, EBSE-2007-01, Keele, UK. Paetsh, F., Eberlein, A. and Maurer, F. (2003) “Requirements Engineering and Agile Software Development”, In: 12th IEEE International WETICE 03, IEEE CS Press. Pressman, R. S. (2011) “Engenharia de Software - Uma Abordagem Profissional.” 7a. Edição, McGrawHill. Schwaber, K. (2002) “The Impact of Agile Processes on Requirements Engineering”. Disponível: <http://www.agilealliance.org/resources/articles/>. Acesso em: 26/5/14. Silva, F. et al. (2011) “Replication of Empirical Studies in Software Engineering: Preliminary Findings from a Systematic Mapping Study”. Canada. RESER 2011. Standish Group. (2013). “The CHAOS Manifesto www.standishgroup.com. Acesso: 26/05/2014. 2013”. Disponível em: Techcrunch. (2014). “iTunes App Store Now Has 1.2 Million Apps...”. Disponível em: http://techcrunch.com/2014/06/02/itunes-app-store-now-has-1-2-million-apps-hasseen-75-billion-downloads-to-date/. Acesso: 30/07/2014. Thayer, R.H., and M. Dorfman. (1997) “Software Requirements Engineering”, 2d ed., IEEE Computer Society Press. Yin, R. K. (2010). “Estudo de caso: planejamento e métodos”. 2ed. Bookman. Wasserman, I. A. (2010). “Software Engineering Issues for Mobile Application Developmen”. Carnegie Mellon Silicon Valley. 92 WTDSoft Título do trabalho: Alocação de Participantes no Merge de Ramos Nome do aluno: Catarina de Souza Costa Nome do orientador: Leonardo Gresta Paulino Murta Nível: Doutorado Programa de pós-graduação: Programa de Pós-Graduação em Computação – UFF Email de contato do aluno: [email protected] Email de contato do orientador: [email protected] Ano de ingresso no programa: 2012 Época prevista de conclusão: Março de 2016 Data da aprovação da proposta de tese/dissertação (qualificação): Setembro de 2014 Resumo: No processo de desenvolvimento de software, os artefatos são construídos e manipulados por diversos desenvolvedores que trabalham em paralelo. Uma prática comum neste processo é a ramificação da base de código em várias linhas de desenvolvimento. As alterações nos artefatos em cada ramo são combinadas via processo de merge. No entanto, alterações conflitantes podem surgir durante este processo. Quando estes conflitos não são resolvidos de maneira automática, decisões de conciliação por parte do desenvolvedor que está encarregado do merge são necessárias. Contudo, nem sempre o conhecimento do desenvolvedor em relação ao trabalho realizado em paralelo é levado em consideração ou se ele é realmente a pessoa mais apropriada para tomar as decisões de conciliação. Neste sentido, este trabalho objetiva propor um método de alocação de participantes no merge de ramos, que possa auxiliar na escolha do desenvolvedor mais apropriado para realizar o merge. Sigla(s) do(s) evento(s) do CBSoft relacionado(s): SBES 93 WTDSoft 1. Caracterização do Problema É cada vez mais comum equipes desenvolverem software de maneira colaborativa, onde diferentes pessoas trabalham em paralelo, alterando os mesmos arquivos, e, em muitas das vezes, os mesmos trechos de código nestes arquivos. Estes desenvolvedores podem estar trabalhando em ramos diferentes, para promover a evolução de software de forma isolada (e.g., segregando manutenção evolutiva de corretiva). Porém, em algum momento essas mudanças precisam ser combinadas através de um processo de merge. Normalmente o merge de trabalho sem isolamento, sobre um mesmo ramo, é mais simples que o merge entre ramos, visto que seu propósito é integrar os commits de um único desenvolvedor com os commits remotos. Já o merge entre ramos tende a combinar duas sequências independentes e possivelmente longas de commits, que podem ter sido realizados por diversos desenvolvedores. Nos dois contextos, em caso de alterações que não possam ser combinadas de maneira automática, o desenvolvedor a realizar o merge é o responsável pela conciliação de decisões e resolução dos conflitos. Porém, resolver conflitos de merge não é uma tarefa simples. Enquanto duas alterações feitas em paralelo podem, individualmente, resultar em versões que funcionam corretamente, a tentativa de combinação dessas versões pode demandar conciliação de escolhas feitas por diferentes desenvolvedores (SARMA; REDMILES; VAN DER HOEK, 2012). O desenvolvedor responsável pelo merge entre ramos usualmente assume sozinho a responsabilidade de realizar as conciliações por toda a equipe. Apesar disso, nem sempre o conhecimento do desenvolvedor em relação ao trabalho realizado em paralelo é levado em consideração ou se o desenvolvedor é realmente a pessoa mais apropriada para tomar as decisões de conciliação. Alguns trabalhos defendem que a resolução de um conflito não deve ser responsabilidade somente de um desenvolvedor, e propõem que desenvolvedores possam resolver conflitos de merge de forma colaborativa (KOEGEL et al., 2010; NIEMINEN, 2012). O merge colaborativo pode ser uma solução interessante, principalmente para o merge entre ramos, em que os desenvolvedores estão isolados e podem não conhecer o trabalho realizado em paralelo. Porém, as propostas de merge colaborativo deixam a cargo do próprio desenvolvedor a escolha de outro desenvolvedor para o merge. Embora alocação de desenvolvedor em requisições de mudanças seja amplamente tratado na literatura, a alocação de desenvolvedores na atividade de merge tem sido relegada. 2. Fundamentação Teórica A Gerência de Configuração de Software (GCS) é uma disciplina que busca acompanhar todo o processo de desenvolvimento de software (LEON, 2000). Segundo Estublier (2000), a GCS “permite a evolução de produtos de software sob controle, contribuindo assim para a qualidade e redução de atrasos”. Neste cenário, os Sistemas de Controle de Versão (SCV), parte integrante da Gerência de Configuração, são fundamentais. Os SCV fornecem mecanismos para a ramificação em várias linhas de desenvolvimento e o merge do código fonte de uma linha de desenvolvimento com 94 WTDSoft outra (APPLETON et al., 1998). Ramos podem ser nomeados ou não nomeados. Os ramos não nomeados são criados de forma implícita, quando, por exemplo, um desenvolvedor clona um projeto de um repositório. Os ramos nomeados, criados de forma explicita, são novas linhas de desenvolvimento que seguem em paralelo a uma linha principal. Esses ramos podem ter diferentes propósitos (SANTOS; MURTA, 2012), como isolar desenvolvedores inexperientes, segregar manutenção evolutiva de corretiva, customizar o software para diferentes contextos, etc. Usualmente, em algum momento os ramos são combinados em uma nova versão por meio de um merge. O merge deve combinar corretamente as alterações conflitantes feitas ao longo de cada linha de desenvolvimento desde quando o ramo foi criado (ou desde a última vez que as duas linhas de desenvolvimento foram sincronizadas) (APPLETON et al., 1998). Segundo Mens (2002) três tipos de conflitos podem surgir durante o merge: textual, sintático e semântico. Conflitos textuais, também conhecidos como conflitos físicos, ocorrem quando operações simultâneas (por exemplo, a adição, remoção ou edição) ocorrem sobre as mesmas partes físicas de um arquivo (por exemplo, a mesma linha). Conflitos sintáticos ocorrem quando operações simultâneas conflitantes ocorrem no mesmo elemento sintático do arquivo. A estrutura sintática de um arquivo é geralmente definida em termos de um esquema ou de uma gramática. Finalmente, conflitos semânticos ocorrem quando as operações simultâneas interferem na semântica do arquivo. A semântica do arquivo pode ser expressa tanto em termos de semântica da linguagem de programação (i.e., relação entre elementos sintáticos) ou comportamento esperado do programa (geralmente verificada por casos de teste). 3. Contribuições Para tratar o problema apresentado na Seção 1 e fundamentado na Seção 2, este trabalho de doutorado propõe um método de alocação de desenvolvedores para a atividade de merge de ramos. Para a construção e evolução do método, é levada em consideração a revisão da literatura, para identificar o estado da arte, e uma pesquisa de opinião, para identificar o estado da prática O método se baseia na análise do histórico do projeto até o ponto da tentativa de merge, verificando os desenvolvedores envolvidos e os artefatos alterados no processo de construção do histórico até aquele momento. O método leva em consideração diferentes granularidades no processo de alocação de desenvolvedores: o projeto como um todo, arquivos e partes dos arquivos (e.g., métodos) alteradas. Ao olhar para o projeto como um todo, levando-se em conta o número de commits feitos por cada desenvolvedor até então, além de commits dos desenvolvedores nos dois ramos, o método realiza uma contagem de commits para identificar quais desenvolvedores devem participar da seção de merge. Por outro lado, ao considerar cada arquivo individualmente, o conhecimento de potenciais conflitos físicos para a alocação de desenvolvedores também é utilizado, levando-se em conta quais arquivos foram alterados nos dois ramos e quem os alterou, assim como quem é o especialista de cada arquivo. A informação sobre qual alteração afetou cada arquivo pode ser obtida diretamente dos metadados do SCV, via comandos de log. Já na verificação considerando partes dos arquivos, é possível usar o conhecimento de potenciais conflitos sintáticos, levando-se em conta, por exemplo, quais métodos foram afetados pelas alterações e quem alterou esses métodos, assim 95 WTDSoft como seus especialistas. A informação sobre qual alteração afetou cada método pode ser obtida via Árvore Sintática Abstrata (AST). Por fim, ao considerar métodos alterados, também é possível usar o conhecimento de potenciais conflitos semânticos via verificação da dependência entre os métodos que os desenvolvedores alteraram e/ou dependências indiretas entre métodos, através de variáveis. Para tal, técnicas como program slicing podem ser utilizadas. Como visto a percepção de quem é especialista pode variar em função da análise utilizada, verificada nas diferentes granularidades. Na Figura 1 é apresenta a estrutura do método de alocação de participantes para merge colaborativo de ramos. O histórico do projeto até o momento do merge é fundamental tanto para a etapa de Extração (responsável pela recuperação das informações dos desenvolvedores e artefatos alterados), quanto para os demais passos do método de alocação de participantes. O método inclui ainda as etapas de Tratamento, que tem o proposito de verificar e combinar alguns dados para extrair informações sintáticas e semânticas do projeto, Análise, com o proposito de verificar as informações extraídas e tratadas buscando evidências que permitam a alocação de desenvolvedores e, finalmente, Alocação, que é responsável pela classificação de desenvolvedores e indicação dos mais recomendados a participar do merge colaborativo. Cada uma destas etapas do método são descritas nas próximas seções. Figura 1. Visão Geral do Método 3.1. Extração A primeira etapa do método de alocação é a extração do histórico dos projetos de software clonados de um repositório. No processo de extração, as cabeças (do inglês heads) do merge em questão são identificadas. Na Figura 2, é possível visualizar um exemplo de merge entre C4 e C7, que visa gerar uma nova versão, C8. Figura 2. Exemplo de Merge Após a identificação dos commits a serem combinados, é identificado o ancestral comum, neste caso, C1. A partir destas informações, é possível identificar todos os commits dos ramos que estão sendo combinados. Por exemplo, no merge em questão são capturadas informações dos autores e artefatos alterados nos commits C5, C6 e C7, 96 WTDSoft que pertencem a um dos ramos, e dos commits C2, C3 e C4, que pertencem ao outro ramo. Além disso, informações do histórico do projeto até o ancestral comum também são capturadas para viabilizar a identificação de especialistas. Neste exemplo, essas informações se referem aos commits C0 e C1. Nesta fase, são extraídos nome e e-mail dos autores de cada commit que fazem parte do histórico do projeto até o momento da extração. São extraídas também informações sobre os artefatos alterados em cada commit, para o tratamento em diferentes granularidades: arquivo (nível físico) e método (níveis sintático e semântico). A partir desta etapa, tem-se os nomes e e-mails de todos os desenvolvedores que realizaram commits relevantes para o merge em questão e quais artefatos e partes de artefatos foram modificados por esses commits. 3.2. Tratamento A etapa de tratamento refere-se à manipulação das informações extraídas. Inicialmente, as informações dos autores, como nome e e-mail, são tratadas para reduzir a possibilidade de registros de um único desenvolvedor sejam contatos como de diferentes desenvolvedores. Esse tratamento é necessário tendo em vista que os dados recuperados do histórico são informados pelos próprios desenvolvedores na configuração do repositório. Assim, um mesmo desenvolvedor pode ter diferentes cadastros em um mesmo projeto. Em relação aos artefatos alterados a cada commit, no nível físico são verificadas informações quanto aos arquivos adicionados, removidos ou modificados nos ramos e quem foram os autores das operações. Neste processo, apenas metadados extraídos do SCV são utilizados. No nível sintático são verificadas as partes que foram modificadas. Com a ajuda de uma AST, são verificados a que métodos essas partes modificadas pertencem. Neste processo, são combinadas informações de metadados do repositório do SCV e do código fonte do projeto. Assim, é possível saber quais desenvolvedores alteraram os métodos de cada arquivo do projeto e alocar um desenvolvedor baseado nas alterações dele nos métodos do arquivo em conflito. Já no nível semântico, dependências são verificadas. Essas dependências podem ser obtidas por meio de análise de acoplamento estrutural, lógico ou mesmo via program slicing. 3.3. Análise A etapa de análise é guiada por questões sobre o histórico do projeto até aquele ponto de merge, que variam de acordo com a granularidade definida. Essas questões incluem: (1) Quem são os especialistas nos artefatos alterados nos ramos? (2) Quem alterou os artefatos em cada ramo? (3) Qual é a relação entre os artefatos alterados em cada ramo? Para cada granularidade definida, métricas diferentes devem ser extraídas. No caso da análise do projeto como um todo, são extraídas informações sobre a quantidade de commits dos desenvolvedores dos ramos do merge e quais desenvolvedores que fizeram commits em ambos os ramos. No caso de análises no nível de arquivo, são extraídas informações referentes aos arquivos modificados nos ramos e desenvolvedores que modificaram estes arquivos. No caso de análise no nível de método, no nível sintático, são identificados os métodos que foram alterados pelo desenvolvedor, e, no nível semântico, a dependência lógica entre esses métodos. 97 WTDSoft 3.4. Alocação A etapa de alocação é parametrizada pelo usuário que objetiva a combinação de dois ramos. O método permite ao usuário optar pela indicação de um único desenvolvedor ou de um conjunto de desenvolvedores a participar do merge (neste segundo caso, merge colaborativo). Para o merge colaborativo, o número de participantes alocados varia de acordo com o histórico extraído do merge em questão e da classificação destes com a análise das métricas definidas. A alocação sempre visa indicar o número mínimo de desenvolvedores para participar do merge e resolver o conflito de maneira apropriada. 4. Estado Atual do Trabalho Um estudo preliminar foi conduzido considerando o projeto como um todo para demonstrar as etapas do método. Para isso, foram utilizados dois projetos reais: Git e Voldemort. Na Tabela 1 são apresentadas informações quanto ao número de merges e de desenvolvedores dos projetos analisados, métricas definidas para caracterizar o perfil dos projetos. Como pode ser visto, foram extraídas informações sobre todos os merges realizados até o momento da extração. O número de merges dos projetos é variado: 406 no projeto Voldemort e 7.434 no projeto Git. Quanto ao número de desenvolvedores, existe também uma grande variação: 59 desenvolvedores no projeto Voldemort e 1.103 no projeto Git. Tabela 1. Informações de merges e desenvolvedores Número de Merges e Desenvolvedores Projeto Descrição Git Sistema de Controle de Versão Distribuído Voldemort Banco de Dados Distribuído # Merges # Desenvolvedores 7.434 1.103 406 59 Utilizou-se média harmônica para ordenar os merges dos projetos e identificar os casos de merge potencialmente mais complexos, ou seja, com muitos desenvolvedores em cada ramo. No projeto Git, por exemplo, o cenário de merge mais complexo em relação a desenvolvedores, dado por média harmônica, tem 158 desenvolvedores no ramo 1 e 10 no ramo 2. Destes, 5 desenvolvedores realizaram commits em ambos os ramos, como pode ser visto na Tabela 2. Tabela 2. Desenvolvedores que realizaram commits em ambos os ramos Desenvolvedores em ambos os ramos – Projeto Git Merge a8816e7bab03… Desenvolvedores Commits no ramo 1 Commits no ramo 2 Markus Alex Shawn Jens Ferry 23 7 2 1 1 5 1 4 4 1 Na Tabela 3 são listados os 3 desenvolvedores do projeto Git que mais realizaram commits em cada ramo. Para este merge, há uma interseção entre os desenvolvedores nas análises, assim, os desenvolvedores Markus, Shawn e Jens poderiam ser candidatos a participar do merge colaborativo. No projeto Voldemort, o merge mais complexo em termos de número de desenvolvedores, ordenado por média harmônica, tem 4 desenvolvedores no ramo 1 e 8 desenvolvedores no ramo 2. Para este merge, os desenvolvedores que realizaram commits em ambos os ramos também foram 98 WTDSoft os que mais realizaram commits. Neste caso, os desenvolvedores Bhusesh, Kirktrue, Alex e Bbansal seriam candidatos a participar do merge colaborativo. Tabela 3. Desenvolvedores que realizaram commits em ambos os ramos Desenvolvedores com mais commits – Projeto Git Merge Desenvolvedores Commits no ramo 1 Commits no ramo 2 Junio Schindelin Jeff Markus Shawn Jens 512 69 58 23 2 1 0 0 0 5 4 4 a8816e7bab03… Essa análise inicial é baseada em contagem de commits, sem considerar os artefatos alvo destes commits. Nos próximos passos do trabalho serão extraídas e analisadas informações nas diferentes granularidades, arquivo e método. Espera-se comparar os resultados das diferentes abordagens do método de alocação proposto. Tabela 4. Desenvolvedores que realizaram commits em ambos os ramos Desenvolvedores com mais commits em ambos os ramos – Projeto Voldemort Merge 2a5c69145fb6 … Desenvolvedores Commits no ramo 1 Commits no ramo 2 Bhusesh Kirktrue Alex Bbansal 33 29 20 4 11 10 13 2 5. Comparação com Trabalhos Relacionados Resolução de conflitos de merge é um tópico muito citado em pesquisas baseadas em técnicas de percepção (do inglês awareness). Ao monitorar os espaços de trabalho, ferramentas de percepção, como Palantír (SARMA; REDMILES; VAN DER HOEK, 2012) e CloudStudio (ESTLER et al., 2013), notificam os desenvolvedores cada vez que uma mudança que pode levar a um conflito está sendo feita. Outras abordagens, como o Crystal (BRUN et al., 2011) e WeCode (GUIMARÃES; SILVA, 2012), tentam continuamente realizar merge das cópias locais dos vários desenvolvedores. Porém, equipes podem trabalhar em ramos diferentes, não possibilitando a detecção preventiva dos conflitos. Os trabalhos que tratam de merge colaborativo normalmente discutem merge de código e merge de modelo. Nieminen (2012) propõe uma ferramenta baseada na web, denominada CoRED, que permite que vários usuários possam resolver conflitos de merge de código de uma forma colaborativa. Já o trabalho de Koegel et al., (2010) apresenta uma abordagem de merge de modelos. Nesta abordagem os conflitos são agregados em um problema que precisa ser debatido e as alternativas para resolver os conflitos representam propostas. Em nenhum dos trabalhos é considerado um método de escolha dos desenvolvedores para o merge colaborativo. A decisão fica a cargo do próprio desenvolvedor. 6. Avaliação dos Resultados Para a avaliação dos resultados preliminares e futuros, pretendem-se verificar se os desenvolvedores alocados pelo método foram os que realizaram efetivamente o merge. Para os casos em que o alocado não for o mesmo desenvolvedor que realizou o merge, será conduzido um estudo qualitativo para verificar a fundo essa divergência. Pretende99 WTDSoft se ainda analisar um projeto em andamento utilizando o método nas diversas granularidades para a alocação dos desenvolvedores especialistas no merge. Neste caso, será possível verificar com a equipe do projeto, de acordo com seus conhecimentos sobre o desenvolvimento, a real contribuição desta indicação. 7. Considerações Finais Este trabalho propõe um método de alocação de participantes para merge colaborativo baseado no histórico do projeto até o momento do merge. Acredita-se que as etapas definidas no método contribuem para a indicação dos desenvolvedores mais adequados para ajudar na resolução de conflitos. Além disso, algumas análises foram apresentadas como resultados preliminares, demonstrando a evolução das etapas do método proposto. Das três granularidades definidas, apenas uma foi utilizada nas análises (contagem de commits considerando o projeto como um todo). Porém, a identificação de especialistas, baseada na contribuição de cada desenvolvedor em cada artefato, é o próximo passo da pesquisa, que acreditamos permitir uma sugestão mais precisa. Referências APPLETON, Brad et al. Streamed lines: Branching patterns for parallel software development. 1998, [S.l.]: Citeseer, 1998. BRUN, Yuriy et al. Proactive detection of collaboration conflicts. 2011, p. 168–178. SANTOS, Rafael; MURTA, Leonardo Gresta Paulino. Monitoramento da Complexidade de Junção de Ramos em Sistemas de Gerência de Configuração. In: Simpósio Brasileiro de Engenharia de Software, 2012. ESTLER, H. Christian et al. Unifying Configuration Management with Merge Conflict Detection and Awareness Systems. ASWEC ’13, 2013, Washington, DC, USA. Anais... Washington, DC, USA: IEEE Computer Society, 2013. p. 201–210. ESTUBLIER, Jacky. Software configuration management: a roadmap. ACM, 2000. GUIMARÃES, Mário Luís; SILVA, António Rito. Improving early detection of software merge conflicts. ICSE 2012, 2012, Piscataway, NJ, USA. Anais... Piscataway, NJ, USA: IEEE Press, 2012. p. 342–352. KOEGEL, Maximilian et al. Collaborative model merging. SPLASH ’10, 2010, New York, NY, USA. Anais... New York, NY, USA: ACM, 2010. p. 27–34. LEON, Alexis. A Guide to Software Configuration Management. [S.l.]: Artech House, Incorporated, 2000. MENS, Tom. A state-of-the-art survey on software merging. Software Engineering, IEEE Transactions on, v. 28, n. 5, p. 449–462, 2002. NIEMINEN, A. Real-time collaborative resolving of merge conflicts. In: 2012 8TH International Conference on Collaborative Computing: Networking, Applications and Worksharing (Collaboratecom), 2012, [S.l: s.n.], 2012. p. 540–543. SARMA, Anita; REDMILES, David; VAN DER HOEK, Andre. Palantir: Early Detection of Development Conflicts Arising from Parallel Code Changes. IEEE Trans. Softw. Eng., v. 38, n. 4, p. 889–908, jul. 2012. 100 WTDSoft A Meta-Process Oriented to Software Product Quality Based on ISO/IEC 25010 and Compliant with CMMI-DEV and MR-MPS-SW Models Aluno: Carlos dos Santos Portela Orientador: Prof. Dr. Alexandre Marcos Lins de Vasconcelos (UFPE) Co-Orientador(es): Prof. Dr. Sandro Ronaldo Bezerra Oliveira (UFPA) / Prof. Dr. Marco Paulo Amorim Vieira (Universidade de Coimbra) Nível: Doutorado Programa de Pós-graduação: Programa de Pós-graduação em Ciência da Computação – Centro de Informática, Universidade Federal de Pernambuco (CIn/UFPE) E-mail de contato do aluno: [email protected] E-mail dos orientadores: [email protected], [email protected], [email protected] Ano de ingresso no programa: Março/2013 Época prevista de conclusão: Março/2017 Data da aprovação da proposta de tese (qualificação): Outubro/2014 Abstract. There are many standards and models with definitions and recommendations related to the quality of the software process and product, such as ISO/IEC 12207, ISO/IEC 15504, ISO/IEC 25000, CMMI and MPS.BR. However, the execution of a certificated process in a quality model does not necessarily guarantee a software product with quality. This paper proposes an analysis on the ISO/IEC 12207 and ISO/IEC 15504 standards and the CMMI-DEV and MR-MPS-SW models in order to identify the Software Engineering activities that ensure the quality of the software product according to the defined characteristics in the ISO/IEC 25010. Initially, we intend to conduct a systematic literature review on the relationship between the quality of the software process and product. From this analysis about the standards and models and from the systematic review results, we intend to define a software meta-process oriented to product quality. Posteriorly, we will accomplish a controlled experiment with software projects from a company that has its process certified by the CMMI-DEV or MR-MPS-SW. We expect this meta-process to assist the software development organizations in obtaining quality in their products since it is based on standards and models largely accepted. Keywords: Software Engineering, Software Quality Characteristics, Process Lifecycle, Review Systematic Literature, Controlled Experiment. Siglas do evento do CBSoft relacionado (SBES): Engenharia de software experimental; Processos de software; Qualidade de software e modelos de qualidade. 101 WTDSoft 1. Problem Characterization The Software Quality is an area growing significantly because of the users who are increasingly requiring efficiency and effectiveness, among other quality characteristics important to a product as special as software [Guerra and Colombo, 2009]. Parallel to this market demand, there is a national and international movement to establish norms and standards in the Software Engineering area. When speaking of the quality of the software development process, it is important to highlight the MR-MPS-SW (Modelo de Referência MPS para Software SPI Reference Model to Software) [SOFTEX, 2012], the CMMI-DEV (Capability Maturity Model Integration for Development) [SEI, 2010], the ISO/IEC 15504 Information Technology - Process Assessment [ISO/IEC, 2003], and the ISO/IEC 12207 - Systems and Software Engineering - Software Life Cycle Process [ISO/IEC, 2008]. Regarding the quality of the software product, there are the ISO/IEC 9126 [ISO/IEC, 2006] standard that was the basis for construction of the new series ISO/IEC 25000 SQuaRE – Software Quality Requirements and Evaluation [ISO/IEC, 2014]. However, the execution of a certificated process in a quality model does not guarantee a production of a software product with quality. There is a gap in the efforts being conducted in the search for quality: the process concentrates its efforts on the quality of the software production and maintenance mode, while the quality of the software product is focused more intensely when it is finalized through the evaluation of its performance [Guerra and Colombo, 2009]. The purpose of this paper is to propose an empirical analysis of the ISO/IEC 12207 and 15504 standards, the CMMI and MPS.BR models, and other approaches identified in systematic review, in order to identify the Software Engineering activities and to ensure quality of the software product from the defined characteristics in the ISO/IEC 25010 [ISO/IEC, 2014]. The Section 2 presents the theoretical background of this research. The research contributions are described in the Section 3. In the Section 4, the details of the actual stage of this doctoral work are showed. In the Section 5, the related works are compared with this work. Finally, the Section 6 presents the evaluation of the results according to the research’s objectives. 2. Theoretical Background The ISO/IEC 9126-1 [ISO/IEC, 2006] proposes characteristics and sub characteristics that software should possess to have quality attributes. The ISO/IEC 25000 was issued in 2005, and the ISO/IEC 25010, which supersedes the ISO/IEC 9126-1, was issued in 2011. The ISO/IEC 25010 has eight product quality characteristics and 31 subcharacteristics [ISO/IEC, 2014]. This standard can be applied in the definition of quality requirements of a software product and also in the evaluation of the software developed. For this reason, this standard will be the main theoretical background of these phases in the metaprocess proposed in this work. The ISO/IEC 25010 standard describes that the quality of a software system can be understood in different ways and be used in different approaches [ISO/IEC, 2014]. 102 WTDSoft For this reason, we will not define a concept of quality in this work in order to not narrow the scope of this study. Hence, the focus of this study is to identify approaches on quality. The approach term is used in this research in order to represent instruments used in the definition and implementation of the development processes oriented to the software product quality, such as models, standards, frameworks, processes, methodologies, tools, techniques, methods and procedures. The process lifecycle term represents a well-defined set of steps that provide a reference for the monitoring of the development process and its evolution: process definition, process enactment, process evaluation, process improvement, and process reuse. The activities of this cycle are called meta-activities and the lifecycle is called software meta-process [Oliveira, 2007]. 3. Contributions From this empirical study, the types of approaches presented in the selected studies will be identified. These approaches should be classified and quantified according to their type: models, standards, frameworks, processes, methodologies, tools, techniques, methods or procedures. Moreover, we intend to analyze the context in which these approaches are highly recommended. The comprehensiveness of the identified approaches will be analyzed in relation to their grounds, research method and obtained results. This analysis will focus on the strategy of the relationship between the process and product quality that are presented in the selected studies. From the systematic review, we intend to extract a mapping between certain activities of the development process and characteristics of the software product quality. The goal is to create a catalog of these activities by considering the entry and the output criteria, responsible, step-by-step, procedures, templates, methods and tools used in implementing these activities. Moreover, this catalog will present an impact analysis of each these activities and its relationship with the quality characteristics in the product resulting from the execution of these activities. Finally, as the main result of this research, we intend to define the software meta-process that allows the development of a product according to the quality desired by the project sponsor. The idea is to first establish a quality profile of this meta-process and then evaluate the characteristics of the product developed at the end of this cycle according to this defined profile. A sketch of this meta-process was discussed among researchers based on their experience and based on the initial results of this research. This sketch is shown in Figure 1. Figure 1. Meta-Process Sketch 103 WTDSoft 4. Current Status of Work The research stages and its current state can be found in Table 1. Table 1. Research Project Status Research Phase Definition of Research Questions Status Done Systematic Literature Review In progress Scheduled for Out/2014 Scheduled for Dec/2014 Scheduled for Jun/2015 Scheduled for Aug/2015 Scheduled for Nov/2015 Scheduled until Jul/2016 Scheduled until Mar/2017 In progress Doctoral Qualifying Defense Definition of a Catalog of Process Activities Related to the Quality Product Specification of a Meta-Process Oriented to Product Quality Controlled Experiments Testing the Doctoral Thesis Hypotheses Writing the Doctoral Thesis Doctoral Thesis Defense Dissemination of Search Results 5. Comparison with Related Work From his experience dealing with customers who deploy customized software products, Rohleder (2009) learned that deriving products from shared software assets requires more than complying with quality standards like ISO/IEC 9126. He emphasizes that developers must also consider the quality profile of final products. His work describes a process that follows the quality profile of final products during product derivation and it helps to provide and validate industrial software application solutions. However, this approach focuses only on the evaluation of the final product when finalized, and does not consider the impact of the steps taken on the software development process. Grimán et al. (2007) claim that the architecture constitutes a very important work product to obtain product quality. They propose a method to estimate software reliability by evaluating software architecture. Software quality characteristics, such as reliability, maintainability, usability, portability, among others, can be directly determined by software architecture. This work is useful for addressing the quality characteristics based on the assessment of an intermediate product. However, this approach only deals the product quality with regard its architecture. Li et al. (2010) emphasize that the ability to respond to changes in the environment during the software development is crucial in achieving a quality product. Based on dynamic capability theory, they build a software quality model that is dependent on team flexibility, and this one dependent on reactive and anticipatory capabilities of the team members. Different from the proposal presented in this work, this approach does not consider the process factor in getting quality product, just the human factor. However, this approach will be useful in the treatment of human 104 WTDSoft resources component and its dynamic in the software meta-process proposed in this work. After identifying process activities that add quality to product, it is necessary to identify measures to stabilize the process and thus stabilize the product quality. In this context, Barcelos and Rocha (2008) highlight that an essential element for the statistical process control application is the suitability of the metrics being used. Therefore, in his work he presents a tool to evaluate statistical metrics schemes, considering their applicability in the statistical process control. This approach does not directly address the evaluation of quality of software products issue. However, the use of statistical process control in performance process analysis can identify actions that are needed for the stabilization and improvement of those processes. 6. Results Evaluation This research aims to evaluate the proposals of the literature concerning the following question: What are the approaches to support the process lifecycle oriented to product quality in the software projects context? From this research problem the following research question was defined: RQ: What is the relationship between the development process activities and the software product quality? This main research question will guide every step of this doctoral research. 6.1. Systematic Review The guidelines of Kitchenham and Charters (2007) were followed to plan the review. To execute this review, some steps were instantiated from Silva et al. (2011). The Figure 2 illustrates these review steps that will be followed in this review. Figure 2. Systematic Review Steps According to the main research question and based on the research objectives, secondary research questions are defined. These secondary questions facilitate and guide the data extraction from studies selected for this research. These questions aims to clarify important details that this review seeks to identify, to collaborate with the research project. These questions are presented follows: 105 WTDSoft RQ1: What the approaches are used in support of process lifecycle oriented processes to product quality? RQ2: How do these approaches address the relationship between the process quality and product quality? RQ3: What is the impact of the enactment of certain process activities in obtaining of the product quality characteristics? The search process was performed combining automatic and manual search to achieve a high coverage. The researchers will analyze the title and abstracts of all published papers within a range of 10 years (2004 to 2014). This range was used because the quality initiatives in the form of quality models have gained strength in Brazil 10 years ago from the institutionalization of the model MPS.BR. The manual search was performed on four conferences proceedings, selected according to the research area of this proposal: QSIC (International Conference on Quality Software); PROFES (International Conference on Product-Focused Software Process Improvement); SBQS (Simpósio Brasileiro de Qualidade de Software – Brazilian Symposium on Software Quality); WAMPS (Workshop Anual do MPS – Annual Workshop of MPS.BR model). The automatic search was performed on five search engines and indexing systems: ACM Digital Library (http://dl.acm.org/); IEEE Xplore (http://www.ieeexplore.ieee.org); ISI Web of Knowledge (http://apps.webofknowledge.com/); Scopus (http://www.scopus.com); El Compendex (www.engineeringvillage2.org). To build the search string, synonyms were joined with OR and the set of synonyms for each term were joined with AND, as shown in Figure 3. Figure 3. Generic Search String Four researchers are conducting this systematic review. The search string has been executed and returned 1595 studies in automatic search. 1296 published studies were identified in the manual search. These 2891 studies returned, only 2426 are available for review. Currently, this review is in the studies selection phase. The Mendeley free reference manager and MS Excel® software was used to support the search and selection processes. 106 WTDSoft 6.2. Controlled Experiment After the conclusion of the systematic review, a catalog of software engineering activities identified in the systematic review and in the ISO/IEC 12207 and 15504 standards will be elaborated. This catalog is going to contain descriptions of the procedures required to implement those activities. Subsequently, we will conduct controlled experiments with software projects owned by a company that has a CMMIDEV or MPS.BR certificate. A controlled experiment is an investigation of a testable hypothesis where one or more independent variables are manipulated to measure their effect on one or more dependent variables [Easterbrook et al., 2007]. Controlled experiments allow us to precisely determine how variables are related to each other and whether a cause-effect relationship exists between them. Thus, the controlled experiments will take place after the first steps of this research and the definition of the hypothesis. The controlled experiment aims to measure the effect of the independent variable of the process activity in the quality characteristic of the dependent variable of the product. This will occur through the identification of measures to stabilize the implementation of these activities in order to stabilize the achievement of quality of the software product. Given that are 8 quality characteristics and 31 subcharacteristics, will be identified the most approached characteristics in the data extracted from the studies of the systematic review. In the controlled experiment, some of these characteristics will be selected in order to limit the scope of this research and validate the proposed metaprocess. This experiment is going to follow the guidelines laid down by Wholin et al. (2000) and is intended to be used in software projects of Brazilian companies located in the cities of Recife and Belém. The metrics will be defined according to the characteristics of the company and the product / process that are focus of this validation. The team will consist of members of the organization and researchers. 7. Acknowledgment The authors would like to thank CAPES (Coordenação de Aperfeiçoamento de Pessoal de Nível Superior - Coordination Program for Improvement of Postgraduate People) for financial supporting the development of this work. References Barcellos, M. and Rocha, A. R. (2008) “Avaliação de Bases de Medidas considerando sua Aplicabilidade ao Controle Estatístico de Processos de Software”. In Proceedings of VII Simpósio Brasileiro de Qualidade de Software, pages 75–90. Easterbrook, S. et al. (2007) “Selecting Empirical Methods for Software Engineering Research”. In F. Shull, J. Singer and D. Sjøberg. Guide to Advanced Empirical Software Engineering, Chapter 11. Springer. 107 WTDSoft Grimán, A. et al. (2007) “A Method Proposal for Architectural Reliability Evaluation”. In Proceedings of the Ninth International Conference on Enterprise Information Systems, pages 1–5. Guerra, A. and Colombo, R. (2009). Tecnologia da Informação: Qualidade de Produto de Software. In Programa Brasileiro da Qualidade e Produtividade, pages 429. MCT/SEPIN, Brasília. ISO/IEC (2003) “ISO/IEC 15504-2 - Information Technology – Software Process Assessment”, International Organization for Standardization and the International Electrotechnical Commission, Geneva, Switzerland. ISO/IEC (2014) “ISO/IEC 25000 - Software Engineering – Software Product Quality Requirements and Evaluation (SQuaRE) - Guide to SQuaRE”, International Organization for Standardization and the International Electrotechnical Commission, Geneva, Switzerland. ISO/IEC (2006) “ISO/IEC 9126-1 - Information Technology – Software Product Quality - Part 1: Quality Model”, International Organization for Standardization and the International Electrotechnical Commission, Geneva, Switzerland. ISO/IEC (2008) “ISO/IEC 12207:2008 - Systems and Software Engineering – Software Lifecycle Process”, International Organization for Standardization and the International Electrotechnical Commission, Geneva, Switzerland. Kitchenham, B. and Charters, S. (2007) “Guidelines for performing systematic literature reviews in software engineering”. Technical Report EBSE 2007-001, Keele University and Durham University Joint Report. Li, Y. et al. (2010) “Software Development Team Flexibility Antecedents”. In Journal of Systems and Software, pages 1726–1734. Oliveira, S. (2007) “ProDefiner: Uma Abordagem Progressiva para a Definição de Processos de Software no Contexto de um Ambiente Centrado no Processo”, Doctoral Thesis in Computer Science – Centro de Informática, Universidade Federal de Pernambuco. Rohleder, C. (2009) “Quality Product Derivation: A Case Study for Quality Control at Siemens 3 Quality Product Derivation”. In Proceedings of the 8th World Scientific and Engineering Academy and Society, pages 51–56. SEI – Software Engineering Institute (2010) “CMMI for Development – V 1.3”, http://www.sei.cmu.edu/reports/10tr033.pdf, April. Silva, F. Q. et al. (2011) “Replication of empirical studies in software engineering – preliminary findings from a systematic mapping study”, In International Workshop on Replication in Empirical Software Engineering Research, pages 61–70. SOFTEX – Associação para Promoção da Excelência do Software Brasileiro (2012) “Guia Geral MPS de Software: 2012”, http://www.softex.br/wpcontent/uploads/2013/07/MPS.BR_Guia_Geral_Software_20121.pdf, April. Wohlin, C. et al. (2000) “Experimentation in software engineering: an introduction”. Kluwer Academic Publishers, Norwell, MA, USA. 108 WTDSoft Search-Based Mutation Testing para Programas Concorrentes Rodolfo Adamshuk Silva1 , Simone do Rocio Senger de Souza1 1 Instituto de Ciências Matemáticas e de Computação – Universidade de São Paulo (ICMC/USP) Caixa Postal 668 – 13.560-970 – São Carlos – SP – Brazil {adamshuk,srocio}@icmc.usp.br Projeto de Doutorado Programa de Pós-Graduação em Ciências de Computação e Matemática Computacional do ICMC-USP Ano de ingresso no programa: 03/2013 Época prevista de conclusão: 02/2017 Data da aprovação da proposta de tese: Previsão de 15/09/2014 Sigla do evento do CBSoft relacionado: SBES Resumo. O teste de software é uma atividade que busca garantir a qualidade por meio da identificação de falhas no produto. Para a aplicação do teste de software, algumas técnicas são utilizadas como, por exemplo, a técnica estrutural, a funcional e a baseada em defeitos. Cada técnica possui seus critérios para auxiliar na criação dos casos de teste. Um dos critérios da técnica baseada em defeitos é o teste de mutação. Este critério de teste baseia-se nos enganos que podem ser cometidos pelos desenvolvedores de software. O teste de mutação tem se mostrado eficaz para revelar defeitos, porém, o seu alto custo compromete sua utilização, principalmente quando são considerados programas complexos. A Programação Concorrente é um paradigma de desenvolvimento essencial para a construção de aplicações com o intuito de reduzir o tempo computacional em muitos domı́nios. Estas aplicações têm novas caracterı́sticas como comunicação, sincronização e não determinismo que precisam ser considerados durante a atividade de teste. No contexto de programas concorrentes, novos desafios são impostos e precisam ser adequadamente tratados. Isso ocorre devido ao não determinismo e as diferentes sincronizações entre processos. Search-Based Software Testing é uma abordagem que vem sendo empregada para otimizar a atividade de teste, aplicando meta-heurı́sticas para a solução de problemas complexos, como por exemplo, geração de dados de teste. Este projeto de doutorado está inserido nesse contexto, no qual se pretende investigar o uso de Search-Based Software Testing para redução do custo da aplicação do teste de mutação no contexto de aplicações concorrentes. Palavras-chave. Teste de mutação, Search-Based Testing, Programação concorrente. 109 WTDSoft 1. Introdução Como um resultado dos avanços tecnológicos na área de hardware, por exemplo, processadores multicore, a computação distribuı́da faz-se cada vez mais presente nos sistemas atuais. Com isso, a programação concorrente está tornando-se cada vez mais popular no desenvolvimento de softwares modernos. Esse paradigma de desenvolvimento é essencial para a construção de aplicações capazes de reduzir o tempo computacional em vários domı́nios, por exemplo softwares para processamento de imagens, dinâmica de fluidos, entre outros. Diferentemente dos programas com caracterı́sticas sequenciais, a computação distribuı́da envolve programas (ou processos) concorrentes (ou paralelos) que interagem para resolver um determinado problema. Essa interação pode ocorrer de forma sincronizada ou não, sendo que esses programas podem ou não concorrerem pelos mesmos recursos computacionais. Teste de software é uma atividade de garantia de qualidade que visa a identificar defeitos no produto em teste. A atividade de teste consiste em uma análise dinâmica do produto e é uma atividade relevante para a identificação e eliminação de defeitos que persistem. O teste de produtos de software envolve basicamente quatro etapas: planejamento de testes, projeto de casos de teste, execução e avaliação dos resultados dos testes [Myers et al. 2011]. Essas atividades devem ser desenvolvidas ao longo do próprio processo de desenvolvimento de software e, para isso, um ponto crucial é a seleção dos casos de teste que serão utilizados. Sabe-se que executar todos os casos de teste possı́veis a partir do domı́nio de entrada do produto em teste é impraticável e, portanto, critérios de teste são definidos. Os critérios de teste procuram estabelecer como selecionar casos de teste que possuam alta probabilidade de encontrar a maioria dos defeitos com um mı́nimo de tempo e esforço. Um teste bem sucedido é aquele que consegue determinar casos de teste para os quais o programa em teste falhe. Um dos critérios de testes da técnica baseada em defeitos é o teste de mutação. Este critério utiliza informações sobre os enganos tı́picos que podem ser cometidos no processo de desenvolvimento para derivar casos de teste [Jia and Harman 2011]. Assim, os defeitos tı́picos de um domı́nio ou paradigma de desenvolvimento são caracterizados e implementados como operadores de mutação que, durante a atividade de teste, geram versões modificadas (mutantes) do produto em teste (especificação ou implementação, por exemplo). A intenção é auxiliar a seleção de casos de teste que demonstrem que os defeitos modelados pelos operadores de mutação não estão presentes no produto em teste. Um problema do teste de mutação que impede que ele seja aplicado amplamente é o alto custo computacional de executar o enorme número de mutantes com os casos de teste, além do alto número de casos de teste necessários para alcançar um escore de mutação mais próximo de 1.0 [Jia and Harman 2011]. A atividade de teste no contexto de programas concorrentes é considerada mais complexa quando comparada com a atividade de teste de programas sequenciais. Além das dificuldades inerentes à atividade de teste, outras ocorrem devido, principalmente, ao comportamento não determinı́stico dessas aplicações, no qual múltiplas execuções de um programa concorrente com a mesma entrada podem executar diferentes sequências de sincronização e podem produzir diferentes resultados. Cabe à atividade de teste, nesse cenário, identificar se todas as sequências de sincronização possı́veis foram executadas e se as saı́das obtidas estão corretas. Essa caracterı́stica difere os programas concorrentes dos programas sequenciais e precisa 110 WTDSoft ser considerada durante a atividade de teste de software. Assim como os demais critérios de teste, o teste de mutação tem sido investigado para programas concorrentes [Offutt et al. 1996, Silva-Barradas 1998, Bradbury et al. 2006, Silva 2013]. 2. Motivação e Objetivo A busca por estratégias que visem a automatização de teste de software é constante não só para o critério de mutação, mas também para os outros critérios. Isso vem acontecendo porque os programas a serem testados estão cada vez maiores e mais complexos, tornando a atividade de teste mais custosa, em termos financeiros e computacionais, e mais demorada. Até mesmo programas simples são custosos de serem testados devido ao problema de explosão de casos de testes [Jia and Harman 2011]. Todavia, alguns desses problemas podem ser modelados matematicamente a fim de serem resolvidos por meio da otimização matemática utilizando-se meta-heurı́sticas. É nesse contexto que surgiu o conceito de Search-Based Software Testing (SBST) que consiste no uso de técnicas de busca utilizando meta-heurı́stica (algoritmo genético, por exemplo) para automatizar total ou parcialmente a atividade de teste [McMinn 2011]. Técnicas de busca meta-heurı́stica são arcabouços de alto nı́vel que utilizam heurı́sticas para encontrar soluções à problemas que envolvem combinação de resultados a um custo computacional aceitável [McMinn 2011]. Essas técnicas não são algoritmos prontos, mas estratégias para a adaptação para problemas especı́ficos. Pesquisas nessa área mostram que é promissora a aplicação de Search-Based no contexto de teste de software. As áreas de aplicação são cinco: geração de dados de teste, seleção de casos de teste, priorização de casos de teste, testes não funcionais e testes funcionais. A geração de dados de teste consiste em identificar um conjunto de dados de entrada válido para um programa, que satisfaça um determinado critério de teste com o objetivo de encontrar um dado de teste que faça o programa se comportar diferentemente do esperado, revelando, assim, um defeito. A seleção de casos de teste consiste em escolher quais casos de teste devem ser aplicados em um sistema [Maia 2009]. A priorização de casos de teste trata da ordenação dos casos de teste de modo que os mais significativos sejam executados primeiro [Maia et al. 2010]. Os testes não funcionais verificam caracterı́sticas do sistema não relacionadas a funcionalidades [Briand et al. 2004]. Por sua vez, os testes funcionais verificam se a implementação de uma aplicação está de acordo com sua especificação [Cohen et al. 2003]. O principal problema associado ao teste de mutação está no número de mutantes gerados, sendo, na maioria das vezes, alto, fazendo com o que o custo computacional também seja alto [Jia and Harman 2011]. Esse problema é agravado quando se está tratando de programas concorrentes, uma vez que, por causa do não determinismo, o programa possui diferentes sequências de sincronização que devem ser exercitadas durante a atividade de teste. Isso faz com que a complexidade computacional da execução de todos os mutantes, a geração de dados de teste para matar todos os mutantes sejam altos [Jia and Harman 2011]. Outro problema está relacionado com a identificação dos mutantes equivalentes que é realizada pelo testador e leva certo tempo para ser concluı́da, pois se deve analisar o programa mutante, comparar com o programa original, para então decidir se o mutante é equivalente ou não. Então, quanto mais mutantes forem gerados, mais mutantes terão que ser analisados para identificar os equivalentes. 111 WTDSoft Devido ao alto custo da aplicação do teste de mutação, várias estratégias vêm sendo utilizadas para fazer com que o critério de mutação possa ser utilizado de maneira mais eficiente. As técnicas de redução do custo do teste de mutação podem ser divididas em três tipos: do fewer (redução de número de mutantes sem afetar desempenho), do faster (procurar executar os mutantes o mais rápido possı́vel) e do smarter (dividir o custo computacional ou evitar a execução completa ou guardar informações do estado da execução) [Offutt and Untch 2001]. Levando em consideração os resultados já obtidos em [Silva 2013], surgiu a motivação de investigar abordagens que proporcionem a diminuição dos custos de aplicação do teste de mutação (do fewer ) para programas concorrentes. O objetivo do projeto de doutorado é investigar e propor uma abordagem para a otimização do teste de mutação utilizando técnicas de Search-Based Software Testing. Os desafios cientı́ficos identificados neste projeto de doutorado estão relacionados ao uso de SBST aplicado ao teste de mutação. Além disso, tem-se a aplicação de técnicas de SBST no contexto de programas concorrentes, o que é considerado inovador, pois essa técnica é pouco aplicada para resolver os problemas envolvendo teste nesse contexto. 3. Resultados e Contribuições Com o objetivo de se ter uma visão ampla do contexto a ser estudado, uma revisão sistemática foi conduzida com o objetivo encontrar trabalhos que aplicam técnicas de meta-heurı́stica como forma de automatizar o teste de mutação. Como a finalidade de alcançar esse objetivo, foram formadas as seguintes questões de pesquisa: Q1) Em quais etapas do teste de mutação SBST está sendo aplicada? Q2) Quais as técnicas de meta-heurı́stica estão sendo utilizadas no teste de mutação? A condução da revisão foi realizada levando em consideração cinco máquinas de busca: IEEE Xplore, ACM Digital Library, Science Direct, Springerlink e ISI Web of Knowledge. A pesquisa retornou 195 trabalhos dos quais foram selecionados 55 artigos para a leitura completa. Isso demonstrou a falta de trabalhos nessa área. Vale ressaltar que nenhum dos artigos encontrados aplica SBST para teste de mutação em programas concorrentes, o que faz desta proposta de doutorado inovadora. A string de busca e os critérios de exclusão com o número de trabalhos excluı́dos são mostrados na Figura 1. Figura 1. String de busca e critérios de exclusão. Respondendo Q1, SBST está sendo aplicado para otimizar: a seleção de operador de mutação (1 trabalho), a geração de dado de teste (39 trabalhos), 112 WTDSoft a geração de mutante (12 trabalhos) e a geração de dado de teste e mutante simultaneamente (3 trabalhos). Respondendo a segunda questão de pesquisa, dentre os 15 trabalhos que apresentam abordagens para a redução do número dos mutantes utilizando SBST, as seguintes meta-heurı́sticas são utilizadas: Genetic Algorithm (15 trabalhos), NSGA-II (4 trabalhos), Greedy Algorithm (2 trabalhos), Hill Climbing (2 trabalhos), Immune Algorithm (1 trabalho) e Local Search (1 trabalho). 3.1. Trabalhos Relacionados [May et al. 2003] apresenta uma abordagem inspirada no sistema imunológico do corpo humano chamada Immune Algorithm. A função de aptidão é calculada para o mutante observando o quão diferente foi a saı́da dada por ele em relação à saı́da do programa original. Para o dado de teste, a função de aptidão é calculada pelo número de mutantes que foram mortos. Nos trabalhos de [Adamopoulos et al. 2004, Assis Lobo de Oliveira et al. 2013] é apresenta uma metodologia que utiliza o conceito de co-evolução para gerar mutantes e dados de teste utilizando Genetic Algorithm. Em [Adamopoulos et al. 2004] a função de aptidão é calculada a partir do escore de mutação e em [Assis Lobo de Oliveira et al. 2013] é a divisão entre o número de mutantes mortos e o total de mutantes. Em [Jia and Harman 2008] Genetic Algorithm e Hill Climbing são utilizadas para geração de mutantes. A função de aptidão é calculada pela união do conjunto de casos de teste que mata o mutante, dividido pelo conjunto de casos de teste, chamada de fragilidade do mutante. Nos trabalhos de [Domı́nguez-Jiménez et al. 2009b, Domı́nguez-Jiménez et al. 2009a, Domı́nguez-Jiménez et al. 2010, Domı́nguez-Jiménez et al. 2011] é apresentada uma técnica utilizando Genetic Algorithm para a geração de mutantes. A função de aptidão é calculada levando em consideração se o mutante é morto ou não pelo caso de teste e quantos mutantes foram mortos pelo mesmo caso de teste. Em [Blanco-Munoz et al. 2011] Genetic Algorithm é utilizado para a geração de mutantes e a função de aptidão é calculada pela fragilidade do mutante. Em [Schwarz et al. 2011] é definida uma abordagem que utiliza Genetic Algorithm para encontrar um conjunto de mutantes que tenham um alto impacto e que estejam espalhados por todo o código. A função de aptidão é calculada pelo impacto que o mutante tem com relação aos outros mutantes. No trabalho de [Omar et al. 2013] são aplicadas as meta-heurı́sticas Genetic Algorithm e Local Search para encontrar mutantes de ordem superior (HOM) mais difı́ceis de serem mortos. Em [Harman et al. 2010] são aplicados Genetic Algorithm, Hill Climbing e Greedy Algorithm para geração de HOMs. Para ambos os trabalhos, a função de aptidão é calculada pela diferença entre as falhas encontradas no HOM e as falhas encontradas nos mutantes que compõe o HOM. Em [Langdon et al. 2009a, Langdon et al. 2009b, Langdon et al. 2010] é apresentada uma abordagem que utiliza NSGA-II para a geração de mutantes. NSGA-II não calcula função de aptidão. 3.2. Abordagem Proposta O objetivo deste trabalho é diminuir o custo relacionado à aplicação do teste de mutação no contexto de programas concorrentes. Para isso, está sendo investigado o uso de meta-heurı́sticas para a geração de mutantes. A partir desse objetivo, 113 WTDSoft duas perguntas puderam ser feitas: 1) Como o teste de mutação pode ser otimizado? e 2) Quais as possibilidades de utilização de SBST no contexto de teste de mutação e programação concorrente? Para responder essas perguntas, primeiramente foi conduzida uma revisão sistemática com o objetivo de identificar trabalhos que utilizam SBST para otimizar o teste de mutação sem focar em programas concorrentes. Com isso, pôde-se ter uma ideia das pesquisas na área de teste de mutação. Com os trabalhos publicados nessa área, pode-se observar que há a motivação de diminuir o custo do teste de mutação por meio de três abordagens diferentes: 1) seleção de operador de mutação, 2) geração de dado de teste, 3) geração de mutante. Observou-se que grande parte dos trabalhos utilizavam a meta-heurı́stica Genetic Algorithm, que utiliza uma função de aptidão para atribui valores aos mutantes dependendo de quão bons eles são com relação ao resultado de otimização que se quer alcançar. Levando em consideração as funções de aptidão, não foi encontrada nenhuma que utilizasse a frequência de mutação para avaliar um mutante. Então, essa foi a motivação para desenvolver um experimento para avaliar se a frequência de execução de mutantes pode ser uma boa alternativa para ser utilizada, posteriormente como função de aptidão em um Genetic Algorithm. A frequência de execução calcula a quantidade de dados de teste que fazem com que o ponto onde há a mutação no programa mutante seja executado. Um importante ponto a se observar é a quantidade de mutantes vivos com uma alta frequência de execução. Segundo [Bottaci 2001], para demonstrar a presença de uma falha em um mutante (matar o mutante) é necessário que a execução do caso de teste alcance o ponto de mutação (condição de alcançabilidade), o valor da expressão modificada deve mudar o estado do programa mutante quando comparado com o programa original (condição de necessidade) e essa diferença no estado precisa ser propagada até a saı́da (condição de suficiência). Com isso, um mutante que possui uma grande frequência de execução pode ser um possı́vel mutante equivalente (não satisfazendo a condição de necessidade) ou não há um caso de teste que o faça gerar uma saı́da diferente da apresentada pelo programa original (não satisfazendo a condição de alcançabilidade). O experimento tem como objetivo analisar os mutantes mais executados com o propósito de verificar quantos são equivalentes ao programa original. A hipótese nula diz que todos os mutantes com uma maior frequência de execução e que permanecem vivos são equivalentes. A hipótese alternativa diz que há um conjunto de mutantes que possuem uma frequência alta, porém não são equivalentes ao programa original. Esse experimento está em desenvolvimento e consiste em aplicar o teste de mutação utilizando a ferramenta Proteum em programas escritos na linguagem C e identificar os mutantes equivalentes. O objetivo é verificar se os mutantes equivalentes são os mutantes com maior frequência de execução e quantos mutantes mortos tem uma alta frequência de execução. Com isso, espera-se refutar a hipótese nula e poder afirmar que há um conjunto de mutantes que possuem uma frequência alta, porém não são equivalentes ao programa original, podendo usar essa medida como função de aptidão no Genetic Algorithm. Os resultados desse estudo irão propiciar o estabelecimento de uma proposta de redução de custo do teste de mutação, empregando técnicas de meta-heurı́stica que posteriormente será aplicada no contexto de programação concorrente. 114 WTDSoft Referências [Adamopoulos et al. 2004] Adamopoulos, K., Harman, M., and Hierons, R. M. (2004). How to overcome the equivalent mutant problem and achieve tailored selective mutation using co-evolution. In IN GECCO (2), VOLUME 3103 OF LECTURE NOTES IN COMPUTER SCIENCE, pages 1338–1349. Springer. [Assis Lobo de Oliveira et al. 2013] Assis Lobo de Oliveira, A., Gonyalves Camilo-Junior, C., and Vincenzi, A. (2013). A coevolutionary algorithm to automatic test case selection and mutant in mutation testing. In Evolutionary Computation (CEC), 2013 IEEE Congress on, pages 829–836. [Blanco-Munoz et al. 2011] Blanco-Munoz, E., Garcia-Dominguez, A., Dominguez-Jimenez, J., and Medina-Bulo, I. (2011). Towards higher-order mutant generation for ws-bpel. In e-Business (ICE-B), 2011 Proceedings of the International Conference on, pages 1–6. [Bottaci 2001] Bottaci, L. (2001). A genetic algorithm fitness function for mutation testing. In SEMINAL’2001 – First International Workshop on Software Engineering using Metaheuristic INnovative ALgorithms, Toronto, Ontario, Canada. [Bradbury et al. 2006] Bradbury, J. S., Cordy, J. R., and Dingel, J. (2006). Mutation operators for concurrent Java (J2SE 5.0). In Proceedings of the Second Workshop on Mutation Analysis, pages 11–20, Washington, DC, USA. [Briand et al. 2004] Briand, L. C., Labiche, Y., and Shousha, M. (2004). Performance stress testing of real-time systems using genetic algorithms. Technical report, Carleton University. [Cohen et al. 2003] Cohen, M. B., Gibbons, P. B., Mugridge, W. B., and Colbourn, C. J. (2003). Constructing test suites for interaction testing. In Proceedings of the 25th International Conference on Software Engineering, pages 38–48. [Domı́nguez-Jiménez et al. 2011] Domı́nguez-Jiménez, J., Estero-Botaro, A., Garcı́a-Domı́nguez, A., and Medina-Bulo, I. (2011). Evolutionary mutation testing. Information and Software Technology, 53(10):1108 – 1123. [Domı́nguez-Jiménez et al. 2009a] Domı́nguez-Jiménez, J. J., Estero-Botaro, A., Garcı́a-Domı́nguez, A., and Medina-Bulo, I. (2009a). Gamera: An automatic mutant generation system for ws-bpel compositions. Web Services, European Conference on, pages 97–106. [Domı́nguez-Jiménez et al. 2010] Domı́nguez-Jiménez, J. J., Estero-Botaro, A., Garcı́a-Domı́nguez, A., and Medina-Bulo, I. (2010). Gamera: A tool for ws-bpel composition testing using mutation analysis. volume 6189 of Lecture Notes in Computer Science, pages 490–493. [Domı́nguez-Jiménez et al. 2009b] Domı́nguez-Jiménez, J. J., Estero-Botaro, A., and Medina-Bulo, I. (2009b). A framework for mutant genetic generation for ws-bpel. volume 5404 of Lecture Notes in Computer Science, pages 229–240. [Harman et al. 2010] Harman, M., Jia, Y., and Langdon, W. (2010). A manifesto for higher order mutation testing. In Software Testing, Verification, and Validation Workshops (ICSTW), 2010 Third International Conference on, pages 80–89. [Jia and Harman 2008] Jia, Y. and Harman, M. (2008). Constructing subtle faults using higher order mutation testing. In Source Code Analysis and Manipulation, 2008 Eighth IEEE International Working Conference on, pages 249–258. [Jia and Harman 2011] Jia, Y. and Harman, M. (2011). An analysis and survey of the development of mutation testing. Software Engineering, IEEE Transactions on, 37(5):649–678. 115 WTDSoft [Langdon et al. 2009a] Langdon, W., Harman, M., and Jia, Y. (2009a). Multi objective higher order mutation testing with genetic programming. In Testing: Academic and Industrial Conference - Practice and Research Techniques, pages 21–29. [Langdon et al. 2009b] Langdon, W. B., Harman, M., and Jia, Y. (2009b). Multi objective higher order mutation testing with gp. In Proceedings of the 11th Annual conference on Genetic and evolutionary computation, pages 1945–1946. [Langdon et al. 2010] Langdon, W. B., Harman, M., and Jia, Y. (2010). Efficient multi-objective higher order mutation testing with genetic programming. J. Syst. Softw., 83(12):2416–2430. [Maia et al. 2010] Maia, C. L. B., do Carmo, R. A. F., de Freitas, F. G., de Campos, G. A. L., and de Souza, J. T. (2010). Automated test case prioritization with reactive GRASP. Adv. Soft. Eng., pages 2:1–2:13. [Maia 2009] Maia, Camila Loiola Brito, d. C. R. A. F. d. F. F. G. d. C. G. A. L. d. S. J. T. (2009). A multi-objective approach for the regression test case selection problem. In Proceedings of Anais do XLI Simpósio Brasileiro de Pesquisa Operacional, pages 1824–1835. [May et al. 2003] May, P., Mander, K., and Timmis, J. (2003). Software vaccination: An artificial immune system approach to mutation testing. In Timmis, J., Bentley, P., and Hart, E., editors, Artificial Immune Systems, volume 2787 of Lecture Notes in Computer Science, pages 81–92. Springer Berlin Heidelberg. [McMinn 2011] McMinn, P. (2011). Search-based software testing: Past, present and future. In International Workshop on Search-Based Software Testing (SBST 2011), pages 153–163. [Myers et al. 2011] Myers, G. J., Sandler, C., and Badgett, T. (2011). The Art of Software Testing. Wiley Publishing, 3rd edition. [Offutt and Untch 2001] Offutt, A. J. and Untch, R. H. (2001). Mutation testing for the new century. chapter Mutation 2000: Uniting the Orthogonal, pages 34–44. Kluwer Academic Publishers, Norwell, MA, USA. [Offutt et al. 1996] Offutt, A. J., Voas, J., and Payne, J. (1996). Mutation operators for Ada. Technical report. [Omar et al. 2013] Omar, E., Ghosh, S., and Whitley, D. (2013). Constructing subtle higher order mutants for java and aspectj programs. In Software Reliability Engineering (ISSRE), 2013 IEEE 24th International Symposium on, pages 340–349. [Schwarz et al. 2011] Schwarz, B., Schuler, D., and Zeller, A. (2011). Breeding high-impact mutations. In Software Testing, Verification and Validation Workshops (ICSTW), 2011 IEEE Fourth International Conference on, pages 382–387. [Silva 2013] Silva, R. A. (2013). Teste de mutação aplicado a programas concorrentes em mpi. Mestrado, ICMC, Instituto de Computação e Matemática Computacional, USP. [Silva-Barradas 1998] Silva-Barradas, S. (1998). Mutation analysis of concurrent software. PhD dissertation, Dottorato di Ricerca in Ingegneria Informatica e Automatica, Politecnico di Milano. 116 WTDSoft Constructing a Theory of Agile Governance: a step towards Business Agility Alexandre J. H. de O. Luna1,2, Philippe Kruchten2*, Hermano Moura1+ 1 2 Informatics Center (CIn). Federal University of Pernambuco (UFPE). Av. Jornalista Anibal Fernandes, s/n, Cidade Universitária, 50740-560, Recife, PE, Brazil. Department of Electrical and Computer Engineering (ECE). The University of British Columbia (UBC). 2332 Main Mall. Vancouver, BC, V6T 1Z4, Canada. + Supervisor, *Co-supervisor. [email protected], [email protected], [email protected] Abstract. Context: Competitiveness is the key to a sustainable development and it demands agility at the business and organizational levels, which in turn requires a flexible and customizable Information Technology (IT) environment, as well as effective and responsive governance in order to deliver value faster, better, and cheaper to the business. Objective: This paper describes the ongoing research design we conduct to analyze and understand better this context, and whose expected result will be a theory of agile governance to help researchers and practitioners apply agile capabilities on governance issues in order to achieve organizational performance and business competitiveness. Method: We conducted a systematic literature review on the state of the art of agile governance, together with a meta-ethnography study on professional social networks related to governance, and we are applying the phenomenology and grounded theory approaches to the collected data. Results: We have identified 16 emerging categories, organized into four major thematic groups, based on the patterns identified in the collected data. As a result, we could offer a convergent definition for agile governance, six meta-principles, and a map of findings organized by topic and classified by relevance and convergence, detailed in other paper under publishing process. Conclusion: We found evidence that indicates agile governance as a relatively new, wide and multidisciplinary area focused on organizational performance and competitiveness that needs to be more intensively studied and might have its boundaries better defined. We are currently making improvements and additions to the methodological approach for exploratory qualitative studies. Keywords — Information Systems, Agile Governance, IT management, Organizational behavior, Software Engineering. Graduate Program: PhD in Computer Science from Federal University of Pernambuco (UFPE). Year of Admission: 2011. Estimated completion time: 2015. Date of approval of the proposed thesis / dissertation (qualification): scheduled for 29/08/2014. CBSoft event: SBES 1 117 WTDSoft 1.Introduction Governments and corporations are increasingly realizing the emerging importance of Information and Communication Technologies (ICT) as catalyst factor of the driving aspects of change, renewal and implementation cycle of their business. These organizations are deepening the perception about how the Information Technologies (IT1) capabilities are becoming key factors of success in the evolving of their market competitiveness and the achievement of their institutional mission [Gallagher and Worrell 2007; Tallon 2008]. In recent years, IT has seen an increase in investment and research focus in both the academic and the professional environments. These initiatives have entailed efforts to improve management models and to implement practices that make enterprises more competitive. Competitiveness is related with the idea to make more, better and faster, with less resources [Janssen and Estevez 2013]. At the same time, governance is closely related with the ability to steer (to guide, to govern) an organization, which may be a company, a government or a society [Bloom 1991]. In other words, governance is a key driver to “make things happen” on organizational environment. On the other hand, to achieve good governance demands capabilities such as flexibility, responsiveness and adaptability, as well as an effective and responsive sense of coordination across multiple business units. Actually, these capabilities belong to the agility paradigm in consonance with several authors, such as [Matt 2007], [Chen et al. 2008], [Li 2010]. Moreover, Kruchten [2011] define agility as: “the ability of an organization to react to changes in its environment faster than the rate of these changes”. In fact, this definition uses the ultimate purpose or function of being agile for a business, unifying and standardizing agile and lean approaches as simply "agile", rather than defining agility by a labeled set of practices or by a set of properties defined in opposition to the agile manifesto approach [Beck et al. 2001]. Going beyond, a “good governance” requests particularly “organizational agility”, which is stated by Thomsett [2013] as: “the ability of an organization to respond quickly and effectively to unanticipated events in its environment”. As a result, agility became an important business aspect, and according to Luftman et al. [1993], business agility is: "the ability to change the direction of the environment and respond efficiently and effectively to that change". In consonance with this definition, we distilled a new definition to business agility for use in this study as: “the ability to deliver value2 faster, better, and cheaper to the business”. In line with these concepts, “agile governance” becomes the application of agile capabilities3 on governance issues4 in order to improve business agility, what we believe that can result in significant economic outcomes for companies and governments. In the subsequent sections this paper gives an overview of the related theoretical background, the methodology adopted to elaborate and evaluate the theory, as well as preliminary and expected results. 2. Background and Related Work In this scenario, IT governance, through which corporate governance5 is applied, has emerged as an option to the effective management and control of IT services in organizations, ensuring the payback of investments and the improvement and innovation of business processes [IT Governance Institute 2001]. Through the influence of factors related to market regulation, such as the Sarbanes-Oxley Act [Congress of the United States of America 2002] and the Basel Accords [Bank for International Settlements 2010], the use of governance is also motivated by other objectives, such as: i) reducing the costs of business unavailability; ii) assurance of continuity of business processes; iii) guarantee of IT investments payback; and, iv) increasing organizational competitiveness [Weill and Ross 2004]. Ribeiro and Barata [2011] pointed out that to face competition, enterprises have adopted more efficient organizational dynamics that enable them to respond to socio-economic pressures while tackling profitable but volatile business opportunities. This led to the emergence of several types of networked interactions: supply chains, extended enterprises, virtual enterprises, collaborative networks, among others. Overall, agility is fundamental as the establishment of such networked organizations is not trivial. Partners will share profits, risks and responsibilities and ultimately the performance and success of the entire structure will always be dragged down by the less agile participant [Brown et al. 2013; Royce and Cantor 2013]. In practice, the design and maintenance of the IT systems for enterprise agility can be a challenge when the competitiveness of organization’s products and services is depending of the application of models and frameworks 1 “IT” and “ICT” in this study will be used as synonyms, and understood as the means by which are covered the infrastructure, services and software as well as the organizational capabilities established to support the business. 2 “An informal term that includes all forms of value that determine the health and well-being of the firm in the long run.” [BD 2013] 3 “The power or ability to do something.” [OED 2013] 4 “An important topic or problem for debate or discussion.” [OED 2013] 5 “is the set of processes, policies, rules, laws and institutions that affecting the way as a corporation is directed, administered or controlled” [Cadbury 1992] 118 2 WTDSoft that have no guidance details of how to implement and deploy the necessary management instruments and governance mechanism [Luna et al. 2013]. Consequently, the challenges become even greater when dealing with these matters on a global software development and distributed environment, where cultural differences, awareness and communication style, if not treated properly can lead to conflicts. Arguably, in Global Development Environments governance issues are even more relevant and necessary, as well as its implementation even greater challenging [Dubinsky et al. 2011]. Several authors [Luna et al. 2010; Qumer and Henderson-Sellers 2008; Roosmalen and Hoppenbrouwers 2008; Sun et al. 2005] have pointed out the lack of methods, techniques and tools to help people and enterprises to achieve the business goals, means by the governance issues, in an agile way independent from the business area. At same time, many authors [Banihashemi and Liu 2012; Bartenschlager and Goeken 2010; Heston and Phifer 2011; Radnor and Johnston 2013] claim that the governance practices, models, guides and frameworks are most of them bureaucratic, time consuming and having no guidance details of how to implement and deploy the necessary management instruments and governance mechanism, such as ITIL [Mendel 2004], COBIT [Gerke and Ridley 2009], among others. These processes, models, guides and practices will be denominated “conventional or traditional governance”, by this study, according the shortcomings identified in their context. Over the last few years, Agile methodologies [Dybå and Dingsøyr 2008] have been gaining traction in industry and adding competitiveness and dynamism to the process of software development, through initiatives where the principles of communication and collaboration are essential Dubinsky and Kruchten [2009]. Moreover, Dubinsky and Kruchten [2009] and Dubinsky et al. [2010] highlight that Software Development Governance (SDG) has emerged in the last few years to deal with establishing the structures, policies, controls, and measurements for communication and for decision rights, to ensure the success of software development organizations. Recently, agile governance has been proposed [Cheng et al. 2009; Luna et al. 2010, 2013; Qumer 2007] which provides the wide application of principles and values of Agile Software Development [Beck et al. 2001] to the conventional governance processes. Luna [2009] has developed a framework for agile governance, in order to implement and improve governance in organizations, called MAnGve. This framework is focused to the deployment process, as a catalyzer to accelerate the deployment of governance. The MAnGve framework is designed to mitigate the lack of practical focus found in conventional governance models [MAnGve 2009]. The MAnGve is a framework based on an agile life cycle, seeking to translate the principles, values and practices from Agile Software Development to IT governance paradigm. However, altogether the agile governance phenomena still remained unexplored in depth. 3. Methodological Framework Considering the positive experience of several organizations working in the field of Software Engineering and the significant contribution that Agile Methodologies have brought to their software development processes [Ambler and Lines 2013; Kruchten 2011]. Likewise, taking in mind that no systematic review of agile governance has previously been found, we conducted a systematic literature review about the state of the art of agile governance (SLR-AG) in order to understand better the agile governance phenomena. Additionally, we have also intended to investigate how the domain of agile governance has evolved in the world through analysis of some key constructs, such as: genesis, shortcomings, evolution, trends, concepts, principles, etc.; as well to derive implications for research and for practice. When we started our doctoral research under this same context and motivation, we intended to propose a model for Agile Governance paradigm. However, after two years refining the knowledge available about this topic and conducting the aforementioned systematic review (SLR-AG), we realize two major viewpoints: (1) the paradox of the emerging phenomenon6: “If any system that can be object from a model is contained into a phenomenon, which the researcher do not know, neither understand (yet), how can he or she characterize the boundary conditions to define the system that will be the reference to propose the model?”; (2) domain development level: based on the findings from the SLR-AG and in line with Edmondson and McManus [2007], we point out: (i) we think precipitated and inconsistent propose a model for agile governance in this stage of development, because the research design of this study has to adapt itself to the current state of theory and research, which is evidently nascent; (ii) as a result, the development level demands for exploratory qualitative studies, originally open-ended data that have to be interpreted for meaning; and, (iii) likewise, we are handling with a nascent field of study where all set of knowledge should be organized, connected and systematized in some kind of conceptual framework or theory, then to serve as a basis for future work, such as: models, applications, etc. 3.1. Research Problem From the described scenario in the previously section, we can identify the following research problem: 6 When we met this paradox in our work, we faced it not only as a specific paradox emerging from our research, but we deduced it as a broad paradox of Information Systems, addressing to the relationship between models, systems and phenomena in study. As we did not find any reference about similar paradox related to those aspects, we named it as a new one. 119 3 WTDSoft “Based on the presented context and on the fact that agile governance is a nascent, wide and multidisciplinary domain, focused on organizational performance and competitiveness: these phenomena need to be more intensively studied, analyzed, described and might have its boundaries better defined, as well as it should be organized, connected and systematized in some kind of conceptual framework or theory. This problem is compounded by the fact that, we did not find evidence in the literature about the existence of a theoretical approach that can help people and enterprises to analyze and describe agile governance [Luna et al. 2014].” 3.2. Justification Grounded on these understandings, our judgment leads us to consider the exploration and comprehension of these phenomena as a higher priority of this domain, justified by the development stage of this field of study and by the philosophical paradox faced. As a result the proposition of a theory for agile governance seems as a more auspicious product for this study, meeting the claims from the findings of the SLR-AG and providing a theoretical approach that can help researchers and practitioners to apply agile capabilities on governance issues in order to achieve organizational performance and business competitiveness. We believe that improving the competitiveness of governments and companies through the improvement of their IT governance and IT management shall result in significant economic outcomes. An initial premise for this research is that different types of theory exist in Information Systems and that all can be valuable. However, the existence of a theory that addresses Agile Governance issues was not found before or during the development of this study. Considering the wide and multidisciplinary nature of this domain pointed out by the SLR-AG, we believe that a meta-theory7 should be a legitimate classification for this theory, according to the level of generalization intended [Gregor 2006]. 3.3. Research Objective The major objective of this study is to address these challenges by providing a theoretical approach that can help researchers and practitioners to apply agile capabilities on governance issues in order to achieve organizational performance and business competitiveness. Specifically, a meta-theory for analysis and description [Gregor 2006], which can be used to describe what agile governance is, as well as help to interpret and understand how agile capabilities can be applied upon governance issues in order to achieve business agility, guided by the following major research question: “How a theoretical approach can be applied to analyze and describe what is agile governance in order to help people to combine agile capabilities with governance issues to achieve business agility?” 3.4. Research Method In consonance with the current state of theory and research in the agile governance domain, the design of our research demands for an exploratory and qualitative study that have to be interpreted for meaning [Edmondson and McManus 2007]. This is also coherent with the finality of propose a theoretical approach that can help researches and practitioners to apply agile capabilities on governance issues to achieve business agility. Grounded theory has arisen as one of the best-known method to produce theories [Glaser 2002]. Gregor [2006] highlights that some examples of grounded theory can also be examples of Type I theory (Theory for Analyzing), where the grounded theory method gives rise to a description of categories of interest. In addition, Suddaby [2006] points out that where researchers have an interesting phenomenon without explanation and from which they seek to “discover theory from data” is the context when grounded theory is most appropriate. The exact situation experienced by this study. Indeed, this approach has been widely employed for the development of recent theories in IS, such as: [Adolph et al. 2012], [Dorairaj et al. 2011]. Table 1 – Classification of Methodological Approach. SOURCE: own elaboration. Methodological Approach About the objective About the technical procedure About the nature of variables About method approach About methods of procedure Description and References Exploratory [Marconi and Lakatos 2003] Exploratory Literature Review [Schuetzenmeister 2010]; Systematic Literature Review [Dybå and Dingsøyr 2008; Kitchenham et al. 2007]; Bibliometrics and Scientometrics [Weingart 2005]; Phenomenology [Creswell 2012]; Grounded Theory [Corbin and Strauss 1990; Eisenhardt 1989; Pandit 1996]; Meta-ethnographic and qualitative Metaanalysis [Noblit and Hare 1988]; Expert’s Survey [Groves et al. 2013]; Scenario Analysis [Antón et al. 1994]; Angen’s theory assessment approach [Angen 2000]; and, Theory comparison [Eisenhardt 1989; Glaser and Holton 2007]. Qualitative [Creswell 2002, 2012] Inductive [Jebreen 2012] Comparative and Structuralist [Gauch Jr 2003; Gower 2002] 7 Meta-theory is at a very high level of abstraction and provides a way of thinking about other theories, possibly across disciplines [Gregor 2006]. 120 4 WTDSoft At this point of our rationale, it is important to contextualize that we have been working on this domain at least for six years: we produced a master degree dissertation and publish a book about agile governance. In complement, over the last two years we conducted the systematic review, described at the beginning of the section 3, to investigate the state of the art of this domain. As a consequence of these experiences a set of knowledge intuitions, discoveries and insights about this topic were accumulated, condensed and crystalized by means of an inductive approach [Jebreen 2012], supported by procedures comparative and structuralist [Gauch Jr 2003]. This approach is quite congruent with the approach proposed by grounded theory [Corbin and Strauss 1990]. At the same time, these experiences will be fairly relevant in the process that will follow from now on. If on one hand, these previous experiences condensed on the personality, experience, and character of the researcher can be seen as an important component of the research process and should be made an explicit part of the analysis [Strauss and Corbin 1998]; on the other hand, this approach must be adopted carefully on these preexistent concepts to do not “violate the notion of theoretical emergence”, avoiding that preconceived notions of what is likely to be observed in the phenomena in study, which may reflect on what will "be seen" about the intended categories and overlooked more emergent ones [Suddaby 2006]. Considering the factors and concerns we have just exposed, we decided to apply phenomenology and grounded theory approaches compounded with other methods, techniques and procedures to complement and reduce the likelihood of bias of this study, as depicted in the Table 1. The following subsection will detail the study design pointing out where will be employed each method, procedure and technique. 3.5.Study Design and Evaluation To simplify the understanding of the methodological approach the study design was structured in five stages as depicted in Figure 1. Figure 1 – Study Design. SOURCE: Adapted from [Adolph et al. 2012; Dorairaj et al. 2011; Monasor et al. 2013]. At the stage 1 we develop a Systematic Literature Review [Dybå and Dingsøyr 2008; Kitchenham et al. 2007] to investigate the state of the art of agile governance domain, establish the relevance of this work and frame this study, identifying the adequate approach for the following stages of this research. At this stage Bibliometrics and Scientometrics [Weingart 2005] were important to establish the relevance of the selected studies in the literature for the review process and also to help in the synthesis procedures. As a result, we generated a set of findings that crystalize a representative sampling from the phenomenon under study, which we called Body of Knowledge (BOK). From this BOK emerged during the synthesis process, using meta-ethnographic and qualitative metaanalysis methods [Noblit and Hare 1988], a new convergent meta-concept for agile governance, a mapping of findings organized in four major thematic groups and 16 categories, as well as six meta-principles and some directions for research and practice. These directions for research and practice not only confirmed the alleged 121 5 WTDSoft importance of this research, as well as gave us the guidance for the next steps of this work, allowing to define the final study product and to consolidate the study design to achieve the research aims. In stage 2 we identify and consolidate the emerging theory’s core-components and test the hypotheses suggested by the emerging relations between the categories already identified in the previous stage, and the new categories and connections that can emerge during this stage, adopting a similar approach to grounded theory described by [Corbin and Strauss 1990; Eisenhardt 1989; Pandit 1996] and the meta-ethnography approach described by Noblit and Hare [1988]. The procedures in this stage are guided, but not limited to the following case study databases: the BOK (generated during the stage 1), and an ensemble of social networks composed by researchers and practitioners in governance, management and agile methods. As a result, we expect identify a set of emergent concepts and categories, and a list of meta-values, as well as organizing them through ontology to make up the emerging theory. In stage 3 we will conduct a Survey [Groves et al. 2013] with experts (researchers and practitioners) on this topic, utilizing a mix of closed-end and open-ended questions that have to be interpreted for meaning. This stage aims to appraising the consistency and check the constitution of the emerging theory, through the application of grounded theory upon the responses, and supplementing the information obtained with interviews when necessary. In stage 4 we will assess the emerging theory applying Scenario Analysis [Antón et al. 1994], through the development of a set of scenarios collected from real case studies and/or historical facts, to analyze the theory behavior and intrinsic properties, such as: generalization, causality, explanation and prediction. At the same time we will apply the Glaser’s criteria [Glaser 1992] to evaluate the theory’s credibility8 and Angen’s approach [Angen 2000] to conduct a validation from the ethical and substantive9 perspectives. Finally, in stage 5 we will conduct an Exploratory Literature Review [Schuetzenmeister 2010] to identify other theories in IS area, after the theory had emerged and stabilized, and pull in extant theory to compare and contrast with the proposed theory [Glaser and Holton 2007], also to examine what is similar, what is different, and why, in order to enhances the internal validity, generalizability, and theoretical level of the theory building [Eisenhardt 1989]. 4. Current status of research We conducted a systematic review about the state of the art of the agile governance up to and including 2013. On that sampling, our search strategy identified 1992 studies in 10 databases, of which 167 had the potential to answer our research questions. We organized the studies into four major groups: software engineering, enterprise, manufacturing and multidisciplinary; classifying them into 16 emerging categories. As a result, the review provides a convergent definition for agile governance, six meta-principles, and a map of findings organized by topic and classified by relevance and convergence. Those complete results from the systematic literature review are under publishing process in [Luna et al. 2014], and could not be detailed on this paper. Table 2 – Research Schedule. SOURCE: own elaboration. Research Schedule Stage 1 - Systematic Review (up to 2011) [finished] Stage 1 - Systematic Review (including 2012 & 2013) Milestone 1 - Proposal definition (Qualify) Stage 2 - Social Network Ethnography Stage 3 - Experts Survey Stages 1, 2, 3, 4, 5 - Data Analysis Stage 4 - Theory Assessment Stage 5 - Theory Comparison Thesis writing Publishing Milestone 2 - Thesis defense 2 0 1 4 01 02 03 04 05 06 07 08 09 10 11 x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x 2 0 1 5 12 01 02 03 04 05 06 x x x x x x x x x Our review confirms that agile governance has a wide spectrum of interest for executives from any business area, professionals, researchers and practitioners by treating, in essence, aspects such as: organizational performance and competitiveness, as well as it can be verified by the categories and major groups that emerged from these review findings. The entire conclusions, discussions and implications for research and practice from the SLR-AG will be detailed in a subsequent paper. The Table 2 depicts the current status of work and the research schedule. 5.Conclusion and Expected Contributions This paper described the study design of our ongoing research; the preliminary results are promising, and should generate a meta-theory for agile governance, comprising: a meta-concept, meta-principles, meta-values, metacategories, categories and ontology relating these components to explaining causality or attempting predictive 8 [Glaser 1992] suggests credibility of a grounded theory can be evaluated through four criteria: fit, work, relevance and modifiability. A substantive approach to validation indicates researchers need to document the chain of interpretations in order for others to judge the trustworthiness of the meanings arrived at in the end [Angen 2000]. 9 122 6 WTDSoft generalizations among them. Besides, the adoption of the Greek prefix “meta” to characterize the theory and its “meta-components” is in order to encompass the multidisciplinary attributes of the phenomena in study, providing a way of thinking across the disciplines that compose the agile governance phenomena, trying to cover their broad nature. Other expected contributions are: (1) advance the state of the art of agile governance and some directions for research and practice; (2) a detailed analysis about the theory structure; (3) a detailed analysis about the theory behavior in different scenarios, considering the exploration of its properties, such as: generalization, causality, explanation and prediction; (4) a detailed analysis about the theory comparison to extant theory to further elaborate the theory proposed; (5) a detailed description of the methodological approach and process adopted for theory’s development; (6) a scientific approach that can help researchers and practitioners to advance methodology for combining diverse study types, as well quantitative and qualitative research. This approach can inspire researchers and practitioners in future qualitative researches. The authors believe that not only Information System area or software development organizations, but also whole the IT industry will benefit from the results of this research. In fact, improving the competitiveness of governments and companies through the improvement of their governance and management shall result in significant economic returns. In a broader context, it will help any kind of organization to deliver value faster, better, and cheaper to the business. Acknowledgment The authors acknowledge to CAPES, Brazil’s Science without Borders Program and CNPq by the research support. We are grateful to Miguel Jiménez Monasor (University of Limerick, Ireland), Dr. Aurora Vizcaíno Barceló (Universidad de Castilla-La Mancha, Spain) for having kindly provided their study design as a reference and give many valuable feedbacks about this issue. Special thanks to Dr. Alberto Avritzer (Siemens, USA), Dr. John Noll (University of Limerick, Ireland), Dr. Tony Clear (Auckland University of Technology, New Zealand), Dr. Sarah Beecham (University of Limerick, Ireland), Dr. Juho Mäkiö (Karlsruher Institute of Technology, Germany), Dr. Julian Bass (Robert Gordon University, UK), Dr. Lars Bendix (Lund Institute of Technology, Sweden) and Siva Dorairaj (Victoria University of Wellington, New Zealand) for their helpful feedback, suggestions and warnings about our original study design, during the 8th IEEE International Conference on Global Software Engineering (ICGSE2013). References Adolph, S., Kruchten, P. and Hall, W. (jun 2012). Reconciling perspectives: A grounded theory of how people manage the process of software development. Journal of Systems and Software, v. 85, n. 6, p. 1269–1286. Ambler, S. W. and Lines, M. (2013). [S122] (GOP-E1-012) Disciplined Agile Delivery The Foundation for Scaling Agile. CrossTalk - The Journal of Defense Software Engineering, n. December, p. 7–11. Angen, M. J. (1 may 2000). Evaluating Interpretive Inquiry: Reviewing the Validity Debate and Opening the Dialogue. Qualitative Health Research, v. 10, n. 3, p. 378–395. Antón, A., McCracken, W. and Potts, C. (1994). Goal decomposition and scenario analysis in business process reengineering. Journal of Advanced Information Systems, p. 94–104. Banihashemi, S. and Liu, L. (2012). [S127] (SCO-E1-054) “LEAN GOVERNANCE”: A PARADIGM SHIFT IN INTER-ORGANIZATIONAL RELATIONSHIPS (IORS) GOVERNANCE. In Proceedings for the 20th Annual Conference of the International Group for Lean Construction. Bank for International Settlements (2010). Third Basel Accord. http://www.bis.org/press/p100912.pdf, [accessed on Jul 22]. Bartenschlager, J. and Goeken, M. (2010). (POP-013) [S62] IT strategy Implementation Framework-Bridging Enterprise Architecture and IT Governance. In Americas Conference on Information Systems (AMCIS) 2010 PROCEEDINGS. BD (2013). Business Dictionary - definitions and meanings. http://www.businessdictionary.com/, [accessed on May 6]. Beck, K., Beedle, M., Bennekum, A. Van, et al. (2001). Manifesto for Agile Software Development. http://agilemanifesto.org/, [accessed on May 1]. Bloom, A. (1991). The Republic of Plato. 2nd. ed. Harper Collins Publishers. p. 509 Brown, A. W., Ambler, S. and Royce, W. (may 2013). [S132] (ACM-E1-015) Agility at scale: economic governance, measured improvement, and disciplined delivery. In Software Engineering (ICSE), 2013 35th International Conference on. . Ieee. Cadbury, A. (1992). The Financial Aspects of Corporate Governance. In The Committee on the Financial Aspects of Corporate Governance, UK. Chen, R.-S., Sun, C.-M., Helms, M. M. and Jih, W.-J. (Kenny) (oct 2008). (SCD-0069) [S86] Aligning information technology and business strategy with a dynamic capabilities perspective: A longitudinal study of a Taiwanese Semiconductor Company. International Journal of Information Management, v. 28, n. 5, p. 366–378. Cheng, T.-H., Jansen, S. and Remmers, M. (2009). (POP-015) [S63] Controlling and monitoring agile software development in three dutch product software companies. In 2009 ICSE Workshop on Software Development Governance. . Ieee. Congress of the United States of America (2002). AT THE SECOND SESSION. Sarbanes-Oxley Act of 2002. . 2002, p. 66. Corbin, J. M. and Strauss, A. (1990). Grounded theory research: Procedures, canons, and evaluative criteria. Qualitative Sociology, v. 13, n. 1, p. 3–21. Creswell, J. W. (2002). Research design: Qualitative, quantitative, and mixed methods approaches. Second ed. p. 262 Creswell, J. W. (2012). Qualitative inquiry and research design: Choosing among five approaches. SAGE Publications. p. 395 Dorairaj, S., Noble, J. and Malik, P. (2011). Bridging cultural differences: A grounded theory perspective. Proceedings of the 4th India Software …, p. 3–10. Dubinsky, Y. and Kruchten, P. (2009). (POP-038) 2nd workshop on software development governance (SDG). 2009 31st International Conference on Software Engineering - Companion Volume, p. 455–456. Dubinsky, Y., Kruchten, P., Finkelstein, A., et al. (2010). (POP-047) [S74] Software Development Governance (SDG) Workshop. In ICSE ’10 Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 2. Dubinsky, Y., Ravid, S., Rafaeli, A. and Bar-Nahor, R. (aug 2011). Governance Mechanisms in Global Development Environments. 2011 IEEE Sixth International Conference on Global Software Engineering, p. 6–14. Dybå, T. and Dingsøyr, T. (aug 2008). Empirical studies of agile software development: A systematic review. Information and Software Technology, v. 50, n. 9-10, p. 833–859. 123 7 WTDSoft Edmondson, A. and McManus, S. (2007). Methodological fit in management field research. Academy of management review, v. 32, n. 4, p. 1155–1179. Eisenhardt, K. M. (oct 1989). Building Theories from Case Study Research. The Academy of Management Review, v. 14, n. 4, p. 532. Gallagher, K. P. and Worrell, J. L. (14 jul 2007). (SPL-0035) [S114] Organizing IT to promote agility. Information Technology and Management, v. 9, n. 1, p. 71–88. Gauch Jr, H. G. (2003). Scientific method in practice. First ed. Cambridge, UK: Cambridge University Press. Gerke, L. and Ridley, G. (2009). Tailoring CobiT for Public Sector IT Audit: An Australian Case Study. In: Klinger, K.[Ed.]. Information technology governance and service management: frameworks and adaptations. 1st. ed. Hershey: Information Science Reference (an imprint of IGI Global). p. 101–125. Glaser, B. G. (1992). Basics of Grounded Theory Analysis: Emergence vs. Forcing. Mill Valley, CA, USA: Sociology Press. Glaser, B. G. (2002). Conceptualization: On theory and theorizing using grounded theory. International Journal of Qualitative …, v. 1, n. 2, p. 1–31. Glaser, B. G. and Holton, J. (2007). Remodeling grounded theory. Historical Social Research/Historische …, n. 19, p. 47–68. Gower, B. (2002). Scientific method: A historical and philosophical introduction. London and New York: Taylor & Francis e-Library. p. 288 Gregor, S. (2006). The nature of theory in information systems. MIS Quarterly, v. 30, n. 3, p. 611–642. Groves, R., Jr, F. F. and Couper, M. (2013). Survey methodology. Wiley. com. Heston, K. M. and Phifer, W. (2011). (SCO-001) [S90] The multiple quality models paradox: how much “best practice”is just enough? Journal of Software Maintenance and Evolution, n. July 2009, p. 517–531. IT Governance Institute (2001). Board briefing on IT governance. 2nd. ed. Rolling Meadows: IT Governance Institute. p. 66 Janssen, M. and Estevez, E. (jan 2013). [S147] (ISI-E1-009) Lean government and platform-based governance—Doing more with less. Government Information Quarterly, v. 30, p. S1–S8. Jebreen, I. (2012). Using Inductive Approach as Research Strategy in Requirements Engineering. International Journal of Computer and Information Technology, v. 01, n. 02, p. 162–173. Kitchenham, B. A., Charters, S., Budgen, D., et al. (2007). Guidelines for performing systematic literature reviews in software engineering. Kruchten, P. (2011). (SCO-006) [S92] Contextualizing agile software development. Journal of Software: Evolution and Process, p. 11. Li, J. (2010). (I3E-0147) [S47] A Study on the First Layer Assessment Variables of Logistics Quick Response Capability. In 2010 Second International Conference on Multimedia and Information Technology. . Ieee. Luftman, J., Lewis, P. and Oldach, S. (1993). Transforming the enterprise: The alignment of business and information technology strategies. IBM Systems Journal, v. 32, n. 1, p. 24. Luna, A. J. H. de O. (2009). MAnGve: A model for Agile Governance in IT. Master’s degree dissertation. Informatics Center, Federal University of Pernambuco, Brazil. Luna, A. J. H. de O., Costa, C. P., De Moura, H. P. and Novaes, M. A. (2010). (POP-009) [S60] Agile Governance in Information and Communication Technologies: Shifting Paradigms. JISTEM Journal of Information Systems and Technology Management, v. 7, n. 2, p. 311– 334. Luna, A. J. H. de O., Kruchten, P. and De Moura, H. P. (aug 2013). GAME: Governance for Agile Management of Enterprises: A Management Model for Agile Governance. In 2013 IEEE 8th International Conference on Global Software Engineering Workshops. . Ieee. Luna, A. J. H. de O., Kruchten, P., Pedrosa, M. L. G. do E., Neto, H. R. de A. and Moura, H. P. De (2014). Agile Governance: A Systematic Literature Review. Under publishing process, MAnGve (2009). MAnGve.org - Portal of the Movement for fostering Agile Governance. http://www.mangve.org/, [accessed on May 6]. Marconi, M. de A. and Lakatos, E. M. (2003). Fundamentos de Metodologia Científica. Fifth ed. São Paulo: Editora Atlas S. A. p. 310 Matt, D. T. (2007). (I3E-0125) [S43] Design of changeable assembly systems-a complexity theory based approach. In IEEE Industrial Engineering and Engineering Management. Mendel, T. (2004). ITIL’s Final Breakthrough: From “What” to “How.”CSO Online, p. 1–3. Monasor, M., Vizcaíno, A., Piattini, M., Noll, J. and Beecham, S. (2013). Simulating Global Software Development Processes for Use in Education: A Feasibility Study. 20th European Conference, EuroSPI. Dundalk, Ireland: Springer. p. 36–47. Noblit, G. and Hare, R. (1988). Meta-ethnography: Synthesizing qualitative studies. v. 11p. 17 OED (2013). Oxford English Dictionary. http://oxforddictionaries.com, [accessed on May 30]. Pandit, N. (1996). The creation of theory: A recent application of the grounded theory method. The qualitative report, p. 1–13. Qumer, A. (2007). (POP-001) [S54] Defining an Integrated Agile Governance for Large Agile Software Development Environments: A Systematic Review and Analysis. In XP’07 Proceedings of the 8th international conference on Agile processes in software engineering and extreme programming. Qumer, A. and Henderson-Sellers, B. (nov 2008). (POP-054) [S75] A framework to support the evaluation, adoption and improvement of agile methods in practice. Journal of Systems and Software, v. 81, n. 11, p. 1899–1919. Radnor, Z. and Johnston, R. (nov 2013). [S162] (SCO-E1-015) Lean in UK Government: internal efficiency or customer service? Production Planning & Control: The Management of Operations, v. 24, n. 10-11, p. 903–915. Ribeiro, L. and Barata, J. (2011). (ACM-0093) [S10] Re-thinking diagnosis for future automation systems: An analysis of current diagnostic practices and their applicability in emerging IT based production paradigms. Computers in Industry, v. 62, n. 7, p. 639–659. Roosmalen, M. W. (Matthijs) Van and Hoppenbrouwers, S. J. B. A. (Stijn) (2008). (POP-058) [S76] Supporting Corporate Governance with Enterprise Architecture and Business Rule Management: A Synthesis of Stability and Agility. In Proceedings of the International Workshop on Regulations Modelling and Deployment (ReMoD’08) held in conjunction with the CAiSE'08 Conference. Royce, W. and Cantor, M. (2013). [S163] (I3E-E1-005) Economic Governance of Software Delivery. IEEE Software, v. PP, n. 99, p. 1–1. Schuetzenmeister, F. (2010). University research management: An exploratory literature review. n. January, p. 1–32. Strauss, A. and Corbin, J. M. (1998). Basics of Qualitative Research: Techniques and Procedures for Developing Grounded Theory. SAGE Publications. Suddaby, R. (2006). From the editors: What grounded theory is not. Academy of management journal, v. 49, n. 4, p. 633–642. Sun, Y., Zhang, Z. and Valota, O. (2005). (I3E-0024) [S28] A Methodology to form agile strategies in manufacturing organisations. In Proceedings. 2005 IEEE International Engineering Management Conference, 2005. . Ieee. Tallon, P. P. (2008). (SCO-090) [S106] Inside the adaptive enterprise: an information technology capabilities perspective on business process agility. Information Technology and Management, v. 9, n. 123, p. 21–36. Thomsett, R. (2013). The Five Keys to Organizational Agility: From Agile to Agility. In Executive Report, Cutter Consortium. Weill, P. and Ross, J. W. (2004). IT Governance: How Top Performers Manage IT Decision Rights for Superior Results. Harvard Business School Publishing India Pvt. Limited. Weingart, P. (2005). Impact of bibliometrics upon the science system: Inadvertent consequences? Scientometrics, v. 62, n. 1, p. 117–131. 124 8