Echtzeitsysteme / java-refactoring-ttc

Object-oriented Refactoring of Java Programs using Graph Transformation (TTC'2015)
0 stars 0 forks source link

Program Graph metamodel and Task 1 (Java-to-PG) #2

Closed tsdh closed 9 years ago

tsdh commented 9 years ago

The program graph metamodel contains several classes and references which are not used by the refactoring transformation rules. For example, it seems that TPackage is never used, and neither are the references subpackage/parent, containsClasses, overridden/overriding, overloaded/overloading, access, overwritten/overwriting,...

Does the transformation of Task 1 need to create/set them anyhow even though a solution might not need them for Task 3?

SvenPeldszus commented 9 years ago

At first, I assume with tasks are the three steps of our case description meant. If this is not so correct me please.

The mentioned elements have to be created/set in Task/Step 1.

Even as not obvious at the first sight they will simplify the check whether a refactoring is possible or not.

i.e. TPackage can be used to detect library classes which cannot be modified by a refactoring.

At this point, we wanted to add some additional information anyway. We are going to add an additional requirement to the input Java programs. All user defined classes (which can be edited) must have an identical root package. This root package is not allowed to be the root package of any library used in this program.

Like in the following example:

User defined classes:

Libraries:

The other references are also needed for the application conditions of refactorings.

Of course the dynamic calculation of these references is also possible. However, we decided to calculate them once at the creation of the program graph. As there are only minor changes to these references after each refactoring (which can be derived from the refactoring its self) this seems to reduce the amount of calculations for chains of refactorings.

The idea is that the program graph evolves with the java program.

These additional references can maybe also helpful for synchronizing program graph and java source code. However, they are designed for Task/Step 2

Hopefully I was able to answer the questions sufficiently and to clarify the requirements, expectations and our assumptions.

tsdh commented 9 years ago

Yes, of course I've meant your tasks in the case description. ;-)

And now I also see that at least the access reference is mentioned in the text about application conditions of 3.1, and overridden is discussed in the example 2.