This book is about maintaining computer software. Its aim is to improve a programmer's ability for altering code to fit changing requirements and for detecting and correcting errors. Software maintenance is an important and timely area of investigation. It is the component that gives a system its flexibility, but it is also the source of many of its problems. Software is expensive to maintain and is the usual cause of system failures. Traditional approaches, using software engineering and management disciplines, do not adequately address maintenance issues. This book argues for a new way of thinking about maintaining software, proposing the use of a set of human factors principles that govern the programming-software-event world interactions and form the core of the maintenance process. The book should prove highly valuable for systems analysts and programmers, managers seeking to reduce costs, researchers looking at solutions to the maintenance problem, and students learning to write clear, unambiguous programs.