Software systems continuously change and, eventually, they become difficult and costly to comprehend and maintain. Consequently, software maintenance and evolution are essential activities in the software life-cycle that account for more of half of the resources invested in a software system. To reduce such costs, different strategies can be adopted by software practitioners. In this talk I will give an overview of my research on supporting developers during software maintenance and evolution. The focus will be on software (re)documentation and software change management. In particular, I will briefly discuss recent approaches on summarization of software artifacts and concept location in code. Both applications show how techniques from different fields can be integrated to leverage the different kinds of information found in diverse software artifacts.