Considerable effort is spent during software development to carefully document programs. This documentation is often performed according to established standards created by development personnel. Although helpful during software maintenance, this information is often insufficient to be effectively utilized. An analysis of the information necessary to perform effective software maintenance is presented. This analysis begins with an examination of contemporary models of software maintenance activities and the information necessary to support these activities. The basic categories of required maintenance information are then summarized. Finally, future research efforts in this area are described.