Change is an essential characteristic of software development, as software
systems must respond to evolving requirements, platforms, and other
environmental pressures. In this paper, we discuss the concept of software
evolution from several perspectives. We examine how it relates to and
differs from software maintenance. We discuss insights about software
evolution arising from Lehman's laws of software evolution and the staged
lifecycle model of Bennett and Rajlich. We compare software evolution to
other kinds of evolution, from science and social sciences, and we examine
the forces that shape change. Finally, we discuss the changing nature of
software in general as it relates to evolution, and we propose open
challenges and future directions for software evolution research.
Continue reading "Frontiers of Software Maintenance: the Past, Present, and Future of Software Evolution"