The continuous evolution of software technologies has led to a complex situation in which traditional legacy systems have to coexist with web applications, new generation of mobile apps and, recently, Internet of Things infrastructure and cloud services.