343 research outputs found
Model Matching Challenge: Benchmarks for Ecore and BPMN Diagrams
In the last couple of years, Model Driven Engineering (MDE) gained a
prominent role in the context of software engineering. In the MDE paradigm,
models are considered first level artifacts which are iteratively developed by
teams of programmers over a period of time. Because of this, dedicated tools
for versioning and management of models are needed. A central functionality
within this group of tools is model comparison and differencing. In two
disjunct research projects, we identified a group of general matching problems
where state-of-the-art comparison algorithms delivered low quality results. In
this article, we will present five edit operations which are the cause for
these low quality results. The reasons why the algorithms fail, as well as
possible solutions, are also discussed. These examples can be used as
benchmarks by model developers to assess the quality and applicability of a
model comparison tool for a given model type.Comment: 7 pages, 7 figure
Mining domain-specific edit operations from model repositories with applications to semantic lifting of model differences and change profiling
Model transformations are central to model-driven software development. Applications of model transformations include creating models, handling model co-evolution, model merging, and understanding model evolution. In the past, various (semi-)
automatic approaches to derive model transformations from meta-models or from
examples have been proposed. These approaches require time-consuming handcrafting or the recording of concrete examples, or they are unable to derive complex
transformations. We propose a novel unsupervised approach, called Ockham, which
is able to learn edit operations from model histories in model repositories. Ockham
is based on the idea that meaningful domain-specifc edit operations are the ones
that compress the model diferences. It employs frequent subgraph mining to discover frequent structures in model diference graphs. We evaluate our approach in
two controlled experiments and one real-world case study of a large-scale industrial
model-driven architecture project in the railway domain. We found that our approach
is able to discover frequent edit operations that have actually been applied before.
Furthermore, Ockham is able to extract edit operations that are meaningful—in the
sense of explaining model diferences through the edit operations they comprise—to
practitioners in an industrial setting. We also discuss use cases (i.e., semantic lifting of model diferences and change profles) for the discovered edit operations in
this industrial setting. We fnd that the edit operations discovered by Ockham can be
used to better understand and simulate the evolution of models
A Case Study in Refactoring Functional Programs
Refactoring is the process of redesigning existing code without changing its functionality. Refactoring has recently come to prominence in the OO community. In this paper we explore the prospects for refactoring functional programs. Our paper centres on the case study of refactoring a 400 line Haskell program written by one of our students. The case study illustrates the type and variety of program manipulations involved in refactoring. Similarly to other program transformations, refactorings are based on program equivalences, and thus ultimately on language semantics. In the context of functional languages, refactorings can be based on existing theory and program analyses. However, the use of program transformations for program restructuring emphasises a different kind of transformation from the more traditional derivation or optimisation: characteristically, they often require wholesale changes to a collection of modules, and although they are best controlled by programmers, their application may require nontrivial semantic analyses. The paper also explores the background to refactoring, provides a taxonomy for describing refactorings and draws some conclusions about refactoring for functional programs
Statistical analysis and simulation of design models evolution
Tools, algorithms and methods in the context of
Model-Driven Engineering (MDE) have to be assessed,
evaluated and tested with regard to different aspects
such as correctness, quality, scalability and efficiency.
Unfortunately, appropriate test models are scarcely
available and those which are accessible often lack
desired properties.
Therefore, one needs to resort to artificially generated
test models in practice.
Many services and features of model versioning systems are
motivated from the collaborative development paradigm.
Testing such services does not require single models, but
rather pairs of models, one being derived from the other
one by applying a known sequence of edit steps.
The edit operations used to modify the models should be
the same as in usual development
environments, e.g. adding, deleting and changing of
model elements in visual model editors.
Existing model generators are motivated from the
testing of model transformation engines,
they do not consider the true nature of evolution
in which models are evolved through iterative editing steps.
They provide no or very little control over the
generation process and they can generate only single models
rather than model histories.
Moreover, the generation of stochastic and other properties
of interest also are not supported in the existing approaches.
Furthermore, blindly generating models through random
application of edit operations does not yield useful models,
since the generated models are not (stochastically) realistic
and do not reflect true properties of evolution in real software
systems.
Unfortunately, little is known about how models of
real software systems evolve over time, what are the properties
and characteristics of evolution, how one can mathematically formulate
the evolution and simulate it.
To address the previous problems, we introduce a new general
approach which facilitates generating (stochastically) realistic
test models for model differencing tools and tools for analyzing
model histories.
We propose a model generator which addresses
the above deficiencies and generates or modifies models by
applying proper edit operations.
Fine control mechanisms for the generation process
are devised and the generator supports stochastic and other
properties of interest in the generated models.
It also can generate histories, i.e. related sequences,
of models.
Moreover, in our approach we provide a methodological framework for
capturing, mathematically representing and simulating the evolution
of real design models.
The proposed framework is able to capture the evolution in terms of
edit operations applied between revisions.
Mathematically, the representation of evolution is based on
different statistical distributions as well as different
time series models.
Forecasting, simulation and generation of stochastically realistic
test models are discussed in detail.
As an application, the framework is applied to the evolution of design
models obtained from sample a set of carefully selected Java systems.
In order to study the the evolution of design models,
we analyzed 9 major Java projects which have at least 100 revisions.
We reverse engineered the design models from the Java source code
and compared consecutive revisions of the design models.
The observed changes were expressed in terms of two
sets of edit operations.
The first set consists of
75 low-level graph edit operations, e.g. add, delete, etc.
of nodes and edges of the abstract syntax graph of the models.
The second set consists of
188 high-level (user-level) edit operations which are
more meaningful from a developer’s point of view and
are frequently found in visual model editors.
A high-level operation typically comprises several
low-level operations and is considered as one user action.
In our approach, we mathematically formulated the pairwise evolution,
i.e. changes between each two subsequent revisions,
using statistical models (distributions).
In this regard, we initially considered many distributions
which could be promising in modeling the frequencies of the
observed low-level and high-level changes.
Six distributions were very successful in modeling the changes
and able to model the evolution with very good rates of success.
To simulate the pairwise evolution, we studied random variate
generation algorithms of our successful distributions
in detail.
For four of our distributions which no tailored algorithms
existed, we indirectly generated their random variates.
The chronological (historical) evolution of design models
was modeled using three kinds of time series models,
namely ARMA, GARCH and mixed ARMA-GARCH.
The comparative performance of the time series models for
handling the dynamics of evolution as well as accuracies of their
forecasts was deeply studied.
Roughly speaking, our studies show that mixed ARMA-GARCH
models are superior to other models.
Moreover, we discuss the simulation aspects of
our proposed time series models in detail.
The knowledge gained through statistical analysis
of the evolution was then used in our test model generator
in order to generate more realistic test models for
model differencing, model versioning, history analysis tools,
etc.Im Kontext der modellgetriebenen Entwicklung müssen Werkzeuge, Algorithmen und Methoden bewertet, evaluiert und getestet werden. Dabei spielen verschiedene Aspekte wie Korrektheit, Qualität, Skalierbarkeit und Effizienz eine grosse Rolle. Problematisch dabei ist, dass geeignete Testmodelle nur spärlich verfügbar sind. Verfügbare Modelle weisen darüber hinaus die für Evaluationszwecke gewünschten Eigenschaften oft nicht auf. Aus diesem Grund muss in der Praxis auf künstlich erzeugte Testmodelle zurückgegriffen werden.
Viele der Funktionalitäten von Modellversionierungssystemen sind motiviert von den Paradigmen der kollaborativen (Software) Entwicklung. Für das Testen derartiger Funktionalitäten braucht man keine einzelnen Modelle, sondern Paare von Modellen, bei denen das Zweite durch Anwendungen einer bekannten Sequenz von Editierschritten auf das Erste erzeugt wird. Die genutzten Editieroperationen sollten dabei die gleichen sein, die bei den typischen Entwicklungsumgebungen angewendet werden, beispielsweise das Hinzufügen, Löschen oder Verändern von Modellelementen in visuellen Editoren. Derzeit existierende Modellgeneratoren sind motiviert durch das Testen von Modelltransformationsumgebungen. Dabei berücksichtigen sie nicht die wahre Natur der (Software) Evolution, bei der die Modelle iterativ durch die kontrollierte Anwendung einzelner Editierschritte verändert werden. Dabei bieten sie nur wenig Kontrolle über den Prozess der Generierung und sie können nur einzelne Modelle,
aber keine Modellhistorien, erzeugen. Darüber hinaus werden gewünschte Eigenschaften, beispielsweise eine stochastisch kontrollierte Erzeugung, von den derzeit existierenden Ansätzen nicht unterstützt.
Aufgrund der (blinden) zufallsgesteuerten Anwendungen von
Editieroperationen werden keine brauchbaren, (stochastisch)
realistischen Modelle generiert. Dadurch repräsentieren
sie keine Eigenschaften von Evolutionen in echten Systemen.
Leider gibt es wenig wissenschaftliche Erkenntnis darĂĽber,
wie Modelle in realen Systemen evolvieren,
was die Eigenschaften und Charakteristika einer solchen
Evolution sind und wie man diese mathematisch formulieren und
simulieren kann.
Um die zuvor genannten Probleme zu adressieren, stellen wir
einen allgemeinen Ansatz zur (stochastischen) Generierung
realer Testmodelle zur Verwendung in Differenzwerkzeugen und
Historienanalysen vor. Unser Generator generiert oder
modifiziert Modelle durch geeignete Anwendung
von Editieroperationen. Sowohl feine Kontrollmechanismen fĂĽr
den Generierungsprozess als auch die UnterstĂĽtzung von
stochastischen und anderen interessanten Eigenschaften
in den generierten Modellen zeichnen den Generator aus.
Zusätzlich kann dieser Historien, d.h. abhängige/zusammenhängende
Ă„nderungssequenzen, von Modellen generieren. Unser Ansatz
bietet eine methodische Umgebung fĂĽr das Aufzeichnen,
die mathematische Repräsentation als auch das Simulieren
von Evolutionen realer Modelle. Die vorgestellte Umgebung
kann die Evolution in Form von Editieroperationen, angewandt
zwischen Revisionen, erfassen. Die mathematische
Repräsentation der Evolution basiert sowohl auf verschiedenen
stochastischen Verteilungen als auch unterschiedlichen
Modellen von Zeitreihen. Das Vorhersagen, Simulieren und Generieren
von stochastisch realistischen Testmodellen wird im Detail
diskutiert. Als praktische Anwendung setzen wir unsere
Umgebung im Rahmen einer Modellevolution
von sorgfältig ausgewählten Java-Systemen ein.
Im Rahmen dieser Arbeit wurde die Evolution von Design Modellen auf Basis von neun Open-Source Java Projekten analysiert. Für jedes Projekt lagen mindestens 100 Revisionen vor, aus deren Quelltexten Design Modelle nachkonstruiert wurden. Die dabei gefunden Änderungen konnten anhand zwei verschiedener Mengen von Editieroperationen beschrieben werden. Die erste Menge besteht aus 75 einfachen Graph-Operationen. Beispiele dafür sind das Hinzufügen, Löschen, etc. einzelner Knoten und Kanten im abstrakten Syntax-Graphen der Modelle. Die zweite Menge enthält 188 komplexe Editieroperationen. Komplexe Editieroperationen haben für Entwickler eine höhere Aussagekraft, da sie auf dem gewohnten Abstraktionsniveau des Entwicklers angesiedelt und oftmals in visuellen Modelleditoren zu finden sind. Typischerweise besteht eine komplexe Editieroperation dabei aus mehreren einfachen Operationen, wobei die Ausführung der komplexen Operation immer als eine einzelne Aktion angesehen wird.
Um die schrittweise Evolution, also die Veränderung aufeinanderfolgender Revisionen, zu analysieren betrachteten wir verschiedene statistische Modelle (Distributionen). Von allen betrachteten Distributionen erwiesen sich sechs als sehr erfolgreich dabei die beobachteten Veränderungen und die Evolution der Modelle auf Basis einfacher und komplexer Editieroperationen zu beschreiben. Um die Evolution weiter simulieren zu können, betrachteten wir Algorithmen für die Erstellung von Zufallsvariaten der erfolgreichen Distributionen. Für vier der Distributionen, für die keine derartigen Algorithmen verfügbar waren, wurden die Zufallsvariate indirekt abgeleitet.
Die chronologische (historische) Evolution von Modellen wurde
auf Basis von drei Zeitreihen nachgebildet, konkret ARMA, GARCH und einer Mischung
aus ARMA-GARCH. Sowohl deren Leistungsfähigkeit, Evolutionsdynamik darstellen zu können, als auch
die Genauigkeit von Vorhersagen wurden im Detail analysiert und gegenĂĽbergestellt. Grob gesagt zeigen unsere
Ergebnisse, dass ARMA-GARCH Modelle besser als die übrigen geeignet sind. Zusätzlich diskutieren wir ausführlich
die Simulationsmöglichkeiten aller vorgestellten Zeitreihen.
Die Ergebnisse unserer statistischen Analysen der Evolution
haben wir dann in unserem Testmodell Generator eingesetzt. So konnten wir realistische
Testmodelle generieren, die fĂĽr Modelldifferenz-, Versionierungs- und Historienanalysewerkzeuge
u.s.w. verwendet werden können
Semi-Automatische Deduktion von Feature-Lokalisierung während der Softwareentwicklung: Masterarbeit
Despite extensive research on software product lines in the last decades, ad-hoc clone-and-own development is still the dominant way for introducing variability to software systems. Therefore, the same issues for which software product lines were developed in the first place are still imminent in clone-and-own development: Fixing bugs consistently throughout clones and avoiding duplicate implementation effort is extremely diffcult as similarities and differences between variants are unknown.
In order to remedy this, we enhance clone-and-own development with techniques from product-line engineering for targeted variant synchronisation such that domain knowledge can be integrated stepwise and without obligation. Contrary to retroactive feature mapping recovery (e.g., mining) techniques, we infer feature-to-code mappings directly during software development when concrete domain knowledge is present.
In this thesis, we focus on the first step towards targeted synchronisation between variants: the recording of feature mappings. By letting developers specify on which feature they are working on, we derive feature mappings directly during software development. We ensure syntactic validity of feature mappings and variant synchronisation by implementing disciplined annotations through abstract syntax trees. To bridge the mismatch between change classification in the implementation and abstract layer, we synthesise semantic edits on abstract syntax trees. We show that our derivation can be used to reproduce variability-related real-world code changes and compare it to the feature mapping derivation of the projectional variation control system VTS by Stanciulescu et al.Trotz umfangreicher Forschung zu Software-Produktlinien in den letzten Jahrzehnten ist Clone-and-Own immer noch der dominierende Ansatz zur Einführung von Variabilität in Softwaresystemen. Daher stehen bei Clone-and-Own immer noch die gleichen Probleme im Vordergrund, für die Software-Produktlinien überhaupt erst entwickelt wurden: Die konsistente Behebung von Fehlern in allen Klonen und die Vermeidung von doppeltem Implementierungsaufwand sind äußerst schwierig, da Ähnlichkeiten und Unterschiede zwischen den Varianten unbekannt sind.
Um hier Abhilfe zu schaffen, erweitern wir die Clone-and-Own-Entwicklung mit Techniken aus der Produktlinien-Entwicklung zur gezielten Synchronisierung von Varianten, sodass Entwickler ihr Domänenwissen schrittweise und unverbindlich integrieren können. Im Gegensatz zu nachträglich arbeitenden Feature-Mapping-Recovery- oder auch Mining-Techniken, leiten wir Zuordungen von Features zu Quellcode direkt während der Softwareentwicklung ab, wenn konkretes Domänenwissen vorhanden ist.
In dieser Arbeit entwickeln wir den ersten Schritt zur gezielten Synchronisation von Varianten: die Aufzeichnung von Feature-Mappings. Indem Entwickler spezifizieren an welchem Feature sie arbeiten, leiten wir Feature-Mappings direkt während der Softwareentwicklung ab. Wir stellen die syntaktische Korrektheit von Feature-Mappings und der Synchronisation von Varianten sicher, indem wir disziplinierte Annotationen mithilfe von abstrakten Syntaxbäumen implementieren. Um die Diskrepanz der Klassifizierung von Änderungen zwischen der Implementierungs- und der Abstraktionsschicht zu überbrücken, synthetisieren wir Semantic Edits auf abstrakten Syntaxbäumen. Wir zeigen, dass unsere Ableitung von Feature-Mappings in der Lage ist reale Codeänderungen zu reproduzieren und vergleichen sie mit der Feature-Mapping-Ableitung des Variationskontrollsystems VTS von Stanciulescu et al
Melis: an incremental method for the lexical annotation of domain ontologies
In this paper, we present MELIS (Meaning Elicitation and Lexical Integration System), a method and a software tool for enabling an incremental process of automatic annotation of local schemas (e.g. relational database schemas, directory trees) with lexical information. The distinguishing and original feature of MELIS is the incremental process: the higher the number of schemas which are processed, the more background/domain knowledge is cumulated in the system (a portion of domain ontology is learned at every step), the better the performance of the systems on annotating new schemas.MELIS has been tested as component of MOMIS-Ontology Builder, a framework able to create a domain ontology representing a set of selected data sources, described with a standard W3C language wherein concepts and attributes are annotated according to the lexical reference database.We describe the MELIS component within the MOMIS-Ontology Builder framework and provide some experimental results of ME LIS as a standalone tool and as a component integrated in MOMIS
Flexible Views for View-based Model-driven Development
Modern software development faces the problem of fragmentation of information across heterogeneous artefacts in different modelling and programming languages. In this dissertation, the Vitruvius approach for view-based engineering is presented. Flexible views offer a compact definition of user-specific views on software systems, and can be defined the novel ModelJoin language. The process is supported by a change metamodel for metamodel evolution and change impact analysis
- …