5,944 research outputs found
Metamodel Instance Generation: A systematic literature review
Modelling and thus metamodelling have become increasingly important in
Software Engineering through the use of Model Driven Engineering. In this paper
we present a systematic literature review of instance generation techniques for
metamodels, i.e. the process of automatically generating models from a given
metamodel. We start by presenting a set of research questions that our review
is intended to answer. We then identify the main topics that are related to
metamodel instance generation techniques, and use these to initiate our
literature search. This search resulted in the identification of 34 key papers
in the area, and each of these is reviewed here and discussed in detail. The
outcome is that we are able to identify a knowledge gap in this field, and we
offer suggestions as to some potential directions for future research.Comment: 25 page
Class mutation operators for C++ object-oriented systems
Mutation testing is a fault injection testing technique around which a great variety of studies and tools for different programming languages have been developed. Nevertheless, the mutation testing research with respect to C++ is pending. This paper proposes a set of class mutation operators related to this language and its particular object-oriented (OO) features. In addition, an implementation technique to apply mutation testing based on the traversal of the abstract syntax tree (AST) is presented. Finally, an experiment is conducted to study the operator behaviour with different C++ programs, suggesting their usefulness in the creation of complete test suites. The analysis includes a Web service (WS) library, one of the domains where this technique can prove useful, considering its challenging testing phase and that C++ is still a reference language for critical distributed systems WS
Class mutation operators for C++ object-oriented systems
Mutation testing is a fault injection testing technique around which a great variety of studies and tools for different programming languages have been developed. Nevertheless, the mutation testing research with respect to C++ is pending. This paper proposes a set of class mutation operators related to this language and its particular object-oriented (OO) features. In addition, an implementation technique to apply mutation testing based on the traversal of the abstract syntax tree (AST) is presented. Finally, an experiment is conducted to study the operator behaviour with different C++ programs, suggesting their usefulness in the creation of complete test suites. The analysis includes a Web service (WS) library, one of the domains where this technique can prove useful, considering its challenging testing phase and that C++ is still a reference language for critical distributed systems WS
Towards easy program migration using language virtualization
International audienceMigrating programs between language versions is a daunting task. A developer writes a program in a particular version of a language and cannot foresee future language changes. In this article, we explore a solution to gradual program migration based on virtualization at the programming language level. Our language virtualization approach adds a backwards-compatibility layer on top of a recent language version, allowing developers to load and run old programs on the more recent infrastructure. Developers are then able to migrate the program to the new language version or are able to run it as it is. Our virtualization technique is based on a dynamic module implementation and code intercession techniques. Migrated and non-migrated parts co-exist in the meantime allowing an incremental migration procedure. We validate it by migrating legacy Pharo programs, MuTalk and Fuel
Pluggable type-checking for custom type qualifiers in Java
We have created a framework for adding custom type qualifiers to the Javalanguage in a backward-compatible way. The type system designer definesthe qualifiers and creates a compiler plug-in that enforces theirsemantics. Programmers can write the type qualifiers in their programs andbe informed of errors or assured that the program is free of those errors.The system builds on existing Java tools and APIs.In order to evaluate our framework, we have written four type-checkersusing the framework: for a non-null type system that can detect andprevent null pointer errors; for an interned type system that can detectand prevent equality-checking errors; for a reference immutability typesystem, Javari, that can detect and prevent mutation errors; and for areference and object immutability type system, IGJ, that can detect andprevent even more mutation errors. We have conducted case studies usingeach checker to find real errors in existing software. These case studiesdemonstrate that the checkers and the framework are practical and useful
Lightweight Multilingual Software Analysis
Developer preferences, language capabilities and the persistence of older
languages contribute to the trend that large software codebases are often
multilingual, that is, written in more than one computer language. While
developers can leverage monolingual software development tools to build
software components, companies are faced with the problem of managing the
resultant large, multilingual codebases to address issues with security,
efficiency, and quality metrics. The key challenge is to address the opaque
nature of the language interoperability interface: one language calling
procedures in a second (which may call a third, or even back to the first),
resulting in a potentially tangled, inefficient and insecure codebase. An
architecture is proposed for lightweight static analysis of large multilingual
codebases: the MLSA architecture. Its modular and table-oriented structure
addresses the open-ended nature of multiple languages and language
interoperability APIs. We focus here as an application on the construction of
call-graphs that capture both inter-language and intra-language calls. The
algorithms for extracting multilingual call-graphs from codebases are
presented, and several examples of multilingual software engineering analysis
are discussed. The state of the implementation and testing of MLSA is
presented, and the implications for future work are discussed.Comment: 15 page
Geometric guides for interactive evolutionary design
This thesis describes the addition of novel Geometric Guides to a generative Computer-Aided Design (CAD) application that supports early-stage concept generation. The application generates and evolves abstract 3D shapes, used to inspire the form of new product concepts. It was previously a conventional Interactive Evolutionary system where users selected shapes from evolving populations. However, design industry users wanted more control over the shapes, for example by allowing the system to influence the proportions of evolving forms. The solution researched, developed, integrated and tested is a more cooperative human-machine system combining classic user interaction with innovative geometric analysis.
In the literature review, different types of Interactive Evolutionary Computation (IEC), Pose Normalisation (PN), Shape Comparison, and Minimum-Volume Bounding Box approaches are compared, with some of these technologies identified as applicable for this research.
Using its Application Programming Interface, add-ins for the Siemens NX CAD system have been developed and integrated with an existing Interactive Evolutionary CAD system. These add-ins allow users to create a Geometric Guide (GG) at the start of a shape exploration session. Before evolving shapes can be compared with the GG, they must be aligned and scaled (known as Pose Normalisation in the literature).
Computationally-efficient PN has been achieved using geometric functions such as Bounding Box for translation and scaling, and Principle Axes for the orientation. A shape comparison algorithm has been developed that is based on the principle of non-intersecting volumes. This algorithm is also implemented with standard, readily available geometric functions, is conceptually simple, accessible to other researchers and also offers appropriate efficacy.
Objective geometric testing showed that the PN and Shape Comparison methods developed are suitable for this guiding application and can be efficiently adapted to enhance an Interactive Evolutionary Design system. System performance with different population sizes was examined to indicate how best to use the new guiding capabilities to assist users in evolutionary shape searching. This was backed up by participant testing research into two user interaction strategies. A Large Background Population (LBP) approach where the GG is used to select a sub-set of shapes to show to the user was shown to be the most effective.
The inclusion of Geometric Guides has taken the research from the existing aesthetic focused tool to a system capable of application to a wider range of engineering design problems. This system supports earlier design processes and ideation in conceptual design and allows a designer to experiment with ideas freely to interactively explore populations of evolving solutions. The design approach has been further improved, and expanded beyond the previous quite limited scope of form exploration
- …