이미 작성한 소스코드에서 구현된 일련의 행위들을 변경없이, 코드의 가독성과 유지보수성을 높이기 위해 내부구조를 변경하는것이다. 기능을 유지하되 일기 좋고 지속적으로 관리하기 편하게 소스코드를 재작성하는 것이다.