This document is a slide presentation on refactoring by Ricardo Terra. It begins with an overview of refactoring, defining it as changing code without changing external behavior in order to improve non-functional attributes like readability and maintainability. It discusses the history and common reasons for refactoring, such as addressing "bad smells" in code. The presentation then covers specific refactoring techniques like Extract Method, Pull Up Method, Move Method, Extract Superclass, and Introduce Parameter Object, providing examples and explanations of when and how to apply each technique.