• Refine Query
  • Source
  • Publication year
  • to
  • Language
  • 84
  • 77
  • 11
  • 9
  • 6
  • 5
  • 5
  • 2
  • 2
  • 1
  • 1
  • 1
  • 1
  • 1
  • 1
  • Tagged with
  • 212
  • 212
  • 139
  • 114
  • 56
  • 53
  • 40
  • 40
  • 37
  • 31
  • 30
  • 29
  • 29
  • 26
  • 24
  • 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.
121

[en] ANALYZING EXCEPTION FLOWS OF ASPECT-ORIENTED PROGRAMS / [pt] ANALISANDO O FLUXO DE EXCEÇÕES EM PROGRAMAS ORIENTADOS A ASPECTOS

ROBERTA DE SOUZA COELHO 15 January 2009 (has links)
[pt] Os mecanismos de tratamento de exceções têm o objetivo de aumentar a robustez e a modularidade do software na medida em que promovem a separação entre o código dedicado ao tratamento de erros e código associado ao fluxo normal de execução do programa. Estes permitem a detecção de erros e a associação de respostas adequadas aos mesmos, através da execução de códigos de recuperação que são geralmente encapsulados em tratadores (do inglês: handlers). A importância dos mecanismos de tratamento de exceção é atestada pelo fato destes fazerem parte da maioria das linguagens de programação mais utilizadas na atualidade: Java, C++ e C#. Na última década a programação orientada a aspectos (POA) vem sendo amplamente utilizada como forma de modularizar interesses que se encontram espalhados nas decomposições primarias de um sistema (e.g., funções, classes, métodos) em uma abstração chamada aspecto. Os aspectos utilizam construções especificas para promover modificações externas nos programas, incluindo comportamentos adicionais em pontos específicos do código. POA vem sido utilizado com o objetivo de aumentar a modularidade do código de tratamento de exceção e de interesses transversais igualmente importantes tais como: persistência, distribuição, segurança, controle de transações e monitoramento. De acordo com alguns estudos empíricos, POA tem sido usado com sucesso com o objetivo de promover o tratamento de erro modular em vários cenários de tratamento de exceções. Porém, é sabido que mecanismos de programação flexíveis (e.g., herança e polimorfismo) podem ter um efeito negativo no tratamento de exceções. Se por um lado os mecanismos de composição POA baseados na inversão de controle podem trazer um novo leque de possibilidades de projeto, promovendo em muitas circunstâncias uma maior estabilidade do projeto (do inglês: design stability), eles podem perder seu valor se ele torna o tratamento de exceções propenso a erros (do inglês: error-prone). Refinamento aspectuais do comportamento do código base, podem por um lado promover a robustez do sistema em situações onde exceções são lançadas ou contribuir para os problemas típicos de tratamento de exceções mal projetados tais como: (i) exceções não capturadas (do inglês: uncaught exceptions); (ii) exceções capturadas por tratadores genéricos (do inglês: exception subsumption) (i.e., exceções capturadas por um tratador cujo argumento é um supertipo da exceção a ser tratada); (iii) e exceções capturadas por tratadores errados (do inglês: unintended handler action). Infelizmente, não existe nenhuma avaliação sistemática dos efeitos positivos e negativos da programação orientada a aspectos na robustez do código de tratamento de exceções. Os trabalhos de pesquisa descritos na literatura têm se limitado a analisar os impactos dos aspectos no fluxo normal de execução do programa. Além disso, a maioria dos estudos empíricos não vai além de discussões sobre os ganhos de modularidade e as ciladas associadas à utilização de aspectos - para o tratamento de exceções e de outros interesses transversais. Por exemplo, estes estudos não levam em consideração as conseqüências inerentes as novas exceções e tratadores que são adicionadas ao código base junto com a nova funcionalidade adicionada pelos aspectos. Esta tese descreve o primeiro estudo sistemático que avalia quantitativamente o impacto da composição aspectual no fluxo excepcional de programas. Este estudo se baseou na utilização de uma ferramenta de análise do fluxo de exceções chamada SAFE (do inglês: Static Analysis for the Flow of Exceptions) desenvolvida ao longo deste trabalho e na inspeção manual do código de tratamento de exceções de um conjunto de sistemas para os quais a versão Java e AspectJ estavam disponíveis. A ferramenta SAFE foi construída com base no framework SOOT para a análise e ot / [en] It has been empirically observed that aspect-oriented (AO) decompositions promote the modularity and the design stability of software systems containing crosscutting concerns. However, most of this existing empirical research has focused on the positive and negative impacts of AO programming in the modularization of crosscutting concerns in the context of normal control flow of programs. Consequently, most of these works do not account for the exceptions that may flow from aspects: when an aspect adds a new functionality to specific points in the code, this additional behavior may also bring new exceptions. An aspect also has the ability to handle exceptions that were previously handled inside the base code. Moreover, the exceptions that escape form aspects also flow inside the program, and may lead to unexpected error-prone scenarios, such as: unintended handler actions and uncaught exceptions. This thesis presents an empirical study to evaluate the impact of aspects on the exception flow of programs. To support the reasoning about the flow of exceptions on AO programs, a static analysis tool called SAFE (Static Analysis for the Flow of Exceptions) was implemented. Based on data empirically collected during the study we characterized a catalogue of bug patterns related to the exception handling code of AO programs. To help AO developers to check the reliability of the exception handling code, this work presents verification approach - supported by the SAFE tool - which provides guidelines to counter these bug patterns. Our findings show that the exception handling code in aspect-oriented programs tends to be error-prone, but that a verification approach based on static analysis can lead to significant improvements.
122

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.
123

