Software traceability is an important part in software development that is getting more and more attention nowadays from organizations and researchers. The paper outlines the importance, different methods and techniques of software traceability. It also explains the need of automating traceability, problems and drawbacks of existing traceability tools, the ongoing challenges facing implementation of traceability in software development life cycle, and finally the paper discusses whether software traceability should be mandated as a key to improve software evolution