Numerous scientific studies of large-scale software systems have shown that most of the effort and cost spent in large software projects goes to the maintenance and evolution of existing software systems as opposed to the development of new systems from scratch. This is mainly due to the fact that software systems need to evolve continually to cope with ever-changing software requirements. Today, this is more than ever the case. Nevertheless, existing tools that try to provide support for evolution have many limitations. They are (programming) language dependent, not scalable, difficult to integrate with other tools, and they lack formal foundations.
The main goal of the proposed WG is to understand the phenomenon of software evolution, and to develop well-founded and disciplined tools and techniques to support software developers with the common problems they encounter when evolving large and complex software systems. With this initiative, we plan to become a Virtual European Research and Training Centre on Software Evolution.
The kind of evolution problems that will be addressed by this WG are very diverse. Below we mention a tentative, but inevitably incomplete, list of topics that will be addressed:
* re-engineering and reverse engineering * software restructuring, refactoring and renovation * model-driven software engineering and model transformation * migration and revitalisation of legacy software * specification or analysis of the evolution of all types of software artifacts at all levels (including, but not limited to: requirement specifications, models, metamodels, architectures, programs, test cases, documentation, bug reports, version control information, log files, release histories, language descriptions, APIs, protocols) * consistency maintenance and inconsistency management * co-evolution and conformance checking of architecture, design and implementation * impact analysis, effort estimation, cost prediction, evolution metrics * traceability analysis and change propagation * version control, release history analysis and configuration management * run-time adaptation and dynamic reconfiguration * family and product-line engineering * methods, processes and tools for managing software evolution * development of a formal theory of software and systems evolution