Framework para estimar requisitos não funcionais em aplicações móveis / A framework for non-functional requirements estimation in mobile applications

Fernandes, Thiago Soares January 2015 (has links)
O desenvolvimento de aplicações móveis é guiado por uma especial atenção aos requisitos não funcionais (do inglês, NFR - Non Functional Requirements), sendo o principal objetivo proporcionar uma boa experiência ao usuário final. Entretanto, a avaliação de NFRs é ainda uma tarefa manual, não estruturada e que consome muito tempo. Esta dissertação apresenta um estudo de várias abordagens relacionadas à avaliação de desempenho (por exemplo, o uso de aplicações de benchmark) e de NFRs no âmbito de sistemas móveis. No entanto, os benchmarks atuais são genéricos, geralmente, voltados para a plataforma de execução e nem sempre instituem um consenso na classificação de dispositivos. Visando uma melhor avaliação de NFRs e uma classificação de dispositivos com base nas necessidades de aplicações reais, este trabalho propõe um framework para gerar benchmarks orientados às necessidades de cada aplicação e, assim, fornecer uma forma eficiente e eficaz para estimar requisitos não funcionais em sistemas móveis. Essa ferramenta é composta por uma biblioteca de testes parametrizáveis, métricas e uma estrutura para geração rápida de benchmarks orientados à aplicação. O framework foi construído utilizando o paradigma de programação orientada a aspectos para coleta das métricas por fornecer uma maior modularidade e separação de interesses, de modo que a sua evolução, através da adição de outras métricas ou testes, seja facilitada. Para validação da proposta, foram realizados experimentos com cinco aplicações Android reais disponíveis na Play Store, sendo que para cada aplicação foi gerado um benchmark específico cujos resultados foram comparados com os obtidos para as aplicações móveis reais. Os resultados são promissores, mostrando que é possível criar aplicações de teste com comportamento semelhante ao de aplicações reais e, assim, classificar dispositivos com base nas necessidades das aplicações, através da análise das métricas presentes no framework. Essas métricas podem, ainda, orientar o desenvolvedor na otimização de suas aplicações ou ainda na escolha de dispositivos com melhor custo benefício para executar seus aplicativos. / The mobile application development is guided by a special attention to non-functional requirements (NFRs), where a good experience for the end user is the primary goal. However, NFRs evaluation is still a manual, unstructured and time-consuming task. This thesis presents a study of several approaches related to performance and NFR evaluation within mobile systems. Among these approaches is the use of benchmark applications. Currently available benchmarks are generic, usually focused on the execution platform and do not always establish a consensus on the classification of devices. For a better NFRs assessment and classification of devices based on real application needs, this work proposes a framework for generating application-oriented benchmarks for the early estimation of non-functional requirements in mobile systems. This framework is composed of a configurable test library, a set of metrics and an engine the assembling of the test program. The framework uses aspect-oriented programming to collect the metrics of interest. This approach provides increased modularity and separation of concerns, thus facilitating the improvement of the framework itself, by adding other metrics or testing operations. In order to validate the proposed framework we used five application from the Android Play store. For each application, a specific benchmark is generated and executed in different devices. The results are compared to those of the execution of the actual applications in the same devices. Experimental results are promising, showing that it is possible to create test applications with similar behavior to that of real applications and thus classify devices based on the actual application needs, by analyzing the metrics present in the framework. These metrics can also guide the developer in optimizing her applications or in choosing devices with the best trade-off between cost and performance to run a given application.
124

