애자일 방법론과 XP, Test-first, TDD 테스트 주도 개발 (2)

bbio3o·2021년 2월 7일
0
post-thumbnail

✨ 1편 다시보기(Agile 개발 방식, XP, Refactoring) -> 1편 링크

📌 서론 Agile Project Management에 관하여

XP를 실무에 잘 적용하려면 어떤 점이 필요할까?
소프트웨어 프로젝트 매니저의 책임과 역할은 예산을 맞춰 프로젝트를 관리해서 정해진 시간 내에 완료하는 것이다.
기본 원칙은 철저한 플랜을 짜는 plan-driven 방식을 따르지만, agile 프로젝트 매니지먼트는 조금 다른 접근 방식을 취한다. 바로 incremental development의 장점과 취지를 극대화 시켜야한다는 점이다.

참조

📌 Scrum 이란?

스크럼 방법론은 반복적인 개발에 특화된 애자일 메소드 매니지먼트 방식이다.
XP방식은 Documentation이 없었지만 Scrum 방식에선 존재한다.(보다 현실적)

  • Scrum이란 스크럼 방법론에서 쓰이는 용어로, 날마다하는 짧은 회의를 뜻한다.
  • 스크럼 방법론에서 쓰이는 용어로, 날마다하는 짧은 회의를 뜻한다.
  • 모든 팀원이 이 데일리 미팅에 참여해 정보를 공유해야한다.
  • 마자막 미팅 이후 진행 과정을 설명하고 제기되는 문제들(장애 발생)이나 앞으로의 해야 할 일, 계획에 대해 이야기한다.

✔️ 스크럼 용어들

  • scrum master - 개발 팀을 서포트 해주는 사람. 개발 팀이 개발에만 집중할 수 있도록 도운다. 개발 이외의 일들을 도맡는다.(개발 팀 밖의 사람과 소통하는 역할) 프로젝트 매니저는 스크럼 마스터가 되면 안되지만, 실무에서는 프로젝트 매니저가 이 역할을 하는 경우가 많다.
  • sprint - 하나의 development 주기이며 2-4주 정도를 기준으로한다. 보통 XP에서는 2주.
  • velocity - 속도예측, 한 spint에 우리가 얼마나 많은 부분으 처리 할 수 있는지 예측해 볼 수 있다.

✨ 스크럼의 특징

  • 프로덕트가 유지 보수 하기 쉽고 이해할수 있는 조각으로 나눠질 수 있다. 이는 Incremental Development의 취지에 맞는다.
  • 팀원들과의 커뮤니케이션이 향상된다. -> 애자일은 협력을 중요시하는데 이를 scrum을 통해 이룰수 있다.
  • Customer는 실시간으로 진행상황을 보고 받을 수 있고, 고객이 이를 보고 피드백을 줄 수 있어 change request가 빠르고 쉽게 반영될 수 있다.
  • 고객과 개발자의 믿음과 긍정적인 문화가 형성된다.


📌 Test-first Developement이란?

테스트 주도 개발방식은 애자일 방법론에 있어서 중요한 개념 중 하나이다.

  • Test-first 테스트 코드를 먼저 짜고 해당되는 기능을 나중에 짠다.
  • Incremental test 하나의 테스트를 하고 그 다음 으로 넘어가고 또 그 다음으로 넘어가는 방식
  • 유저가 직접 관여, 평가하기도 한다.
  • Automated test 자동화된 테스트를 통해 자동으로 테스트가 가능하다.
  • TDD(Test-Driven-Development) 라고도 한다.(tdd는 애자일에서 소개된 방식이지만, plan-driven 방식에서도 적용될 수 있다.)

✨ 테스트 주도 개발의 장점

  • Code coverage 모든 코드가 적어도 하나의 테스트에 쓰인다.
  • Regression testing 코드들을 테스트하면서 점점 앞에 만들어진 코드들이 반복해서 회귀되면서 새로운 코드들과 테스트가 실행된다.
  • 디버깅이 용이해진다. Simpled debugging
  • System Documentation. 테스트들 자체가 어떤 코드가 어떤 작업을 하는지 알아 볼 수 있기에 하나의 문서화 폼 역할로 볼 수 있다.
  • 유지보수 비용이 낮아질 수 있다.
  • 깨끗한 코드 결과물

💩 테스트 주도 개발의 단점

  • 개발 시간의 증가
  • 프로그래머들은 코어파트 개발을 선호하지, 테스트 코드 짜는 것을 선호하지 않는다.
  • 테스트코드에 제대로 집중하지 못하면, 미완성된 테스트 코드는 결국 모든 가능한 예외를 체크해 볼 수 없다.
  • display logic, UI 관련 테스트는 테스트하기 어렵다.
  • 비록 특정 한 개발자가 테스트를 좋아해 테스트 시스템을 만든다 해도 모든 테스트를 다 커버할 수는 없다.


📌 Pair-Programming이란?

페어 프로그래밍은 두 명이 짝을 지어 코드를 같이 짜는 것이다.

✨ 특징과 장점

  • 두명 다 코드와 팀을 아우르는 지식에 대해 주인 의식을 가져야한다.
  • 한 명의 프로그래머가 코딩 할 때, 나머지 한 명이 실시간 review를 해줄 수 있다.
  • refactoring을 장려하게 되어 시스템 코드를 발전시킬 수 있다.
  • 나중에 한명이 빠져도 큰 문제가 되지 않아 risk가 줄어든다.
  • 팀워크 향상

💩 단점

  • 두명의 하나의 일을 하게 되기 때문에 효율성의 측면에서 문제가 생길 수 있다.
profile
그림도 그리는 개발자 🎨👩‍💻

0개의 댓글