티스토리 뷰

DEV_일반

Agile 방법론에 대한 발췌글

데니 Denny 2020. 2. 2. 11:16
반응형
SMALL

Agile 방법론에 대해 간단하게 잘 정리된 글이 하나있어 발췌하였습니다.

출저 : https://velog.io/@dooyou21/%EC%8A%A4%ED%94%84%EB%A6%B0%ED%8A%B8-%EC%8A%A4%ED%81%AC%EB%9F%BC-%EC%95%A0%EC%9E%90%EC%9D%BC

 

 

가장 익숙한 단어인 스프린트(Sprint)를 먼저 찾아보았다.
스프린트의 사전적 의미는 아래와 같다

스프린트(sprint): 육상 경기·수영 경기·스피드 스케이트 등의 단거리 레이스. 또는, 단거리를 전력(全力)으로 행하는 질주(疾走)나 역영(力泳).

단거리 전력질주. 이 정의를 에 대입해서, 매우 크지 않은 태스크(단거리)를 적당한 기간(너무 길면 안됨! 단거리니까)동안 집중해서 전력질주하듯 업무를 수행하는 것을 스프린트라고 생각하면 되는 듯 하다.

더 자세한 정보를 얻기 위해 스프린트를 검색 했더니 가장 먼저 구글 스프린트가 나왔다. 예전(스프린트가 별로 와닿지 않을 시절)에 읽었던 에 나온 그 스프린트였다. 여기에서의 스프린트는 뭔가... '오호 이렇게 1주일 만에 아이디어를 모아 프로토타이핑을 할 수 있구나~' 라는 생각은 들었지만 이게 지금 내가 하는 일(이미 의사결정을 거쳐 개발하기로 결론이 난 사항을 소스코드를 작성하여 구현하는 일)에 어떻게 대입할 수 있을까 생각해봤는데 어떻게 생각해야 할지 잘 모르겠다. 내가 뭔가 잘못 알고 있었나...?

다음 키워드에서 뭔가 도움을 받을 수 있으려나 싶어서, 다음 키워드인 애자일로 넘어갔다. 애자일(Agile). 역시 사전적 의미 먼저 살펴보자.

Agile: 민첩한, 기민한, 재빠른, 날렵한

내가 읽었던 글 중 가장 쉽게 애자일에 대한 이해를 시켜준 글을 아래에 첨부한다. 이 글 이후로 연관된 '스크럼', '린 소프트웨어 개발'에 관한 글도 위에 나열한 알쏭달쏭한 단어들을 조금 더 구체적으로 이해하는 데에 도움이 되었다.

https://brunch.co.kr/@insuk/5

