
Paulo Masiero- PhD
- University of São Paulo
Paulo Masiero
- PhD
- University of São Paulo
About
193
Publications
40,525
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
2,123
Citations
Introduction
Current institution
Publications
Publications (193)
Recently software startups have been the focus of intense research, especially in the Software Engineering community. However, we need more empirical evidence that addresses how software startups perform their software development practices. This paper presents a case study of software startups to understand their software development practices. We...
Variability-aware smell is a concept referring to artifact shortcomings in the context of highly-configurable systems that can degrade aspects such as program comprehension, maintainability, and evolvability. To the best of our knowledge, there is very little evidence that variability-aware smells exist in Software Product Lines (SPLs). This work p...
Safety‐critical systems are of paramount importance for many application domains, where safety properties are a key driver to engineer critical aspects and avoid system failures. For the benefits of large‐scale reuse, software product lines (SPL) have been adopted in critical systems industry. However, the integration of safety analysis in the SPL...
Autonomous vehicles are critical systems that must be thoroughly
tested. Usually, field testing is performed with the real vehicle, but it is mainly
functional and scenario-based. In field testing, it is possible to record the received
input data for later replay and offline analysis. In a previous study, a meta-model
and tool to support the struct...
Safety-critical systems developed upon SPLE approach have to address safety standards, which establish guidance for analyzing and demonstrating dependability properties of the system at different levels of abstraction. However, the adoption of an SPLE approach for developing safety-critical systems demands the integration of safety engineering into...
Context -
Access control systems demand rigorous verification and validation approaches, otherwise, they can end up with security breaches. Finite state machines based testing has been successfully applied to RBAC systems and enabled to obtain effective test cases, but very expensive. To deal with the cost of these test suites, test prioritization...
Access control mechanisms demand rigorous software testing approaches, otherwise they can end up with security flaws. Finite state machines (FSM) have been used for testing Role-Based Access Control (RBAC) mechanisms and complete, but significantly large, test suites can be obtained. Experimental studies have shown that recent FSM testing methods c...
Software Product Lines (SPL) provides an engineering basis for the systematic reuse of artefacts used for development, assessment, and management of critical embedded systems. Hazards and their causes may change according to the selection of variants in a particular SPL product. As such, existing safety analysis assets such as fault trees and FMEA...
The software used to control autonomous vehicles is a type of embedded system that needs to undergo strenuous testing before deployment. Field testing is the final stage of testing ensuring that autonomous vehicles show the intended behaviour. It usually does not take into consideration the code structure. In this context, a previously proposed tes...
Background: Since the first discussions of new challenges posed by aspect-oriented programming (AOP) to software testing, the real difficulties of testing aspect-oriented (AO) programs have not been properly analysed. Firstly, despite the customisation of traditional testing techniques to the AOP context, the literature lacks discussions on how har...
Safety critical systems developed as part of a product line must still comply with safety standards. Standards use the concept of Safety Integrity Levels (SILs) to drive the assignment of system safety requirements to components of a system under design. However, for a Software Product Line (SPL), the safety requirements that need to be allocated t...
Background
Statecharts are diagrams comprised of visual elements that can improve the modeling of reactive system behaviors. They extend conventional state diagrams with the notions of hierarchy, concurrency and communication. However, when statecharts are considered to support the modeling of system interactions, e.g., in Systems of Systems (SoS),...
The software used to control autonomous vehicles is a type of embedded system that needs to undergo strenuous testing before deployment. Field testing is the final stage of testing ensuring that autonomous vehicles show the intended behavior. It usually does not take into consideration the code structure. In this context, a previously proposed test...
The effective reuse of design assets in safety-critical Software Product Lines (SPL) would require the reuse of safety analyses of those assets in the variant contexts of certification of products derived from the SPL. This in turn requires the traceability of SPL variation across design, including variation in safety analysis and safety cases. In...
Nowadays, the Web represents the main way of providing computing services to a huge variety of users with different characteristics. Thus, accessibility and usability features become even more critical to a Web application's success. Researchers have been worried in providing mechanisms to serve as guidelines that Web systems should provide, in ter...
The Web is currently the main way of providing computing services, reaching a larger number of users with different characteristics. As the complexity and interactivity of systems is increased, users become more demanding towards all the requirements associated to their distinct needs. Implementing the interaction requirements in the Web has become...
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 architectur...
Component-based applications can be composed by in-house or COTS (Commercial off-the-shelf) components. In many situations, reused components should be tested before their integration into an operational environment. Testing components is not an easy task because they are usually provided as black boxes and have low testability. Built-in Testing (B...
Software Product Line (SPL) refers to engineering methods and techniques able to deliver families of related products designed to meet domain-specific requirements and increase software reuse. System of Systems (SoS) is a composition of independent and interoperable systems intended to achieve unique goals collectively. In this paper, we discuss ab...
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, ye...
Background: Aspect-Oriented Software Development (AOSD) is a paradigm that promotes advanced separation of concerns and modularity throughout the software development lifecycle, with a distinctive emphasis on modular structures that cut across traditional abstraction boundaries. In the last 15 years, research on AOSD has boosted around the world. T...
This paper reports on a historical perspective of the evaluation studies present in software testing research published in the Brazilian Symposium on Software Engineering (SBES) in comparison to the International Conference on Software Engineering (ICSE). The survey characterizes the software testing-related papers published in the 25-year history...
Unmanned Aerial Vehicles (UAV) are vehicles that fly without a pilot and are able to execute different types of missions, such as surveillance, topographical data collection, and environment monitoring. This motivates some degree of variability in the controlling software of UAV - usually specified using Simulink models -, even though it is also po...
The architecture of a software product line is one of its most important artifacts as it represents an abstraction of the products that can be generated. It is crucial to evaluate the quality attributes of a product line architecture in order to: increase the productivity of the product line process and the quality of the products; provide a means...
Software to control autonomous vehicles is a type of embedded system that need to undergo severe testing before deployment. After unit testing and simulations, the actual vehicle needs to pass through field testing, which are mainly functional and based on scenarios. There are two difficulties for this type of testing: input data is not discrete, t...
Exception handling mechanisms available in objectoriented languages are being increasingly used and account for about 8% of the lines of code in modern programs according to some surveys. Yet, this mechanism is among the least understood by programmers and the less tested. The difficulty of testing exceptions increases in the phase of integration t...
The traditional software development is not entirely suitable for development of Web systems. These systems must be developed supported by a fast life cycle, considering usersÂ' characteristics. In this context, this paper describes how to improve the quality of Web systems including accessibility and usability non-functional requirements during de...
Despite the evolution of the hardware that enabled even small components to interconnect and the modern software engineering paradigms that eased information exchange, several systems still operate standalone and do not share resources naturally with each other. In this paper, we show that if these systems are reengineered appropriately using exist...
This paper presents ProLiCES, an approach for the development of safety-critical embedded applications and its usage to develop a product line for unmanned aerial vehicles (UAV). The motivation of ProLiCES emerged after the development of Tiriba, a family of small, electric-powered unmanned aircraft. Most software artifacts produced for Tiriba requ...
A product-line architecture (PLA) entails a design reused by a family of products sharing several features. The long-term stability of a PLA largely depends on the modularization of each feature from the design outset. As many features of a product-line crosscut the PLA decomposition, their modularity and stability are often improved with aspect-or...
A product-line architecture (PLA) entails a design reused by a family of products sharing several features. The long-term stability of a PLA largely depends on the modularization of each feature from the design outset. As many features of a product-line crosscut the PLA decomposition, their modularity and stability are often improved with aspect-or...
In previous work we proposed testable services as a solution to provide third-party testers with structural coverage information after a test session, yet without revealing their internal details. However, service testers, e.g., integrators that use testable services into their compositions, do not have enough information to improve their test set...
Third party services can change without notification as they are usually under the control of external providers. Unexpected changes can clash the integrity of a composition and monitoring approaches have been proposed to detect such changes. Many of these approaches are based on executing all test cases of a regression test set to check whether th...
In this paper, we present the birth, growth, and maturation of Aspect-Oriented Software Development (AOSD) research over the last years, with emphasis on the Brazilian AOSD community and its research contributions. These research contributions are illustrated from different perspectives: (i) an overview of the research work developed by our communi...
This paper presents an experience in extending and evaluating UML Components for guiding the derivation of component-based product-line architectures (PLAs). We present a quantitative and qualitative evaluation of such an extension when applied to the proactive design of two PLAs. We have found that our approach supported an agile conception of arc...
Aspect-oriented programming (AOP) is a technology that aims to tackle software modularisation problems. Despite the benefits that may be achieved with AOP, its mechanisms represent new potential source of faults that should be handled during the test phase. In this paper a structural integration testing approach for Object-Oriented (OO) and Aspect-...
Aspect-oriented programming (AOP) is a promising technology that supports separation of crosscutting concerns (i.e., functionality that tends to be tangled with, and scattered through the rest of the system). In AOP, a method-like construct named advice is applied to join points in the system through a special construct named pointcut. This mechani...
ContextSoftware developers spend considerable effort implementing auxiliary functionality used by the main features of a system (e.g., compressing/decompressing files, encryption/decription of data, scaling/rotating images). With the increasing amount of open source code available on the Internet, time and effort can be saved by reusing these utili...
Software Product Line (SPL) is one of the most adopted techniques to enable software reuse. Aspect-orientation (AOSD) has been investigated to implement variabilities in component-based SPL. This paper presents an experience on the implementation of SPL variabilities using AOSD. The Spring framework is used to configure the components of an existin...
Product derivation approaches automate the customization process of software product lines. Over the last years, many tools have been proposed aiming at synthesize and generate products from a set of reusable assets. These tools adopt different techniques and strategies to implement and automate the product derivation activities. In this paper, we...
This work presents a pattern collection aiming at supporting the integration testing design of aspect-oriented software. Such patterns provide a reduction in the effort of implementing stubs and drivers required for the integration testing. Furthermore, guidelines to implement these software artifacts are proposed to support the testing of aspect-o...
Testing Service Oriented Architecture applications is a challenging task due to the high dynamism, the low coupling and the low testability of services. Web services, a popular implementation of services, are usually provided as black box and using testing techniques based on implementation is limited. This paper presents an approach to support the...
This paper presents the results of an exploratory study on the fault-proneness of aspect-oriented programs. We analysed the faults collected from three evolving aspect-oriented systems, all from different application domains. The analysis develops from two different angles. Firstly, we measured the impact of the obliviousness property on the fault-...
Web services are an emerging Service-Oriented Architecture technology to integrate applications using open standards based on XML. Software Engineering tools integration is a promising area since companies adopt different software processes and need different tools on each activity. Software engineers could take advantage of software engineering to...
Several testing approaches focus on finding faults in software units of implementation. A problem not addressed by unit testing is the interaction among units, with respect to the correctness of their interfaces. In this paper a structural integration testing approach for Object-Oriented (OO) and Aspect-Oriented (AO) Java programs is presented. To...
Software developers spend considerable effort implementing auxiliary functionality used by the main features of a system (e.g. compressing/decompressing files, encryption/decription of data, scaling/rotating images). With the increasing amount of open source code available on the Internet, time and effort can be saved by reusing these utilities thr...
Empirical studies have shown that Aspect Oriented Programming (AOP) promotes the modularity and design stability of systems in the presence of crosscutting concerns. However, as important as measuring the impact of AOP on the design stability is to measure its impact on system robustness. The effective adoption of a new technology might be impaired...
The goal of aspect-oriented programming is to modularize concerns that tend to tangle with and scatter across multiple modules of software systems. For that purpose, crosscutting behavior implemented as advice is applied to several points of the base program (i.e., join points) using pointcut mechanisms. However, if pointcuts are wrongly defined, a...
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 dep...
Several testing approaches focus on finding faults in software units of implementation (i.e., unit testing). A problem not addressed by unit testing is the interaction among units, with respect to the correctness of their interfaces. With the use of Aspect-Oriented Programming this problem is further complicated by pointcut mechanisms that cut new...
Geradores de aplicações são ferramentas que promovem o reúso de software por gerar aplicações de forma automática, partindo de uma especificação em alto nível. São especialmente importantes em abordagens de desenvolvimento de linhas de produtos de software, em que artefatos podem ser combinados para obter uma grande variedade de diferentes produtos...
An intelligent assistant can support the execution of the software process based on artificial intelligence techniques. This paper presents the application of planning techniques to support the process of developing software based on the fusion method. The first level of the designed library of operators as well as the features of the algorithms fo...
Crosscutting Frameworks are the most common type of aspect-oriented frameworks. They encapsulate only one crosscutting concern, such as persistence, distribution or synchronization. This kind of framework has been successfully used as infrastructure software providing services to higher level applications. However, as any common framework, when cro...
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 c...
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 ciclo...
Resumo. Várias abordagens de teste focam o descobrimento de falhas em implementa oes de unidades de software. Um problema não tratado pelo teste de unidadé e a intera ao entre unidades, no que diz respeitò a corretude das interfaces. Em Programa ao Orientada a Aspectos, esse problemá e dificul-tado por mecanismos de conjuntos de jun ao, que definem...
We present CodeGenie, a tool that implements a test-driven approachto search and reuse of code available on large-scale coderepositories. While using CodeGenie developers design test cases fora desired feature first, similar to Test-driven Development (TDD).However, instead of implementing the feature as in TDD, CodeGenieautomatically searches for...
Software testing is an important and expensive activity of the software development process. Techniques and tools are essential to improve test quality and productivity. Structural testing is a technique that uses characteristics such as control-flow and data-flow structures to derive testing requirements. By exercising such testing requirements th...
A problem related to the integration test of object-oriented programs is the order that classes are integrated and tested. This problem also appears in aspect-oriented programs. The incremental integration strategy, which suggests that classes are tested first and then integrated to the aspects, is often proposed as the more adequate strategy to in...
Most structural testing approaches are targeted at units of implementation (i.e., unit testing). A problem that is not addressed by unit testing is the interaction among units, with respect to the correctness of their interfaces. We present a structural integration testing approach for object-oriented (OO) and aspect-oriented (AO) Java programs as...
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 pr...
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...
Although it is claimed that, among other features, aspect-oriented programming (AOP) increases understandability and eases the maintenance burden, this technology cannot provide correctness by itself, and thus it also requires the use of systematic verification, validation and testing (VV&T) approaches. With the purpose of producing high quality so...
A problem related to the integration test of Object-Oriented programs is the order in which classes are integrated and tested. This problems also appears in Aspect-Oriented programs. The incremental integration strategy, which suggests that classes are tested first and then integrated to the aspects, is often proposed as the more adequate strategy...
Resumo. Em um trabalho recente, explorou-se o teste estrutural de unidade – tanto de métodos quanto de adendos – de programas Java orientados a obje-tos (OO) e a aspectos (OA). Um problema não tratado pelo teste de unidadé e a intera ao entre as unidades, no que diz respeitò a corretude das interfaces. Neste artigó e apresentada uma abordagem de te...
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...
Resumo. Embora seja de alto custo, a atividade de teste é de fundamental im-portâ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....
Resumo. Um dos problemas encontrados no teste de programas orientados a objetos é a ordem em que classes são integradas e testadas. Esse problema também pode ser observado em programas orientados a aspectos. A estraté-gia incremental, que sugere que classes sejam testadas primeiramente e, então, integradas aos aspectos, é frequentemente sugerida co...
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 pr...
Pointcut Descriptors (PCDs) are used to specify sets of program join points with a common property where additional behavior should be applied. If PCDs are wrongly formulated, faults are injected into the program, because additional behavior will be applied to unintended join points or will fail to be applied to intended join points. In this paper...
An adaptation of the UML Component method to design crosscutting components is briefly presented. Such components are allowed
to crosscut only the public interface of base (convencional) components. The design and implementation of crosscutting components
using the language JAsCO is discussed.
A disponibilidade de ferramentas de teste de software propicia maior qualidade e produtividade para as atividades de teste. Neste artigo é apresentada uma ferramenta para teste funcional de programas Java. A ferramenta, denominada J-FuT, apóia os principais critérios da técnica funcional e oferece análise de cobertura baseada nesses critérios. A Pr...
Este artigo apresenta uma definição para frameworks orientados a aspectos e os classifica em dois tipos: frameworks de aplicação orientados a aspectos (FAOA) e frameworks transversais (FTs). Vários FTs são brevemente apresentados e um deles, o de cálculo baseado em tabela, tem seu projeto discutido com detalhes. O desenvolvimento de uma aplicação é...
Um estudo sobre a ordenação de classes e aspectos para minimização de stubs em teste de integração é apresentado. Um modelo de tipos de dependência entre classes e aspectos é definido a partir das construções sintáticas e da semântica do AspectJ. A estratégia de Briand et al. [2003] é usada em dois casos de integração: a integração incremental, que...
Availability of testing tools provides better quality and more producti-vity for the testing activities. In this paper, we present a tool for functional test of programs Java. The tool, denominated J-FuT, supports various functional tes-ting criteria and offers coverage analysis based in those criteria. Aspect-oriented Programming is used in the ph...
A study about ordering classes and aspects to minimize stubs in integration tests is presented. A dependence type model among classes and aspects is defined considering the syntax constructions and the semantics of AspectJ. The strategy proposed by Briand et al. [2003] is used in two cases of integration: the incremental integration, which order cl...
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 exempl...
Neste artigo é apresentada uma abordagem de teste estrutural de unidade para programas orientados a aspectos. Um modelo de fluxo de controle orientado a aspectos é definido a partir do bytecode (código objeto de Java) resultante do processo de compilação/combinação de programas escritos na linguagem AspectJ – uma extensão da linguagem Java para a p...
A maioria dos sistemas Orientado a Objetos (OO) tem em seu código fonte requisitos não funcionais entrelaçados com os requisitos funcionais. Assim, há dificuldade na manutenção e na expansão desses sistemas. o processo, proposto neste artigo, denominado Aspecting auxilia a elicitação dos requisitos não funcionais do código fonte, chamados de intere...
An important issue that contributes to the complexity of object-oriented 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. A process for identification of hot spots in an analysis pattern language is proposed. Several types of hot spots are...