1 |
[en] BLENDING AND REUSING RULES FOR ARCHITECTURAL DEGRADATION PREVENTION / [pt] COMPOSIÇÃO E REUSO DE REGRAS PARA PREVENÇÃO DA DEGRADAÇÃO ARQUITETURALALESSANDRO CAVALCANTE GURGEL 29 January 2015 (has links)
[pt] Durante a manutenção de sistemas de software, os projetos arquiteturais
podem se degradar através dos processos de erosão e descaracterização
arquitetural. Estes processos estão usualmente entrelaçados e, consequentemente,
sintomas de descaracterização arquitetural favorecem a manifestação posterior de
sintomas de erosão e vice-versa. De fato, estudos empíricos recentes revelam que
estes sintomas tendem a afetar os mesmos módulos de um sistema. Desta forma,
arquitetos devem elaborar estratégias híbridas para uma prevenção simultânea de
ambos os processos de degradação arquitetural. Embora as especificações de
regras arquiteturais demandem um esforço considerável, estas são frequentemente
similares em diversos projetos de uma mesma companhia ou de um mesmo
domínio de aplicação. Essa dissertação descreve a linguagem específica de
domínio TamDera para: (i) especificar estratégias de regras para permitir
prevenção simultânea de ambos os processos de erosão e descaracterização
arquitetural, e (ii) prover o reúso tanto hierárquico quanto composicional de regras
de projetos em múltiplos contextos. Essa dissertação apresenta a avaliação
empírica da linguagem em termos de provisão de suporte para descrição e reúso
de regras de projeto em cinco projetos de software. O presente trabalho também
apresenta um protótipo que suporta a utilização da linguagem para detecção de
sintomas de degradação arquitetural.. Nossos resultados sugerem que arquitetos
podem se beneficiar de abordagens que permitam a definição e reúso de regras
híbridas para detectar ocorrências de ambos os processos de erosão e
descaracterização arquitetural in diversos cenários. / [en] During the maintenance of software systems, their architecture often
degrades through processes of architectural erosion and drift. These processes are
often intertwined and, as a consequence, a given module in the code becomes the
locus of both erosion and drift symptoms. Architects should elaborate strategies
for detecting co-occurrences of both degradation symptoms. Strategies for
enabling the detection of these symptoms are based on design rules. While the
specification of design rules is time-consuming, they are often similar across
different software projects. In this context, the contribution of this dissertation is
threefold. First, it presents TamDera, an unified domain-specific language for: (i)
specifying rule-based strategies to detect both erosion and drift symptoms, and (ii)
promoting the hierarchical and compositional reuse of design rules across multiple
contexts. Second, a tool implementation for supporting the language usage and
rule enforcement is also presented in this dissertation. Third, we evaluated the
language in supporting the description and reuse of design rules on five software
projects. Our evaluation revealed that architects could be benefited by using
TamDera to blend and reuse rules for detecting erosion and drift occurrences in
multiple scenarios.
|
2 |
[en] PRIORITIZATION OF CODE ANOMALIES BASED ON ARCHITECTURE SENSITIVENESS / [pt] PRIORIZAÇÃO DE ANOMALIAS DE CÓDIGO SENSÍVEL A ARQUITETURAROBERTA LOPES ARCOVERDE 30 January 2015 (has links)
[pt] Um dos principais sintomas de declínio da qualidade arquitetural em projetos de software é a manifestação contínua de anomalias de código. Quando estas anomalias não são detectadas e removidas com antecedência, a capacidade de evoluir e manter estes sistemas pode ser comprometida, e, eventualmente, uma reestruturação completa de suas arquiteturas é inevitável. Apesar da existência de diversas técnicas e ferramentas para detecção automática de anomalias de código, a identificação de anomalias que efetivamente causam problemas arquiteturais é ainda uma tarefa desafiadora e não trivial. Ademais, estudos realizados no contexto desta dissertação ostraram que desenvolvedores tendem a refatorar mais frequentemente anomalias que não causam problemas arquiteturais. Em especial, percebeu-se que desenvolvedores priorizam a refatoração de elementos de código que não afetam a arquitetura dos sistemas, como métodos privados ou módulos internos de um componente arquitetural. Neste contexto, o presente trabalho propõe uma abordagem para priorização de anomalias de código. Esta abordagem é composta por heurísticas que exploram diferentes fatores para identificar e ordenar as anomalias detectadas de acordo com suas relevâncias arquiteturais. Tais fatores compreendem desde a quantidade de mudanças realizadas no código ao longo da evolução dos sistemas, até os papéis arquiteturais por ele desempenhados. Foi ainda implementada uma ferramenta para aplicar tais heurísticas de priorização automaticamente em projetos Java. A abordagem proposta foi avaliada em 4 projetos de software de diferentes domínios. Tal avaliação revelou que mantenedores de software poderiam ser beneficiados pelas recomendações de priorização produzidas pela ferramenta, de modo a investir seus esforços de refatoração na solução de problemas arquiteturalmente relevantes. / [en] The progressive manifestation of code anomalies in a software system is a key symptom of its architecture quality decline. When those anomalies are not detected and removed early, the maintainability of software projects can be compromised irreversibly, and, eventually, a complete redesign is inevitable. Despite the existence of many techniques and tools for code anomaly detection, identifying anomalies that are more likely to cause architecture problems remains a challenging task. In fact, studies performed in the context of this dissertation show that even when there is tool upport for detecting code anomalies, developers seem to invest more time refactoring those that are not related to architectural problems. Moreover, we also found that developers frequently prioritize refactoring of code elements that do not contribute to a better adherence to the intended software architecture. In this context, this dissertation proposes a prioritization approach for identifying which anomalies in a system implementation are more harmful to the architecture. The proposed approach is composed of heuristic strategies that exploit several software project factors to identify and rank code anomalies by their architecture relevance. These factors range from the change characteristics to the potential architecture roles of software modules. Furthermore, we implemented tool support for applying our prioritization approach in Java projects. We also evaluated the prioritization approach on 4 software projects from different application domains. Our evaluation revealed that software maintainers could benefit from the recommended rankings for identifying which code anomalies are harming architecture the most, helping them investing their refactoring efforts into solving the architecturally relevant problems.
|
3 |
[en] ON THE DETECTION OF ARCHITECTURALLY RELEVANT CODE ANOMALIES IN SOFTWARE SYSTEMS / [pt] DETECÇÃO DE ANOMALIAS DE CÓDIGO ARQUITETURALMENTE RELEVANTES EM SISTEMAS DE SOFTWAREISELA MACIA BERTRAN 29 January 2015 (has links)
[pt] Anomalias de código podem sinalizar a degradação da arquitetura de software. No entanto, a identificação de anomalias de código arquiteturalmente relevantes (ou seja, aquelas que implicam em deficiências arquiteturais) é particularmente difícil devido: (i) a falta de compreensão sobre a relação existente entre anomalias de código e degradação arquitetural, (ii) ao fato do processo de detecção de anomalias ter como foco somente o código fonte, sem considerar como ele se relaciona com sua arquitetura, e (iii) a falta de conhecimento sobre a confiabilidade das técnicas de detecção em revelar anomalias de código que são arquiteturalmente relevantes. Esta tese apresenta técnicas para identificar anomalias de código que são arquiteturalmente relevantes. Métricas sensíveis à arquitetura e estratégias de detecção foram definidas para superar as limitações das técnicas de detecção convencionais. Estas métricas e estratégias aproveitam rastros que podem ser estabelecidos entre as visões arquiteturais e a implementação dos sistemas. A tese também documenta padrões de anomalias de código (ou seja, relações recorrentes de anomalias) que estão relacionados com problemas arquiteturais. Uma ferramenta, chamada de SCOOP, foi desenvolvida para coletar as métricas sensíveis à arquitetura, aplicar as novas estratégias de detecção, e identificar os padrões de anomalias de código. Usando esta ferramenta, a técnica proposta foi avaliada em uma série de estudos empíricos, comparando sua acurácia com técnicas convencionais de detecção durante o processo de identificação de anomalias de código que são arquiteturalmente relevantes. / [en] Code anomalies can signal software architecture degradation. However, the identification of architecturally-relevant code anomalies (i.e. code anomalies that strongly imply architectural deficiencies) is particularly challenging due to: (i) lack of understanding about the relationship between code anomalies and architectural degradation, (ii) the focus on source code anomaly detection without considering how it relates to the software architecture, and (iii) lack of knowledge about how reliable these detection techniques are when revealing architecturally-relevant code anomalies. This thesis presents techniques for identifying architecturally-relevant code anomalies. Architecture-sensitive metrics and detection strategies were defined to overcome the limitations of conventional detection strategies. These metrics and strategies leverage traces that can be established between architectural views and system implementation. The thesis also documents code anomaly patterns (i.e. recurring anomaly relationships) that are strongly related to architectural problems. A tool, called SCOOP, was developed to collect the architecture-sensitive metrics, apply the new detection strategies, and identify the documented code anomaly patterns. Using this tool, we evaluated our technique in a series of empirical studies, comparing its accuracy with that of conventional detection techniques when identifying architecturally-relevant code anomalies.
|
4 |
[en] DETECTING ARCHITECTURALLY-RELEVANT CODE ANOMALIES ON MULTILANGUAGE SYSTEMS / [pt] DETECÇÃO DE ANOMALIAS DE CÓDIGO DE RELEVÂNCIA ARQUITETURAL EM SISTEMAS MULTILINGUAGEMMANUELE DOS REIS FERREIRA 02 June 2015 (has links)
[pt] Estudos recentes mostram que os sistemas são desenvolvidos por pelo
menos quatro linguagens. Ao utilizar estas linguagens, boas práticas de
desenvolvimento também são diferentes. Estes aspectos de heterogeneidade
dificultam a concepção de soluções que apoiem desenvolvedores na construção
de sistema multilinguagem com qualidade. Em particular, diversas abordagens
têm surgido nos últimos anos com o objetivo de auxiliar os analistas nas
tarefas de compreensão e manutenção desses sistemas. Porém, ainda existe
uma carência de abordagens com foco na detecção de anomalias de código
em sistemas multilinguagem. Dessa forma, o objetivo desse trabalho é oferecer
suporte a identificação de sintomas de degradação arquitetural através do uso
de estratégias baseadas em métricas em sistemas multilinguagem. / [en] Recent studies show that the systems are designed with at least four
languages. Using these languages, best practices to development are also
different. These aspects of heterogeneity make it difficult to design solutions
that support developers activities on developing of multi-language system with
quality. In particular, several approaches have emerged with the aim to assist
analysts in comprehension and maintaining systems. However, there is still
a lack of approaches focused on detection of code anomaly on multi-language
systems. Thus, the aim of this work is to support the identification of symptoms
of architectural degradation through the use of metrics-based strategies on
multi-language systems.
|
Page generated in 0.0394 seconds