• Refine Query
  • Source
  • Publication year
  • to
  • Language
  • 87
  • 36
  • 8
  • 6
  • 6
  • 5
  • 3
  • 2
  • 2
  • 2
  • 1
  • 1
  • 1
  • 1
  • 1
  • Tagged with
  • 187
  • 99
  • 43
  • 38
  • 35
  • 35
  • 34
  • 32
  • 29
  • 27
  • 18
  • 17
  • 17
  • 16
  • 16
  • About
  • The Global ETD Search service is a free service for researchers to find electronic theses and dissertations. This service is provided by the Networked Digital Library of Theses and Dissertations.
    Our metadata is collected from universities around the world. If you manage a university/consortium/country archive and want to be added, details can be found on the NDLTD website.
141

Vues et transformations de programmes pour la modularité des évolutions

Ajouli, Akram 25 September 2013 (has links) (PDF)
La maintenance consomme une grande partie du coût de développement des logiciels ce qui rend l'optimisation de ce coût parmi les enjeux importants dans le monde du génie logiciel. Dans cette thèse nous visons à optimiser ce coût par rendre ces maintenances modulaires. Pour atteindre cet objectif, nous définissons des transformations des architectures des programmes qui permettent de transformer le programme à maintenir vers une architecture qui facilite la tâche de maintenance voulue. Nous nous concentrons plus sur la transformation entre les architectures à propriétés de modularité duales tels que les patrons de conception Composite et Visiteur. Dans ce contexte, nous définissons une transformation automatique et réversible basée sur le refactoring entre un programme structuré selon le Composite et sa structureVisiteur correspondante. Cette transformation est validée par la génération d'une précondition qui garantit statiquement sa réussite. Elle est aussi adaptée afin qu'elle prenne en compte la transformation de quatre variations du patron Composite et est validée sur le programme JHotDraw qui comporte ces quatre variations. Nous définissons aussi une transformation réversible au sein du patron Singleton afin de pouvoir bénéficier de l'optimisation par l'introduction de ce patron et la souplesse par sa suppression selon les exigences de l'utilisateur du logiciel.
142

Reducing remodularization complexity through modular-objective decoupling

Chern, Rick 11 1900 (has links)
This dissertation defines "modular-objective coupling", and shows that programming language designs which imply reduced modular-objective coupling reduce complexity of remodularizations--behaviour-preserving restructurings for which the only intended goals are to change program source code structure. We explicitly distinguish between two points of view on program structure: modular structure--the structure of a program as a set of static text documents, and objective structure--the structure of a program as a dynamic computational model during execution. We define modular-objective coupling as the degree to which changes in modular structure imply changes to objective structure, for a given programming language. We use the term remodularization to refer to any behaviour-preserving source code restructuring, for which the only intended goal is to change modular structure. We argue that programming languages with strong modular-objective coupling introduce accidental complexity into remodularizations, by requiring complex objective structure changes to achieve intended modular structure changes. Our claim is that a programming language design which implies reduced modular-objective coupling reduces remodularization complexity in the language. To validate this claim, we first present SubjectJ, a subject-oriented programming system that extends Java. The design of Java implies strong modular-objective coupling, while SubjectJ is designed for reduced modular-objective coupling. We then perform a series of remodularization case studies comparing Java and SubjectJ. Our results suggest that remodularizations are less complex in SubjectJ.
143

Improving the search for refactoring opportunities on object-oriented and aspect-oriented software / Melhorando a busca por oportunidades de refatoração em software orientado a objetos e orientado a aspectos

