Program: Code Decay and the Staged Model of Software Lifecycle

In the conventional view of software life cycle, software is produced, delivered to the user, and then enters a maintenance stage. Maintenance is the more expensive and extensive activity, and many surveys exist that analyze it in terms of constituent activities such as corrective, perfective, adaptive maintenance, etc. This view does not accord with the experience of the authors and modern industrial practice. We wish to suggest a different view that partitions the conventional maintenance phase in a more useful, relevant and constructive way.

We retain initial development, but then propose an explicit evolution stage. Next is a service stage, comprising of simple tactical activities. Later still, the software moves to a phase-out stage and finally to a close-down. The key point is that software evolution is quite different and separate from servicing, from phase-out, and from close-down, and this distinction is crucial in clarifying both the technical and business consequences.

This perspective, by adopting both technical and business roles, is useful in planning and stimulates a set of research landscape points. This half-day tutorial is intended for software engineers, managers, researchers, and students. Familiarity with software engineering issues and terminology are recommended. Experience with software maintenance or management may be helpful but is not required.

Presenters: Professor V. T. Rajlich and Professor K. H. Bennett

Vaclav Rajlich is a full professor and former chair of the Department of Computer Science at Wayne State University. Before that, he was an associate professor of Computer and Communication Science at University of Michigan in Ann Arbor, and software manager at the Research Institute for Mathematical Machines in Prague, Czech Republic. His current research interests include software change, evolution, comprehension, and maintenance. He served as a general chair of IEEE International Conference on Software Maintenance, and is a founder and former general chair of IEEE International Workshop on Program Comprehension.

Keith Bennett has been a full Professor since 1986, and a former Chair, both within the Department of Computer Science at the University of Durham. For the past fourteen years he has worked on methods and tools for program comprehension and reverse engineering, based on formal transformation techniques. He is a founding co-Director of the Centre for Software Maintenance at Durham; as a consequence of an expansion in size and scope, this has recently been renamed as the Research Institution for Software Evolution (RISE). His current research is addressing new software architectures which support evolution. In 1999, he was general Chair of the IEEE International Conference on Software Maintenance, held in Oxford. He is a Chartered Engineer and a Fellow of the BCS and IEE.