Higher-order graph rewriting systems / Sistemas de reescrita de grafos de alta ordem

Machado, Rodrigo January 2012 (has links)
Programas sofrem diversas modificações ao longo das etapas de desenvolvimento, implantação e manutenção. A evolução de um software pode ter várias causas: correção de erros, inclusão de novas funcionalidades ou até mesmo, como é o caso de programas orientados a aspecto, transformações estruturais podem fazer parte da semântica do sistema. Apesar de modificações serem comuns, não é tarefa trivial prever como estas afetam o comportamento dos programas, já que os componentes de software normalmente interagem de forma complexa, o que faz com que mesmo pequenas alterações possam introduzir comportamentos indesejados. Transformação de grafos, também conhecida como reescrita de grafos, é um importante paradigma para modelagem e análise de sistemas. Modelos baseados em transformação de grafos, como gramáticas de grafos, permitem uma modelagem ao mesmo tempo intuitiva e com semântica precisa, permitindo a aplicação de técnicas de análise como verificação de modelos e análise de par crítico no estudo do comportamento de sistemas. A teoria por trás de transformação de grafos vem sendo desenvolvida a várias décadas, e atualmente está descrita de uma forma bastante abstrata. Contudo, ainda não possui uma definição natural de reescritas de alta ordem, que facilitaria a definição de evolução de especificações compostas por regras de reescrita de grafo, tais como gramáticas de grafos. Nesta tese são abordadas a modelagem e a análise de sistemas sob modificações programadas no contexto de gramáticas de grafos. A generalização da abordagem de pushout duplo para reescrita de grafos é utilizada como o princípio geral para descrever, simultaneamente, a semântica do sistema e modificações estruturais. Para tal, introduzimos uma noção de reescrita de segunda ordem para modificar a estrutura de regras de transformação de grafos, e usando isso, definimos modelos equipados simultaneamente de regras de primeira e segunda ordem, chamados gramáticas de grafos de segunda ordem. Através destes modelos podemos representar simultaneamente transformações estruturais e execução do sistema, e relacionar formalmente ambos tipos de reescrita. Também propomos novas técnicas para investigar o efeito da modificação de regras sobre a aplicação destas. Finalmente, como um exemplo de aplicação da teoria, caracterizamos construções de sistemas orientados a aspectos através de gramáticas de grafos de segunda ordem, e discutimos como utilizar as novas técnicas para estudar o efeito da combinação aspectual sobre o sistema inicial. / Software systems are not static entities: they usually undergo several changes along their development and maintenance cycles. Software evolution may be required for several reasons, such as the inclusion of new functionalities, the correction of errors or even as part of the system semantics, as it is the case of aspect-oriented systems. However, it is usually not trivial to foresee how structural changes can affect the system behaviour, since system components often interact in very complex ways, and even trivial modifications may introduce new problems. Graph transformation, also known as graph rewriting, has been used throughout the years as an important paradigm for system modelling and analysis. Models based on graph transformation, such as graph grammars, allow an intuitive but formal representation of the system behaviour, allowing the usage of analysis techniques such as model checking and static analysis of rule interaction. The theory behind graph transformation is quite general, and has been studied since the 1970s. However, it still lacks a general notion of higher-order rewriting that would allow a natural definition of model transformations for graph grammars. The lack of general second-order characterization presents difficulties for employing graph grammars as targets of model transformations, and studying how model transformations affect their natural behaviour. In this thesis we address the problem of modelling and analysing systems undergoing programmed modifications in the context of graph grammars. We use the generalization of the double-pushout approach for graph rewriting as a principle for defining simultaneously the system semantics and structural modifications. To achieve this, we introduce a notion of second-order graph rewriting that acts on graph transformation rules. Based on secondorder rewriting we are able to define second-order graph grammars, models equipped with a first-order layer, representing the original system execution, and a second-order layer, representing a model transformation. Using second-order graph grammar we can encode simultaneously model transformations and system execution, allowing us to formally relate them. Moreover, we propose new techniques to investigate the effect of rule modification over their effect on graphs. As an application example, we characterize aspect-oriented constructions for graph grammars, and discuss how to relate the aspect weaving layer with the base system semantics.
125

