Abstract:
This dissertation is about tool and process support for migrating applications from one platform to another, specifically from Smalltalk to Java.
Both platforms consist of a programming language, obviously, but also include large class
libraries, development tools, and a runtime environment. Despite many high-level similarities,
the class libraries are quite different. They provide similar functionality but in different
ways. Many differences are so fundamental that migration tools like syntax converters and
type analyzers produce imperfect results. The output of these migration tools generally requires
a significant amount of manual rework. To perform the rework, a developer will have
to use the development environments of both platforms: on the source platform to analyze
the code, and on the target platform to fix problems. Furthermore, because he needs to
rebuild the application on the target platform from scratch, the application is not executable
as a whole. Without being able to run automated tests against the application, it is difficult
to stabilize the migrated code.
I propose the integration of the two programming environments. This integration supports
a more productive piecemeal migration process. The environment integration combines
both the development and the runtime environments. Instead of working with two code
bases, a developer can work on a single integrated hybrid system and perform the migration
by replacing original code with migrated code in a single system. The advantage of this
approach is that the whole system is executable at all times. Many techniques requiring
an executable application can be used to improve the productivity of the migration process,
e. g. automated functional and unit testing, inspections of the system at runtime, dynamic
type analyses, use of assertions, profiling, etc.
In essence, this thesis aims at making software migrations more agile.