Key classes in object-oriented systems

Detalhes bibliográficos
Ano de defesa: 2017
Autor(a) principal: Vale, Liliane do Nascimento
Orientador(a): Maia, Marcelo de Almeida lattes
Banca de defesa: Valente, Marco Túlio lattes, Kulesza, Uirá lattes, Dorça, Fabiano Azevedo lattes, Silva, Flávio de Oliveira lattes
Tipo de documento: Tese
Tipo de acesso: Acesso aberto
Idioma: eng
Instituição de defesa: Universidade Federal de Uberlândia
Programa de Pós-Graduação: Programa de Pós-graduação em Ciência da Computação
Departamento: Não Informado pela instituição
País: Brasil
Palavras-chave em Português:
Área do conhecimento CNPq:
Link de acesso: https://repositorio.ufu.br/handle/123456789/20130
http://dx.doi.org/10.14393/ufu.te.2017.32
Resumo: Vários sistemas orientados a objetos, tais como Lucene, Tomcat, Javac tem seus respectivos projetos (designs) documentados usando classes-chave, definidas como sendo classes importantes/centrais para compreender o projeto de sistemas orientados a objetos. Considerando este fato, e considerando que geralmente a arquitetura não é formalmente documentada para auxiliar os desenvolvedores a entenderem e avaliarem o projeto do software, é proposta Keecle, uma abordagem baseada em análise dinâmica e estática para detecção de classes-chave de maneira semi-automática. É proposta a aplicação de mecanismos de filtragem no espaço de busca dos dados dinâmicos, para obter um conjunto reduzido de classes-chave. A abordagem é avaliada com quatorze sistemas de código aberto e proprietários, a fim de verificar se as classes encontradas correspondem às classes-chave definidas na documentação ou definidas pelos desenvolvedores. Os resultados foram analisados em termos de precisão e recall e são superiores às abordagens da literatura. O papel das classes-chave para avaliar o projeto também foi investigado. Foi avaliado se a organização das classes-chave em um grafo de dependências, o qual destaca relações de dependência explícitas no código fonte, é um mecanismo adequado para avaliar o design. Foi analisado estatisticamente, se classes-chave são mais propensas a bad smells, e se tipos específicos de bad smells estão associados a diferentes níveis de métricas de coesão e acoplamento. Além disso, a propriedade (ownership) das classes-chave foi analisada, indicando concentração em um conjunto reduzido de desenvolvedores. Por fim, foram conduzidos um estudo experimental com estudantes e um survey com desenvolvedores para avaliar a documentação baseada em classes-chave. Os resultados demonstram que a documentação baseada em classes-chave apresenta resultados que indicam a viabilidade de uso como documentação complementar à existente ou como documentação principal em ambientes onde a documentação não está disponível.
id UFU_b2d777845bd77da68f9942714b2edd0c
oai_identifier_str oai:repositorio.ufu.br:123456789/20130
network_acronym_str UFU
network_name_str Repositório Institucional da UFU
repository_id_str
spelling 2017-12-27T12:49:38Z2017-12-27T12:49:38Z2017-11-13VALE, Liliane do Nascimento. Key classes in object-oriented systems: detection and use. 2017. 169 f. Tese (Doutorado em Ciência da Computação) - Universidade Federal de Uberlândia, Uberlândia, 2017.https://repositorio.ufu.br/handle/123456789/20130http://dx.doi.org/10.14393/ufu.te.2017.32Vários sistemas orientados a objetos, tais como Lucene, Tomcat, Javac tem seus respectivos projetos (designs) documentados usando classes-chave, definidas como sendo classes importantes/centrais para compreender o projeto de sistemas orientados a objetos. Considerando este fato, e considerando que geralmente a arquitetura não é formalmente documentada para auxiliar os desenvolvedores a entenderem e avaliarem o projeto do software, é proposta Keecle, uma abordagem baseada em análise dinâmica e estática para detecção de classes-chave de maneira semi-automática. É proposta a aplicação de mecanismos de filtragem no espaço de busca dos dados dinâmicos, para obter um conjunto reduzido de classes-chave. A abordagem é avaliada com quatorze sistemas de código aberto e proprietários, a fim de verificar se as classes encontradas correspondem às classes-chave definidas na documentação ou definidas pelos desenvolvedores. Os resultados foram analisados em termos de precisão e recall e são superiores às abordagens da literatura. O papel das classes-chave para avaliar o projeto também foi investigado. Foi avaliado se a organização das classes-chave em um grafo de dependências, o qual destaca relações de dependência explícitas no código fonte, é um mecanismo adequado para avaliar o design. Foi analisado estatisticamente, se classes-chave são mais propensas a bad smells, e se tipos específicos de bad smells estão associados a diferentes níveis de métricas de coesão e acoplamento. Além disso, a propriedade (ownership) das classes-chave foi analisada, indicando concentração em um conjunto reduzido de desenvolvedores. Por fim, foram conduzidos um estudo experimental com estudantes e um survey com desenvolvedores para avaliar a documentação baseada em classes-chave. Os resultados demonstram que a documentação baseada em classes-chave apresenta resultados que indicam a viabilidade de uso como documentação complementar à existente ou como documentação principal em ambientes onde a documentação não está disponível.Several object-oriented systems, such as Lucene, Tomcat, Javac have their respective design documented using key-classes, defined as important/central classes to understand the object-oriented design. Considering this fact, and considering that, in general, software architecture is not formally documented to help developers understanding and assessing software design, Keecle is proposed as an approach based on dynamic and static analysis for detection of key classes in a semi-automatic way. The application of filtering mechanisms on the search space of the dynamic data is proposed in order to obtain a reduced set of key classes. The approach is evaluated with fourteen proprietary and open source systems in order to verify that the found classes correspond to the key classes of the ground-truth, which is defined from the documentation or defined by the developers. The results were analyzed in terms of precision and recall, and have shown to be superior to the state-of-the-art approach. The role of key classes in assessing design has also been investigated. The organization of the key classes in a dependency graph, which highlights explicit dependency relations in the source code, was evaluated to be adequate for design comprehension and assessment. Key classes were evaluated whether they are more prone to bad smells, and whether specific types of bad smells are associated with different levels of cohesion and coupling metrics. In addition, the ownership of key classes was shown to be more concentrated in a reduced set of developers. Finally, we conducted an experimental study with students and a survey with developers to evaluate documentation based on key classes. The results indicate that the documentation based on key classes are a feasible alternative for use as complementary documentation to the existing one, or for use as main documentation in environments where documentation is not available.FAPEG - Fundação de Amparo à Pesquisa do Estado de GoiásTese (Doutorado)engUniversidade Federal de UberlândiaPrograma de Pós-graduação em Ciência da ComputaçãoBrasilCNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAOReverse engineeringKey-classesDesignSmellsExperimentKey classes in object-oriented systemsClasses-Chave em sistemas orientados a objetos: detecção e usoinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/doctoralThesisMaia, Marcelo de Almeidahttp://lattes.cnpq.br/4915659948263445Valente, Marco Túliohttp://lattes.cnpq.br/2147157840592913Kulesza, Uiráhttp://lattes.cnpq.br/0189095897739979Dorça, Fabiano Azevedohttp://lattes.cnpq.br/3944579737930998Silva, Flávio de Oliveirahttp://lattes.cnpq.br/3190608911887258Vale, Liliane do Nascimento169info:eu-repo/semantics/openAccessreponame:Repositório Institucional da UFUinstname:Universidade Federal de Uberlândia (UFU)instacron:UFUTHUMBNAILKeyClassesObject.pdf.jpgKeyClassesObject.pdf.jpgGenerated Thumbnailimage/jpeg1328https://repositorio.ufu.br/bitstream/123456789/20130/13/KeyClassesObject.pdf.jpg856f3c5a4ac6e873a07c55af7c14dac1MD513ORIGINALKeyClassesObject.pdfKeyClassesObject.pdfTeseapplication/pdf7537106https://repositorio.ufu.br/bitstream/123456789/20130/9/KeyClassesObject.pdf35dda078287b1c8860d277cca6ce6deeMD59CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-89https://repositorio.ufu.br/bitstream/123456789/20130/10/license_rdf42dd12a06de379d3ffa39b67dc9c7affMD510LICENSElicense.txtlicense.txttext/plain; charset=utf-81792https://repositorio.ufu.br/bitstream/123456789/20130/11/license.txt48ded82ce41b8d2426af12aed6b3cbf3MD511TEXTKeyClassesObject.pdf.txtKeyClassesObject.pdf.txtExtracted texttext/plain351254https://repositorio.ufu.br/bitstream/123456789/20130/12/KeyClassesObject.pdf.txt294999becfc93b13775f58155405e50cMD512123456789/201302017-12-28 03:04:35.406oai:repositorio.ufu.br:123456789/20130w4kgbmVjZXNzw6FyaW8gY29uY29yZGFyIGNvbSBhIGxpY2Vuw6dhIGRlIGRpc3RyaWJ1acOnw6NvIG7Do28tZXhjbHVzaXZhLCBhbnRlcyBxdWUgbyBkb2N1bWVudG8gcG9zc2EgYXBhcmVjZXIgbm8gUmVwb3NpdMOzcmlvLiBQb3IgZmF2b3IsIGxlaWEgYSBsaWNlbsOnYSBhdGVudGFtZW50ZS4gQ2FzbyBuZWNlc3NpdGUgZGUgYWxndW0gZXNjbGFyZWNpbWVudG8gZW50cmUgZW0gY29udGF0byBhdHJhdsOpcyBkbyBlLW1haWwgIHJlcG9zaXRvcmlvQHVmdS5ici4KCkxJQ0VOw4dBIERFIERJU1RSSUJVScOHw4NPIE7Dg08tRVhDTFVTSVZBCgpBbyBhc3NpbmFyIGUgZW50cmVnYXIgZXN0YSBsaWNlbsOnYSwgby9hIFNyLi9TcmEuIChhdXRvciBvdSBkZXRlbnRvciBkb3MgZGlyZWl0b3MgZGUgYXV0b3IpOgoKYSkgQ29uY2VkZSDDoCBVbml2ZXJzaWRhZGUgRmVkZXJhbCBkZSBVYmVybMOibmRpYSBvIGRpcmVpdG8gbsOjby1leGNsdXNpdm8gZGUgcmVwcm9kdXppciwgY29udmVydGVyIChjb21vIGRlZmluaWRvIGFiYWl4byksIGNvbXVuaWNhciBlL291IGRpc3RyaWJ1aXIgbyBkb2N1bWVudG8gZW50cmVndWUgKGluY2x1aW5kbyBvIHJlc3Vtby9hYnN0cmFjdCkgZW0gZm9ybWF0byBkaWdpdGFsIG91IGltcHJlc3NvIGUgZW0gcXVhbHF1ZXIgbWVpby4KCmIpIERlY2xhcmEgcXVlIG8gZG9jdW1lbnRvIGVudHJlZ3VlIMOpIHNldSB0cmFiYWxobyBvcmlnaW5hbCwgZSBxdWUgZGV0w6ltIG8gZGlyZWl0byBkZSBjb25jZWRlciBvcyBkaXJlaXRvcyBjb250aWRvcyBuZXN0YSBsaWNlbsOnYS4gRGVjbGFyYSB0YW1iw6ltIHF1ZSBhIGVudHJlZ2EgZG8gZG9jdW1lbnRvIG7Do28gaW5mcmluZ2UsIHRhbnRvIHF1YW50byBsaGUgw6kgcG9zc8OtdmVsIHNhYmVyLCBvcyBkaXJlaXRvcyBkZSBxdWFscXVlciBvdXRyYSBwZXNzb2Egb3UgZW50aWRhZGUuCgpjKSBTZSBvIGRvY3VtZW50byBlbnRyZWd1ZSBjb250w6ltIG1hdGVyaWFsIGRvIHF1YWwgbsOjbyBkZXTDqW0gb3MgZGlyZWl0b3MgZGUgYXV0b3IsIGRlY2xhcmEgcXVlIG9idGV2ZSBhdXRvcml6YcOnw6NvIGRvIGRldGVudG9yIGRvcyBkaXJlaXRvcyBkZSBhdXRvciBwYXJhIGNvbmNlZGVyIMOgIFVuaXZlcnNpZGFkZSBGZWRlcmFsIGRlIFViZXJsw6JuZGlhIG9zIGRpcmVpdG9zIHJlcXVlcmlkb3MgcG9yIGVzdGEgbGljZW7Dp2EsIGUgcXVlIGVzc2UgbWF0ZXJpYWwgY3Vqb3MgZGlyZWl0b3Mgc8OjbyBkZSB0ZXJjZWlyb3MgZXN0w6EgY2xhcmFtZW50ZSBpZGVudGlmaWNhZG8gZSByZWNvbmhlY2lkbyBubyB0ZXh0byBvdSBjb250ZcO6ZG8gZG8gZG9jdW1lbnRvIGVudHJlZ3VlLgoKU2UgbyBkb2N1bWVudG8gZW50cmVndWUgw6kgYmFzZWFkbyBlbSB0cmFiYWxobyBmaW5hbmNpYWRvIG91IGFwb2lhZG8gcG9yIG91dHJhIGluc3RpdHVpw6fDo28gcXVlIG7Do28gYSBVbml2ZXJzaWRhZGUgRmVkZXJhbCBkZSBVYmVybMOibmRpYSwgZGVjbGFyYSBxdWUgY3VtcHJpdSBxdWFpc3F1ZXIgb2JyaWdhw6fDtWVzIGV4aWdpZGFzIHBlbG8gcmVzcGVjdGl2byBjb250cmF0byBvdSBhY29yZG8uCgpBIFVuaXZlcnNpZGFkZSBGZWRlcmFsIGRlIFViZXJsw6JuZGlhIGlkZW50aWZpY2Fyw6EgY2xhcmFtZW50ZSBvKHMpIHNldShzKSBub21lKHMpIGNvbW8gbyhzKSBhdXRvcihlcykgb3UgZGV0ZW50b3IgKGVzKSBkb3MgZGlyZWl0b3MgZG8gZG9jdW1lbnRvIGVudHJlZ3VlLCBlIG7Do28gZmFyw6EgcXVhbHF1ZXIgYWx0ZXJhw6fDo28sIHBhcmEgYWzDqW0gZGFzIHBlcm1pdGlkYXMgcG9yIGVzdGEgbGljZW7Dp2EuCg==Repositório InstitucionalONGhttp://repositorio.ufu.br/oai/requestdiinf@dirbi.ufu.bropendoar:2017-12-28T05:04:35Repositório Institucional da UFU - Universidade Federal de Uberlândia (UFU)false
dc.title.pt_BR.fl_str_mv Key classes in object-oriented systems
dc.title.alternative.pt_BR.fl_str_mv Classes-Chave em sistemas orientados a objetos: detecção e uso
title Key classes in object-oriented systems
spellingShingle Key classes in object-oriented systems
Vale, Liliane do Nascimento
CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
Reverse engineering
Key-classes
Design
Smells
Experiment
title_short Key classes in object-oriented systems
title_full Key classes in object-oriented systems
title_fullStr Key classes in object-oriented systems
title_full_unstemmed Key classes in object-oriented systems
title_sort Key classes in object-oriented systems
author Vale, Liliane do Nascimento
author_facet Vale, Liliane do Nascimento
author_role author
dc.contributor.advisor1.fl_str_mv Maia, Marcelo de Almeida
dc.contributor.advisor1Lattes.fl_str_mv http://lattes.cnpq.br/4915659948263445
dc.contributor.referee1.fl_str_mv Valente, Marco Túlio
dc.contributor.referee1Lattes.fl_str_mv http://lattes.cnpq.br/2147157840592913
dc.contributor.referee2.fl_str_mv Kulesza, Uirá
dc.contributor.referee2Lattes.fl_str_mv http://lattes.cnpq.br/0189095897739979
dc.contributor.referee3.fl_str_mv Dorça, Fabiano Azevedo
dc.contributor.referee3Lattes.fl_str_mv http://lattes.cnpq.br/3944579737930998
dc.contributor.referee4.fl_str_mv Silva, Flávio de Oliveira
dc.contributor.referee4Lattes.fl_str_mv http://lattes.cnpq.br/3190608911887258
dc.contributor.author.fl_str_mv Vale, Liliane do Nascimento
contributor_str_mv Maia, Marcelo de Almeida
Valente, Marco Túlio
Kulesza, Uirá
Dorça, Fabiano Azevedo
Silva, Flávio de Oliveira
dc.subject.cnpq.fl_str_mv CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
topic CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
Reverse engineering
Key-classes
Design
Smells
Experiment
dc.subject.por.fl_str_mv Reverse engineering
Key-classes
Design
Smells
Experiment
description Vários sistemas orientados a objetos, tais como Lucene, Tomcat, Javac tem seus respectivos projetos (designs) documentados usando classes-chave, definidas como sendo classes importantes/centrais para compreender o projeto de sistemas orientados a objetos. Considerando este fato, e considerando que geralmente a arquitetura não é formalmente documentada para auxiliar os desenvolvedores a entenderem e avaliarem o projeto do software, é proposta Keecle, uma abordagem baseada em análise dinâmica e estática para detecção de classes-chave de maneira semi-automática. É proposta a aplicação de mecanismos de filtragem no espaço de busca dos dados dinâmicos, para obter um conjunto reduzido de classes-chave. A abordagem é avaliada com quatorze sistemas de código aberto e proprietários, a fim de verificar se as classes encontradas correspondem às classes-chave definidas na documentação ou definidas pelos desenvolvedores. Os resultados foram analisados em termos de precisão e recall e são superiores às abordagens da literatura. O papel das classes-chave para avaliar o projeto também foi investigado. Foi avaliado se a organização das classes-chave em um grafo de dependências, o qual destaca relações de dependência explícitas no código fonte, é um mecanismo adequado para avaliar o design. Foi analisado estatisticamente, se classes-chave são mais propensas a bad smells, e se tipos específicos de bad smells estão associados a diferentes níveis de métricas de coesão e acoplamento. Além disso, a propriedade (ownership) das classes-chave foi analisada, indicando concentração em um conjunto reduzido de desenvolvedores. Por fim, foram conduzidos um estudo experimental com estudantes e um survey com desenvolvedores para avaliar a documentação baseada em classes-chave. Os resultados demonstram que a documentação baseada em classes-chave apresenta resultados que indicam a viabilidade de uso como documentação complementar à existente ou como documentação principal em ambientes onde a documentação não está disponível.
publishDate 2017
dc.date.accessioned.fl_str_mv 2017-12-27T12:49:38Z
dc.date.available.fl_str_mv 2017-12-27T12:49:38Z
dc.date.issued.fl_str_mv 2017-11-13
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 VALE, Liliane do Nascimento. Key classes in object-oriented systems: detection and use. 2017. 169 f. Tese (Doutorado em Ciência da Computação) - Universidade Federal de Uberlândia, Uberlândia, 2017.
dc.identifier.uri.fl_str_mv https://repositorio.ufu.br/handle/123456789/20130
dc.identifier.doi.pt_BR.fl_str_mv http://dx.doi.org/10.14393/ufu.te.2017.32
identifier_str_mv VALE, Liliane do Nascimento. Key classes in object-oriented systems: detection and use. 2017. 169 f. Tese (Doutorado em Ciência da Computação) - Universidade Federal de Uberlândia, Uberlândia, 2017.
url https://repositorio.ufu.br/handle/123456789/20130
http://dx.doi.org/10.14393/ufu.te.2017.32
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 de Uberlândia
dc.publisher.program.fl_str_mv Programa de Pós-graduação em Ciência da Computação
dc.publisher.country.fl_str_mv Brasil
publisher.none.fl_str_mv Universidade Federal de Uberlândia
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFU
instname:Universidade Federal de Uberlândia (UFU)
instacron:UFU
instname_str Universidade Federal de Uberlândia (UFU)
instacron_str UFU
institution UFU
reponame_str Repositório Institucional da UFU
collection Repositório Institucional da UFU
bitstream.url.fl_str_mv https://repositorio.ufu.br/bitstream/123456789/20130/13/KeyClassesObject.pdf.jpg
https://repositorio.ufu.br/bitstream/123456789/20130/9/KeyClassesObject.pdf
https://repositorio.ufu.br/bitstream/123456789/20130/10/license_rdf
https://repositorio.ufu.br/bitstream/123456789/20130/11/license.txt
https://repositorio.ufu.br/bitstream/123456789/20130/12/KeyClassesObject.pdf.txt
bitstream.checksum.fl_str_mv 856f3c5a4ac6e873a07c55af7c14dac1
35dda078287b1c8860d277cca6ce6dee
42dd12a06de379d3ffa39b67dc9c7aff
48ded82ce41b8d2426af12aed6b3cbf3
294999becfc93b13775f58155405e50c
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UFU - Universidade Federal de Uberlândia (UFU)
repository.mail.fl_str_mv diinf@dirbi.ufu.br
_version_ 1802111037078503424