TDD+레거시 코드 리팩토링 워크숍

첫 강좌 할인 얼리버드까지★

기존 100만원, 첫 강좌 기념 할인  80만원
2월 27일까지 등록하시면, 얼리버드 기념 할인  70만원

(2월 28일(수)부터는 첫 강의 기념 할인가 80만원으로 결제됩니다.)


코드가 요구사항대로 정상 동작하는지 검사하는 것은
프로그래머의 역할이다.

프로그래머는 자신이 작성한 코드가 정상 작동하는지
검증할 테스트코드를 직접 작성할 줄 알아야 한다.

INTRO 강의 소개

여러분의 팀은 얼마나 자주 소프트웨어를 출시하나요? 사업에서는 얼마나 자주 출시하길 원하나요? 사업에서 원하는 출시 주기와 실제 제품 출시 주기의 차이가 얼마나 되나요? 제품 출시 이후에 얼마나 많은 버그가 발생하고 있나요? SW를 안정적으로 자주 출시하는 것이 여러분 회사나 팀의 사업에 도움이 된다면, 개발자 여러분은 SW를 자주 출시하는데 필요한 스킬과 역량을 확보해야 합니다. 요구사항이 지속해서 빈번하게 바뀌는 상황에서 짧은 주기에 안정적으로 출시를 하려면 팀에 어떤 스킬과 역량을 확보해야 할까요?

사고 실험을 하나 해 보죠. 여러분이 만들고 있는 소프트웨어가 1천 개 기능을 지원합니다. 여러분이 조금 전에 코드를 한 줄 고쳤다면 제품을 출시하기 위해서 몇 가지 기능을 테스트해야 할까요? 네, 맞습니다. 1천 개 기능을 모두 테스트해야 합니다. 소프트웨어는 수천, 수만 혹은 수십만 개의 변수들이 역동적으로 연결돼서 동작합니다. 너무 많은 변수가 복잡하게 얽혀있기 때문에 바뀐 변숫값 하나가 어디에 어떻게 영향을 미칠지 예측하기 어렵습니다. 1천 개를 모두 수동으로 테스트한다면 테스트에만 1주일 이상을 써야 하므로 테스트 비용이 아주 많이 들고 자주 출시하는 것이 불가능합니다. 이 테스트가 모두 자동화되어 있다면 코드를 커밋한 후에 1~20분 안에 결함이 주입되었는지 피드백을 받을 수 있고 테스트가 모두 통과되면 불안감 없이 SW를 배포할 수 있습니다.


개발자들이 이 테스트 코드를 작성해야합니다. 

많은 개발자가 테스트 코드를 작성해 본 경험이 없거나 테스트 코드를 작성하는 것에 대해 두려움이 있는 것 같습니다. 하지만, 훈련을 제대로 받기만 한다면 테스트 코드를 작성하는 것이 전혀 어려운 일이 아닙니다.

‘TDD+레거시 코드 리팩토링 워크숍’에서는 개발자들이 테스트 코드를 체계적으로 작성하는 방법을 훈련합니다. 신규 요구사항을 개발할 때는 TDD를 이용하여 결함이 없이 요구사항을 100% 커버하는 테스트 코드를 작성하는 방법을 경험하고 학습합니다. 레거시 코드 리팩토링에서는 테스트 코드가 없는 레거시 코드에 대해서 테스트 코드를 체계적으로 작성하는 방법을 배웁니다.

레거시 코드에 대한 테스트 코드를 작성하려면 레거시 코드를 완벽히 분석하고 이해해야 할까요? 대부분의 개발자는 코드를 완벽히 이해해야 테스트 코드를 작성할 수 있다고 생각합니다. 레거시 코드 리팩토링 워크숍에서는 테스트 코드를 작성하면서 레거시 코드의 동작을 이해하는 체계적인 방법을 배웁니다.


이번 워크숍이 끝나면 테스트 코드를 작성하는 것이
생각보다 어렵지 않다는 것을 이해할 수 있습니다.

WHO 어떤 사람이 들으면 좋을까요

품질이 높은 코드를 작성하는 방법을 배우고 싶어하는 개발자

WHY 왜 들어야 할까요

  • 신규 요구사항을 개발할 때 TDD로 개발함으로써 요구사항을 100% 커버하는 테스트 코드를 작성할 수 있고, 결함이 없는 코드를 작성할 수 있다.
  • 레거시 코드에 대한 테스트를 체계적으로 작성하는 방법을 배울 수 있다.
  • 요구사항 변화에 따라서 리팩토링을 적용하면서 코드를 진화시키는 방법을 배울 수 있다.
  • 객체지향 설계 원칙(SOLID)를 언제 어떻게 적용하는지 알 수 있다.
  • 코드 품질을 판단하는 기준을 배우고, 코드 스멜 관점에서 코드 품질을 판단하는 방법을 배울 수 있다.

CURRICULUM 교육내용을 확인해보세요

1일차

9:30 – 11:00

