Closed tsdh closed 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:
example.Class1
example.subpackage.Class2
Libraries:
java.lang.String
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.
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.
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 referencessubpackage
/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?