Defesa de Dissertação de Mestrado N.º 556 - Ricardo de Sousa Job, em 05/12, às 13:15hs

postado em 2 de dez de 2014 09:49 por Franklin de Souza Ramalho   [ 5 de dez de 2014 04:31 atualizado‎(s)‎ ]
Candidato: Ricardo de Sousa Job
Título do trabalho: Uma abordagem para detecção de Padrões de Projeto Emergentes
Orientador(es): Tiago Lima Massoni e Rohit Gheyi

Data: 05/12/2014
Horário: 13:15hs
Local: auditório do SPLAB

Banca examinadora: Tiago Lima Massoni e Rohit Gheyi (orientadores), Sérgio Soares (Universidade Federal de Pernambuco), Dalton Serey (UFCG).

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 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, fornecer sugestões úteis para a compreensão e evolução do sistema. Para detecção automática de padrões existem basicamente dois passos: 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 \textit{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 \textit{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.
Comments