In the software development life-cycle, software maintenance is considered as one of the most critical process. A considerable amount of information needs to be managed during the process software maintenance. The requirement of particular software might not be fulfilled by a particular tool or technique. So we require different tools and techniques for different components of the software. This paper briefly explains some of the software maintenance techniques and tools.