Position Statement: How Well Technology Supports Software Evolution

Rajesh Subramanyan
2008 2008 32nd Annual IEEE International Computer Software and Applications Conference  
Software evolution is the process by which programs change due to changing requirements or inherit characteristics from previous programs. Managing software evolution should be central to the development process, otherwise systems become more complex, fragile, and unreliable. Project management across the industry have found that that a large cost and effort in large projects goes towards maintenance and evolution of existing software systems instead of development of new systems from scratch.
more » ... echnology and tools are valuable in supporting software evolution. Tools should be scalable, efficient, usable, and flexible. Examples of flexibility are program language independence, user customizable, applicability across different stages of evolution, interoperability with other tools, scalability to large and complex software systems with multiple developers, usable for static (design-time) and dynamic (run-time) evolution, and support all phases of application lifetime. Tracking architectural decay, system dependency analysis, and project data for analysis are some of the areas where technology, tools and techniques can support software evolution. Formal techniques lead to tools for building robust and efficient large complex systems, and applying techniques such as virtual slicing for change impact analysis. Formalisms can provide domain independent support for software evolution. A unifying framework allows the design of a coherent set of tools, each tool supporting a specific aspect of evolution that can integrate easily with each other. Technology can help software evolution in several areas such as query engines for postevolution analysis and reverse engineering; run-time architectural reconfiguration for systems that cannot be shut down; traceability support from analysis to design; model transformations; legacy software migration; analysis of the evolution of software artifacts at all levels including requirement specifications, meta-
doi:10.1109/compsac.2008.236 dblp:conf/compsac/Subramanyan08 fatcat:eqfa5x3kljebziubsedtfozuhu