체크인

  • 질문 만들기
  • 질문 공유하기

9:00 – 9:30

코드 품질

  • 품질이 높은 코드의 특징
  • 가독성 비교 실험
  • 리팩토링 골프

11:00 – 11:30

코드 스멜

  • 코드 스멜 목록
  • 코드 스멜 찾기

11:30 – 14:30

Characterization Test

  • 레거시 코드의 동작 테스트 작성
  • 테스트 커버리지 도구 활용 방법
  • 테스트 코드의 구조
  • 테스트 코드 리팩토링

14:30 – 18:00

레거시 코드 리팩토링

  • 코드 스멜 제거하기
  • Composed Method Pattern
  • Feature Envy 스멜 제거
  • Cohesion / Coupling 개선하기
  • 베이비 스텝 리팩토링
  • 타입코드를 상속 구조로 리팩터링하기
  • 생성 메소드 / 팩토리
  • 스트래터지 패턴
  • 요구사항 변화에 따른 점진적 설계

2일차

9:00 – 10:00

의존성 관리

  • 글루 코드 찾기
  • Characterization Test
  • 예외 테스트
  • 의존성 깨기
  • 의존성 주입

10:00 – 11:00

객체지향 설계 원칙

  • SRP (단일 책임 원칙)
  • OCP (개방 폐쇄 원칙)
  • LSP (리스코프 치환 원칙)
  • ISP (인터페이스 격리 원칙)
  • DIP (의존성 역전 원칙)

11:00 – 12:00

Simple Design

  • 요구사항 변화에 따라 달라지는 Simple Design
  • 디자인 스펙트럼

13:00 – 17:00

테스트 주도 개발

  • 테스트 주도 개발의 사이클
  • 단위 테스트 케이스 이름 명명 방법
  • 단위 테스트의 구조 및 리팩토링

17:30 – 18:00

회고

  • PMI 회고

INSTRUCTOR 강사 소개

오재훈

오재훈

넷스루 CTO

20여 년 이상 SW 엔지니어로 소프트웨어 개발에 몸담고 있다. 2000년 초반부터 C++ 언어를 이용하여 웹클릭스트림 분석 소프트웨어인 ‘WiseLog’를 설계·개발했다. 2009년부터는 소프트웨어 개발 문화와 개발 프로세스에 관심을 가지기 시작했고, 이후 넷스루의 개발 프로세스와 개발 문화를 지속해서 개선했다.

최근에는 고품질 소프트웨어 개발에 관심이 많다. 품질이 높은 소프트웨어를 개발하기 위한 방법들에 대한 책을 읽기를 좋아한다. 2012년 애자일 개발 방법의 하나인 스크럼을 넷스루에 도입하였고, 2014년에는 XP(Extreme Programming)의 엔지니어링 프랙티스들을 도입했다. 특히, 2014년 11월부터 사내 스터디 모임을 조직하여 매주 2시간씩 엔지니어링 실천법에 대한 사내 워크숍을 열고 소프트웨어 엔지니어들과 함께 수련하고 있다. 이 스터디를 통해 XP 테스트 주도 개발과 리팩토링을 체계적으로 가르침으로써 팀이 기민하게 소프트웨어를 개발할 수 있는 기반을 마련했다.

개발자 대상으로 테스트 주도 개발, 레거시 코드 리팩토링, 클린 코드 등을 주제 외부 워크샵을 20여 회 이상 진행하며 개발자들이 품질이 높은 코드를 개발하기 위한 방법과 노하우를 전파하고 있다. 엔지니어링 프랙티스 도입을 위한 컨설팅을 수행하면서 개발팀의 성장을 돕는다. 애자일 코치로서 개발팀을 돕기 위한 코칭, 퍼실리테이션 스킬 개발에도 관심이 많다.


첫 강좌 할인 얼리버드까지★

기존 100만원, 첫 강좌 기념 할인  80만원
2월 27일까지 등록하시면, 얼리버드 기념 할인  70만원

(2월 28일(수)부터는 첫 강의 기념 할인가 80만원으로 결제됩니다.)


NOTIFICATION

R

준비물 : 개인 노트북, IDE(Eclipse-Spring ToolSuite- 혹은 IntelliJ IDEA), JDK (7 이상)

R

해당 강좌 기존가는 1백만원입니다. 첫 강좌 기념으로 이번에 한해 80만원에 제공됩니다. 얼리버드 할인은 2월 27일(화)까지만 적용됩니다. (2월28일(수)부터는 첫 강좌 기념 할인가인 80만원으로 결제됩니다.)

R

주차 공간 및 주차비는 지원되지 않습니다. 대중교통 이용을 부탁드립니다.

R
강의 별 진행 가능한 최소인원이 미달될 경우 일정이 연기될 수 있습니다. 일정 연기 결정 시, 수강생 분들께 기존 개강일 약 3일 전에 개별 연락을 드립니다. 이 점 양해 부탁드리겠습니다.