Identifying and analyzing software concerns from third-party components’ metadata

Detalhes bibliográficos
Autor(a) principal: Carvalho, Luis Paulo da Silva
Data de Publicação: 2020
Tipo de documento: Tese
Idioma: eng
Título da fonte: Repositório Institucional da UFBA
Texto Completo: http://repositorio.ufba.br/ri/handle/ri/33292
Resumo: Sistemas bem modularizados são mais fáceis de manter e evoluir. No entanto, não é fácil atingir uma boa modularidade. Sistemas devem ser modularizados sob diversas perspectivas e, frequentemente, existem interesses importantes que ficam espalhados ou entrelaçados entre vários módulos, os chamados interesses transversais. Logging, Acesso a Banco de Dados e Automação de Testes são exemplos de interesses transversais. Os estudos sobre interesses frequentemente recorrem à identificação manual dos mesmos. Infelizmente, a identificação manual tende a ser subjetiva e imprecisa, além de exigir muito esforço. Documentos de Requisitos de Software (DRSs) e Documentos de Arquitetura de Software (DASs) podem ser usados como recursos auxiliares na análise de interesses, mas eles não são comuns. Idealmente, os desenvolvedores precisam confiar em abordagens automáticas para identificar e processar informações sobre interesses a partir de código fonte. Nesse contexto, este trabalho utiliza a injeção de componentes em projetos de software para definir um método de localização de interesses. Em sistemas modernos, os desenvolvedores implementam módulos para lidar com as regras de negócios centrais, mas geralmente injetam componentes de terceiros na base de código para materializar interesses relacionados aos aspectos secundários do sistema. Por serem estes os tipos de interesse que mais se dispersam e se entrelaçam nos módulos dos sistemas, vimos a oportunidade de propor um método para apoiar a sua identificação e análise. Nosso método identifica interesses a partir dos metadados que os desenvolvedores usam para injetar componentes. Em seguida, ele avalia como estes interesses se espalham e evoluem ao longo do tempo na base de código. Desenvolvemos uma ferramenta chamada Architectural Knowledge Suite (AKS) para automatizar o método. Usamos essa ferramenta para conduzir um estudo de pesquisa-ação com a ajuda de especialistas em desenvolvimento de software para avaliar e refinar o método. Executamos três outros estudos para caracterizar e entender como os desenvolvedores implementam interesses no mundo real. Entre os resultados obtidos, destacamos que o método correspondeu moderadamente às expectativas dos especialistas. Notamos que é possı́vel otimizar a captura de interesses a partir do código fonte de sistemas, se eles forem agrupados considerando similaridades entre seus contextos de uso. Percebemos que, durante a evolução dos sistemas, artefatos de código tendem a não se dedicar à implementação de interesses especı́ficos. Identificamos oportunidades de adaptação do método para tornar possı́vel sua aplicação sob diferentes cenários de utilização de tecnologias de desenvolvimento.
id UFBA-2_3d9c5974512a4325a62fdc7f59811f16
oai_identifier_str oai:repositorio.ufba.br:ri/33292
network_acronym_str UFBA-2
network_name_str Repositório Institucional da UFBA
repository_id_str 1932
spelling Carvalho, Luis Paulo da SilvaMendonça Neto, Manoel Gomes deNovais, Renato LimaSalvador, Laís do NascimentoSant'Anna, Cláudio NogueiraSoares, Sérgio Castelo BrancoSilva, Paulo Caetano da2021-04-19T22:45:46Z2021-04-19T22:45:46Z2021-04-192020-11-16http://repositorio.ufba.br/ri/handle/ri/33292Sistemas bem modularizados são mais fáceis de manter e evoluir. No entanto, não é fácil atingir uma boa modularidade. Sistemas devem ser modularizados sob diversas perspectivas e, frequentemente, existem interesses importantes que ficam espalhados ou entrelaçados entre vários módulos, os chamados interesses transversais. Logging, Acesso a Banco de Dados e Automação de Testes são exemplos de interesses transversais. Os estudos sobre interesses frequentemente recorrem à identificação manual dos mesmos. Infelizmente, a identificação manual tende a ser subjetiva e imprecisa, além de exigir muito esforço. Documentos de Requisitos de Software (DRSs) e Documentos de Arquitetura de Software (DASs) podem ser usados como recursos auxiliares na análise de interesses, mas eles não são comuns. Idealmente, os desenvolvedores precisam confiar em abordagens automáticas para identificar e processar informações sobre interesses a partir de código fonte. Nesse contexto, este trabalho utiliza a injeção de componentes em projetos de software para definir um método de localização de interesses. Em sistemas modernos, os desenvolvedores implementam módulos para lidar com as regras de negócios centrais, mas geralmente injetam componentes de terceiros na base de código para materializar interesses relacionados aos aspectos secundários do sistema. Por serem estes os tipos de interesse que mais se dispersam e se entrelaçam nos módulos dos sistemas, vimos a oportunidade de propor um método para apoiar a sua identificação e análise. Nosso método identifica interesses a partir dos metadados que os desenvolvedores usam para injetar componentes. Em seguida, ele avalia como estes interesses se espalham e evoluem ao longo do tempo na base de código. Desenvolvemos uma ferramenta chamada Architectural Knowledge Suite (AKS) para automatizar o método. Usamos essa ferramenta para conduzir um estudo de pesquisa-ação com a ajuda de especialistas em desenvolvimento de software para avaliar e refinar o método. Executamos três outros estudos para caracterizar e entender como os desenvolvedores implementam interesses no mundo real. Entre os resultados obtidos, destacamos que o método correspondeu moderadamente às expectativas dos especialistas. Notamos que é possı́vel otimizar a captura de interesses a partir do código fonte de sistemas, se eles forem agrupados considerando similaridades entre seus contextos de uso. Percebemos que, durante a evolução dos sistemas, artefatos de código tendem a não se dedicar à implementação de interesses especı́ficos. Identificamos oportunidades de adaptação do método para tornar possı́vel sua aplicação sob diferentes cenários de utilização de tecnologias de desenvolvimento.Well-modularized systems are easier to maintain and evolve. However, it is difficult to achieve good modularity in software systems, because developers must keep systems modular with respect to several perspectives. This involves dealing with concerns that scatter and tangle through several modules, the crosscutting concerns. Logging, Database Access, and Testing Automation are examples of crosscutting concerns. Studies on concerns often resort to manual identification of interests. Unfortunately, manual identification tends to be subjective, imprecise, and effort-intensive. Software Requirement Documents (SRDs) and Software Architecture Documents (SADs) can be used as auxiliary resources to identify and analyze concerns, but they are not common assets. When they are available, there is no guarantee that they contain relevant information about concerns of particular interest. As consequence, ideally, developers should rely on automation to identify and process information about concerns over the source code. In this context, this work takes advantage of the injection of components in software projects to define a method for locating information about crosscutting concerns in software projects. On modern systems, developers implement modules to address central business rules, but they usually inject third-party components in the codebase to materialize concerns related to secondary aspects of the system. As these are the types of concern that tend to scatter and interrelate through systems’ modules, we saw an opportunity to propose a method to identify and analyzed them using injection data and metadata. Our method first identifies concerns from the metadata that developers use to inject third-party components in their systems. Then, it evaluates how those concerns spreads, and evolve through time, over the codebase. We developed a tool named Architectural Knowledge Suite (AKS) to automate the method. We used this tool to conduct an action research study with the help of software development specialists to evaluate the reliability of our method and to refine it. We also ran three other studies using our method to process real information systems’ source code, characterizing and analyzing how developers implement concerns in the real world. Among our findings, we highlight that our method met the expectations of the specialists to a moderate degree. We perceived that grouping software projects according to their contexts of use can optimize the identification and analyses of concerns. We noticed that developers tend to mix concerns by joining references to different components through the lines of source code artifacts, but we spotted some exceptional cases. We also saw opportunities to adapt our method to expand the identification of concerns toward varied contexts of adopted software development technologies.Submitted by Luis Paulo da Silva Carvalo (luispscarvalho@gmail.com) on 2021-04-13T13:38:22Z No. of bitstreams: 1 UFBA-2020-Tese-Luis.pdf: 4756360 bytes, checksum: 7ff899dedaf68dab7ac3049c34576679 (MD5)Approved for entry into archive by Solange Rocha (soluny@gmail.com) on 2021-04-19T22:45:46Z (GMT) No. of bitstreams: 1 UFBA-2020-Tese-Luis.pdf: 4756360 bytes, checksum: 7ff899dedaf68dab7ac3049c34576679 (MD5)Made available in DSpace on 2021-04-19T22:45:46Z (GMT). No. of bitstreams: 1 UFBA-2020-Tese-Luis.pdf: 4756360 bytes, checksum: 7ff899dedaf68dab7ac3049c34576679 (MD5)Ciências Exatas e da TerraCiência da ComputaçãoEngenharia de SoftwareMineração de dados (Computação)Repositórios de softwareEstáticaComponentesSoftware Repository MiningStaticData Mining (Computing)Software repositoriesIdentifying and analyzing software concerns from third-party components’ metadatainfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/doctoralThesisUniversidade Federal da BahiaInstituto de Matemática e EstatísticaDepartamento de Ciência da Computaçãoem Ciência da ComputaçãoUFBAbrasilinfo:eu-repo/semantics/openAccessengreponame:Repositório Institucional da UFBAinstname:Universidade Federal da Bahia (UFBA)instacron:UFBAORIGINALUFBA-2020-Tese-Luis.pdfUFBA-2020-Tese-Luis.pdfapplication/pdf4756360https://repositorio.ufba.br/bitstream/ri/33292/1/UFBA-2020-Tese-Luis.pdf7ff899dedaf68dab7ac3049c34576679MD51LICENSElicense.txtlicense.txttext/plain1442https://repositorio.ufba.br/bitstream/ri/33292/2/license.txt817035eff4c4c7dda1d546e170ee2a1aMD52TEXTUFBA-2020-Tese-Luis.pdf.txtUFBA-2020-Tese-Luis.pdf.txtExtracted texttext/plain383508https://repositorio.ufba.br/bitstream/ri/33292/3/UFBA-2020-Tese-Luis.pdf.txt977ba4e959984cd95f9596734b1cd105MD53ri/332922022-07-01 10:46:51.512oai:repositorio.ufba.br:ri/33292VGVybW8gZGUgTGljZW7vv71hLCBu77+9byBleGNsdXNpdm8sIHBhcmEgbyBkZXDvv71zaXRvIG5vIFJlcG9zaXTvv71yaW8gSW5zdGl0dWNpb25hbCBkYSBVRkJBLgoKIFBlbG8gcHJvY2Vzc28gZGUgc3VibWlzc8ODwqNvIGRlIGRvY3VtZW50b3MsIG8gYXV0b3Igb3Ugc2V1IHJlcHJlc2VudGFudGUgbGVnYWwsIGFvIGFjZWl0YXIgZXNzZSB0ZXJtbyBkZSBsaWNlbsODwqdhLCBjb25jZWRlIGFvIFJlcG9zaXTDg8KzcmlvIEluc3RpdHVjaW9uYWwgZGEgVW5pdmVyc2lkYWRlIEZlZGVyYWwgZGEgQmFoaWEgbyBkaXJlaXRvIGRlIG1hbnRlciB1bWEgY8ODwrNwaWEgZW0gc2V1IHJlcG9zaXTDg8KzcmlvIGNvbSBhIGZpbmFsaWRhZGUsIHByaW1laXJhLCBkZSBwcmVzZXJ2YcODwqfDg8Kjby4gCgpFc3NlcyB0ZXJtb3MsIG7Dg8KjbyBleGNsdXNpdm9zLCBtYW50w4PCqW0gb3MgZGlyZWl0b3MgZGUgYXV0b3IvY29weXJpZ2h0LCBtYXMgZW50ZW5kZSBvIGRvY3VtZW50byBjb21vIHBhcnRlIGRvIGFjZXJ2byBpbnRlbGVjdHVhbCBkZXNzYSBVbml2ZXJzaWRhZGUuCgogUGFyYSBvcyBkb2N1bWVudG9zIHB1YmxpY2Fkb3MgY29tIHJlcGFzc2UgZGUgZGlyZWl0b3MgZGUgZGlzdHJpYnVpw4PCp8ODwqNvLCBlc3NlIHRlcm1vIGRlIGxpY2Vuw4PCp2EgZW50ZW5kZSBxdWU6CgogTWFudGVuZG8gb3MgZGlyZWl0b3MgYXV0b3JhaXMsIHJlcGFzc2Fkb3MgYSB0ZXJjZWlyb3MsIGVtIGNhc28gZGUgcHVibGljYcODwqfDg8K1ZXMsIG8gcmVwb3NpdMODwrNyaW8gcG9kZSByZXN0cmluZ2lyIG8gYWNlc3NvIGFvIHRleHRvIGludGVncmFsLCBtYXMgbGliZXJhIGFzIGluZm9ybWHDg8Knw4PCtWVzIHNvYnJlIG8gZG9jdW1lbnRvIChNZXRhZGFkb3MgZGVzY3JpdGl2b3MpLgoKIERlc3RhIGZvcm1hLCBhdGVuZGVuZG8gYW9zIGFuc2Vpb3MgZGVzc2EgdW5pdmVyc2lkYWRlIGVtIG1hbnRlciBzdWEgcHJvZHXDg8Knw4PCo28gY2llbnTDg8KtZmljYSBjb20gYXMgcmVzdHJpw4PCp8ODwrVlcyBpbXBvc3RhcyBwZWxvcyBlZGl0b3JlcyBkZSBwZXJpw4PCs2RpY29zLgoKIFBhcmEgYXMgcHVibGljYcODwqfDg8K1ZXMgc2VtIGluaWNpYXRpdmFzIHF1ZSBzZWd1ZW0gYSBwb2zDg8KtdGljYSBkZSBBY2Vzc28gQWJlcnRvLCBvcyBkZXDDg8Kzc2l0b3MgY29tcHVsc8ODwrNyaW9zIG5lc3NlIHJlcG9zaXTDg8KzcmlvIG1hbnTDg8KpbSBvcyBkaXJlaXRvcyBhdXRvcmFpcywgbWFzIG1hbnTDg8KpbSBhY2Vzc28gaXJyZXN0cml0byBhb3MgbWV0YWRhZG9zIGUgdGV4dG8gY29tcGxldG8uIEFzc2ltLCBhIGFjZWl0YcODwqfDg8KjbyBkZXNzZSB0ZXJtbyBuw4PCo28gbmVjZXNzaXRhIGRlIGNvbnNlbnRpbWVudG8gcG9yIHBhcnRlIGRlIGF1dG9yZXMvZGV0ZW50b3JlcyBkb3MgZGlyZWl0b3MsIHBvciBlc3RhcmVtIGVtIGluaWNpYXRpdmFzIGRlIGFjZXNzbyBhYmVydG8uCg==Repositório InstitucionalPUBhttps://repositorio.ufba.br/oai/requestrepositorio@ufba.bropendoar:19322022-07-01T13:46:51Repositório Institucional da UFBA - Universidade Federal da Bahia (UFBA)false
dc.title.pt_BR.fl_str_mv Identifying and analyzing software concerns from third-party components’ metadata
title Identifying and analyzing software concerns from third-party components’ metadata
spellingShingle Identifying and analyzing software concerns from third-party components’ metadata
Carvalho, Luis Paulo da Silva
Ciências Exatas e da Terra
Ciência da Computação
Engenharia de Software
Mineração de dados (Computação)
Repositórios de software
Estática
Componentes
Software Repository Mining
Static
Data Mining (Computing)
Software repositories
title_short Identifying and analyzing software concerns from third-party components’ metadata
title_full Identifying and analyzing software concerns from third-party components’ metadata
title_fullStr Identifying and analyzing software concerns from third-party components’ metadata
title_full_unstemmed Identifying and analyzing software concerns from third-party components’ metadata
title_sort Identifying and analyzing software concerns from third-party components’ metadata
author Carvalho, Luis Paulo da Silva
author_facet Carvalho, Luis Paulo da Silva
author_role author
dc.contributor.author.fl_str_mv Carvalho, Luis Paulo da Silva
dc.contributor.advisor1.fl_str_mv Mendonça Neto, Manoel Gomes de
dc.contributor.advisor-co1.fl_str_mv Novais, Renato Lima
dc.contributor.referee1.fl_str_mv Salvador, Laís do Nascimento
Sant'Anna, Cláudio Nogueira
Soares, Sérgio Castelo Branco
Silva, Paulo Caetano da
contributor_str_mv Mendonça Neto, Manoel Gomes de
Novais, Renato Lima
Salvador, Laís do Nascimento
Sant'Anna, Cláudio Nogueira
Soares, Sérgio Castelo Branco
Silva, Paulo Caetano da
dc.subject.cnpq.fl_str_mv Ciências Exatas e da Terra
Ciência da Computação
Engenharia de Software
topic Ciências Exatas e da Terra
Ciência da Computação
Engenharia de Software
Mineração de dados (Computação)
Repositórios de software
Estática
Componentes
Software Repository Mining
Static
Data Mining (Computing)
Software repositories
dc.subject.por.fl_str_mv Mineração de dados (Computação)
Repositórios de software
Estática
Componentes
Software Repository Mining
Static
Data Mining (Computing)
Software repositories
description Sistemas bem modularizados são mais fáceis de manter e evoluir. No entanto, não é fácil atingir uma boa modularidade. Sistemas devem ser modularizados sob diversas perspectivas e, frequentemente, existem interesses importantes que ficam espalhados ou entrelaçados entre vários módulos, os chamados interesses transversais. Logging, Acesso a Banco de Dados e Automação de Testes são exemplos de interesses transversais. Os estudos sobre interesses frequentemente recorrem à identificação manual dos mesmos. Infelizmente, a identificação manual tende a ser subjetiva e imprecisa, além de exigir muito esforço. Documentos de Requisitos de Software (DRSs) e Documentos de Arquitetura de Software (DASs) podem ser usados como recursos auxiliares na análise de interesses, mas eles não são comuns. Idealmente, os desenvolvedores precisam confiar em abordagens automáticas para identificar e processar informações sobre interesses a partir de código fonte. Nesse contexto, este trabalho utiliza a injeção de componentes em projetos de software para definir um método de localização de interesses. Em sistemas modernos, os desenvolvedores implementam módulos para lidar com as regras de negócios centrais, mas geralmente injetam componentes de terceiros na base de código para materializar interesses relacionados aos aspectos secundários do sistema. Por serem estes os tipos de interesse que mais se dispersam e se entrelaçam nos módulos dos sistemas, vimos a oportunidade de propor um método para apoiar a sua identificação e análise. Nosso método identifica interesses a partir dos metadados que os desenvolvedores usam para injetar componentes. Em seguida, ele avalia como estes interesses se espalham e evoluem ao longo do tempo na base de código. Desenvolvemos uma ferramenta chamada Architectural Knowledge Suite (AKS) para automatizar o método. Usamos essa ferramenta para conduzir um estudo de pesquisa-ação com a ajuda de especialistas em desenvolvimento de software para avaliar e refinar o método. Executamos três outros estudos para caracterizar e entender como os desenvolvedores implementam interesses no mundo real. Entre os resultados obtidos, destacamos que o método correspondeu moderadamente às expectativas dos especialistas. Notamos que é possı́vel otimizar a captura de interesses a partir do código fonte de sistemas, se eles forem agrupados considerando similaridades entre seus contextos de uso. Percebemos que, durante a evolução dos sistemas, artefatos de código tendem a não se dedicar à implementação de interesses especı́ficos. Identificamos oportunidades de adaptação do método para tornar possı́vel sua aplicação sob diferentes cenários de utilização de tecnologias de desenvolvimento.
publishDate 2020
dc.date.submitted.none.fl_str_mv 2020-11-16
dc.date.accessioned.fl_str_mv 2021-04-19T22:45:46Z
dc.date.available.fl_str_mv 2021-04-19T22:45:46Z
dc.date.issued.fl_str_mv 2021-04-19
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.uri.fl_str_mv http://repositorio.ufba.br/ri/handle/ri/33292
url http://repositorio.ufba.br/ri/handle/ri/33292
dc.language.iso.fl_str_mv eng
language 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
Instituto de Matemática e Estatística
Departamento de Ciência da Computação
dc.publisher.program.fl_str_mv em Ciência da Computação
dc.publisher.initials.fl_str_mv UFBA
dc.publisher.country.fl_str_mv brasil
publisher.none.fl_str_mv Universidade Federal da Bahia
Instituto de Matemática e Estatística
Departamento de Ciência da Computação
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/33292/1/UFBA-2020-Tese-Luis.pdf
https://repositorio.ufba.br/bitstream/ri/33292/2/license.txt
https://repositorio.ufba.br/bitstream/ri/33292/3/UFBA-2020-Tese-Luis.pdf.txt
bitstream.checksum.fl_str_mv 7ff899dedaf68dab7ac3049c34576679
817035eff4c4c7dda1d546e170ee2a1a
977ba4e959984cd95f9596734b1cd105
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 repositorio@ufba.br
_version_ 1847339272894414848