"... This report summarises the results of the discussions of a working group on model transformation of the Dagstuhl Seminar on Language Engineering for Model-Driven Software Development. The main contribution is a taxonomy of model transformation. This taxonomy can be used to help developers in decidin ..."

This report summarises the results of the discussions of a working group on model transformation of the Dagstuhl Seminar on Language Engineering for Model-Driven Software Development. The main contribution is a taxonomy of model transformation. This taxonomy can be used to help developers in deciding which model transformation approach is best suited to deal with a particular problem.

by
Jan Hannemann
- In AOSD ’05: Proceedings of the 4th international conference on Aspect-oriented software development, 2005

"... In presenting this thesis in partial fulfilment of the requirements for an advanced degree at the University of British Columbia, I agree that the Library shall make it freely available for reference and study. I further agree that permission for extensive copying of this thesis for scholarly purpos ..."

In presenting this thesis in partial fulfilment of the requirements for an advanced degree at the University of British Columbia, I agree that the Library shall make it freely available for reference and study. I further agree that permission for extensive copying of this thesis for scholarly purposes may be granted by the head of my department or by his or her representatives. It is understood that copying or publication of this thesis for financial gain shall not be allowed without my written permission. Computer Science

...nd the various impact analyses are not and were not intended to be comprehensive, and leave considerable room for improvement. Research efforts in the area of program analysis for refactorings (e.g., =-=[3, 7, 23, 27, 47, 58, 68, 81]-=-) can potentially be utilized in future versions of our tool. Auto-Mapping It is conceivable that the mapping algorithm could be extended with refactoring-specific program analyses to avoid suggesting...

"... A model refactoring is a model transformation that preservers some behavioral properties of a model. Equally important, a model refactoring should only affect a previously chosen subset of the source model. In this paper, we discuss how to define and execute model refactorings as rule-based transfor ..."

A model refactoring is a model transformation that preservers some behavioral properties of a model. Equally important, a model refactoring should only affect a previously chosen subset of the source model. In this paper, we discuss how to define and execute model refactorings as rule-based transformations. We also present an experimental tool to execute these transformations.

...s a semantic interpretation of UML that is amenable to formal analysis. Recent 10sworks in this direction are the CSP formalization presented in [4] and the approach based on graph transformations in =-=[6]-=-. 3.3 Refactoring Diagrams The UML allows the same model element to be represented in several diagrams. This is common in some elements such as classes that can appear in different class diagrams. In ...

"... Previous taxonomies of software evolution have focused on the purpose of the change (i.e., the why) rather than the underlying mechanisms. This paper proposes a taxonomy of software evolution based on the characterizing mechanisms of change and the factors that influence these mechanisms. The tax ..."

Previous taxonomies of software evolution have focused on the purpose of the change (i.e., the why) rather than the underlying mechanisms. This paper proposes a taxonomy of software evolution based on the characterizing mechanisms of change and the factors that influence these mechanisms. The taxonomy is organized into the following logical groupings: temporal properties, objects of change, system properties, and change support. The ultimate goal

"... Refactorings are program transformations that improve the software structure while preserving the external behaviour. In spite of this very useful property, refactorings can still give rise to structural conflicts when parallel evolutions to the same software are made by different developers. This p ..."

Refactorings are program transformations that improve the software structure while preserving the external behaviour. In spite of this very useful property, refactorings can still give rise to structural conflicts when parallel evolutions to the same software are made by different developers. This paper explores this problem of structural evolution conflicts in a formal way by using graph transformation and critical pair analysis. Based on experiments carried out in the graph transformation tool AGG, we show how this formalism can be exploited to detect and resolve refactoring conflicts. Key words: refactoring, restructuring, graph transformation, critical pair analysis, evolution conflicts, parallel changes

...active research domain [9]. Formal approaches have mainly been used to prove that refactorings preserve the behaviour of the program. Graph transformations have also been used to express refactorings =-=[8,12]-=-. To our knowledge, no formal attempt has been made to detect conflicts between refactorings applied in parallel. 7 Discussion In this paper, we explored the problem of detecting and resolving structu...

"... Abstract Graphs are a common means to represent structures in models and meta-models of software systems. In this context, the description of model do-mains by classifying the domain entities and their relations using class diagrams or type graphs has emerged as a very valuable principle. The constr ..."

