티스토리 툴바

[SK C&C Agile방법론(SKPE-Agile):주요 Practice 및 적용사례] <2편> 사용자 스토리 정의 및 Agile 협업도구 활용 Practice

|


IT 프로젝트 초기에 수행되는 과도한 요구사항 수집과 문서화는 프로젝트를 오히려 망쳐버릴 수 있습니다. 화려한 장문의 요구사항 문서를 작성하면 더 나은 결과를 얻을 수 있을 것 같은 느낌이 들지만, 대부분의 프로젝트 현실에서는 장문의 요구사항 문서를 작성할 시간이 없습니다. 일일이 기록하고 문서를 주고 받으며 협상하는 대신 이야기를 주고 받고, 화면시안을 종이에 그리고 프로토타입을 만들고, 조금씩 자주 코드를 작성하여 실제 사용자들에게 보여주고, 사용자와 밀접한 관계를 유지하고 세부적인 진행상황을 공개하는 방법이, 멋지고 화려한 요구사항 문서를 만드는 것보다 훨씬 효율적인 방법이라고 많은 Agile적용 경험자들은 충고합니다.


사용자 스토리(User Story)는 사용되는 소프트웨어 기능(Feature) 혹은 요구사항(Requirements)을 의미하며 일반적으로 한 두 문장으로 짧게 표현되며, 상세한 명세보다 의사소통을 활성화시키려는 목적으로 사용되며, 사용자 스토리는 한두 명의 개발자가 2주일 안에 구현하고 테스트 할 수 있는 정도의 크기가 적당하고, INVEST 원칙(여섯 가지 특성)을 고려하여 충실하게 작성하는 것이 중요합니다.


사용자 스토리 작성 책임


고객
은 사용자스토리를 작성할 책임이 있으며, 사용자 스토리는 의견을 주고 받기 위한 약속이지 상세한 명세는 아닙니다. 또한 사용자 스토리는 사용자나 고객에게 가치를 주어야 합니다.

개발자는 고객이 직접 스토리를 작성하는 것을 도울 책임이 있습니다.

기술과 관련되거나 시스템의 기반구조 개발에 관한 스토리가 필요하다고 생각한다면, 그것들을 직접 언급하는 대신 사용자와 고객에게 가치를 제공하는 측면에서 설명할 책임이 있습니다.


사용자 스토리의 여섯 가지 특성 (INVEST 원칙)


좋은 스토리를 작성하기 위해서는 마이크 콘의 “User Stories Applied” 에 언급된 여섯 가지 특성에 집중해야 합니다. 영문 첫 글자를 따서 『윌리엄 웨이크』는 INVEST라는 이름을 제안하기도 하였습니다. (Wake 2003a)

I → 독립적이다 (Independent)

     ▷ 사용자 스토리간에 의존성을 배제하도록 하고, 스토리 사이에 의존성이 있으면 우선순위 결정과 계획수립에 문제를 야기합
          니다

 

N → 협상 가능하다 (Negotiable)

     ▷ 사용자 스토리는 계약서나 요구사항 명세서처럼 꼭 구현해야 한다고 기록하는 것이 아닙니다.

     ▷ 스토리는 기능에 대한 짧은 설명일 뿐이며, 세부사항은 고객과 개발팀이 대화를 통해 협상해야 합니다.

 

V → 사용자와 고객에게 가치가 있다 (Valuable) 

     ▷ 모든 사용자 스토리는 사용자, 구매자에게 가치가 평가되어야 합니다.

     ▷ 정말 피해야 할 사용자 스토리는 개발자에게만 가치 있는 스토리입니다.

     ▷ 세부적인 기술사항과 프로그래머에게 필요한 내용에 초점을 맞추기 보다는, 고객이나 사용자에게 제공하는 이점이 드러나
         도록 작성하여야 합니다
.

 

E → 추정 가능하다 (Estimable)

      ▷ 개발자들은 각 스토리의 크기 혹은 작업소요 시간을 추정(적어도 추측) 할 수 있어야 합니다.

 

S → 작다 (Small)

      ▷ 사용자 스토리는 한두 명의 개발자가 길어야 2주일 안에 구현하고 테스트할 수 있는 정도의 크기가 적당합니다.

      ▷ 스토리의 적절한 크기는 개발팀의 역량이나 사용하는 기술에 따라 결정됩니다.

 