위의 글도 읽고, 여러 사람이 써 놓은 글을 읽으며 내가 이해한 바는 아래와 같다.

  • 애자일은 소프트웨어 개발 방법론 중 하나이다.
  • 애자일 소프트웨어 개발, 애자일 개발 프로세스, 애자일 방법론 등 다양한 단어가 있지만 다 같은 말이라고 생각해도 될 것 같다.
  • 이전에 내가 배웠던 다른 '개발 방법론'은 '폭포수 모델'이 있다.
    • 잠깐 회상을 해보자면 폭포수 모델은
      요구사항 분석 → 설계 → 구현 → 테스트 → 통합 → 유지보수
      위 순서로 진행되는데, 앞 단계의 일이 끝나지 않으면 뒤 단계를 수행할 수 없으며, 요구사항이 변경된 경우 시간과 비용이 '매우'많이 늘어난다. 이러한 이유로 시간이 오래 걸리는 방법이라고 했던 것 같다.

      소프트웨어 개발 초기에 적절히 사용된 시간은 생명 주기(lifecycle)의 후기에 큰 경제적 영향을 줄 수 있다. 다시 말하면, 경제학적 관점에서 소프트웨어 개발의 초기(요구사항 기술 또는 설계 단계)에 발견된 버그는 후기에 발견된 것에 비해 고치는 시간과 돈, 그리고 노력이 몇배는 적게 들기 마련이다. 관련하여 스티브 맥코넬은 그의 저서, "Rapid Development"에서 "요구사항 상의 결함이 구현이나 유지보수 단계에까지 발견되지 않고 남아 있을 경우, 이를 수정하는 비용은 요구사항 기술 시에 수정하는 것에 비해 최소 50배에서 최대 200배까지 드는 것"으로 예측했다. (출처: https://ko.wikipedia.org/wiki/폭포수_모델)

  • 애자일 방법론은 요구사항이 변화하는 것을 당연한 전제로 두고, 변화하는 요구사항에 민첩하게, 기민하게, 재빠르게, 날렵하게 대응하며 소프트웨어 개발을 하기 위한 방법에 대한 이이다.

애자일 소프트웨어 개발 선언

우리는 소프트웨어를 개발하고, 또 다른 사람의 개발을 도와주면서 소프트웨어 개발의 더 나은 방법들을 찾아가고 있다. 이 작업을 통해 우리는 다음을 가치 있게 여기게 되었다:
공정과 도구보다 개인과 상호작용
포괄적인 문서보다 작동하는 소프트웨어
계약 협상보다 고객과의 협력
계획을 따르기보다 변화에 대응하기
가치 있게 여긴다.
이 말은, 왼쪽에 있는 것들도 가치가 있지만, 우리는 오른쪽에 있는 것들에 더 높은 가치를 둔다는 것이다.
Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. MartinSteve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas
© 2001, 상기 저자들
이 선언문은 어떤 형태로든 자유로이 복사할 수 있지만, 본 고지와 함께 전문으로서만 가능하다.
출처: https://agilemanifesto.org/iso/ko/manifesto.html

  • 애자일 방법론(이론)을 실천할 수 있는 여러가지 방법이 있다.
    • '변화에 민첩하게 대응하며 소프트웨어 개발을 해야 해!' 라는 말로는 어떻게 일을 해야겠다는 감이 전혀 안온다(이론)
    • 반면, '우선 2주동안 a라는 기능만 개발해서 출시한 후 사람들의 반응을 한번 보고, 그것을 바탕으로 그 다음 할 일을 정해보자. 2주동안 우리 팀원들은 매일 1시에 진행상황에 대하여 간단하게 공유하고, 1주일이 지난 시점에서는 계획대로 잘 되어가고 있는지 중간점검을 한번 하도록 하자.'(수행 방법) 라고 이야기한다면 어떻게 해야 할지 훨씬 명확한 느낌이다.
    • 어디에선가 들어본 것 같은 스크럼, 칸반 등의 단어는 '애자일'을 실천하는 방법들이다.
  • 린 소프트웨어 개발 이라는 것도 있는데.. 이녀석은 애자일을 실천하는 방법에 속하는 것이 아닌, 다른 소프트웨어 개발 방법론이다. 아래와 같이 이해하면 되는 듯.
    • 소프트웨어 개발 방법론 → [폭포수, 애자일, 린]
      애자일 실천방법 → [스크럼, 칸반]

여기까지 찾아보니 스프린트는 영 관련이 없는 이야기인가 싶었는데, 그 다음으로 찾아보려 했던 단어인 스크럼(Scrum) 스프린트와의 연결고리가 있었다.

사전에서 찾은 Scrum과 위키백과에 적혀있는 정의를 가져왔다.

럭비에서 반칙이 있을 때, 양편 선수가 밀집하여 서로 팔을 꼭 끼고 뭉치는 일. 그 사이로 굴려 넣은 공을 자기편 쪽으로 빼냄.

스크럼(Scrum)은 프로젝트 관리를 위한 상호, 점진적 개발 방법론이며, 애자일 소프트웨어 공학 중의 하나이다.
https://ko.wikipedia.org/wiki/스크럼_(애자일_개발_프로세스)

'애자일 소프트웨어 공학 중의 하나이다' 라는 말은 알아듣겠다. 애자일 방법론을 실천하는 방법 중 하나라는 이야기인 듯. 스크럼에 대한 좀 더 상세한 정보를 얻기 위해 위키 링크와 아래 첨부한 글을 읽어보았다. 아래 링크에는 스크럼 실천 방법에 대한 구체적인 내용이 나와있다.

1편 - https://brunch.co.kr/@insuk/13 / 2편 - https://brunch.co.kr/@insuk/14
다른 사람의 글 - https://medium.com/dtevangelist/scrum-dfc6523a3604

  • 위에 첨부한 링크에 들어가서 글을 읽어보면, 마치 보드게임 처럼 사람들이 각각 어떤 역할을 부여받고(Product Owner, Scrum Master 등) 정해진 규칙(매일 정해진 시간에 15분정도 각자의 상황을 공유한다, 1주에서 4주 사이의 스프린트 기간동안 각자의 일을 하고, 스프린트가 끝나면 스프린트 리뷰와 회고를 한다 등 많은 규칙이 있음)에 따라 소프트웨어를 개발하는 것을 스크럼이라고 하는 것 같다.
  • 내가 생각했던 스프린트(Sprint)라는 단어는 여기에서 나온다.
    • 스프린트: 작은 기능 하나에 대한 [계획, 개발, 테스트, 기능 완료] 주기를 일컫는 말.
    • 보통 1주 ~ 4주 사이의 기간 동안 스프린트를 진행한다. 스프린트 기간 동안, 스크럼을 수행하는 구성원들은 단거리 전력질주(sprint)를 하듯 집중해서 자신의 업무를 수행한다.
    • 스프린트 기간이 끝나면 스크럼 구성원은 해당 스프린트때 무엇을 했는지(스프린트 리뷰), 해당 스프린트를 돌아보며 드는 생각을 함께 나눈다(스프린트 회고).
    • 결국 처음에 찾아봤던 '구글 스프린트'도 짧은 기간동안 빠르게 [계획-디자인-프로토타이핑-테스트] 까지의 주기를 반복하는 것이기 때문에 '스프린트'인 것이다.

여기까지 얻은 지식을 바탕으로 정리를 해보면,

우리 팀은 애자일 방법론 스크럼을 도입하여 실천하고 있다. 이번 스프린트에서는 사용자가 자신의 히스토리를 확인하고 편집할 수 있는 기능을 완성하기로 했다.

위와 같은 문장은 아래 문장과 같이 풀이할 수 있겠다.

우리 팀은 변화에 빠르게 대응할 수 있는 소프트웨어 개발 방법에 대한 이론 프로덕트 오너, 스크럼 마스터, 그 외 팀원들이 매일 짧게 진행상황을 공유하는 등 스크럼 이라고 하는 것에 포함된 룰을 지키며 일하는 것을 통하여 실천하고 있다. 이번 집중해서 일하는 n주(1주 ~ 4주) 동안에는 사용자가 자신의 히스토리를 확인하고 편집할 수 있는 기능을 완성하기로 했다.

 

 

 

반응형
LIST

'DEV_일반' 카테고리의 다른 글

GitHub를 활용한 이슈 관리  (6) 2020.02.07
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함