{"title":"Perceptions and Difficulties of Software Engineering Students in Code Smells Refactoring","authors":"Carla Bezerra, Humberto Damasceno, J. Teixeira","doi":"10.5753/vem.2022.226804","DOIUrl":"https://doi.org/10.5753/vem.2022.226804","url":null,"abstract":"Code smells are bad code structures that can harm the quality and maintainability of software. To remove these bad structures, developers use refactoring techniques. Refactoring helps code be easier to understand and modify by eliminating potential problems and improving the software quality. Most refactoring activities are usually performed manually and undisciplined, which can cause code degradation. Currently, concepts, practices and tools of refactoring and code smells are little discussed in undergraduate computing courses. This problem is reflected in the software industry, which generally does not use refactoring practices to improve code readability and maintainability. In this context, we present in this paper an experience report on teaching the practice of code smells refactoring, investigating the following topics: (i) skills acquired in the practice of code smells refactoring, (ii) difficulties encountered in code smells refactoring and (iii) students’ perception of code smells refactoring practices. The study was carried out in two undergraduate classes with 20 students in the course of software quality. Our findings contribute to replicating the practice in other courses that want to delve into code smell refactoring and contribute to the use of refactoring practices and code quality evaluation in the industry.","PeriodicalId":308044,"journal":{"name":"Workshops on Software Visualization, Evolution and Maintenance","volume":"26 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-10-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126622262","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Alan Rodrigues, A. Araújo, Matheus Paixão, Pamella Soares
{"title":"Caracterizando a evolução de software de contratos inteligentes: Um estudo exploratório-descritivo utilizando GitHub e Etherscan","authors":"Alan Rodrigues, A. Araújo, Matheus Paixão, Pamella Soares","doi":"10.5753/vem.2021.17210","DOIUrl":"https://doi.org/10.5753/vem.2021.17210","url":null,"abstract":"Blockchain tem sido enquadrada como uma nova infra-estrutura disruptiva baseada na internet. Parcela desse potencial advém do fortalecimento de plataformas públicas de blockchain, como a Ethereum, as quais viabilizam Aplicações Descentralizadas (dApps). Tais soluções são baseadas em contratos inteligentes (CIs) e lidam com restrições específicas que desafiam a evolução de software, como a imutabilidade de dados e o acesso transparente ao código-fonte. Em particular, a transparência de código pode ser observada através de ferramentas como o Etherscan, a qual provê acesso público a uma vasta quantidade de informações sobre os CIs implantados na Ethereum. Além disso, pode-se observar organizações oriundas desse ecossistema aderindo à prática de desenvolvimento open source dos CIs, incluindo o amplo uso do GitHub. Esse rico cenário motivou a necessidade de conduzir um estudo exploratório-descritivo baseado em mineração de repositórios de software para compreender a evolução de software de CIs através da avaliação de similaridade entre a versão disponível no GitHub e versão utilizada na Ethereum (e auditável via Etherscan). À luz de uma análise quali-quantititativa de 27 CIs, este artigo contribui ao 1) caracterizar quatro padrões que denotam diferentes comportamentos evolutivos dos CIs e 2) abordar um método experimental baseado em string para comparar a similaridade entre diferentes versões de CIs.","PeriodicalId":308044,"journal":{"name":"Workshops on Software Visualization, Evolution and Maintenance","volume":"55 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2021-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123797277","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Assessing the Occurrence of Blocking Operations in Database Schema Evolution: A Case Study","authors":"Willie Lawrence, Eiji Adachi Barbosa","doi":"10.5753/vem.2021.17209","DOIUrl":"https://doi.org/10.5753/vem.2021.17209","url":null,"abstract":"During the evolution of a database schema, some schema-changing operations (e.g., the “ALTER TABLE” command) require the underlying database management system to lock tables until the opera-tion is finished. We call these schema-changing operations blocking operations. During the execution of blocking operations, a soft-ware application may behave abnormally, varying from a slow page loading to an error caused by a web request taking too long to return. Despite their potential negative impact on important qual-ity attributes, blocking operations have not yet been empirically investigated in the context of software evolution. To fill this gap, we conducted a large industrial case study in the context of a Brazilian software company. We analyzed 1,499 atomic schema-changing operations from a period of 6 years to explore which blocking operations the developers frequently performed during the evolution of the database schema of a target system. The intention behind this case study is better understanding the problem in its original context to outline strategies to correct or mitigate it in the future. Our results show that blocking operations were very common, though not all of them seemed to cause observable downtime periods. We also present some mitigating strategies already in use by the devel-opment team of the target system to cope with blocking operation during software evolution, avoiding their negative impact.","PeriodicalId":308044,"journal":{"name":"Workshops on Software Visualization, Evolution and Maintenance","volume":"66 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2021-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126745737","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Minerando Motivações para Aplicação de Extract Method: Um Estudo Preliminar","authors":"Jalisson Henrique, M. Dósea, C. Sant’Anna","doi":"10.5753/vem.2021.17212","DOIUrl":"https://doi.org/10.5753/vem.2021.17212","url":null,"abstract":"As refatorações são operações realizadas no código fonte visando melhorar a capacidade de manutenção de um sistema de software. Apesar da literatura conter diversos estudos sobre as refatorações, são poucos os trabalhos que investigaram as motivações para tais refatorações ocorrerem. Esta pesquisa buscou investigar as motivações por trás das operações de extract method em um sistema real. Para isso, um estudo experimental foi conduzido, buscando minerar as refatorações do tipo extract method e analisar as mensagens de commit visando capturar as motivações por trás das refatorações. Também foi verificado a relação entre as refatorações e a métrica de número de linhas de código (LOC). Os resultados apontaram 11 motivações diferentes para a utilização do extract method. Além disso, foi visto que apenas 35% das refatorações que ocorreram foram com intenção de melhorar a qualidade do código. Também foi identificado que as refatorações com intenção de melhorar a qualidade do código ocorreram com maior frequência em métodos com valores de LOC na faixa de 21 a 40 e foram menos frequentes em métodos com valores entre 61 a 80.","PeriodicalId":308044,"journal":{"name":"Workshops on Software Visualization, Evolution and Maintenance","volume":"696 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2021-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116116955","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Luis Felipi Junionello, R. Mello, R. Oliveira, L. Sousa, Alexander López, Alessandro F. Garcia
{"title":"Revealing Developers' Arguments on Validating the Incidence of Code Smells: A Focus Group Experience","authors":"Luis Felipi Junionello, R. Mello, R. Oliveira, L. Sousa, Alexander López, Alessandro F. Garcia","doi":"10.5753/vem.2021.17214","DOIUrl":"https://doi.org/10.5753/vem.2021.17214","url":null,"abstract":"Identifying code smells is considered a subjective task. Unfortunately, current automated detection tools cannot deal with such subjectivity, requiring human validation. Developers tend to follow different, albeit complementary, strategies when validating the identified smells. Intending to find out developers' arguments when validating the incidence of code smells, we conducted a focus group session with developers familiar with identifying code smells. We distributed them among two groups, in which they had to argue about the incidence of a code smell: either accepting or rejecting its presence. Based on their arguments, we compiled a set of general heuristics that developers follow when validating smells. We then used these heuristics for composing validation items. We understand that the set of validation items proposed may support developers in reflecting on the incidence of code smells. However, further studies are needed for reaching a more comprehensive and optimized set. The experience of this study reveals that conducting focus group sessions is helpful to emerge the tacit knowledge of developers when validating code smells.","PeriodicalId":308044,"journal":{"name":"Workshops on Software Visualization, Evolution and Maintenance","volume":"27 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2021-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133782795","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Say my name! An empirical study on the pronounceability of identifier names","authors":"R. Gresta, Elder Cirilo","doi":"10.5753/vem.2021.17218","DOIUrl":"https://doi.org/10.5753/vem.2021.17218","url":null,"abstract":"Identifiers represent approximately 2/3 of the elements in source code, and their names directly impact code comprehension. Indeed, intention-revealing names make code easier to understand, especially in code review sessions, where developers examine each other's code for mistakes. However, we argue that names should be understandable and pronounceable to enable developers to review and discuss code effectively. Therefore, we carried out an empirical study based on 40 open-source projects to explore the naming practices of developers concerning word complexity and pronounceability. We applied the Word Complexity Measure (WCM) to discover complex names; and analyzed the phonetic similarity among names and hard-to-pronounce English words. As a result, we observed that most of the analyzed names are somewhat composed of hard-to-pronounce words. The overall word complexity score of the projects also tends to be significant. Finally, the results show that the code location impacts the word complexity: names in small scopes tend to be simpler than names declared in large scopes.","PeriodicalId":308044,"journal":{"name":"Workshops on Software Visualization, Evolution and Maintenance","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2021-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129075197","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Uma Análise da Co-Evolução de Teste em Projetos de Software no GitHub","authors":"C. Miranda, G. Avelino, P. S. Neto, V. D. Silva","doi":"10.5753/vem.2021.17215","DOIUrl":"https://doi.org/10.5753/vem.2021.17215","url":null,"abstract":"Os sistemas de software evoluem e essa evolução requer modificações em seu código-fonte para a realização de alterações, como correções de bugs, melhorias de desempenho ou adição de novas funcionalidades. Tendo em vista a importância da realização de testes para garantir a qualidade de um software, modificações no código-fonte devem ser acompanhadas de alterações e incrementos do código de teste. Entretanto, testes e a co-evolução desse muitas vezes são negligenciados no desenvolvimento de projetos de software, podendo resultar em maior esforço e custo para manter o projeto. Neste trabalho, através da análise de um grande dataset, composto pelo histórico de desenvolvimento de 3.000 projetos hospedados no Github, investigamos como artefatos de código-fonte e teste evoluem. Através da aplicação de técnicas de clusterização identificamos cinco padrões comuns de crescimento de teste. Adicionalmente, ao contrastar dados dos repositórios identificados com co-evolução e sem coevolução foi observado que os primeiros apresentam maiores níveis de contribuição (commits, colaboradores e forks).","PeriodicalId":308044,"journal":{"name":"Workshops on Software Visualization, Evolution and Maintenance","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2021-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128927428","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"BOHR - Uma Ferramenta para a Identificação de Átomos de Confusão em Códigos Java","authors":"W. Mendes, Windson Viana, Lincoln S. Rocha","doi":"10.5753/vem.2021.17216","DOIUrl":"https://doi.org/10.5753/vem.2021.17216","url":null,"abstract":"A atividade de compreensão do código-fonte é fundamental no desenvolvimento e manutenção de software. Nesse contexto, Átomos de Confusão (AC) surgem como a menor porção de código capaz de causar confusão em desenvolvedores nesse processo. Neste artigo, é apresentado o BOHR - The Atoms of Confusion Hunter, uma ferramenta que tem como objetivos: (i) auxiliar a identificação de AC em sistemas Java; (ii) fornecer relatórios sobre a prevalência desses AC; e (iii) fornecer uma API para o desenvolvimento de novos buscadores customizados para a captura de novos AC e, também, melhorias em suas identificações. Nesta primeira versão, o BOHR é capaz de detectar 8 dos 13 tipos de AC apontados por Langhout e Aniche. Uma avaliação preliminar do BOHR foi conduzida em três sistemas reais, de código aberto, largamente adotados pela comunidade de desenvolvimento de softwares Java (Picasso, greenDAO e Socket.IO-client Java). Os resultados iniciais mostraram que o BOHR conseguiu detectar com precisão os AC existentes nesses sistemas analisados, apontando de forma correta os snippets dos AC, assim como o seu tipo, nome da classe que era pertencente e o número da linha de código de sua ocorrência. No total, foram encontrados 105 AC, sendo 37 no Picasso, 25 no greenDAO e 43 no Socket.IO-client Java.","PeriodicalId":308044,"journal":{"name":"Workshops on Software Visualization, Evolution and Maintenance","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2021-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115849194","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Investigating vulnerability datasets","authors":"Rodrigo Andrade, Vinícius Santos","doi":"10.5753/vem.2021.17213","DOIUrl":"https://doi.org/10.5753/vem.2021.17213","url":null,"abstract":"Insecure software can cause severe damage to user experience and privacy. Therefore, developers should be able to prevent software vulnerabilities. However, detecting such problems is expensive and time consuming. To mitigate this issue, researchers propose vulnerability datasets to make it easier to investigate its properties. In this work, we investigate one dataset to better understand common vulnerabilities, the authors who introduce them to open-source projects, and commit properties. Thus, we use as case study the Big-Vul dataset to help us answering the six research questions we define for this work. Our preliminary results indicate that the most common vulnerabilities occur in the Chromium project. Furthermore, mostly experienced authors are responsible for introducing these vulnerabilities. Last but not least, we conclude that such findings could help developers on detecting vulnerabilities.","PeriodicalId":308044,"journal":{"name":"Workshops on Software Visualization, Evolution and Maintenance","volume":"57 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2021-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125898491","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Matheus Flauzino, M. Souza, Vinicius H. S. Durelli, R. Durelli
{"title":"What do software team managers want from a skills identification?","authors":"Matheus Flauzino, M. Souza, Vinicius H. S. Durelli, R. Durelli","doi":"10.5753/vem.2021.17211","DOIUrl":"https://doi.org/10.5753/vem.2021.17211","url":null,"abstract":"Searching for developers with the necessary skills to work effectively on a project is not an easy task for companies. For software team managers, it is important to know their team's experience and what technologies they are using in order to be able to allocate resources optimally. Therefore, in this paper, we decided to study the needs of the managers of a software development company in order to identify their team's skills. We carried out a focus group. We have interviewed 11 managers from a development company (with approximately 75 developers). As result we have mapped 5 issues, 4 possible applications and another 7 needs to create a new methodology for identifying skills. Finally, we conclude that managers are interested in a methodology to identify skills in business flow.","PeriodicalId":308044,"journal":{"name":"Workshops on Software Visualization, Evolution and Maintenance","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2021-09-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131233192","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}