Active Behavior in a Configurable Real-Time Database for Embedded Systems

Du, Ying January 2006 (has links)
An embedded system is an application-specific system that is typically dedicated to performing a particular task. Majority of embedded systems are also real-time, implying that timeliness in the system need to be enforced. An embedded system needs to be enforced efficient management of a large amount of data, including maintenance of data freshness in an environment with limited CPU and memory resources. Uniform and efficient data maintenance can be ensured by integrating database management functionality with the system. Furthermore, the resources can be utilized more efficiently if the redundant calculations can be avoided. On-demand updating and active behavior are two solutions that aim at decreasing the number of calculations on data items in embedded systems. COMET is a COMponent-based Embedded real-Time database, developed to meet the increasing requirements for efficient data management in embedded real-time systems. The COMET platform has been developed using a novel software engineering technique, AspeCtual COmponent-based Real-time software Development (ACCORD), which enables creating database configurations, using software components and aspects from the library, based on the requirements of an application. Although COMET provides uniform and efficient data management for real-time and embedded systems, it does not provide support for on-demand and active behavior. This thesis is focusing on design, implementation, and evaluation of two new COMET configurations, on-demand updating of data and active behavior. The configurations are created by extending the COMET component and aspect library with a set of aspects that implement on-demand and active behavior. The on-demand updating aspect implements the ODDFT algorithm, which traverses the data dependency graph in the depth-first manner, and triggers and schedules on-demand updates based on data freshness in the value domain. The active behavior aspect enables the database to take actions when an event occurs and a condition coupled with that event and action is fulfilled. As we show in the performance evaluation, integrating on-demand and active behavior in COMET improves the performance of the database system, gives a better utilization of the CPU, and makes the management of data more efficient.
126

Higher-order graph rewriting systems / Sistemas de reescrita de grafos de alta ordem

