Uma abordagem para detecção de padrões emergentes.

Detalhes bibliográficos
Autor(a) principal: JOB, Ricardo de Sousa.
Data de Publicação: 2014
Tipo de documento: Dissertação
Idioma: por
Título da fonte: Biblioteca Digital de Teses e Dissertações da UFCG
Texto Completo: http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/944
Resumo: Padrões de Projeto são soluções consolidadas para problemas de projeto de software recorrentes. São utilizados amplamente em projetos de software orientados a objetos, tornando-se um artifício de comunicação de soluções conhecidas dentro das equipes de desenvolvimento. É importante que o projetista consiga detectar e identificar os padrões de projetos numa base de código, para compreender as relações entre as classes, como fornecer sugestões úteis para a compreensão e evolução do sistema. Para detecção automática de padrões existem basicamente duas técnicas: análise estática e dinâmica. No primeiro passo, as relações e colaborações estruturais são extraídas. Já no segundo passo monitora-se a execução do programa, rastreando o conjunto de padrões selecionados no passo anterior para identificar quais padrões comportam-se como o esperado. As técnicas de detecção atuais, no entanto, limitam-se a análises estruturais restritivas, omitindo casos em que o comportamento de um padrão está presente, mesmo que não siga a organização estrutural prevista na literatura. Chamamos de padrões emergentes estes casos em que o comportamento de um determinado padrão está presente, mesmo que certa região do código apresente estruturação livre. Por exemplo, a essência do padrão de projeto Singleton está presente em uma classe qualquer quando esta possui apenas uma única instância durante as execuções de um programa, mesmo que não haja restrição sintática para que isso seja possível; ou seja, o padrão Singleton emerge deste comportamento de um determinado elemento do programa. Ao auxiliar o desenvolvedor na detecção de situações de projeto como esta, pode-se enriquecer o seu conhecimento sobre as consequências de suas decisões, além de propiciar a estruturação explícita do padrão como conhecida, facilitando assim a documentação e comunicação do projeto. Este trabalho explora o conceito de padrões emergentes através das seguintes contribuições: (i) uma revisão sistemática sobre abordagens automáticas de detecção de padrões de projeto, (ii) conceitos de padrões emergentes para vários padrões de projeto bem conhecidos, (iii) uma proposta de abordagem semi-automática de detecção de padrões emergentes e (iv) sua utilização para uma análise de ferramentas de detecção existente acerca de sua capacidade de identificação de padrões emergentes em alguns projetos de código aberto Java.
id UFCG_c97fdd1a122891dc45da721972016ab5
oai_identifier_str oai:localhost:riufcg/944
network_acronym_str UFCG
network_name_str Biblioteca Digital de Teses e Dissertações da UFCG
repository_id_str 4851
spelling Uma abordagem para detecção de padrões emergentes.An approach for detecting emerging patterns.Padrão de projetosPadrões emergentes - computaçãoProjeto de softwareDetecção automática de padrõesPadrão SingletonSoftware projectAutomatic pattern detectionComputação.Padrões de Projeto são soluções consolidadas para problemas de projeto de software recorrentes. São utilizados amplamente em projetos de software orientados a objetos, tornando-se um artifício de comunicação de soluções conhecidas dentro das equipes de desenvolvimento. É importante que o projetista consiga detectar e identificar os padrões de projetos numa base de código, para compreender as relações entre as classes, como fornecer sugestões úteis para a compreensão e evolução do sistema. Para detecção automática de padrões existem basicamente duas técnicas: análise estática e dinâmica. No primeiro passo, as relações e colaborações estruturais são extraídas. Já no segundo passo monitora-se a execução do programa, rastreando o conjunto de padrões selecionados no passo anterior para identificar quais padrões comportam-se como o esperado. As técnicas de detecção atuais, no entanto, limitam-se a análises estruturais restritivas, omitindo casos em que o comportamento de um padrão está presente, mesmo que não siga a organização estrutural prevista na literatura. Chamamos de padrões emergentes estes casos em que o comportamento de um determinado padrão está presente, mesmo que certa região do código apresente estruturação livre. Por exemplo, a essência do padrão de projeto Singleton está presente em uma classe qualquer quando esta possui apenas uma única instância durante as execuções de um programa, mesmo que não haja restrição sintática para que isso seja possível; ou seja, o padrão Singleton emerge deste comportamento de um determinado elemento do programa. Ao auxiliar o desenvolvedor na detecção de situações de projeto como esta, pode-se enriquecer o seu conhecimento sobre as consequências de suas decisões, além de propiciar a estruturação explícita do padrão como conhecida, facilitando assim a documentação e comunicação do projeto. Este trabalho explora o conceito de padrões emergentes através das seguintes contribuições: (i) uma revisão sistemática sobre abordagens automáticas de detecção de padrões de projeto, (ii) conceitos de padrões emergentes para vários padrões de projeto bem conhecidos, (iii) uma proposta de abordagem semi-automática de detecção de padrões emergentes e (iv) sua utilização para uma análise de ferramentas de detecção existente acerca de sua capacidade de identificação de padrões emergentes em alguns projetos de código aberto Java.Design Patterns are Consolidated solutions to recurring software design problems. They are widely used in object-oriented software design, as communication device of well known solutions within development teams. It is important that the software designer detects and identifies design patterns in a code base, to understand the relationships between classes, provide useful suggestions for the understanding and evolution of the system. For automatic detection of patterns there are basically two techniques: static and dynamic analysis. On the first step, relations and structural collaborations are extracted. In the second step, the program execution is monitored, tracking the selected set of patterns in the first step to identify which patterns behave as expected. However, the current detection techniques are limited to restrictive structural analysis, omitting cases where the behavior of a pattem is presente, even if not follow the structural organization provided in the literature. We call emerging patterns when the behavior of a given pattern is present, even if some code's region presents a free structure. For example, the essence of the Singleton design pattern is present in any given class when it has only a single instance during the execution of a program, even without syntactic restriction for this to be possible; that is, the Singleton pattern emerged from this program element behavior. When developers are assisted in detecting design situations like this, they can enhance their knowledge about the consequences of their decisions, as well as providing the explicit structure of the pattern, facilitating the documentation and communication of the project. This paper explores the concept of emerging patterns through the following contributions: (i) a systematic review of automatic detection approaches of design patterns, (ii) concepts of emerging patterns for several well-known design patterns, (iii) a proposal for semi-automatic detection approach of emerging patterns and (iv) its use for an analysis of existing detection tools about tíieir ability to identify emerging patterns in an open-source Java projectCapesUniversidade Federal de Campina GrandeBrasilCentro de Engenharia Elétrica e Informática - CEEIPÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃOUFCGMASSONI, Tiago Lima.MASSONI, T. L.http://lattes.cnpq.br/3563923906851611GHEYI, RohitGHEYI, R.http://lattes.cnpq.br/2931270888717344GUERRERO, Dalton Dario Serey.SOARES, Sergio Castelo Branco.JOB, Ricardo de Sousa.2014-12-052018-06-12T16:16:04Z2018-06-122018-06-12T16:16:04Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesishttp://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/944JOB, Ricardo de Sousa. Uma abordagem para detecção de padrões emergentes. 2014. 92f. (Dissertação de Mestrado em Ciência da Computação) Programa de Pós-graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Universidade Federal de Campina Grande - Paraiba - Brasil, 2014. Disponível em: http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/944porinfo:eu-repo/semantics/openAccessreponame:Biblioteca Digital de Teses e Dissertações da UFCGinstname:Universidade Federal de Campina Grande (UFCG)instacron:UFCG2022-03-22T13:12:53Zoai:localhost:riufcg/944Biblioteca Digital de Teses e Dissertaçõeshttp://bdtd.ufcg.edu.br/PUBhttp://dspace.sti.ufcg.edu.br:8080/oai/requestbdtd@setor.ufcg.edu.br || bdtd@setor.ufcg.edu.bropendoar:48512022-03-22T13:12:53Biblioteca Digital de Teses e Dissertações da UFCG - Universidade Federal de Campina Grande (UFCG)false
dc.title.none.fl_str_mv Uma abordagem para detecção de padrões emergentes.
An approach for detecting emerging patterns.
title Uma abordagem para detecção de padrões emergentes.
spellingShingle Uma abordagem para detecção de padrões emergentes.
JOB, Ricardo de Sousa.
Padrão de projetos
Padrões emergentes - computação
Projeto de software
Detecção automática de padrões
Padrão Singleton
Software project
Automatic pattern detection
Computação.
title_short Uma abordagem para detecção de padrões emergentes.
title_full Uma abordagem para detecção de padrões emergentes.
title_fullStr Uma abordagem para detecção de padrões emergentes.
title_full_unstemmed Uma abordagem para detecção de padrões emergentes.
title_sort Uma abordagem para detecção de padrões emergentes.
author JOB, Ricardo de Sousa.
author_facet JOB, Ricardo de Sousa.
author_role author
dc.contributor.none.fl_str_mv MASSONI, Tiago Lima.
MASSONI, T. L.
http://lattes.cnpq.br/3563923906851611
GHEYI, Rohit
GHEYI, R.
http://lattes.cnpq.br/2931270888717344
GUERRERO, Dalton Dario Serey.
SOARES, Sergio Castelo Branco.
dc.contributor.author.fl_str_mv JOB, Ricardo de Sousa.
dc.subject.por.fl_str_mv Padrão de projetos
Padrões emergentes - computação
Projeto de software
Detecção automática de padrões
Padrão Singleton
Software project
Automatic pattern detection
Computação.
topic Padrão de projetos
Padrões emergentes - computação
Projeto de software
Detecção automática de padrões
Padrão Singleton
Software project
Automatic pattern detection
Computação.
description Padrões de Projeto são soluções consolidadas para problemas de projeto de software recorrentes. São utilizados amplamente em projetos de software orientados a objetos, tornando-se um artifício de comunicação de soluções conhecidas dentro das equipes de desenvolvimento. É importante que o projetista consiga detectar e identificar os padrões de projetos numa base de código, para compreender as relações entre as classes, como fornecer sugestões úteis para a compreensão e evolução do sistema. Para detecção automática de padrões existem basicamente duas técnicas: análise estática e dinâmica. No primeiro passo, as relações e colaborações estruturais são extraídas. Já no segundo passo monitora-se a execução do programa, rastreando o conjunto de padrões selecionados no passo anterior para identificar quais padrões comportam-se como o esperado. As técnicas de detecção atuais, no entanto, limitam-se a análises estruturais restritivas, omitindo casos em que o comportamento de um padrão está presente, mesmo que não siga a organização estrutural prevista na literatura. Chamamos de padrões emergentes estes casos em que o comportamento de um determinado padrão está presente, mesmo que certa região do código apresente estruturação livre. Por exemplo, a essência do padrão de projeto Singleton está presente em uma classe qualquer quando esta possui apenas uma única instância durante as execuções de um programa, mesmo que não haja restrição sintática para que isso seja possível; ou seja, o padrão Singleton emerge deste comportamento de um determinado elemento do programa. Ao auxiliar o desenvolvedor na detecção de situações de projeto como esta, pode-se enriquecer o seu conhecimento sobre as consequências de suas decisões, além de propiciar a estruturação explícita do padrão como conhecida, facilitando assim a documentação e comunicação do projeto. Este trabalho explora o conceito de padrões emergentes através das seguintes contribuições: (i) uma revisão sistemática sobre abordagens automáticas de detecção de padrões de projeto, (ii) conceitos de padrões emergentes para vários padrões de projeto bem conhecidos, (iii) uma proposta de abordagem semi-automática de detecção de padrões emergentes e (iv) sua utilização para uma análise de ferramentas de detecção existente acerca de sua capacidade de identificação de padrões emergentes em alguns projetos de código aberto Java.
publishDate 2014
dc.date.none.fl_str_mv 2014-12-05
2018-06-12T16:16:04Z
2018-06-12
2018-06-12T16:16:04Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/944
JOB, Ricardo de Sousa. Uma abordagem para detecção de padrões emergentes. 2014. 92f. (Dissertação de Mestrado em Ciência da Computação) Programa de Pós-graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Universidade Federal de Campina Grande - Paraiba - Brasil, 2014. Disponível em: http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/944
url http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/944
identifier_str_mv JOB, Ricardo de Sousa. Uma abordagem para detecção de padrões emergentes. 2014. 92f. (Dissertação de Mestrado em Ciência da Computação) Programa de Pós-graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Universidade Federal de Campina Grande - Paraiba - Brasil, 2014. Disponível em: http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/944
dc.language.iso.fl_str_mv por
language por
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 Campina Grande
Brasil
Centro de Engenharia Elétrica e Informática - CEEI
PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
UFCG
publisher.none.fl_str_mv Universidade Federal de Campina Grande
Brasil
Centro de Engenharia Elétrica e Informática - CEEI
PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
UFCG
dc.source.none.fl_str_mv reponame:Biblioteca Digital de Teses e Dissertações da UFCG
instname:Universidade Federal de Campina Grande (UFCG)
instacron:UFCG
instname_str Universidade Federal de Campina Grande (UFCG)
instacron_str UFCG
institution UFCG
reponame_str Biblioteca Digital de Teses e Dissertações da UFCG
collection Biblioteca Digital de Teses e Dissertações da UFCG
repository.name.fl_str_mv Biblioteca Digital de Teses e Dissertações da UFCG - Universidade Federal de Campina Grande (UFCG)
repository.mail.fl_str_mv bdtd@setor.ufcg.edu.br || bdtd@setor.ufcg.edu.br
_version_ 1809744353607811072