Piveta, Eduardo Kessler January 2009 (has links)
Refatoração é o processo de melhorar o projeto de sistemas de software sem modificar seu comportamento externamente observável. O processo de refatoração pode auxiliar a incrementalmente melhorar a qualidade de software de um sistema através da aplicação de transformações que preservam comportamento chamadas de padrões de refatoração. O principal objetivo da pesquisa que esta tese descreve é prover um processo detalhado para refatoração, incluindo mecanismos para (i) seleção e criação de modelos de qualidade, padrões de refatoração e funções heurísticas, (ii) a busca e priorização de oportunidades de refatoração, (iii) a avaliação dos efeitos da refatoração na qualidade de software e (iv) a análise de vantagens e desvantagens e a aplicação de padrões de refatoração. Para exemplificar como os mecanismos propostos funcionam e como o processo pode ser usado, diferentes estudos de caso são usados ao longo da tese. A seleção dos padrões de refatoração, dos modelos de qualidade e das funções heurísticas são exemplificados para software orientado a objetos, bem como os mecanismos de busca e priorização. A avaliação dos efeitos da refatoração na qualidade de software, a análise de vantagens e desvantagens e a aplicação de padrões de refatoração são discutidos no contexto de programação orientada a aspectos. Além da definição de um processo de refatoração, um conjunto adicional de contribuições desta tese são: (i) a definição de uma abordagem para a seleção e ranking de padrões de refatoração baseada no AHP (Analytic Hierarchy Process), (ii) uma abordagem para reduzir o espaço de busca para oportunidades de refatoração ao manipular refatorações sucessivas, (iii) a definição de mecanismos de busca para oportunidades de refatoração, (iv) uma abordagem para avaliar os efeitos de refatoração na qualidade de software, (v) um catálogo de problemas encontrados em software orientado a aspectos e seus padrões de refatoração associados, e também um conjunto de recomendações para evitar estes problemas e (vi) um estudo de métricas orientadas a aspectos, incluindo a sua definição formal, avaliação analítica e interpretação de dados. / Refactoring is the process of improving the design of software systems without changing their externally observable behaviour. Refactoring can help to incrementally improve the quality of a software system through the application of behavioural preserving transformations called refactoring patterns. The main goal of the research this thesis reports is to provide a detailed process for refactoring, including mechanism for (i) the selection and creation of quality models, the selection of refactoring patterns, and the creation and use of heuristic rules, (ii) the search for refactoring opportunities and prioritisation, (iii) the assessment of the effects of refactoring on software quality, and (iv) the trade-off analysis and the application of refactoring patterns. To exemplify how the approach works and how the process can be used, different case studies are being used throughout the thesis. The selection of refactoring patterns, quality models and heuristic rules, and the search and prioritisation mechanisms are exemplified for object-oriented software. The assessment of refactoring effects on software quality, the trade-off analysis and the application of refactoring patterns are discussed in the context of aspect-oriented programming. Besides the definition of a refactoring process, a set of additional contributions of this thesis are (i) the definition of an approach for the selection and ranking of refactoring patterns, (ii) an approach for reducing the search space for refactoring opportunities when dealing with successive refactoring, (iii) the definition of search mechanisms for refactoring opportunities, (iv) an approach to evaluate the effects of refactoring on software quality, (v) a catalogue of shortcomings in aspect-oriented software and their related refactoring patterns, and (vi) an study of metrics for aspect-oriented software, including their formal definition, analytical evaluation and data interpretation.
144

[en] UNDERSTANDING HOW DEVELOPERS IDENTIFY DESIGN PROBLEMS IN PRACTICE / [pt] ENTENDENDO COMO OS DESENVOLVEDORES IDENTIFICAM PROBLEMAS DE PROJETO NA PRÁTICA

