Minimizing stub creation during integration test of aspect-oriented programs
Proceedings of the 3rd Workshop on Testing Aspect Oriented Programs, Mar 12, 2007
... out . println ("A.print() invoked." ) ; 4 }} 5 public class B{ 6 pu... more ... out . println ("A.print() invoked." ) ; 4 }} 5 public class B{ 6 public void print (){ 7 super . print (); 8 System . ... The ex-ample implements the concerns of timing, billing and call transfers as aspects [20]. This system helps customers to accept, join and end local and long distance calls. ...
The HySCharts environment (Hyperdocument System Based on StateCharts) supports the formal specifi... more The HySCharts environment (Hyperdocument System Based on StateCharts) supports the formal specification of hyperdocuments using a novel formalism called HMBS (Hyperdocument Model Based on Statecharts). This paper presents the HySCharts system architecture, with emphasis on its underlying model and on the functionality of its authoring and browsing modules. HMBS is a statechart-based, navigation-oriented model for hyperdocument specification that uses the structure and execution semantics of statecharts to specify both the structural organization and the browsing semantics of a hyperdocument. The formal definition of HMBS and its associated browsing semantics are introduced. A discussion of the system and its capabilities, as supported by the model, is also provided.
Resumo. Embora seja de alto custo, a atividade de teste é de fundamental importância no processo ... more Resumo. Embora seja de alto custo, a atividade de teste é de fundamental importância no processo de desenvolvimento de software. Técnicas e ferramentas são essenciais para a melhoria da qualidade e da produtividade na atividade de teste. A técnica de teste estrutural usa estruturas de fluxo de controle e de dados para derivar requisitos de testes. Buscando exercitar tais requisitos o testador supostamente fornece casos de teste que melhoram a qualidade do software. O teste estrutural requer a execução de várias atividades que exigem a análise de código que, em geral, é realizada no código fonte do produto em teste. Com o advento da linguagem Java tornou-se usual a realização da análise diretamente no código objeto (bytecode) o que traz algumas vantagens. Neste artigo, é discutido como usar as características da análise de bytecode Java e como estendê-la para a implementação de critérios de teste estruturais para dois domínios específicos: programas orientados a aspectos e aplicações de banco de dados.
Application frameworks, as occurs with any software, evolve as they are used. The initial version... more Application frameworks, as occurs with any software, evolve as they are used. The initial versions often do not satisfy all the domain requirements for which the framework has been built, thus, soon after the framework is released for use, the evolution process starts. As it is a generic architecture of a domain, framework maintenance activities differ from maintenance activities of conventional applications. An evolution process for application frameworks, comprising eight steps, is proposed. This process is based on the evolution of a framework for the information systems domain.
Impact of Feature Interaction on the Safety Analysis for Unmanned Avionics Product Lines
ABSTRACT Unmanned Avionics Systems (UAS) are real-time critical embedded systems that include hig... more ABSTRACT Unmanned Avionics Systems (UAS) are real-time critical embedded systems that include high-integrity requirements. Most of these systems need to be certified before use, particularly in civil airspace. To reduce development cost, some UAS software is developed as part of a Software Product Line (SPL). A product-line comprises a reference architecture and a set of reusable core assets. New systems can be derived from the product-line architecture and core assets based on a predefined process that manages and controls permitted variations, based in part on product-line features defined in a feature model. However, many features are interdependent and hence complicate the analysis of all potential feature combinations for product-line systems. In this paper we discuss the impact of feature dependencies in the safety analysis of unmanned avionics SPLs and present a preliminary model-based solution for managing the impact of these dependencies.
By their very nature, services are accessible only as black-boxes through their published interfa... more By their very nature, services are accessible only as black-boxes through their published interfaces. It is a well known issue that lack of implementation details may reduce service testability. In previous work, we proposed testable services as a solution to provide third-party services with structural coverage information after a test session, yet without revealing their internal details. However, integrators do not have enough information to improve their test set when they get a low coverage measure because they do not know which test requirements have not been covered. This paper proposes an approach in which testable services are provided along with test metadata that may help integrators to get a higher coverage. The approach is illustrated on a case study of a real system that uses orchestrations and testable services. A formal experiment designed to compare the proposed solution with a functional approach is also presented. The results show evidences that subjects using the testable service approach augmented with metadata can achieve better coverage than subjects using only a functional approach.
Resumo: A instanciação de frameworks normalmente é um processo que demanda tempo e é sujeito a er... more Resumo: A instanciação de frameworks normalmente é um processo que demanda tempo e é sujeito a erros, pois existem regras específicas que devem ser seguidas com o intuito de produzir uma aplicação compatível com seus requisitos. Algumas dessas regras referem-se a políticas de implementação e não podem ser verificadas em tempo de compilação, como por exemplo regras de nomenclatura e construtores padrão. Um problema relevante é que as falhas geradas pela não obediência a essas regras só podem ser detectadas em um momento posterior à instanciação, durante o uso do sistema. É apresentada neste artigo a implementação de um mecanismo que verifica regras de instanciação de um framework de persistência. Palavaras-chave: POA, frameworks, regras de instanciação Abstract: Instantiation of frameworks is usually a time-consuming, error-prone process as there are specific rule types that must be followed to produce an application that meets its requirements. Some of these rules refer to framework specific implementation policies and cannot be verified in compilation time, such as nomenclature rules and default constructors. A relevant problem is that faults generated when these rules are not applied can only be detected later, during the system usage. A mechanism to enforce that certain rules for a persistency framework be strictly followed, is shown.
One of the major factors that brings complexity to framework development is the identification of... more One of the major factors that brings complexity to framework development is the identification of its hot spots, i.e., the framework parts that must be kept flexible as they are specific of individual systems. In this paper we show that pattern languages can be important sources for framework hot spots identification and, consequently, can be used for framework construction. We define the types of hot spots that are identifiable from information presented in the elements of each pattern of the pattern language. We propose also a process for hot spots identification and present a case study for identifying the hot spots of a framework built based on a pattern language for business resource management.
Resumo� Um dos problemas encontrados no teste de programas orientados a objetos é a ordem em que ... more Resumo� Um dos problemas encontrados no teste de programas orientados a objetos é a ordem em que classes são integradas e testadas na presença de ciclos de dependência. Esse problema, também observado em programas orientados a aspectos, provoca aumento do esforço da atividade de teste pela necessidade de implementação de stubs para quebrar os ciclos de dependência. Este trabalho apresenta um conjunto de stubs e drivers coletados durante a condução de um estudo com quatro diferentes estratégias de teste de integração aplicadas a dois diferentes sistemas implementados com aspectos. Também são mostradas decisões de implementação tomadas em relação ao contexto em que os stubs e drivers são usados, além de diretrizes a serem seguidas durante a implementação desses artefatos de software para apoiar o teste de programas orientados a aspectos.
Nesse artigo é apresentada uma abordagem para o teste funcional de programas Java auxiliada por a... more Nesse artigo é apresentada uma abordagem para o teste funcional de programas Java auxiliada por aspectos. Introduz-se a ferramenta AFTT -Aspect-based Functional Testing Tool, que oferece suporte a alguns critérios funcionais e utiliza recursos do AspectJ para permitir a análise de cobertura de teste funcional. Um exemplo ilustra o funcionamento e aplicação da ferramenta.
Resumo: A instanciação de frameworks normalmente é um processo que demanda tempo e é sujeito a er... more Resumo: A instanciação de frameworks normalmente é um processo que demanda tempo e é sujeito a erros, pois existem regras específicas que devem ser seguidas com o intuito de produzir uma aplicação compatível com seus requisitos. Algumas dessas regras referem-se a políticas de implementação e não podem ser verificadas em tempo de compilação, como por exemplo regras de nomenclatura e construtores padrão. Um problema relevante é que as falhas geradas pela não obediência a essas regras só podem ser detectadas em um momento posterior à instanciação, durante o uso do sistema. É apresentada neste artigo a implementação de um mecanismo que verifica regras de instanciação de um framework de persistência. Palavaras-chave: POA, frameworks, regras de instanciação Abstract: Instantiation of frameworks is usually a time-consuming, error-prone process as there are specific rule types that must be followed to produce an application that meets its requirements. Some of these rules refer to framework specific implementation policies and cannot be verified in compilation time, such as nomenclature rules and default constructors. A relevant problem is that faults generated when these rules are not applied can only be detected later, during the system usage. A mechanism to enforce that certain rules for a persistency framework be strictly followed, is shown.
Product lines for information systems present variabilities both in non-functional and functional... more Product lines for information systems present variabilities both in non-functional and functional features. Aspects are being used successfully in the implementation of non-functional features, as they provide intuitive units for isolating the requirements associated to this type of features. However, aspects could also be used to implement some product line features that refer to functional requirements. Using that approach, the instantiation of specific products could be done by combining the desired aspects into the final product. In this paper, we propose an approach, named AIPLE-IS, to incrementally build a product line for information systems using aspects. The product line core is developed first, followed by the addition of optional features through aspects. A case study for a product line in the domain of information systems for psychology clinics is presented to illustrate the approach.
A software product line to support urban transport systems is briefly described and the design of... more A software product line to support urban transport systems is briefly described and the design of two of its features is discussed. Different solutions based on components are shown for these two features and their variabilities. In particular, an analysis is made of how their design is influenced by the development process adopted, by the decision to use black-box (off-the-shelf) components or white-box components that may be created or adapted depending on application requirements, and by the decision of automating or not the composition process. Additionally, alternatives for deciding how to define iterative cycles and increments of the product line are discussed.
Proceedings of the 2008 Acm Symposium on Applied Computing, 2008
A pattern that can be used to design Aspect-Oriented Frameworks that require data from a base cod... more A pattern that can be used to design Aspect-Oriented Frameworks that require data from a base code is presented. The framework design is explicitly separated into two parts when this pattern is used: one dealing with the composition mechanisms and another dealing with the functional variabilities. Regarding the composition part, there are several com alternatives facilitating the coupling to an
Uploads
Papers by Paulo Masiero