T → 테스트 가능해야 한다 (Testable) 

      ▷ 사용자 스토리는 테스트 가능하도록 작성해야 합니다. 테스트를 성공적으로 통과해야 그 스토리가 성공적으로 개발되었다
          고 볼 수 있습니다
.




사용자 스토리 생성


최근에 제가 프로젝트에서 수행했던 사용자 스토리 생성 사례를 보여드립니다. Agile 협업도구를 활용하여 사용자스토리를 생성했으며, 서브시스템을 컴포넌트로 정의하고, 사용자스토리 상위기능으로서 업무구분을 커스텀필드로 정의하여 활용하였습니다. 또한, 사용자 스토리에 대해 우선순위를 선정하고, 담당자를 Assign합니다.





고도의 협업체계 구성


Agile Practice를 성공적으로 적용하기 위해서는 고도의 협업체계구성이 중요합니다. 단일 뷰(Agile 협업도구)를 통한 커뮤니케이션 수행과 일일 스크럼 회의 및 이터레이션 데모 등 Agile Practice를 적용하여 의사소통 오류 최소화, 보고/관리 활동 최소화 및 진척관리 투명성 제고에 크게 도움을 줄 수 있습니다.


 

Agile Task Board 활용


구현해야 할 사용자 스토리 카드를 할일, 진행 중, 완료로 구분하여 화이트보드에 붙여가며 이해관계자들과 공유합니다. 또는 아래의 사례와 같이 협업도구의 Agile Task Board를 활용하여 아래와 같이 전체 또는 담당자별로 사용자 스토리 현황을 일목요연하게 공유/관리 할 수 있습니다. 사용자 스토리 작업상태를 변경하려면, 해당 사용자스토리를 클릭하고 원하는 상태위치로 Drag&Drop하여 손쉽게 이동하면 됩니다.
 



사용자 스토리 규모추정


프로젝트 팀은 제품백로그의 항목인 개별 사용자 스토리를 대상으로 스토리 포인트를 이용하여 추정합니다. 스토리 포인트는 사용자스토리나 기능 또는 어떤 작업의 규모를 표현하기 위해 사용되는 상대적인 단위입니다.

 


또한, 프로젝트의 오버헤드를 고려하여 사용자 스토리를 구현하기 위해 소요되는 시간을 추정합니다.

Agile 프로젝트에서 사용자스토리 규모추정 작업은 추정 자체의 불확실성을 인정하고, 잦은 추정 작업을 통하여 지속적으로 추정 작업을 수행합니다.

 

사용자 스토리 우선순위 정의


사용자 스토리마다 우선순위를 부여하여 릴리즈 계획, 이터레이션 계획에 반영합니다. 우선순위는 Blocker (긴급), Critical (심각), Major (높음), Minor (보통), Trivial (낮음) 등으로 정의하여 활용 될 수 있습니다. 각 스토리에 대한 가치와 추정치를 참고하여 조직에 전달하는 가치가 최대가 되도록 스토리를 정렬하는 것이 중요합니다.

 

Burn down Chart (소멸차트) 활용


시간이 지나감에 따라 남아 있는 사용자 스토리 작업량을 대쉬보드, Burn down Chart 등을 통하여 확인할 수 있습니다. 아래 초록색으로 표시된 선이 날짜에 따라 남아있는 작업량 or 이슈건수를 보여 주고 있습니다.


 


이번 글에서는 주로 사용자 스토리 정의 및 Agile 협업도구 활용 Practice 에 대해 소개하였으며, 다음 3편에서는 CTIP(Continuous Test & Integration Platform) 기반 빌드체계 및 테스트 강화 Practice를 소개합니다. 기대해 주세요!


SK C&C Agile방법론(SKPE-Agile): 주요 Practice 및 적용사례

<2편> 사용자 스토리 정의 및 Agile 협업도구 활용 Practice
<1편> Agile Practice 적용 접근방법 및 짧은 개발주기 반복





 

저작자 표시 비영리 변경 금지
트랙백 트랙백 0 댓글 댓글 0
※ 댓글 작성 시 '차단된 사용자입니다.' 라는 메시지가 보일 수 있는 것은 시스템이 스팸으로 인식했기 때문입니다.(불쾌하지 않으셨음 합니다.^^)
    이런 경우엔 글쓴이 이름을 한글로, 글내용은 한글/영문/숫자를 혼용하여 작성하시는 것을 권장 드립니다.

페이스북

트위터