LEONARDO DA SILVA SOUSA 14 December 2018 (has links)
[pt] Um problema de projeto é a manifestação de uma ou mais decisões de projeto inadequadas que afetam negativamente requisitos não funcionais. Por exemplo, Fat Interface, um problema que indica quando uma interface expõe serviços não coesos, no qual dificulta a extensibilidade e a manutenibilidade de um sistema de software. Apesar de problemas de projeto serem prejudiciais aos sistemas, identificá-los é uma tarefa difícil, especialmente quando o código-fonte é o único artefato disponível. Embora pesquisadores venham investigando técnicas para ajudar os desenvolvedores a identificar problemas de projeto, há pouco conhecimento sobre o processo de identificar problemas de projeto. Por exemplo, anomalias de códigos, um indicador de problemas de projeto, têm sido usadas para ajudar desenvolvedores a identificar problemas de projeto. No entanto, ainda não sabemos se elas são suficientes para ajudá-los ou não. Em particular, nenhum estudo tentou entender como os desenvolvedores identificam problemas de projeto. Nesse contexto, nós realizamos alguns estudos para entender a identificação de problemas de projeto. Em nossos dois primeiros estudos, nós investigamos o papel que as anomalias de código desempenham durante a identificação de problemas de design. Nossos resultados indicam que as anomalias de código são relevantes para os desenvolvedores na prática, por exemplo, eles são relevantes para indicar elementos a serem refatorados. Apesar da relevância, descobrimos que as anomalias de código não são suficientes para ajudar os desenvolvedores a identificar problemas de projeto. Nesse sentido, conduzimos outro estudo para investigar quais outros indicadores os desenvolvedores usam na prática e como eles são usados. Este estudo resultou em uma teoria sobre como os desenvolvedores identificam problemas de projeto na prática. A teoria revela quais são os indicadores que os desenvolvedores usam, como eles usam esses indicadores e as características de tais indicadores que os desenvolvedores consideram úteis. Os resultados encontrados nos forneceram uma melhor compreensão do processo de identificação de problemas de projeto, abrindo caminho para a elaboração de técnicas mais eficazes em ajudar os desenvolvedores a identificar problemas de projeto. / [en] A design problem is the manifestation of one or more inappropriate design decisions that negatively impact non-functional requirements. For example, the Fat Interface, a problem that indicates when an interface exposes non-cohesive services, hampers the extensibility and maintainability of a software system. Despite its harmfulness, identifying a design problem in a system is difficult, especially when the source code is the only available artifact. Although researchers have been investigating techniques to help developers in identifying design problems, there is little or no knowledge about the process of identifying design problems. For instance, code smells, microstructures that are a surface indication of design problems, have been used in several techniques to support developers during the design problem identification. However, there is no knowledge if code smells suffice to help developers to identify design problems. In particular, no study has tried to understand how developers identify design problems in practice. Thus, in this thesis, we have conducted a series of studies to understand design problem identification. In our two first studies, we investigated the role that code smells play in supporting developers during the design problem identification. Our results indicate that code smells are relevant for developers in practice; for instance, they are relevant to indicate elements that need to be refactored. However, we found that code smells, despite their relevance, do not suffice in helping developers to identify design problems. In this vein, we conducted another study to investigate what indicators developers use in practice, and how they use them. This study resulted in a theory about how developers identify design problems in practice. For instance, the theory reveals the indicators that developers use, how they use these indicators, and the characteristics of such indicators that are perceived as helpful by developers. The results found by our studies provided us with a better understanding of the process of identifying design problems thitherto nonexistent. Moreover, our findings pave the way for the elaboration of more effective techniques to identify design problems in the source code.
145

Improving the search for refactoring opportunities on object-oriented and aspect-oriented software / Melhorando a busca por oportunidades de refatoração em software orientado a objetos e orientado a aspectos

