In the previous lesson, we discussed agile
software development. Its principles and practices. And two
specific agile processes. XP and Scrub. In
this lesson, we will introduce a practice that
is of fundamental importance in the context
of agile software development. Software refactoring. Software refactoring
is the process of taking a program and
transforming it to make it better. That is,
to make it easier to understand, make it
more maintainable, and in general to improve its
design. Specifically, we will discuss what the refactoring
is and why it is important? When to perform
refactoring, and when not to perform refactoring? And
how to perform refactoring in a fully automated way,
using tools. We will also introduce the concept
of bad smells, where a bad smell, in software,
is the indication that there might be something wrong with
the code that might call for the application of refactoring.