AgileQube: An Approach for Specification and Detection of Agile Smells
Autores
6949 |
3094,2483
|
|
6950 |
3094,2483
|
Informações:
Publicações do PESC
Contexto: Nos últimos anos, o Desenvolvimento Ágil (AD) tem sido um dos tópicos mais importantes para a comunidade de Engenharia de Software e tema de diversos estudos acadêmicos e iniciativas da indústria. Mas “Ser Ágil” se tornou mais do que uma tendência entre a comunidade de desenvolvimento de software e, atualmente, é um movimento estratégico para manter as empresas competitivas. No entanto, apesar de todo o esforço que as empresas investem para entender como adotar práticas ágeis de forma eficaz, o número de empresas que de fato dominam o desenvolvimento ágil é baixo. Nesse contexto, a Avaliação da Agilidade (AA), ou seja, a investigação de como uma empresa adota práticas ágeis, é uma importante ferramenta para auxiliar organizações na adoção do desenvolvimento ágil.
Problemas e Objetivos: Nesta pesquisa, pretendemos contribuir para a área de AA da seguinte forma: primeiro, investigamos as abordagens de AA existentes na indústria e na academia e identificamos os seguintes problemas: 1. Critérios de avaliação não explícitos; 2. Falta de um mecanismo para representação dos critérios de avaliação; 3. Falta de um suporte para inclusão de novos critérios de avaliação; 4. Coleta e entrada de dados predominantemente manual; 5. Falta de feedback em tempo real; and 6. Escalabilidade limitada. Para resolver esses problemas, estendemos o termo code smell para o contexto de avaliação de agilidade, introduzimos a metáfora agile smell para denotar uma situação que em pode prejudicar a adoção de uma prática ágil e propusemos uma abordagem de avaliação de agilidade baseada na detecção automática (ou semi-automática) de agile smells em projetos ágeis.
Metodologia: Esta pesquisa foi organizada em 4 fases conforme a metodologia proposta por PEFFERS et al. 2007 [1]. Na fase 1 (Identificação dos problemas e definição dos objetos da pesquisa), identificamos os problemas acima mencionados e definimos os objetivos da pesquisa. Na fase 2 (Projeto e desenvolvimento da solução), realizamos uma revisão da literatura para identificar um conjunto de agile smells e um survey com profissionais da indústria para entender a relevância dos agile smells identificados. Outra revisão da literatura foi conduzida para investigar como os metamodelos para representação de processos de software existentes podem ser usados para representar um projeto ágil. Na fase 3 (Demonstração e Avaliação), conduzimos 2 estudos de caso para validar a abordagem proposta. Na fase 4 (Comunicação), publicamos 3 estudos para comunicar alguns resultados preliminares desta pesquisa.
Resultados: Esta pesquisa produziu as seguintes contribuições: (a) Catalogue of Agile Smells, um catálogo com 20 agile smells que serve como base para a abordagem proposta; (b) Agile Project Metamodel, um metamodelo que contém os elementos necessários para representar um projeto ágil; (c) Agile Smell Schema, um schema usado para especificar os agile smells; e (d) AgileQube App, uma infraestrutura de suporte computacional formada por 4 elementos (Specification Module, ETL Module, Detection Engine e Validation Module) que suportam a especificação e detecção de agile smells em projetos ágeis.
Conclusão: As contribuições dessa pesquisa mitigaram os problemas identificados nessa pesquisa e os resultados observados nos estudos de caso confirmam que a abordagem proposta foi capaz de detectar agile smells de forma automática nos projetos ágeis avaliados.
Background: Over the last years, Agile Development (AD) has been one of the most important topics for the Software Engineering community and the subject of several academic studies and industry initiatives. “Being Agile” became more than a trend among the geek community and, nowadays, it is a strategic move that the software industry has embraced and that is critical to keeping companies in the game in such a competitive industry. However, despite the effort spent to understand how companies can adopt agile practices more effectively, the number of companies that master agile development is low. In this context, agility assessment, i.e., an investigation on how a company is adopting agile practices, is one of the tools to aid the agile development adoption.
Problems & Goals: In this research, we aimed to contribute to the area of agility assessment in the following way: first, we investigated existing agility assessment approaches and identified the following problems: 1. Unclear assessment criteria selection; 2. Unclear assessment criteria representation; 3. Lack of support for adding new assessment criterion; 4. Manual data collection and input; 5. Lack of real-time assessment feedback; and 6. Limited Scalability. To address these problems, we extended the code smell term to the context of agility assessment, introduced the agile smell metaphor to denote a situation that may harm the adoption of an agile practice and proposed an agility assessment approach that automatically (or semi-automatically) detects agile smells in agile projects.
Method: This research was organized in 4 stages based on the methodology proposed by PEFFERS et al. 2007 [1]. In Stage 1 (Identify the problem and define the objectives), we identified the above mentioned problems and defined the research goals. In Stage 2 (Design and development of the solution), we conducted a literature review to identify a set of agile smells and a survey with practitioners to reveal the relevance of the identified agile smells. Another literature review was conducted to investigate how existing software process metamodels could be used to represent the data from an agile project. In Stage 3 (Demonstration and Evaluation), we conducted 2 case studies to validate the proposed approach. In Stage 4 (Communication), we published 3 studies to communicate some preliminary results of this research.
Results: This research produced the following contributions: (a) the Catalogue of Agile Smells, a catalogue that acts as the baseline for the proposed approach and has 20 agile smells; (b) the Agile Project Metamodel, a metamodel that contains the elements necessary to represent an agile project; (c) the Agile Smell Schema, a schema that enables the systematic specification of the agile smells; and (d) the AgileQube App, a computational supporting infrastructure composed of 4 elements (Specification Module, ETL Module, Detection Engine, and Validation Module) that together support the specification and detection of agile smells in agile projects.
Conclusion: The resulting contributions addressed the problems identified in the existing agility assessment approaches and the reports generated in the case studies confirmed that the proposed approach, along with the other contributions, was able to automatically detect agile smells in the assessed agile projects.