Abstract Graphs are a common means to represent structures in models and meta-models of software systems. In this context, the description of model do-mains by classifying the domain entities and their relations using class diagrams or type graphs has emerged as a very valuable principle. The constraints that can be imposed by pure typing are, however, relatively weak; it is therefore com-mon practice to enrich type information with structural properties (such as local invariants or multiplicity conditions) or inheritance. In this paper, we show how to formulate structural properties using graph con-straints in type graphs with inheritance, and we show how to translate constrained type graphs with inheritance to equivalent constrained simple type graphs. From existing theory it then follows that graph constraints can be translated into pre-conditions for productions of a typed graph transformation system which ensures those graph constraints. This result can be regarded as a further important step of integrating graph transformation with object-orientation concepts. 1

...ncepts. Application areas for the resulting theory are for instance: operational semantics for object-oriented systems as in [6] (leading to a theory of behavioral verification) and refactoring as in =-=[11]-=- (leading to a formal underpinning). We use an example from the former area as a running example in the paper. The paper is organized as follows: In the next section, we review the basis of integratin...

"... Abstract. Models and model transformations are the core concepts of OMG’s MDA T M approach. Within this approach, most models are derived from the MOF and have a graph-based nature. In contrast, most of the current model transformations are specified textually. To enable a graphical specification of ..."

Abstract. Models and model transformations are the core concepts of OMG’s MDA T M approach. Within this approach, most models are derived from the MOF and have a graph-based nature. In contrast, most of the current model transformations are specified textually. To enable a graphical specification of model transformation rules, this paper proposes to use triple graph grammars as declarative specification formalism. These triple graph grammars can be specified within the FUJABA tool and we argue that these rules can be more easily specified and they become more understandable and maintainable. To show the practicability of our approach, we present how to generate Tefkat rules from triple graph grammar rules, which helps to integrate triple graph grammars with a state of a art model transformation tool and shows the expressiveness of the concept. 1

...18, 19], where the formal foundations of the single pushout (SPO) and double pushout (DPO) approach are reviewed. Currently these approaches have the most impact in the graph transformation community =-=[5, 15, 8]-=-. Application Conditions In complex graph transformation systems it is often necessary to restrict the application of single rules. Therefore, in [20] the concept of positive and negative application ...

"... The aim of this paper is to integrate typed attributed graph transformation with node type inheritance. Borrowing concepts from object oriented systems, the main idea is to enrich the attributed type graph with an inheritance relation and a set of abstract nodes. In this way, a node type inherits th ..."

The aim of this paper is to integrate typed attributed graph transformation with node type inheritance. Borrowing concepts from object oriented systems, the main idea is to enrich the attributed type graph with an inheritance relation and a set of abstract nodes. In this way, a node type inherits the attributes and edges of all its ancestors. Based on these concepts, it is possible to define abstract productions, containing abstract nodes. These productions are node types by the node types in their inheritance clan. Therefore, productions become more compact and suitable for their use in combination with meta-modelling. The main results of this paper show that attributed graph transformation with node type inheritance is fully compatible with the existing concept of typed attributed graph transformation.

"... The technique of refactoring -- restructuring the source-code of an object-oriented program without changing its external behavior -- has been embraced by many object-oriented software developers as a way to accommodate changing requirements. The overall goal of refactoring is to improve the maintai ..."

The technique of refactoring -- restructuring the source-code of an object-oriented program without changing its external behavior -- has been embraced by many object-oriented software developers as a way to accommodate changing requirements. The overall goal of refactoring is to improve the maintainability of software. Unfortunately, it is unclear how specific quality factors are affected. Therefore, this paper proposes a formalism to describe the impact of a representative number of refactorings on an AST representation of the source code, extended with cross-references. We elicitate how internal program quality metrics can be formally defined on top of this program structure representation, and demonstrate how to project the impact of refactorings on these internal program quality metric values in the form of potential drifts or improvements.

"... Descriptive names are crucial to understand code. How-ever, good names are notoriously hard to choose and manu-ally changing a globally visible name can be a maintenance nightmare. Hence, tool support for automated renaming is an essential aid for developers and widely supported by popular developme ..."

Descriptive names are crucial to understand code. How-ever, good names are notoriously hard to choose and manu-ally changing a globally visible name can be a maintenance nightmare. Hence, tool support for automated renaming is an essential aid for developers and widely supported by popular development environments. This work improves on two limitations in current refac-toring tools: too weak preconditions that lead to unsound-ness where names do not bind to the correct declarations after renaming, and too strong preconditions that prevent re-naming of certain programs. We identify two main reasons for unsoundness: complex name lookup rules make it hard to define sufficient preconditions, and new language features require additional preconditions. We alleviate both problems

...traints which are orthogonal to renaming. 7.2 Specification of Refactoring The high-level declarative specification of refactorings has seen quite some interest in the research community. Mens et al. =-=[MDJ02]-=- specify refactorings as transformations on a largely language-independent graph representation of programs that concentrates on those aspects of the source code to be preserved by the refactoring. Th...