Piveta, Eduardo Kessler January 2009 (has links)
Refatoração é o processo de melhorar o projeto de sistemas de software sem modificar seu comportamento externamente observável. O processo de refatoração pode auxiliar a incrementalmente melhorar a qualidade de software de um sistema através da aplicação de transformações que preservam comportamento chamadas de padrões de refatoração. O principal objetivo da pesquisa que esta tese descreve é prover um processo detalhado para refatoração, incluindo mecanismos para (i) seleção e criação de modelos de qualidade, padrões de refatoração e funções heurísticas, (ii) a busca e priorização de oportunidades de refatoração, (iii) a avaliação dos efeitos da refatoração na qualidade de software e (iv) a análise de vantagens e desvantagens e a aplicação de padrões de refatoração. Para exemplificar como os mecanismos propostos funcionam e como o processo pode ser usado, diferentes estudos de caso são usados ao longo da tese. A seleção dos padrões de refatoração, dos modelos de qualidade e das funções heurísticas são exemplificados para software orientado a objetos, bem como os mecanismos de busca e priorização. A avaliação dos efeitos da refatoração na qualidade de software, a análise de vantagens e desvantagens e a aplicação de padrões de refatoração são discutidos no contexto de programação orientada a aspectos. Além da definição de um processo de refatoração, um conjunto adicional de contribuições desta tese são: (i) a definição de uma abordagem para a seleção e ranking de padrões de refatoração baseada no AHP (Analytic Hierarchy Process), (ii) uma abordagem para reduzir o espaço de busca para oportunidades de refatoração ao manipular refatorações sucessivas, (iii) a definição de mecanismos de busca para oportunidades de refatoração, (iv) uma abordagem para avaliar os efeitos de refatoração na qualidade de software, (v) um catálogo de problemas encontrados em software orientado a aspectos e seus padrões de refatoração associados, e também um conjunto de recomendações para evitar estes problemas e (vi) um estudo de métricas orientadas a aspectos, incluindo a sua definição formal, avaliação analítica e interpretação de dados. / Refactoring is the process of improving the design of software systems without changing their externally observable behaviour. Refactoring can help to incrementally improve the quality of a software system through the application of behavioural preserving transformations called refactoring patterns. The main goal of the research this thesis reports is to provide a detailed process for refactoring, including mechanism for (i) the selection and creation of quality models, the selection of refactoring patterns, and the creation and use of heuristic rules, (ii) the search for refactoring opportunities and prioritisation, (iii) the assessment of the effects of refactoring on software quality, and (iv) the trade-off analysis and the application of refactoring patterns. To exemplify how the approach works and how the process can be used, different case studies are being used throughout the thesis. The selection of refactoring patterns, quality models and heuristic rules, and the search and prioritisation mechanisms are exemplified for object-oriented software. The assessment of refactoring effects on software quality, the trade-off analysis and the application of refactoring patterns are discussed in the context of aspect-oriented programming. Besides the definition of a refactoring process, a set of additional contributions of this thesis are (i) the definition of an approach for the selection and ranking of refactoring patterns, (ii) an approach for reducing the search space for refactoring opportunities when dealing with successive refactoring, (iii) the definition of search mechanisms for refactoring opportunities, (iv) an approach to evaluate the effects of refactoring on software quality, (v) a catalogue of shortcomings in aspect-oriented software and their related refactoring patterns, and (vi) an study of metrics for aspect-oriented software, including their formal definition, analytical evaluation and data interpretation.
146

Refatoração com enfoque em portabilidade como estratégia de reúso em desenvolvimento de middleware para TV digital interativa

Sardinha, Eduardo Drumond 12 December 2011 (has links)
Made available in DSpace on 2016-06-02T19:06:01Z (GMT). No. of bitstreams: 1 4788.pdf: 1588226 bytes, checksum: c369684839c007e031e6c23626c58793 (MD5) Previous issue date: 2011-12-12 / Middleware for interactive digital TV systems are designed to provide convenient abstractions to overcome differences of hardware/software in order to improve the portability of applications. The development of a middleware implementation from scratch is a complex and costly task. To minimize this effort, software assets of existing implementations of these middleware can be reused through software reuse techniques. A refactoring process can be applied to existing middleware implementations to improve some software requirements such as modularity and reusability, in order to facilitate reuse of the middleware. This work presents an approach of refactoring focused on portability as a reuse strategy for the development of new instances of a digital TV middleware for new hardware platforms. The proposed approach is based on software portability concepts and construction characteristics of digital TV middleware. To evaluate the work, we present a case study with our experience of refactoring an implementation of the Brazilian digital TV system s middleware. / Middleware para TV Digital interativa tem a função de prover um ambiente padronizado para a execução de aplicações no qual dependências e/ou diferenças de hardware/software são abstraídas, permitindo o desenvolvimento de aplicativos portáveis. O desenvolvimento completo de um middleware é uma tarefa complexa e que consome muitos recursos. Entretanto, técnicas de reúso de software podem ser aplicadas de forma a tornar o processo de desenvolvimento mais eficiente através da reutilização de artefatos de software de outras implementações existentes do mesmo middleware. Dentro desse contexto, um processo de refatoração (refactoring) pode ser utilizado para melhorar características como modularidade ou reusabilidade, de modo a facilitar o reúso de partes dessas implementações. Esta dissertação de mestrado apresenta uma abordagem de refatoração voltada para portabilidade como estratégia de reúso em implementações de novas inst ancias de middleware para TV Digital para plataformas de hardware diferentes daquela para o qual foi originalmente desenvolvido. A abordagem proposta apoia-se em conceitos e técnicas de portabilidade de software, bem como em características de arquitetura e aspectos de implementação de middleware para TV Digital. Como estudo de caso de aplicação dessa abordagem, resultados de experimentações realizadas com uma implementação do middleware do sistema brasileiro de TV Digital são apresentados e discutidos.
147

