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.
翻译:软件现代化是软件工程的一项固有活动,随着技术进步,系统不可避免地会过时。"软件现代化"这一术语在21世纪初作为一个研究主题出现,与传统软件演化相区别。由于新的编程范式、技术和架构风格的出现,该主题的研究逐渐流行。鉴于当今软件无处不在的特性,现代化遗留系统对于为用户提供具有竞争力和创新性的产品与服务至关重要。尽管文献中存在大量相关工作,但仍存在显著局限性:(i) 提出的方法严格局限于特定场景或技术,缺乏灵活性;(ii) 大多数方法未能适应当前现代软件开发环境;(iii) 由于存在大量现代化方法,实践者可能对如何现代化遗留系统感到困惑。本工作的目标是呼吁关注在软件现代化领域推进研究和实践的必要性,重点在于使组织能够在利用颠覆性和新兴技术的同时,保留遗留系统中蕴含的知识。基于此目标,我们将软件现代化的不同视角置于当代软件开发的背景下进行探讨,并提出包含10项挑战的研究议程以激励新的研究。