11 research outputs found

    A research roadmap towards achieving scalability in model driven engineering

    Get PDF
    International audienceAs Model-Driven Engineering (MDE) is increasingly applied to larger and more complex systems, the current generation of modelling and model management technologies are being pushed to their limits in terms of capacity and eciency. Additional research and development is imperative in order to enable MDE to remain relevant with industrial practice and to continue delivering its widely recognised productivity , quality, and maintainability benefits. Achieving scalabil-ity in modelling and MDE involves being able to construct large models and domain-specific languages in a systematic manner, enabling teams of modellers to construct and refine large models in a collaborative manner, advancing the state of the art in model querying and transformations tools so that they can cope with large models (of the scale of millions of model elements), and providing an infrastructure for ecient storage, indexing and retrieval of large models. This paper attempts to provide a research roadmap for these aspects of scalability in MDE and outline directions for work in this emerging research area

    Evaluation of Optimization Strategies for Incremental Graph Queries

    Get PDF
    The last decade brought considerable improvements in distributed storage and query technologies, known as NoSQL systems. These systems provide quick evaluation of simple retrieval operations and are able to answer certain complex queries in a scalable way, albeit not instantly. Providing scalability and quick response times at the same time for querying large data sets is still a challenging task. Evaluating complex graph queries is particularly difficult, as it requires lots of join, antijoin and filtering operations. This paper presents optimization techniques used in relational database systems and applies them on graph queries. We evaluate various query plans on multiple datasets and discuss the effect of different optimization techniques

    Model-driven engineering of an openCypher engine: using graph queries to compile graph queries

    Get PDF
    Graph database systems are increasingly adapted for storing and processing heterogeneous network-like datasets. Many challenging applications with near real-time requirements - such as financial fraud detection, on-the-fly model validation and root cause analysis - can be formalised as graph problems and tackled with graph databases efficiently. However, as no standard graph query language has yet emerged, users are subjected to the possibility of vendor lock-in. The openCypher group aims to define an open specification for a declarative graph query language. However, creating an openCypher-compatible query engine requires significant research and engineering efforts. Meanwhile, model-driven language workbenches support the creation of domain-specific languages by providing high-level tools to create parsers, editors and compilers. In this paper, we present an approach to build a compiler and optimizer for openCypher using model-driven technologies, which allows developers to define declarative optimization rules

    Evaluation of Optimization Strategies for Incremental Graph Queries

    Full text link

    CoqTL: A Coq DSL for Rule-Based Model Transformation

    Get PDF
    International audienc

    Adaptive Graph Pattern Matching for Model Transformations using Model-sensitive Search Plans

    Get PDF
    The current paper makes two contributions for the graph pattern matching problem of model transformation tools. First, model-sensitive search plan generation is proposed for pattern traversal (as an extension to traditional multiplicity and type considerations of existing tools) by estimating the expected performance of search plans on typical instance models that are available at transformation design time. Then, an adaptive approach for graph pattern matching is presented, where the optimal search plan can be selected from previously generated search plans at run-time based on statistical data collected from the current instance model under transformation

    Graph-based software specification and verification

    Get PDF
    The (in)correct functioning of many software systems heavily influences how\ud we qualify our daily lives. Software companies as well as academic computer\ud science research groups spend much effort on applying and developing techniques for improving the correctness of software systems. In this dissertation\ud we focus on using and developing graph-based techniques to specify and verify\ud the behaviour of software systems in general, and object-oriented systems more\ud specifically. We elaborate on two ways to improve the correctness (and thereby\ud the quality) of such systems.\ud Firstly, we investigate the potential of using the graph transformation tech-\ud nique to formally specify the dynamic semantics of (object-oriented) program-\ud ming languages. Those semantics are typically specified in natural language.\ud Such specifications are often hard to understand or even ambiguous. We show\ud how the graph transformation framework provides formal and intuitive means\ud for their specification.\ud Secondly, we develop techniques to verify systems of which the behaviour is\ud specified as graph production systems. For the verification of such systems, we\ud introduce an algorithm that combines a well-known on-the-\ud y model checking\ud algorithm with ideas from bounded model checking. One of the main prob-\ud lems of model checking is the state-explosion problem. This problem is often\ud tackled using partial order reduction techniques. Unfortunately, many such\ud techniques are based on assumptions that do not hold for graph production sys-\ud tems. Therefore, we develop a new dynamic partial order reduction algorithm\ud based on selecting so-called probe sets and prove its correctness.\ud Most of the techniques developed in this dissertation have been implemented\ud in the graph transformation tool GROOVE

    DĂ©veloppement logiciel par transformation de modĂšles

    Get PDF
    La recherche en gĂ©nie logiciel a depuis longtemps tentĂ© de mieux comprendre le processus de dĂ©veloppement logiciel, minimalement, pour en reproduire les bonnes pratiques, et idĂ©alement, pour pouvoir le mĂ©caniser. On peut identifier deux approches majeures pour caractĂ©riser le processus. La premiĂšre approche, dite transformationnelle, perçoit le processus comme une sĂ©quence de transformations prĂ©servant certaines propriĂ©tĂ©s des donnĂ©es Ă  l’entrĂ©e. Cette idĂ©e a Ă©tĂ© rĂ©cemment reprise par l’architecture dirigĂ©e par les modĂšles de l’OMG. La deuxiĂšme approche consiste Ă  rĂ©pertorier et Ă  codifier des solutions Ă©prouvĂ©es Ă  des problĂšmes rĂ©currents. Les recherches sur les styles architecturaux, les patrons de conception, ou les cadres d’applications s’inscrivent dans cette approche. Notre travail de recherche reconnaĂźt la complĂ©mentaritĂ© des deux approches, notamment pour l’étape de conception: dans le cadre du dĂ©veloppement dirigĂ© par les modĂšles, nous percevons l’étape de conception comme l’application de patrons de solutions aux modĂšles reçus en entrĂ©e. Il est coutume de dĂ©finir l’étape de conception en termes de conception architecturale, et conception dĂ©taillĂ©e. La conception architecturale se prĂ©occupe d’organiser un logiciel en composants rĂ©pondant Ă  un ensemble d’exigences non-fonctionnelles, alors que la conception dĂ©taillĂ©e se prĂ©occupe, en quelque sorte, du contenu de ces composants. La conception architecturale s’appuie sur des styles architecturaux qui sont des principes d’organisation permettant d’optimiser certaines qualitĂ©s, alors que la conception dĂ©taillĂ©e s’appuie sur des patrons de conception pour attribuer les responsabilitĂ©s aux classes. Les styles architecturaux et les patrons de conception sont des artefacts qui codifient des solutions Ă©prouvĂ©es Ă  des problĂšmes rĂ©currents de conception. Alors que ces artefacts sont bien documentĂ©s, la dĂ©cision de les appliquer reste essentiellement manuelle. De plus, les outils proposĂ©s n’offrent pas un support adĂ©quat pour les appliquer Ă  des modĂšles existants. Dans cette thĂšse, nous nous attaquons Ă  la conception dĂ©taillĂ©e, et plus particuliĂšrement, Ă  la transformation de modĂšles par application de patrons de conception, en partie parce que les patrons de conception sont moins complexes, et en partie parce que l’implĂ©mentation des styles architecturaux passe souvent par les patrons de conception. Ainsi, nous proposons une approche pour reprĂ©senter et appliquer les patrons de conception. Notre approche se base sur la reprĂ©sentation explicite des problĂšmes rĂ©solus par ces patrons. En effet, la reprĂ©sentation explicite du problĂšme rĂ©solu par un patron permet : (1) de mieux comprendre le patron, (2) de reconnaĂźtre l’opportunitĂ© d’appliquer le patron en dĂ©tectant une instance de la reprĂ©sentation du problĂšme dans les modĂšles du systĂšme considĂ©rĂ©, et (3) d’automatiser l’application du patron en la reprĂ©sentant, de façon dĂ©clarative, par une transformation d’une instance du problĂšme en une instance de la solution. Pour vĂ©rifier et valider notre approche, nous l’avons utilisĂ©e pour reprĂ©senter et appliquer diffĂ©rents patrons de conception et nous avons effectuĂ© des tests pratiques sur des modĂšles gĂ©nĂ©rĂ©s Ă  partir de logiciels libres.Software engineering researchers have long tried to understand the software process development to mechanize it or at least to codify its good practices. We identify two major approaches to characterize the process. The first approach—known as transformational—sees the process as a sequence of property-preserving transformations. This idea was recently adopted by the OMG’s model-driven architecture (MDA). The second approach consists in identifying and codifying proven solutions to recurring problems. Research on architectural styles, frameworks and design patterns are part of this approach. Our research recognizes the complementarity of these two approaches, in particular in the design step. Indeed within the model-driven development context, we view software design as the process of applying codified solution patterns to input models. Software design is typically defined in terms of architectural design and detailed design. Architectural design aims at organizing the software in modules or components that meet a set of non-functional requirements while detailed design is—in some way—concerned by the contents of the identified components. Architectural design relies on architectural styles which are principles of organization to optimize certain quality requirements, whereas detailed design relies on design patterns to assign responsibilities to classes. Both architectural styles and design patterns are design artifacts that encode proven solutions to recurring design problems. While these design artifacts are documented, the decision to apply them remains essentially manual. Besides, once a decision has been made to use a design artifact, there is no adequate support to apply it to existing models. As design patterns present an ‘‘easier’’ problem to solve, and because architectural styles implementation relies on design patterns, our strategy for addressing these issues was to try to solve the problem for design patterns first, and then tackle architectural styles. Hence, in this thesis, we propose an approach for representing and applying design patterns. Our approach is based on an explicit representation of the problems solved by design patterns. Indeed, and explicit representation of the problem solved by a pattern enables to: 1) better understand the pattern, 2) recognize the opportunity of applying the pattern by matching the representation of the problem against the models of the considered system, and 3) specify declaratively the application of the pattern as a transformation of an instance of the problem into an instance of the solution. To verify and validate the proposed approach, we used it to represent and apply several design patterns. We also conducted practical tests on models generated from open source systems
    corecore