21 research outputs found
Vidock: a Tool for Impact Analysis of Aspect Weaving on Test Cases
Abstract. The addition of a cross-cutting concern in a program, through aspect weaving, has an impact on its existing behaviors. If test cases exist for the program, it is necessary to identify the subset of test cases that trigger the behavior impacted by the aspect. This subset serve to check that interactions between aspects and the base program do not introduce some unexpected behavior. Vidock performs a static analysis when aspects are compiled with a program to select the test cases impacted by the aspects. It leverages the pointcut descriptor to locate the set of methods impacted by aspects and then selects the test cases that can reach an impacted method. This static analysis has to perform overapproximations when the actual point where the aspect is executed can be computed only at runtime and when test cases call polymorphic objects. We measure the occurrence of these assumptions in 4986 projects containing 498 aspects to show they have a limited impact. Then, we run experiments with Vidock on 5 cases studies and analyze the impacts that different types of aspects can have on test cases.
Engineering design and mechatronics - the Schemebuilder Project.
The paper describes the development of a software design aid for use at the conceptual stage of engineering design. It is intended for use in the design of mechatronic products but has wider potential uses. Early approaches were based on function structures and tables of options and the system that evolved allows the assembly of schemes linked by matching their input and output ports. A database of components is provided which can be accessed via different indexes and the designer can easily create and compare alternative schemes at the concept stage. A bond graph approach is used to define the interconnections between components. This allows correct port matching but also provides for future development such as constraint propagation through the design and links to simulation tools
A Middleware Layer for Flexible and Cost-Efficient Multi-tenant Applications
Part 7: Security and InteroperabilityInternational audienceApplication-level multi-tenancy is an architectural design principle for Software-as-a-Service applications to enable the hosting of multiple customers (or tenants) by a single application instance. Despite the operational cost and maintenance benefits of application-level multi-tenancy, the current middleware component models for multi-tenant application design are inflexible with respect to providing different software variations to different customers.In this paper we show that this limitation can be solved by a multi-tenancy support layer that combines dependency injection with middleware support for tenant data isolation. Dependency injection enables injecting different software variations on a per tenant basis, while dedicated middleware support facilitates the separation of data and configuration metadata between tenants. We implemented a prototype on top of Google App Engine and we evaluated by means of a case study that the improved flexibility of our approach has little impact on operational costs and upfront application engineering costs
Evaluating Support for Features in Advanced Modularization Technologies
Abstract. A software product-line is a family of related programs. Each program is defined by a unique combination of features, where a feature is an increment in program functionality. Modularizing features is difficult, as feature-specific code often cuts across class boundaries. New modularization technologies have been proposed in recent years, but their support for feature modules has not been thoroughly examined. In this paper, we propose a variant of the expression problem as a canonical problem in product-line design. The problem reveals a set of technology-independent properties that feature modules should exhibit. We use these properties to evaluate five technologies: model of feature composition that is technology-independent and that relates compositional reasoning with algebraic reasoning 1.