Machado, Rodrigo January 2012 (has links)
Programas sofrem diversas modificações ao longo das etapas de desenvolvimento, implantação e manutenção. A evolução de um software pode ter várias causas: correção de erros, inclusão de novas funcionalidades ou até mesmo, como é o caso de programas orientados a aspecto, transformações estruturais podem fazer parte da semântica do sistema. Apesar de modificações serem comuns, não é tarefa trivial prever como estas afetam o comportamento dos programas, já que os componentes de software normalmente interagem de forma complexa, o que faz com que mesmo pequenas alterações possam introduzir comportamentos indesejados. Transformação de grafos, também conhecida como reescrita de grafos, é um importante paradigma para modelagem e análise de sistemas. Modelos baseados em transformação de grafos, como gramáticas de grafos, permitem uma modelagem ao mesmo tempo intuitiva e com semântica precisa, permitindo a aplicação de técnicas de análise como verificação de modelos e análise de par crítico no estudo do comportamento de sistemas. A teoria por trás de transformação de grafos vem sendo desenvolvida a várias décadas, e atualmente está descrita de uma forma bastante abstrata. Contudo, ainda não possui uma definição natural de reescritas de alta ordem, que facilitaria a definição de evolução de especificações compostas por regras de reescrita de grafo, tais como gramáticas de grafos. Nesta tese são abordadas a modelagem e a análise de sistemas sob modificações programadas no contexto de gramáticas de grafos. A generalização da abordagem de pushout duplo para reescrita de grafos é utilizada como o princípio geral para descrever, simultaneamente, a semântica do sistema e modificações estruturais. Para tal, introduzimos uma noção de reescrita de segunda ordem para modificar a estrutura de regras de transformação de grafos, e usando isso, definimos modelos equipados simultaneamente de regras de primeira e segunda ordem, chamados gramáticas de grafos de segunda ordem. Através destes modelos podemos representar simultaneamente transformações estruturais e execução do sistema, e relacionar formalmente ambos tipos de reescrita. Também propomos novas técnicas para investigar o efeito da modificação de regras sobre a aplicação destas. Finalmente, como um exemplo de aplicação da teoria, caracterizamos construções de sistemas orientados a aspectos através de gramáticas de grafos de segunda ordem, e discutimos como utilizar as novas técnicas para estudar o efeito da combinação aspectual sobre o sistema inicial. / Software systems are not static entities: they usually undergo several changes along their development and maintenance cycles. Software evolution may be required for several reasons, such as the inclusion of new functionalities, the correction of errors or even as part of the system semantics, as it is the case of aspect-oriented systems. However, it is usually not trivial to foresee how structural changes can affect the system behaviour, since system components often interact in very complex ways, and even trivial modifications may introduce new problems. Graph transformation, also known as graph rewriting, has been used throughout the years as an important paradigm for system modelling and analysis. Models based on graph transformation, such as graph grammars, allow an intuitive but formal representation of the system behaviour, allowing the usage of analysis techniques such as model checking and static analysis of rule interaction. The theory behind graph transformation is quite general, and has been studied since the 1970s. However, it still lacks a general notion of higher-order rewriting that would allow a natural definition of model transformations for graph grammars. The lack of general second-order characterization presents difficulties for employing graph grammars as targets of model transformations, and studying how model transformations affect their natural behaviour. In this thesis we address the problem of modelling and analysing systems undergoing programmed modifications in the context of graph grammars. We use the generalization of the double-pushout approach for graph rewriting as a principle for defining simultaneously the system semantics and structural modifications. To achieve this, we introduce a notion of second-order graph rewriting that acts on graph transformation rules. Based on secondorder rewriting we are able to define second-order graph grammars, models equipped with a first-order layer, representing the original system execution, and a second-order layer, representing a model transformation. Using second-order graph grammar we can encode simultaneously model transformations and system execution, allowing us to formally relate them. Moreover, we propose new techniques to investigate the effect of rule modification over their effect on graphs. As an application example, we characterize aspect-oriented constructions for graph grammars, and discuss how to relate the aspect weaving layer with the base system semantics.
127

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.
128

Uma contribuição para o teste baseado em defeitos de software orientado a aspectos / A contribution to the fault-based testing of aspect-orientd software

