  Software modernization is an inherent activity of software engineering, as
technology advances and systems inevitably become outdated. The term "software
modernization" emerged as a research topic in the early 2000s, with a
differentiation from traditional software evolution. Studies on this topic
became popular due to new programming paradigms, technologies, and
architectural styles. Given the pervasive nature of software today, modernizing
legacy systems is paramount to provide users with competitive and innovative
products and services. Despite the large amount of work available in the
literature, there are significant limitations: (i) proposed approaches are
strictly specific to one scenario or technology, lacking flexibility; (ii) most
of the proposed approaches are not aligned with the current modern software
development scenario; and (iii) due to a myriad of proposed modernization
approaches, practitioners may be misguided on how to modernize legacies. In
this work, our goal is to call attention to the need for advances in research
and practices toward a well-defined software modernization domain. The focus is
on enabling organizations to preserve the knowledge represented in legacy
systems while taking advantages of disruptive and emerging technologies. Based
on this goal, we put the different perspectives of software modernization in
the context of contemporary software development. We also present a research
agenda with 10 challenges to motivate new studies.
