Skip to content
This repository was archived by the owner on Nov 20, 2019. It is now read-only.

Commit ec2ad12

Browse files
committed
Add information on migration types
1 parent eb9e1fd commit ec2ad12

7 files changed

Lines changed: 132 additions & 1 deletion

bibliography/references.bib

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,21 @@ @InProceedings{Cartwright1998
9191
groups = {Software Migration, Java},
9292
}
9393

94+
@InProceedings{Kontogiannis1998,
95+
author = {Kostas Kontogiannis and Johannes Martin and Kenny Wong and Richard Gregory and Hausi A. M{\"{u}}ller and John Mylopoulos},
96+
title = {Code migration through transformations: an experience report},
97+
booktitle = {Proceedings of the 1998 conference of the Centre for Advanced Studies on Collaborative Research, November 30 - December 3, 1998, Toronto, Ontario, Canada},
98+
year = {1998},
99+
editor = {Stephen A. MacKay and J. Howard Johnson},
100+
publisher = {{IBM}},
101+
pages = {13},
102+
doi = {10.1145/783160.783173},
103+
bibsource = {dblp computer science bibliography, https://dblp.org},
104+
biburl = {https://dblp.org/rec/bib/conf/cascon/KontogiannisMWGMM98},
105+
file = {:10.1.1.50.4373.pdf:PDF},
106+
groups = {Software Migration},
107+
}
108+
94109
@Article{Olsem1998,
95110
author = {Michael R. Olsem},
96111
title = {An incremental approach to software systems re-engineering},
@@ -122,6 +137,21 @@ @Article{Bisbal1999
122137
groups = {Software Migration},
123138
}
124139

140+
@Article{Terekhov2000,
141+
author = {Andrey A. Terekhov and Chris Verhoef},
142+
title = {The Realities of Language Conversions},
143+
journal = {{IEEE} Software},
144+
year = {2000},
145+
volume = {17},
146+
number = {6},
147+
pages = {111--124},
148+
doi = {10.1109/52.895180},
149+
bibsource = {dblp computer science bibliography, https://dblp.org},
150+
biburl = {https://dblp.org/rec/bib/journals/software/TerekhovV00},
151+
file = {:Terekhov2000 - The Realities of Language Conversions.pdf:PDF},
152+
groups = {Software Migration},
153+
}
154+
125155
@Article{Chapin2001,
126156
author = {Ned Chapin and Joanne E. Hale and Khaled Md. Khan and Juan F. Ramil and Wui{-}Gee Tan},
127157
title = {Types of software evolution and software maintenance},
@@ -214,6 +244,38 @@ @Online{Meier2007
214244
url = {http://spin.sourceforge.net/solution.html},
215245
}
216246

247+
@InProceedings{Bartolomei2009,
248+
author = {Thiago Tonelli Bartolomei and Krzysztof Czarnecki and Ralf L{\"{a}}mmel and Tijs van der Storm},
249+
title = {Study of an {API} Migration for Two {XML} APIs},
250+
booktitle = {Software Language Engineering, Second International Conference, {SLE} 2009, Denver, CO, USA, October 5-6, 2009, Revised Selected Papers},
251+
year = {2009},
252+
editor = {Mark van den Brand and Dragan Gasevic and Jeff Gray},
253+
volume = {5969},
254+
series = {Lecture Notes in Computer Science},
255+
publisher = {Springer},
256+
pages = {42--61},
257+
doi = {10.1007/978-3-642-12107-4\_5},
258+
url = {https://doi.org/10.1007/978-3-642-12107-4\_5},
259+
bibsource = {dblp computer science bibliography, https://dblp.org},
260+
biburl = {https://dblp.org/rec/bib/conf/sle/BartolomeiCLS09},
261+
file = {:Bartolomei2009 - Study of an API Migration for Two XML APIs.pdf:PDF},
262+
groups = {Software Migration},
263+
}
264+
265+
@InProceedings{Bartolomei2010,
266+
author = {Thiago Tonelli Bartolomei and Krzysztof Czarnecki and Ralf L{\"{a}}mmel},
267+
title = {Swing to {SWT} and back: Patterns for {API} migration by wrapping},
268+
booktitle = {26th {IEEE} International Conference on Software Maintenance {(ICSM} 2010), September 12-18, 2010, Timisoara, Romania},
269+
year = {2010},
270+
publisher = {{IEEE} Computer Society},
271+
pages = {1--10},
272+
doi = {10.1109/ICSM.2010.5610429},
273+
bibsource = {dblp computer science bibliography, https://dblp.org},
274+
biburl = {https://dblp.org/rec/bib/conf/icsm/TonelliKR10},
275+
file = {:Bartolomei2010 - Swing to SWT and Back_ Patterns for API Migration by Wrapping.pdf:PDF},
276+
groups = {Software Migration},
277+
}
278+
217279
@Article{Hall2011,
218280
author = {Hall, Richard S and Pauls, Karl and McCulloch, Stuart and Savage, David},
219281
title = {OSGi in action},
@@ -284,6 +346,21 @@ @Online{JabRefDevelopers2015
284346
groups = {JabRef},
285347
}
286348

349+
@InProceedings{Hora2015,
350+
author = {Andr{\'{e}} C. Hora and Marco Tulio Valente},
351+
title = {Apiwave: Keeping track of {API} popularity and migration},
352+
booktitle = {2015 {IEEE} International Conference on Software Maintenance and Evolution, {ICSME} 2015, Bremen, Germany, September 29 - October 1, 2015},
353+
year = {2015},
354+
editor = {Rainer Koschke and Jens Krinke and Martin P. Robillard},
355+
publisher = {{IEEE} Computer Society},
356+
pages = {321--323},
357+
doi = {10.1109/ICSM.2015.7332478},
358+
bibsource = {dblp computer science bibliography, https://dblp.org},
359+
biburl = {https://dblp.org/rec/bib/conf/icsm/HoraV15},
360+
file = {:Hora2015 - Apiwave_ Keeping Track of API Popularity and Migration.pdf:PDF},
361+
groups = {Software Migration},
362+
}
363+
287364
@WWW{Marx2016,
288365
author = {Dustin Marx},
289366
editor = {Inspired by Actual Events},
@@ -596,6 +673,22 @@ @Online{OracleDocJavac
596673
groups = {Java},
597674
}
598675

676+
@Online{GHCM,
677+
author = {{Glasgow Haskell Compiler Maintainers}},
678+
title = {GHC 8.4.x Migration Guide},
679+
url = {https://ghc.haskell.org/trac/ghc/wiki/Migration/8.4},
680+
urldate = {2018-08-09},
681+
}
682+
683+
@Online{Miller,
684+
author = {Heather Miller},
685+
editor = {{Scala}},
686+
title = {{M}igrating from {S}cala 2.7},
687+
url = {https://docs.scala-lang.org/overviews/collections/migrating-from-scala-27.html},
688+
urldate = {2018-08-09},
689+
groups = {Software Migration},
690+
}
691+
599692
@Comment{jabref-meta: databaseType:biblatex;}
600693

601694
@Comment{jabref-meta: fileDirectory:sources;}
Binary file not shown.
Binary file not shown.
Binary file not shown.

thesis.md

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,11 @@ Software migration tasks can be grouped into three general classes:
102102
compatible, even when new features were added, in large code bases, however,
103103
additional effort is required to use new versions of compilers.
104104

105+
Not much literature exists on the topic of this type of migration.
106+
Often when a new version of a compiler introduces incompatibilities with
107+
previous versions, a migration guide is issued by the compiler maintainers
108+
[@Miller; @GHCM].
109+
105110
* **+API migration** is the process of changing a dependency on an external
106111
+API to another one or a different version [@Malton2001].
107112

@@ -120,12 +125,45 @@ Software migration tasks can be grouped into three general classes:
120125
services offered by an +API, but not for public consumption [@Dig2006].
121126
Many languages do not provide features to explicitly mark such elements as
122127
internal, but library authors rely solely on naming conventions, e.g. placing
123-
code in an `internal` namespace.
128+
code in an `internal` namespace.
129+
130+
In [@Bartolomei2009] Bartolomei et al. identify two general approaches for
131+
API migrations:
132+
When a source +API should be replaced with a target +API, either all usages of
133+
the source +API can be directly replaced with corresponding calls to the
134+
target +API, or a wrapper around the target +API can be created with the
135+
interface of the source +API.
136+
They note that the difficulty of an +API migration greatly depends on the
137+
differences both ++API have.
138+
Hora and Valente propose a tool that tracks what ++API open source projects
139+
use and when and to which ++API they migrate in [@Hora2015].
140+
This aims at supporting software engineers finding replacement ++API.
124141

125142
* **Language migration** is the decision to convert an existing program to a new
126143
language [@Malton2001]. This is a risky type of migration, as it requires much
127144
effort to re-express source code in a different language.
128145

146+
This type of migration is well studied:
147+
Kontogiannis et al. perform a migration of a system written in PL/IX to C++ in
148+
[@Kontogiannis1998].
149+
They find that a problem is simulating language constructs of the source
150+
language that is not available in the target language.
151+
Terekhov and Verhoef argue in [@Terekhov2000] that too much effort is put
152+
on automatic tooling aiding in the conversion, but instead the focus should
153+
lay on the software engineers performing the migration.
154+
Martin and Müller present their approach for migrating C programs to Java in
155+
[@Martin2002].
156+
They use an automatic tool to perform the migration and find that often,
157+
manual adjustments are required to obtain readable code in the target
158+
language.
159+
160+
For this thesis mostly the groups of dialect migration and +API migration are
161+
relevant.
162+
The language Java will be kept, but only updated to a new version.
163+
This mostly corresponds to a dialect conversion.
164+
However, as will be described later, the ++API available in the Java language
165+
also have changed at some parts, so also an +API migration is relevant.
166+
129167
The general approach for adaptive software maintenance consists of a sequence of
130168
steps as shown in [@fig:adaptive_maintenance].
131169

0 commit comments

Comments
 (0)