Fabiano Cutigi Ferrari 16 December 2010 (has links)
A Programação Orientada a Aspectos (POA) é uma técnica contemporânea de desenvolvimento de software fortemente baseada no princípio da separação de interesses. Ela tem como objetivo tratar de problemas de modularização de software por meio da introdução do aspecto como uma nova unidade de implementação que encapsula comportamento relacionado aos interesses transversais do software. A despeito dos benefícios que podem ser alcançados com o uso da POA, seus mecanismos de implementação representam novas potenciais fontes de defeitos que devem ser tratados durante a fase de teste de software. Nesse contexto, o teste de mutação consiste em um critério de seleção de testes baseado em defeitos que tem sido bastante investigado para demonstrar a ausência de defeitos pré-especifiados no software. Acredita-se que o teste de mutação seja uma ferramenta adequada para lidar com as particularidades de técnicas de programação contemporâneas como a POA. Entretanto, até o presente momento, as poucas iniciativas para adaptar o teste de mutação para o contexto de programas orientados a aspectos (OA) apresentam cobertura limitada em relação aos tipos de defeitos simulados, ou ainda requerem adequado apoio automatizado e avaliações. Esta tese visa a mitigar essas limitações por meio da definição de uma abordagem abrangente de teste de mutação para programas OA escritos na linguagem AspectJ. A tese inicia como uma investigação da propensão a defeitos de programas OA e define uma taxonomia de defeitos para tais programas. A taxonomia inclui uma variedade de tipos de defeitos e serviu como base para a definição de um conjunto de operadores de mutação para programas OA. Suporte automatizado para a aplicação dos operadores também foi disponibilizado. Uma série de estudos quantitativos mostra que a taxonomia de defeitos proposta é suficiente para classificar defeitos encontrados em vários sistemas OA. Os estudos também mostram que os operadores de mutação propostos são capazes de simular defeitos que podem não ser relevados por conjuntos de teste pré-existentes, não derivados para cobrir mutantes. Além disso, observou-se que o esforço requerido para evoluir tais conjuntos de teste de forma a torná-los adequados para os requisitos gerados pelos operadores / Aspect-Oriented Programming (AOP) is a contemporary software development technique that strongly relies on the Separation of Concerns principle. It aims to tackle software modularisation problems by introducing the aspect as a new implementation unit to encapsulate behaviour required to realise the so-called crosscutting concerns. Despite the benefits that may be achieved with AOP, its implementation mechanisms represent new potential sources of faults that should be handled during the testing phase. In this context, mutation testing is a widely investigated fault-based test selection criterion that can help to demonstrate the absence of prespecified faults in the software. It is believed to be an adequate tool to deal with testing-related specificities of contemporary programming techniques such as AOP. However, to date, the few initiatives for customising the mutation testing for aspect-oriented (AO) programs show either limited coverage with respect to the types of simulated faults, or a need for both adequate tool support and proper evaluation. This thesis tackles these limitations by defining a comprehensive mutation-based testing approach for AO programs written in the AspectJ language. It starts with a fault-proneness investigation in order to define a fault taxonomy for AO software. Such taxonomy encompasses a range of fault types and underlay the definition of a set of mutation operators for AO programs. Automated tool support is also provided. A series of quantitative studies show that the proposed fault taxonomy is able to categorise faults identified from several available AO systems. Moreover, the studies show that the mutation operators are able to simulate faults that may not be revealed by pre-existing, non-mutation-based test suites. Furthermore, the effort required to augment the test suites to provide adequate coverage of mutants does not tend to overwhelm the testers. This provides evidence of the feasibility of the proposed approach and represents a step towards the practical fault-based testing of AO programs
129

Seamless concurrent programming of objects, aspects and events / Intégration de la programmation concurrente à la programmation par objets, aspects et événements