Análise automática de acessos concorrentes a dados para refatoração de código sequencial em código paralelo OpenMP / Automatic analysis of concurrent access data for sequential code refactoring in OpenMP parallel code

Tietzmann, Dionatan Kitzmann 16 December 2011 (has links)
The manual transformation of sequential programs into parallel code is not an easy task. It requires very effort and attention of the developer during this process at great risk of introducing errors that can not be perceived by the programmer. One of these problems, strongly connected to shared memory parallel programming is the race condition. This problem occurs because of the simultaneous manipulation performed for more than a thread on a variable shared between them, with the result of this variable dependent of the access order. Exploring this difficulty, this work proposes an approach that helps the programmer during the refactoring of a sequential code for OpenMP parallel code, identifying variables in an automated manner that may have problems of race condition. To this end, we propose a verification algorithm based on access to the variables and made its implementation using the Photran framework tool (a plugin for editing FORTRAN code integrated into the Eclipse IDE). For purposes of empirical evaluation of the algorithm, we present tests with small programs and code examples showing the operation of the tool in the cases provided. In addition, it presents a case study based on a real and complex application, showing the ability of the algorithm to identify all the variables at risk, as well as illustrating some of its known limitations. / A transformação manual de programas sequenciais em código paralelo não é uma tarefa fácil. Ela requer muito esforço e atenção do programador durante esse processo, correndo grande risco de se introduzir erros que podem não ser percebidos pelo programador. Um desses problemas, fortemente ligado à programação paralela em memória compartilhada, é a condição de corrida. Esse problema ocorre em virtude da manipulação concomitante realizada por mais de uma thread sobre uma variável compartilhada entre elas, sendo o resultado desta variável dependente da ordem de acesso. Explorando essa dificuldade, este trabalho propõe uma abordagem que auxilie o programador durante a refatoração de código sequencial para código paralelo OpenMP, identificando de forma automatizada variáveis que podem vir a ter problemas de condição de corrida. Para tanto, é proposto um algoritmo de verificação baseado no acesso às variáveis e feita a sua implementação utilizando-se do framework da ferramenta Photran (um plugin para edição de código Fortran integrado ao IDE Eclipse). Para fins de avaliação empírica do algoritmo, apresentam-se testes realizados com pequenos programas e exemplos de código, mostrando o funcionamento da ferramenta nos casos previstos. Além disso, apresenta-se um estudo de caso baseado em uma aplicação real e complexa, mostrando a habilidade do algoritmo em identificar as variáveis em risco, bem como ilustrando algumas de suas limitações conhecidas.
148

Uma abordagem para apoio à decisão de refatoração em sistemas de software / Class-splitting refactoring based on temporal analysis of cohesion

