1. Introduction
Legacy systems are old systems which still need to be maintained [32]. Despite the fact that these systems were developed many years ago, they are still essential in controlling some of the most important aspects of modern society. According to Ulrich, in 1990, 120 billion lines of code were in existence, most of which were considered to be legacy software systems at the time [34]. The Y2K problem brought the issue of software maintenance to the attention of a wider audience; some estimates of fixing this problem were in the trillions of dollars.