리팩토링과 다른 소프트웨어 관행과의 밀접한 연관

리팩토링 초기


XP(eXtreme Programming)

<aside>

수시로 발생하는 고객의 요구 사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성을 향상하는 방법

</aside>


책에서 언급된 XP의 주요 실천 방법 2가지

  1. 지속적 통합(Continuous Integration)

    모듈 단위로 나눠서 개발된 코드들은 하나의 작업이 마무리될 때마다 지속적으로 통합

  2. 테스트 주도 개발 (Test-Driven Development, TDD) = 자동화된 테스트코드 + 리팩토링과 밀접한 연관

    개발자가 실제 코드를 작성하기 전에 테스트 케이스를 먼저 작성하여 자신이 무엇을 해야할 지 제대로 파악

    TDD는 테스트를 먼저 작성하고 그에 맞게 리팩토링을 진행하는 과정으로, 리팩토링은 이를 통해 코드 품질을 지속적으로 개선하며, 자동화된 테스트 코드가 코드를 안전하게 변경하도록 도움


책에서 언급되지 않은 XP의 주요 실천 방법 4가지

  1. 짝 프로그래밍 (Pair Programming)

    다른 사람과 함께 프로그래밍을 수행함으로써 개발에 대한 책임을 공동으로 나눠 갖는 환경을 조성

  2. 전체 팀 (Whole Team)

    개발에 참여하는 모든 구성원(고객 포함)들은 각자 자신의 역할이 있고 그 역할에 대한 책임을 가짐

  3. 디자인 개선 (Design Improvement)

    프로그램 기능의 변경없이 단순화, 유연성 강화 등을 통해 시스템을 재구성

  4. 소규모 릴리즈 (Small Release)

    릴리즈 기간을 짧게 반복함으로써 고객의 요구 변화에 신속히 대응 가능


애자일 방법론(Agile Methodology)

<aside>

소프트웨어 개발 및 프로젝트 관리에 있어 유연하고 반복적인 접근 방식을 지향하는 방법론

꾸준히 고객의 반응을 반영하면서 소프트웨어를 개발하는 방법론, 문서 기반의 개발보다는 실질적인 코딩을 통한 방법론 ↔ 폭포수 모형

</aside>