Machado, João Paulo Lemes 28 August 2017 (has links)
A falta de modularização é um dos principais problemas encontrados em sistemas de software. Diversos estudos abordam esse problema apresentando soluções que visam aumentar a qualidade da modularização. Contudo, ainda não existe uma solução definitiva que possa ser aplicada em qualquer situação na qual esse problema ocorre. Uma situação específica diz respeito à falta de coesão entre os métodos de uma classe em sistemas orientados a objetos. Para essa situação, uma solução apropriada seria aplicar a refatoração de classes. O processo de refatoração de classes tem como objetivo melhorar a modularização de um sistema sem altear suas funcionalidades. Contudo, esse processo pode ser extremamente complexo e difícil de ser executado, pois existem efeitos colaterais que podem ser provocados por alterações indevidas. Nesse contexto, ainda existe uma lacuna por melhores sistemas de apoio à refatoração visando o aumento de coesão entre métodos das classes e uma melhor modularização do sistema. Assim, este trabalho tem como objetivo propor uma abordagem para fornecer informações de apoio à refatoração. Tais informações foram obtidas a partir de uma análise dos impactos gerados pelas refatorações aplicadas em 8 sistemas desenvolvidos na linguagem Java. O impacto dessas refatorações foram identificados e medidos através da análise da evolução das métricas de coesão. Foi realizada uma análise qualitativa sobre as refatorações identificadas com o objetivo de determinar qual tipo de estratégia foi adotada em cada situação. A partir dessa análise foi possível propor guias de refatoração que foram apresentadas aos desenvolvedores dos 8 sistemas através de um survey. O estudo obteve resultados positivos onde a partir de discussões realizadas com os desenvolvedores foram observadas situações nas quais as guias propostas claramente ajudariam no processo de refatoração. Também foram constatadas situações nas quais as recomendações podem ser adotadas como novas práticas com o objetivo de evitar perdas de modularização. / The lack of modularization is one of the main problems encountered in software systems. Several studies address this problem by presenting solutions that aim to increase the modularization quality. However, there is still no definitive solution that can be applied in any situation in which this problem occurs. A specific situation concerns the lack of cohesion among methods of a class in object-oriented systems. In this situation, an appropriate solution would be to apply a class refactoring. The class refactoring process aims at improving the modularization of a system without changing its functionalities. However, this process can be complex and difficult to execute because of the side effects that can be caused by improper changes. In this context, better systems for supporting refactoring are still lacking, so the cohesion between class methods and a better modularization of the system could be achieved. This work proposes an approach to provide information to support of refactoring. This information was obtained from an analysis of the impacts generated by the refactorings applied in 8 systems developed in Java language. The impact of these refactorings was identified and measured by analyzing the evolution of cohesion metrics. A qualitative analysis was performed on the refactorings identified with the objective of determining what type of strategy was adopted in each situation. From this analysis it was possible to propose refactoring guides that were presented to the developers of the 8 systems through a survey. The study found positive results in which discussions with the developers led to situations in which the proposed guidelines would clearly help the refactoring process. It was also observed situations in which the recommendations can be adopted as new practices in order to avoid losses of modularization. / Dissertação (Mestrado)
149

Qualidade de Produto de Software: uma abordagem baseada no controle da complexidade / Software product quality: an approach based on complexity control

Marcelo Criscuolo 01 April 2008 (has links)
É rara a preocupação com a qualidade de implementação de software. Pode-se observar que as estruturas internas dos softwares são freqüentemente complexas e desorganizadas, especialmente no caso dos softwares que são ditos orientados a objetos. Essa complexidade afeta diretamente a manutenibilidade e a susceptibilidade a erros, dificultando a alteração e a adição de novas funcionalidades aos softwares. As próprias alterações, inerentes aos softwares, os tornam mais complexos, o que agrava o problema. Neste contexto, acredita-se que o controle da complexidade pode levar a produtos de software de melhor qualidade. Assim, trata-se neste trabalho da manutenção preventiva, implementada por meio de inspeções, refatorações e análise de métricas. São estudadas falhas de manutenibilidade em uma amostra de programas orientados a objetos e, a partir dos resultados, são propostos artefatos de apoio para um processo de inspeção de software e modelos para os produtos de trabalho gerados nesse processo. Propõe-se o uso da técnica de leitura PBR (Leitura Baseada em Perspectivas) como uma maneira de se melhorar a detecção de falhas de manutenibilidade. Finalmente, a proposta deste trabalho foi validada por meio de um estudo de caso / The commitment with the quality of software implemetation is rare. It\'s possible to observe that the software internal structures are frequently complex and disorganized, especially when talking about software that is said to be object-oriented. This complexity directly affects maintainability and error proneness, making it difficult to change and to add new functionalities to software. Changes themselves, that are inherent in software, make it more complex, and that makes the problem more serious. In this context, it\'s believed that the control of complexity can lead to better quality software products. Thus, the subject of this work is the preventive maintenance, implemented by means of inspections, refactoring and metric analysis. Maintenance flaws were studied in a sample of object-oriented programs and, based on the results, support artifacts for an inspection process were proposed, along with models of work products for this process. The use of PBR (Perspective-Based Reading) technique is proposed as a means of improving the detection of maintenance flaws. Finally, the proposal of this work is validated through a case study
150

