Design-sensitive metric thresholds based on design roles

Detalhes bibliográficos
Autor(a) principal: Dósea, Marcos Barbosa
Data de Publicação: 2021
Outros Autores: Sant`Anna, Cláudio Nogueira
Tipo de documento: Tese
Idioma: por
eng
Título da fonte: Repositório Institucional da UFBA
Texto Completo: https://repositorio.ufba.br/handle/ri/34683
Resumo: State-of-the-art techniques and Automated Static Analysis Tools (ASATs) for identifying code smells rely on metric-based assessment. However, most of these techniques have low accuracy. One possible reason is that source code elements, such as methods implemented according to different design decisions, are assessed through the same generic threshold for each metric. Other possible reason is that these metric thresholds are usually derived from classes driven by different design decisions. Using generic metric thresholds that do not consider the design context of each evaluated class can generate many false positives and false negatives for software developers. Our goal is to propose design-sensitive techniques to derive contextual metric thresholds. Our primary hypothesis is that using the design role played by each system class to define this context may point out more relevant code smells to software developers. We conducted some empirical studies to define the proposed techniques. Firstly, we performed a large-scale survey that showed that practitioners recognize difficulties in fitting ASATs into the software development process. They also claim that there is no routine for application. One possible reason practitioners recognize that most of these tools use a single metric threshold, which might not be adequate to evaluate all system classes. Secondly, we conducted an empirical study to investigate whether fine-grained design decisions also influence the distribution of software metrics and, therefore, should be considered to derive metric thresholds. Our findings show that the distribution of metrics is sensitive to the following design decisions: (i) design role of the class (ii) used libraries, (iii) coding style, (iv) exception handling, and (v) logging and debugging code mechanisms. We used these findings to propose two new techniques to derive design-sensitive metric thresholds using the class design role as context. Then, we carried out two large-scale empirical studies to evaluate them. The first study showed that our proposed techniques improved precision according to developers' perceptions. Since it is impossible and tiring to perform a complete source code quality assessment with developers, we conducted a second study mining the evolution of software projects from popular architectural domains. We found that our techniques improved recall to point out methods effectively refactored during software evolution.
id UFBA-2_27a28d080c83a3f7c910b86f6b279497
oai_identifier_str oai:repositorio.ufba.br:ri/34683
network_acronym_str UFBA-2
network_name_str Repositório Institucional da UFBA
repository_id_str 1932
spelling Dósea, Marcos BarbosaSant`Anna, Cláudio NogueiraDósea, Marcos BarbosaSant'Anna, Cláudio Nogueira0000-0002-6005-5463http://lattes.cnpq.br/3228159608138969Mendonça Neto, Manoel Gomes de0000-0002-0874-7665http://lattes.cnpq.br/1608062196337851Chavez , Christina von Flach Garcia0000-0001-5172-9641http://lattes.cnpq.br/1827829018668226Maia, Marcelo de Almeida0000-0003-3578-1380http://lattes.cnpq.br/4915659948263445Aniche, Maurício Finavaro0000-0002-8893-2835http://lattes.cnpq.br/55102382660485980000-0002-3981-6301http://lattes.cnpq.br/35398063024431052022-01-19T17:37:52Z2022-01-192022-01-19T17:37:52Z2021-08-16DÓSEA, Marcos Barbosa. Design-sensitive metric thresholds based on design roles. 2021. 155 f. Tese (Doutorado) - Curso de Ciência da Computação, Instituto de Computação, Universidade Federal da Bahia, Salvador, Bahia, 2021.https://repositorio.ufba.br/handle/ri/34683State-of-the-art techniques and Automated Static Analysis Tools (ASATs) for identifying code smells rely on metric-based assessment. However, most of these techniques have low accuracy. One possible reason is that source code elements, such as methods implemented according to different design decisions, are assessed through the same generic threshold for each metric. Other possible reason is that these metric thresholds are usually derived from classes driven by different design decisions. Using generic metric thresholds that do not consider the design context of each evaluated class can generate many false positives and false negatives for software developers. Our goal is to propose design-sensitive techniques to derive contextual metric thresholds. Our primary hypothesis is that using the design role played by each system class to define this context may point out more relevant code smells to software developers. We conducted some empirical studies to define the proposed techniques. Firstly, we performed a large-scale survey that showed that practitioners recognize difficulties in fitting ASATs into the software development process. They also claim that there is no routine for application. One possible reason practitioners recognize that most of these tools use a single metric threshold, which might not be adequate to evaluate all system classes. Secondly, we conducted an empirical study to investigate whether fine-grained design decisions also influence the distribution of software metrics and, therefore, should be considered to derive metric thresholds. Our findings show that the distribution of metrics is sensitive to the following design decisions: (i) design role of the class (ii) used libraries, (iii) coding style, (iv) exception handling, and (v) logging and debugging code mechanisms. We used these findings to propose two new techniques to derive design-sensitive metric thresholds using the class design role as context. Then, we carried out two large-scale empirical studies to evaluate them. The first study showed that our proposed techniques improved precision according to developers' perceptions. Since it is impossible and tiring to perform a complete source code quality assessment with developers, we conducted a second study mining the evolution of software projects from popular architectural domains. We found that our techniques improved recall to point out methods effectively refactored during software evolution.Técnicas de última geração e ferramentas automáticas de análise estática (ASATs) para identificar cheiros de código dependem de avaliação baseada em métricas. No entanto, a maioria dessas técnicas tem baixa precisão. Uma possível razão é que os elementos do código-fonte, como métodos implementados de acordo com diferentes decisões de design, são avaliados pelo mesmo limite genérico para cada métrica. Outra razão possível é que esses limites de métrica geralmente são derivados de classes orientadas por diferentes decisões de projeto. O uso de limites de métricas genéricas que não consideram o contexto de design de cada classe avaliada pode gerar muitos falsos positivos e falsos negativos para desenvolvedores de software. Nosso objetivo é propor técnicas sensíveis ao design para derivar limites de métricas contextuais. Nossa hipótese principal é que usar o papel de design desempenhado por cada classe de sistema para definir esse contexto pode apontar cheiros de código mais relevantes para desenvolvedores de software. Realizamos alguns estudos empíricos para definir as técnicas propostas. Primeiramente, realizamos uma pesquisa em larga escala que mostrou que os profissionais reconhecem dificuldades em encaixar ASATs no processo de desenvolvimento de software. Afirmam também que não há rotina para aplicação. Uma possível razão pela qual os profissionais reconhecem que a maioria dessas ferramentas usa um único limite de métrica, que pode não ser adequado para avaliar todas as classes do sistema. Em segundo lugar, realizamos um estudo empírico para investigar se as decisões de projeto refinadas também influenciam a distribuição de métricas de software e, portanto, devem ser consideradas para derivar limites de métricas. Nossas descobertas mostram que a distribuição de métricas é sensível às seguintes decisões de design: (i) função de design da classe (ii) bibliotecas usadas, (iii) estilo de codificação, (iv) tratamento de exceção e (v) código de registro e depuração mecanismos. Usamos essas descobertas para propor duas novas técnicas para derivar limites de métricas sensíveis ao design usando a função de design de classe como contexto. Em seguida, realizamos dois estudos empíricos de grande escala para avaliá-los. O primeiro estudo mostrou que nossas técnicas propostas melhoraram a precisão de acordo com as percepções dos desenvolvedores. Como é impossível e cansativo realizar uma avaliação completa da qualidade do código-fonte com os desenvolvedores, realizamos um segundo estudo minerando a evolução de projetos de software de domínios arquiteturais populares. Descobrimos que nossas técnicas melhoraram o recall para apontar métodos efetivamente refatorados durante a evolução do software.Submitted by Marcos Dósea (marcosdosea@gmail.com) on 2021-12-22T19:09:45Z No. of bitstreams: 1 PGCOMP-2021-Tese_Doutorado-Marcos_Barbosa_Dosea.pdf: 2428109 bytes, checksum: 5f7fa799c4c413323ed9b7a38c412284 (MD5)Approved for entry into archive by Solange Rocha (soluny@gmail.com) on 2022-01-19T17:37:52Z (GMT) No. of bitstreams: 1 PGCOMP-2021-Tese_Doutorado-Marcos_Barbosa_Dosea.pdf: 2428109 bytes, checksum: 5f7fa799c4c413323ed9b7a38c412284 (MD5)Made available in DSpace on 2022-01-19T17:37:52Z (GMT). No. of bitstreams: 1 PGCOMP-2021-Tese_Doutorado-Marcos_Barbosa_Dosea.pdf: 2428109 bytes, checksum: 5f7fa799c4c413323ed9b7a38c412284 (MD5) Previous issue date: 2021-08-16porengUniversidade Federal da BahiaPrograma de Pós-Graduação em Ciência da Computação (PGCOMP) UFBABrasilInstituto de MatemáticaCNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARESoftware designMetric thresholdsDesign decisionsDesign roleClass design roleCode analysisStatic analysis toolsSoftware qualityEmpirical studiesDesign de softwareLimites de métricaDecisões de designFunção de designFunção de design de classeAnálise de códigoFerramentas de análise estáticaQualidade do softwareEstudos empíricosDesign-sensitive metric thresholds based on design rolesLimites de métricas sensíveis ao design com base nas funções de designinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/doctoralThesisinfo:eu-repo/semantics/openAccessreponame:Repositório Institucional da UFBAinstname:Universidade Federal da Bahia (UFBA)instacron:UFBAORIGINALPGCOMP-2021-Tese_Doutorado-Marcos_Barbosa_Dosea.pdfPGCOMP-2021-Tese_Doutorado-Marcos_Barbosa_Dosea.pdfapplication/pdf2428109https://repositorio.ufba.br/bitstream/ri/34683/1/PGCOMP-2021-Tese_Doutorado-Marcos_Barbosa_Dosea.pdf5f7fa799c4c413323ed9b7a38c412284MD51LICENSElicense.txtlicense.txttext/plain1582https://repositorio.ufba.br/bitstream/ri/34683/2/license.txt907e2b7d511fb2c3e42dbdd41a6197c6MD52TEXTPGCOMP-2021-Tese_Doutorado-Marcos_Barbosa_Dosea.pdf.txtPGCOMP-2021-Tese_Doutorado-Marcos_Barbosa_Dosea.pdf.txtExtracted texttext/plain439360https://repositorio.ufba.br/bitstream/ri/34683/3/PGCOMP-2021-Tese_Doutorado-Marcos_Barbosa_Dosea.pdf.txt2ec7fd05c599386fd4c9f7da5e67b611MD53ri/346832022-01-22 06:29:17.676oai:repositorio.ufba.br:ri/34683VGVybW8gZGUgTGljZW7Dp2EsIG7Do28gZXhjbHVzaXZvLCBwYXJhIG8gZGVww7NzaXRvIG5vIFJlcG9zaXTDs3JpbyBJbnN0aXR1Y2lvbmFsIGRhIFVGQkEuCgogUGVsbyBwcm9jZXNzbyBkZSBzdWJtaXNzw4PCg8OCwqNvIGRlIGRvY3VtZW50b3MsIG8gYXV0b3Igb3Ugc2V1IHJlcHJlc2VudGFudGUgbGVnYWwsIGFvIGFjZWl0YXIgZXNzZSB0ZXJtbyBkZSBsaWNlbsODwoPDgsKnYSwgY29uY2VkZSBhbyBSZXBvc2l0w4PCg8OCwrNyaW8gSW5zdGl0dWNpb25hbCBkYSBVbml2ZXJzaWRhZGUgRmVkZXJhbCBkYSBCYWhpYSBvIGRpcmVpdG8gZGUgbWFudGVyIHVtYSBjw4PCg8OCwrNwaWEgZW0gc2V1IHJlcG9zaXTDg8KDw4LCs3JpbyBjb20gYSBmaW5hbGlkYWRlLCBwcmltZWlyYSwgZGUgcHJlc2VydmHDg8KDw4LCp8ODwoPDgsKjby4gCgpFc3NlcyB0ZXJtb3MsIG7Dg8KDw4LCo28gZXhjbHVzaXZvcywgbWFudMODwoPDgsKpbSBvcyBkaXJlaXRvcyBkZSBhdXRvci9jb3B5cmlnaHQsIG1hcyBlbnRlbmRlIG8gZG9jdW1lbnRvIGNvbW8gcGFydGUgZG8gYWNlcnZvIGludGVsZWN0dWFsIGRlc3NhIFVuaXZlcnNpZGFkZS4KCiBQYXJhIG9zIGRvY3VtZW50b3MgcHVibGljYWRvcyBjb20gcmVwYXNzZSBkZSBkaXJlaXRvcyBkZSBkaXN0cmlidWnDg8KDw4LCp8ODwoPDgsKjbywgZXNzZSB0ZXJtbyBkZSBsaWNlbsODwoPDgsKnYSBlbnRlbmRlIHF1ZToKCiBNYW50ZW5kbyBvcyBkaXJlaXRvcyBhdXRvcmFpcywgcmVwYXNzYWRvcyBhIHRlcmNlaXJvcywgZW0gY2FzbyBkZSBwdWJsaWNhw4PCg8OCwqfDg8KDw4LCtWVzLCBvIHJlcG9zaXTDg8KDw4LCs3JpbyBwb2RlIHJlc3RyaW5naXIgbyBhY2Vzc28gYW8gdGV4dG8gaW50ZWdyYWwsIG1hcyBsaWJlcmEgYXMgaW5mb3JtYcODwoPDgsKnw4PCg8OCwrVlcyBzb2JyZSBvIGRvY3VtZW50byAoTWV0YWRhZG9zIGRlc2NyaXRpdm9zKS4KCiBEZXN0YSBmb3JtYSwgYXRlbmRlbmRvIGFvcyBhbnNlaW9zIGRlc3NhIHVuaXZlcnNpZGFkZSBlbSBtYW50ZXIgc3VhIHByb2R1w4PCg8OCwqfDg8KDw4LCo28gY2llbnTDg8KDw4LCrWZpY2EgY29tIGFzIHJlc3RyacODwoPDgsKnw4PCg8OCwrVlcyBpbXBvc3RhcyBwZWxvcyBlZGl0b3JlcyBkZSBwZXJpw4PCg8OCwrNkaWNvcy4KCiBQYXJhIGFzIHB1YmxpY2HDg8KDw4LCp8ODwoPDgsK1ZXMgc2VtIGluaWNpYXRpdmFzIHF1ZSBzZWd1ZW0gYSBwb2zDg8KDw4LCrXRpY2EgZGUgQWNlc3NvIEFiZXJ0bywgb3MgZGVww4PCg8OCwrNzaXRvcyBjb21wdWxzw4PCg8OCwrNyaW9zIG5lc3NlIHJlcG9zaXTDg8KDw4LCs3JpbyBtYW50w4PCg8OCwqltIG9zIGRpcmVpdG9zIGF1dG9yYWlzLCBtYXMgbWFudMODwoPDgsKpbSBhY2Vzc28gaXJyZXN0cml0byBhb3MgbWV0YWRhZG9zIGUgdGV4dG8gY29tcGxldG8uIEFzc2ltLCBhIGFjZWl0YcODwoPDgsKnw4PCg8OCwqNvIGRlc3NlIHRlcm1vIG7Dg8KDw4LCo28gbmVjZXNzaXRhIGRlIGNvbnNlbnRpbWVudG8gcG9yIHBhcnRlIGRlIGF1dG9yZXMvZGV0ZW50b3JlcyBkb3MgZGlyZWl0b3MsIHBvciBlc3RhcmVtIGVtIGluaWNpYXRpdmFzIGRlIGFjZXNzbyBhYmVydG8uCg==Repositório InstitucionalPUBhttp://192.188.11.11:8080/oai/requestopendoar:19322022-01-22T09:29:17Repositório Institucional da UFBA - Universidade Federal da Bahia (UFBA)false
dc.title.pt_BR.fl_str_mv Design-sensitive metric thresholds based on design roles
dc.title.alternative.pt_BR.fl_str_mv Limites de métricas sensíveis ao design com base nas funções de design
title Design-sensitive metric thresholds based on design roles
spellingShingle Design-sensitive metric thresholds based on design roles
Dósea, Marcos Barbosa
CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARE
Software design
Metric thresholds
Design decisions
Design role
Class design role
Code analysis
Static analysis tools
Software quality
Empirical studies
Design de software
Limites de métrica
Decisões de design
Função de design
Função de design de classe
Análise de código
Ferramentas de análise estática
Qualidade do software
Estudos empíricos
title_short Design-sensitive metric thresholds based on design roles
title_full Design-sensitive metric thresholds based on design roles
title_fullStr Design-sensitive metric thresholds based on design roles
title_full_unstemmed Design-sensitive metric thresholds based on design roles
title_sort Design-sensitive metric thresholds based on design roles
author Dósea, Marcos Barbosa
author_facet Dósea, Marcos Barbosa
Sant`Anna, Cláudio Nogueira
author_role author
author2 Sant`Anna, Cláudio Nogueira
author2_role author
dc.contributor.author.fl_str_mv Dósea, Marcos Barbosa
Sant`Anna, Cláudio Nogueira
Dósea, Marcos Barbosa
dc.contributor.advisor1.fl_str_mv Sant'Anna, Cláudio Nogueira
dc.contributor.advisor1ID.fl_str_mv 0000-0002-6005-5463
dc.contributor.advisor1Lattes.fl_str_mv http://lattes.cnpq.br/3228159608138969
dc.contributor.referee1.fl_str_mv Mendonça Neto, Manoel Gomes de
dc.contributor.referee1ID.fl_str_mv 0000-0002-0874-7665
dc.contributor.referee1Lattes.fl_str_mv http://lattes.cnpq.br/1608062196337851
dc.contributor.referee2.fl_str_mv Chavez , Christina von Flach Garcia
dc.contributor.referee2ID.fl_str_mv 0000-0001-5172-9641
dc.contributor.referee2Lattes.fl_str_mv http://lattes.cnpq.br/1827829018668226
dc.contributor.referee3.fl_str_mv Maia, Marcelo de Almeida
dc.contributor.referee3ID.fl_str_mv 0000-0003-3578-1380
dc.contributor.referee3Lattes.fl_str_mv http://lattes.cnpq.br/4915659948263445
dc.contributor.referee4.fl_str_mv Aniche, Maurício Finavaro
dc.contributor.referee4ID.fl_str_mv 0000-0002-8893-2835
dc.contributor.referee4Lattes.fl_str_mv http://lattes.cnpq.br/5510238266048598
dc.contributor.authorID.fl_str_mv 0000-0002-3981-6301
dc.contributor.authorLattes.fl_str_mv http://lattes.cnpq.br/3539806302443105
contributor_str_mv Sant'Anna, Cláudio Nogueira
Mendonça Neto, Manoel Gomes de
Chavez , Christina von Flach Garcia
Maia, Marcelo de Almeida
Aniche, Maurício Finavaro
dc.subject.cnpq.fl_str_mv CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARE
topic CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARE
Software design
Metric thresholds
Design decisions
Design role
Class design role
Code analysis
Static analysis tools
Software quality
Empirical studies
Design de software
Limites de métrica
Decisões de design
Função de design
Função de design de classe
Análise de código
Ferramentas de análise estática
Qualidade do software
Estudos empíricos
dc.subject.por.fl_str_mv Software design
Metric thresholds
Design decisions
Design role
Class design role
Code analysis
Static analysis tools
Software quality
Empirical studies
Design de software
Limites de métrica
Decisões de design
Função de design
Função de design de classe
Análise de código
Ferramentas de análise estática
Qualidade do software
Estudos empíricos
description State-of-the-art techniques and Automated Static Analysis Tools (ASATs) for identifying code smells rely on metric-based assessment. However, most of these techniques have low accuracy. One possible reason is that source code elements, such as methods implemented according to different design decisions, are assessed through the same generic threshold for each metric. Other possible reason is that these metric thresholds are usually derived from classes driven by different design decisions. Using generic metric thresholds that do not consider the design context of each evaluated class can generate many false positives and false negatives for software developers. Our goal is to propose design-sensitive techniques to derive contextual metric thresholds. Our primary hypothesis is that using the design role played by each system class to define this context may point out more relevant code smells to software developers. We conducted some empirical studies to define the proposed techniques. Firstly, we performed a large-scale survey that showed that practitioners recognize difficulties in fitting ASATs into the software development process. They also claim that there is no routine for application. One possible reason practitioners recognize that most of these tools use a single metric threshold, which might not be adequate to evaluate all system classes. Secondly, we conducted an empirical study to investigate whether fine-grained design decisions also influence the distribution of software metrics and, therefore, should be considered to derive metric thresholds. Our findings show that the distribution of metrics is sensitive to the following design decisions: (i) design role of the class (ii) used libraries, (iii) coding style, (iv) exception handling, and (v) logging and debugging code mechanisms. We used these findings to propose two new techniques to derive design-sensitive metric thresholds using the class design role as context. Then, we carried out two large-scale empirical studies to evaluate them. The first study showed that our proposed techniques improved precision according to developers' perceptions. Since it is impossible and tiring to perform a complete source code quality assessment with developers, we conducted a second study mining the evolution of software projects from popular architectural domains. We found that our techniques improved recall to point out methods effectively refactored during software evolution.
publishDate 2021
dc.date.issued.fl_str_mv 2021-08-16
dc.date.accessioned.fl_str_mv 2022-01-19T17:37:52Z
dc.date.available.fl_str_mv 2022-01-19
2022-01-19T17:37:52Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/doctoralThesis
format doctoralThesis
status_str publishedVersion
dc.identifier.citation.fl_str_mv DÓSEA, Marcos Barbosa. Design-sensitive metric thresholds based on design roles. 2021. 155 f. Tese (Doutorado) - Curso de Ciência da Computação, Instituto de Computação, Universidade Federal da Bahia, Salvador, Bahia, 2021.
dc.identifier.uri.fl_str_mv https://repositorio.ufba.br/handle/ri/34683
identifier_str_mv DÓSEA, Marcos Barbosa. Design-sensitive metric thresholds based on design roles. 2021. 155 f. Tese (Doutorado) - Curso de Ciência da Computação, Instituto de Computação, Universidade Federal da Bahia, Salvador, Bahia, 2021.
url https://repositorio.ufba.br/handle/ri/34683
dc.language.iso.fl_str_mv por
eng
language por
eng
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.publisher.none.fl_str_mv Universidade Federal da Bahia
dc.publisher.program.fl_str_mv Programa de Pós-Graduação em Ciência da Computação (PGCOMP) 
dc.publisher.initials.fl_str_mv UFBA
dc.publisher.country.fl_str_mv Brasil
dc.publisher.department.fl_str_mv Instituto de Matemática
publisher.none.fl_str_mv Universidade Federal da Bahia
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFBA
instname:Universidade Federal da Bahia (UFBA)
instacron:UFBA
instname_str Universidade Federal da Bahia (UFBA)
instacron_str UFBA
institution UFBA
reponame_str Repositório Institucional da UFBA
collection Repositório Institucional da UFBA
bitstream.url.fl_str_mv https://repositorio.ufba.br/bitstream/ri/34683/1/PGCOMP-2021-Tese_Doutorado-Marcos_Barbosa_Dosea.pdf
https://repositorio.ufba.br/bitstream/ri/34683/2/license.txt
https://repositorio.ufba.br/bitstream/ri/34683/3/PGCOMP-2021-Tese_Doutorado-Marcos_Barbosa_Dosea.pdf.txt
bitstream.checksum.fl_str_mv 5f7fa799c4c413323ed9b7a38c412284
907e2b7d511fb2c3e42dbdd41a6197c6
2ec7fd05c599386fd4c9f7da5e67b611
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UFBA - Universidade Federal da Bahia (UFBA)
repository.mail.fl_str_mv
_version_ 1801502739322109952