Van Ham, Jurgen Michael 09 March 2015 (has links)
L’utilisation de concepts avancés de programmation concurrente permet de dépasser les inconvénients de l’utilisation de techniques de bas niveau à base de verrous ou de moniteurs. Elle augmente le niveau d’abstraction, libérant les programmeurs d’applications concurrentes d’une focalisation excessive sur des détails. Cependant, avec les approches actuelles, la logique nécessaire à la mise en place de schémas de coordinations complexes est fragmentée en plusieurs points de l’application sous forme de« join patterns », de notifications et de la logique applicative qui crée implicitement des dépendances entre les canaux de communication et donc, indirectement, les « join patterns » (qui définissent ces canaux). Nous présentons JEScala, un langage qui capture les schémas de coordination (d’une application concurrente) d’une manière plus expressive et modulaire, en s’appuyant sur l’intégration fine d’un système d’évènements avancé et des « join patterns ». Nous implémentons des automates finis à partir de « joins » à l’aide de JEScala et introduisons un langage dédié à la définition de ces automates finis permettant d’en obtenir des implémentations plus efficaces. Nous validons notre approche avec des études de cas et évaluons l’efficacité de son exécution. Nous comparons la performance de trois implémentations d’un automate fini. Nous validons enfin l’idée d’un moniteur d’évènements en créant un programme JEScala concurrent à partir d’un découpage d’un programme séquentiel. / The advanced concurrency abstractions provided by the Join calculus overcome the drawbacks of low-level techniques such as locks and monitors. They rise the level of abstraction, freeing programmers that implement concurrent applications from the burden of concentrating on low-level details. However, with current approaches the coordination logic involved incomplex coordination schemas is fragmented into several pieces including join patterns, data emissions triggered in different places of the application, and the application logic that implicitly creates dependencies among channels, hence indirectly among join patterns. We present JEScala, a language that captures coordination schemas in a more expressive and modular way by leveraging a seamless integration of an advanced event system with join abstractions. We implement Joins-based state machines using JEScala and introduce a domain specific language for finite state machines that make faster alternative implementations possible. We validate our approach with case studies and we provide a first performance assessment. We compare the performance of three different implementations of a finite state machine. Finally, we validate the idea of constructing a concurrent JEScala program by using the parts of a sequential Event-Based program in combination with an event monitor, a component that synchronizes handling of multiple events.
130

[en] EXTENDING THE TOOL SAFE FOR JBOSS AOP / [pt] ESTENDENDO A FERRAMENTA SAFE PARA JBOSS AOP

MARCIO DAVID DE MAGALHAES SANTOS 17 February 2011 (has links)
[pt] O paradigma de orientação a aspectos é utilizado em vários frameworks e aplicações com o objetivo de melhorar a modularidade e a separação de interesses. Contudo, a combinação do paradigma de orientação a aspectos com mecanismos de captura de exceção pode elevar o número de cenários sujeitos a falhas. Pois, os elementos que compõem os aspectos podem levantar exceções, as quais a aplicação não foi projetada para tratá-las. Nesta dissertação é apresentado (i) um estudo empírico mostrando como a programação orientada a aspectos afeta o tratamento de exceção de uma aplicação que utiliza o JBoss AOP como implementação do paradigma de orientação a aspectos; e (ii) uma ferramenta que deu suporte ao estudo. O estudo mostra que ocorrem falhas no tratamento de exceção principalmente porque as exceções são capturadas por subsunção. / [en] Aspect Oriented Paradigm (AOP) is used in many frameworks and applications in order to improve the modularity and separation of concerns. However, the combination of AOP and exception handling mechanisms may increase the number of error-prone scenarios. AOP may raise exceptions which the application was not designed to handle it. This dissertation presents (i) an empirical study showing how the AOP affects exception handling in an application that uses JBoss AOP to implement AOP, and (ii) a support tool for the study. The study shows that error-prone scenarios occur mainly because exception handling exceptions are caught by subsumption.

Page generated in 0.0647 seconds