Uma abordagem para criação, reúso e aplicação de refatorações no contexto da modernização dirigida a arquitetura / An approach to create, reuse and apply refactoring in the context of architecture driven modernization

Rafael Serapilha Durelli 12 April 2016 (has links)
A Modernização Dirigida a Arquitetura (do inglês - Architecture-Driven Modernization (ADM)) é uma iniciativa do Object Management Group (OMG) no sentido de padronizar os tradicionais processos de reengenharia de software utilizando metamodelos. O metamodelo mais importante da ADM é o Knowledge Discovery Metamodel (KDM), cujo objetivo é representar todos artefatos de um determinado sistema, de forma independente de linguagem e plataforma. Um passo primordial durante processos de modernização de software é a aplicação de refatorações. No entanto, até o presente momento, há carência de abordagens que tratam das questões referentes a refatorações no contexto da ADM, desde a criação até a aplicação das mesmas. Além disso, atualmente, não existe uma forma sistemática e controlada de facilitar o reúso de refatorações que são específicas do KDM. Diante disso, são apresentados uma abordagem para criação e disponibilização de refatorações para o metamodelo KDM e um apoio ferramental que permite aplicá-las em diagramas de classe da UML. A abordagem possui dois passos: (i) o primeiro envolve passos que apoiam o engenheiro de modernização durante a criação de refatorações para o KDM; (ii) o segundo resume-se na especificação das refatorações por meio da criação de instâncias do metamodelo Structured Refactoring Metamodel (SRM) e posterior disponibilização delas em um repositório. O apoio ferramental, denominado KDM-RE, é composto por três plug-ins do Eclipse: (i) o primeiro consiste em um conjunto de Wizards que apoia o engenheiro de software na aplicação das refatorações em diagramas de classe UML; (ii) o segundo consiste em um módulo de propagação de mudanças, permitindo manter modelos internos do KDM sincronizados; (iii) o terceiro fornece apoio à importação e reúso de refatorações disponíveis no repositório. Além disso, o terceiro módulo também contém uma linguagem específica de domínio, a qual é utilizada para auxiliar o engenheiro de software a instanciar o metamodelo SRM. Foi realizado um experimento, buscando reproduzir os cenários em que engenheiros de software realizam refatorações em instâncias do metamodelo KDM. Os resultados mostraram que a abordagem, bem como o apoio ferramental podem trazer benefícios para o engenheiro de software durante a atividade de aplicação de refatorações em sistemas, representados pelo metamodelo KDM. / Architecture Driven Modernization (ADM) is an initiative of the Object Management Group (OMG) whose main purpose is to provide standard metamodels that enable the conduction of modernization activities as reverse engineering and software transformation. In this context, the most important metamodel is the Knowledge Discovery Metamodel (KDM), whose objective is to represent software artifacts in a language- and platform-agnostic fashion. A fundamental step during software modernization is refactoring. However, there is a lack of approaches that address how refactoring can be applied in conjunction with ADM. In addition, few efforts have investigated how refactorings can be reused and systematically applied within the context of KDM representations. We propose an approach for creating and cataloging refactorings tailored to KDM. Our approach is twofold: (i) the first part comprises steps that help the software modernization engineer create KDM-compliant refactorings; (ii) the second part has to do with turning these refactoring descriptions into Structured Refactoring Metamodel (SRM) and making them available to be reused. To automate these activities, we developed a tool that makes it possible to apply refactorings to Unified Modeling Language (UML) class diagrams. Our tool, named KDM-RE, comprises three Eclipse plug-ins, which can be briefly described as follows: (i) a set of Wizards aimed at supporting the software modernization engineer during refactoring activities; (ii) a change propagation module that keeps the internal metamodels synchronized; and (iii) a plug-in that supports the selection and reuse of the refactorings available in the repository. Moreover, we developed a domain specific language to minimize the effort required to instantiate SRMs. We carried out an evaluation that simulates how software modernization engineers would go about refactoring KDM instances. Our results would seem to suggest that our approach, when automated by our tool, provides several advantages to software modernization engineers refactoring systems represented by KDMs.

Page generated in 0.08 seconds