Ship It 성공적인 소프트웨어 개발 프로젝트를 위한 실용 가이드“를 다시 읽었습니다.

새로 시작하는 과제에 개발과 함께 SCM, Process, SQE를 담당하기로 하였습니다.
Scrum 적용부터 제가 하고 싶은 것을 함께 적용할 기회를 가지게 되었습니다.
팀원들에게 어느 정도 호응도 얻었습니다. ^,.^;

그래서 과제를 진행하는데 있어 몇 가지 정리할 것이 있어 Ship It을 다시 읽게 되었습니다. 그래서 부록에 있는 Tip 조언 요약을 정리해 봅니다. 아래의 글에서 나중에 글들이 링크될 수 있습니다. 어떻게 인프라와 프로세스를 구축했고 어떻게 팀원들을 설득했으며 어떤 문제로 어려워하고 있는지를 이 글을 기준으로 시작하려고 합니다.

앞으로 재발행될 요지가 큰 포스트입니다.ㅎㅎ

- TIP 조언 요약 -

  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. 자주 통합하고, 지속적으로 빌드하고 테스트하세요.
  31. 동작하는 데모를 일찍 그리고 자주 전달하세요.
  32. 여러분이 무엇을, 왜 하고 있는지 공개하세요.
  33. 얼굴을 많이 마주칠수록 팀워크가 단단해집니다.
  34. 고쳐야 하는 것만 고치세요.
  35. 파괴적인 ‘우수한 업무처리기법’은 진정한 의미의 업무처리기법이라 할 수 없습니다.
  36. 밑에서부터 혁신해야 합니다.
  37. 말만 하지 말고 보여주세요.
  38. 관리층의 지지를 이끌어내세요.
  39. 버그가 있는 곳을 테스트하세요.
  40. 목록은 살아있는 문서입니다. 변화가 목록의 생명입니다.
  41. 목록에 없다면, 그것은 프로젝트 일부가 아닙니다.
  42. 항상 피드백을 빨리해 주세요.


 

프로젝트를 진행함에 있어 가장 중요한 요소 중의 하나가 자동화라고 생각합니다.

IBM developerWorks의 자동화 관련된 내용을 오픈마루 강규영님께서 정리해 주셨네요.

진행하고 있는 프로젝트와 비교해 보시고 적용 점을 찾아 보시면 많은 도움이 있을 것 같습니다.

제가 올해 부터 진행하는 프로젝트에 하나 씩 적용하면서 어떻게 적용하였고 어떤 장,단점이 있는지를 정리하려고 합니다.

인프라(툴), 프로세스, 테스트(기법)의 내용이 주된 내용이 될 것 같습니다.

똘똘하게 일합시다.(Work smart) ^,.^;

[#M_ more.. | less.. |


필자 | 강규영, 엔씨소프트 오픈마루 스튜디오 웹서비스 개발팀 alankang@openmaru.com

2007년 10월 30일
2008년 01월 08일 수정


어느 정도 경험이 있는 개발자라면, 혹은 마틴 파울러의 "리팩토링"을 읽어본 개발자라면, 소스 코드 중복이 왜 문제이며
중복을 어떻게 하면 효과적으로 제거할 수 있는지 잘 알고 있을 것입니다. 하지만 제거해야 할 중복은 소스 코드에만 있는 것이
아닙니다.

소프트웨어를 빌드할 때마다 반복적으로 입력하는 명령어들, 코드를 수정한 후 수동으로 수행하는 반복적 테스트, 주기적으로 작성하는 각종 리포트 등은 소스 코드 중복은 아니지만 "행위의 중복"이며 제거해야 할 대상입니다.

이 연재는 다양한 자동화 기법을 통해 이러한 "행위의 중복"을 제거하는 효과적이고 검증된 방법들을 상세히 설명합니다. 이를 통해
반복적이고 지루한 작업은 컴퓨터에 떠넘기고, 여러분은 더 창의적이고 가치 있는 일에 집중할 수 있게 될 것입니다.

  • 1편: 빌드 스크립트에서 나는 “악취(smell)” 제거하기 (한글)
  • 빌드 스크립트에 대하여 "악취(bad smells)" 개념을 적용하고 아홉 가지 꼭 피해야 할 악취들을 소개합니다.

  • 2편: 연속 테스팅 (한글)
  • 연속 테스팅(continuous testing)을 소개합니다. 연속 테스팅이란 저장소의 코드가 바뀔 때마다 자동으로 테스트를 수행하게 하는 방식으로, 코드 수정에 대한 피드백 주기를 크게 줄여줄 수 있습니다.

  • 3편: Eclipse 플러그인으로 코드 품질 높이기 (한글)
  • 코딩 표준, 코드 중복, 코드 커버리지, 의존성 분석, 복잡성 감시 등 이른바 "5대 코드 분석 영역"을 설명하고, 다양한 정적 코드 분석 플러그인을 통해 이러한 분석을 자동으로 수행하는 방법을 소개합니다.

  • 4편: Continuous Integration 서버 선택하기 (한글)

  • 속적 통합(continuous integration)을 위한 오픈 소스 소프트웨어들을 소개하고 각각의 특징을 분석합니다. 지속적
    통합은 앞서 소개된 연속 테스팅 등과 함께 행위의 중복을 제거하고 피드백 주기를 줄이기 위해 필수적인 실천법(practice)
    중 하나입니다.

  • 5편: Continuous Inspection (한글)

  • 서 소개한 코드 분석 기법들을 통해 자동으로 코드 검사를 수행하여, 이를 통해 짝 프로그래밍, 주간 코드 리뷰 등을 통해 얻을
    수 있는 유용함을 얻을 수 있는 방법을 소개합니다. 저자는 한편, 모든 수동 소스 검사를 자동화할 수는 없고 다만 수동 소스
    검사 과정을 더 효율화한다는 개념으로 접근해야 한다는 것을 강조합니다.

  • 6편: 지속적인 피드백 (한글)

  • 양한 소프트웨어, 하드웨어 장치를 통해 자동화 결과에 대한 피드백을 받는 방법을 소개합니다. 저자가 강조하는 것은 이 연재에서
    소개되는 모든 장치를 적용하는 것이 아니라 상황에 맞는 적절한 장치를 선택적으로 적용해야 한다는 점입니다.

  • 7편: 아키텍처 건전성 (한글)
  • 아키텍처 수준에서의 디자인 문제를 정량적으로 측정하는 방법, 앞서 소개한 정적 소스 분석 도구들을 이용하여 이러한 검사를 자동으로 수행하는 방법, 그리고 디자인 문제가 발생하면 빌드 프로세스가 멈추도록 하는 방법 등을 소개합니다.

  • 8편: Raven으로 자바 프로젝트 구현하기 (한글)
  • Ruby를 기반으로 구현된 빌드 플랫폼인 Raven을 사용하여 빌드 스크립트 내에서 Ruby의 힘과 유연성을 확인해 봅시다.

  • 9편: Continuous Integration 반패턴(anti-pattern) (한글)

  • 동화 전문가이자, Continuous Integration: Improving Software Quality and
    Reducing Risk 의 공동 저자인 Paul Duvall이 CI 반패턴(anti-pattern)을 설명하고, 이를 피하는
    방법을 설명합니다.

_M#]

 

Continuous Integration은 예전에 마틴 파울러의 글을 얼핏 봤다가 k16wire님의 블로그에서 번역글을 다시 보았습니다.
마침 어제 팀장님과의 미팅 중 빌드 시스템에 대한 필요성에 대해서 잠시 이야기를 하였습니다.
그리고 현재 지원하고 있는 과제에서 SCM 정책(Iteration, Branch, Build, Test)에 대한 논의를 하고 있는 와중에 접한 글이라 반갑기도 하고 더 고민거리가 많아졌습니다.

- 과제 현황 -

  • 여러개의 서브시스템으로 나누어져 있는 팀은 서로 커뮤니케이션이 부족하다.
  • 변경 사항에 대한 공유 프로세스가 미비하다.

  • middleware에서 수정 된 후 check in 되고 그 후에 application 에서 수정되어 항상 빌드되는 코드를 유지하기 힘들다.(프로세스 미비)

  • 개발자가 본인 모듈과 Dependency가 있는 모듈을 알지 못한다.

  • Unit Test Case를 수행하고 있지 않다.(일부 제외. 현재 QA팀에서 작성하고 있다.. ㅡ,.ㅡ)

요약 하면 “프로세스 및 Tool 미비” 이다.

현재 SCM에서 빌드 시스템을 개선하고 있습니다. 그래서 Buildix를 소개 했습니다.

Buildix는 아래의 세가지 Tool을 포함하고 있습니다.

Buidix의 Demo 동영상은 여기를 참고 하시면 됩니다.

Buildix의 Diagram은 아래와 같습니다.

관련 글
 - 사람을 위한 자동화: Continuous Integration 서버 선택하기

 

지난 토요일에 Agile OST 2007에 다녀왔습니다.

KBS 방송 나가는 대신 장소를 제공받았기 때문에 KBS 신관에서 OST가 열렸습니다.
(10월 11일 “세상을 바꾸는 당신 U”라는 제목의 방송에 조금? 들어 갈 예정이라고 합니다.)

참석인원은 약 70명 정도 되었던 것 같습니다.

다과비를 자율적으로 걷고 김창준님의 OST 설명으로 OST가 시작되었습니다.

OST의 진행에 대해서 체험한 것과 김창준님의 설명을 기준으로 간략하게 다시 정리하면…

1. 토론 시작 전에 자기가 관심 있고, 듣고 싶고, 말하고 싶은 주제에 대하여 발제를 합니다.  발제자는 간단한 내용과 이름을 포스트잇으로 보드에 게시합니다.

2. 참석자들은 관심있는 주제를 보드에서 확인 한 후 참여하고 싶은 그룹에 가서 토론을 합니다.

3. 토론 과정에서는 자유롭게 이동합니다. 그러나, 발제자는 책임을 지고 토론을 마무리합니다. 만약 다른 토론자가 발제자를 대신 할 수 있다면 발제자도 자유롭게 그 토론을 떠날 수 있습니다.

4. 토론 중 새로운 주제가 생각나면 보드에 비어있는 그룹과 시간에 포스트잇으로 주제를 게시합니다. 그리고 사람을 모읍니다.

- 발제자는 토론이 원활하게 진행될 수 있도록 사회자의 역활을 하면서 내용을 잘 정리해야 합니다.

김창준님은 마켓이라는 표현을 사용하시더군요. 정말 토론장이 시장과 같은 분위기였습니다.

현재 참석자들과 도우미분들께서 OST에서 나왔던 토론 내용을 위키에 정리하고 있습니다.

10/7에 http://xper.org에 게시될 예정입니다. 그 때 정리된 내용으로 다시 포스팅하겠습니다. ^,.^;

저도 발제를 하 나 해서 토론을 이끌었습니다.(무슨 용기로 그랬는지는 모르겠지만)
정리를 조금 더 해서 제가 생각하고 있는 것을에 대해서 많은 내용을 올려 볼 계획입니다.^^;
 

요즘은 즐겁습니다. 하고 싶은 일을 하고, 하고 싶은 공부를 하고, 만나고 싶은 사람을 만난다는것이…

다른 분들의 후기도 다음 포스팅으로 소개하겠습니다. 지금도 많이 올라오고 있습니다..ㅎ

후기를 보다보니 제가 진행하고 있는 사진이 있네요 ^^; 분위기도 보실 겸 한 번 보세요.
다른 사진들은 여기서 보세요.

Technorati 태그: , ,
 

김창준님의 주관으로 애자일 방법론에 대한 OST(Open Space Technology)가 열립니다.

: Agile OST 2007

이번 OST 주제는 아래와 같습니다. 물론 주제가 아래로 제한되어 있지는 않을 겁니다.

- 게임 개발에서의 애자일
- 웹기획/개발에서의 애자일
- 테스트 자동화
- C 언어 프로젝트에서의 애자일
- 애자일 퍼뜨리기
- 일과 삶의 균형 되찾기/유지하기 (혹은 더 짧은 시간 일하기)
- …

예전 글처럼 최근? 게임 업계에서 Agile과 TDD의 도입이 활발해 지고 있는 것 같습니다.
게임 관련 쪽에서 일하시는 분들이 많이 오실 것 같습니다.
저는 게임을 소프트웨어의 종합선물 세트라고 생각합니다.^,.^;

저는 이번 OST로 Agile을 우리 팀, 우리 회사에 어떻게 적용할 것인지에 대한 아이디어를 얻고자 합니다.
게임업계와는 상당히? 다른 분위기의 회사지만 분명히 저희와 비슷한 문화를 가진 회사에서 그런 적용 경험이 있으신 분들도 계실 테고 저와 같은 고민을 하시는 분들도 계실 것 같습니다.

저는 다행히 오늘 고향에 다녀오자마자 컴퓨터를 켜고 신청해서 참가할 수 있게 되었습니다. ^^;
여성 신청자는 아직 자리가 남아 있네요… 여성분들은 어서 신청 하시기를… ^^;

시간 : 2007년 9월 21일 13:50 ~ 18:00
장소 : KBS 신관 5층 국제 회의실

 

“Lean Software Development(이하 LSD)”을 깊게? 공부하기 위하여 스터리 그룹이 형성되었습니다.

같은 부서의 동료가 아닌 타 부서의 동료 두 분과 함께 시작하기로 하였습니다.

원래 두 분이서 하기로 했는데 저도 끼워 주십사~ 하여 오늘 모임의 첫 시간을 가졌습니다.

스터디 교재 : 린 소프트웨어 개발, 린 소프트웨어 개발 적용, 그 외 모든 정보들…

2시간의 동안 각자가 생각하는 LSD와 애자일 그리고 우리가 진행하고 있는 과제에 대해서 편하게 이야기 하였습니다.

원래 딱딱한? 스터디 모임이 아닌 책을 읽고 스스로 습득한 내용을 편하게 이야기 하기로 한 것이기 때문에 부담이 없었습니다. 다만 스스로 떳떳하게 하기 위해서 포펜딕 부부의 강의 내용도 다시 보고 국내 강연 녹취도 들어 보았습니다.

이런 이야기를 하던 중 비닐봉다리님(이름을 적을까? ^^)께서 우리의 모임을 르네상스 클럽으로 하자는 제안을 하셨습니다.
원래 계획 중 이셨던 것 합니다. ^^;

르네상스 클럽에 대한 소개는 XP 사용자 모임내용을 참고하세요.

간략하게 설명을 드리면…
 - XP 사용자 모임 소그룹 스터디 모임 중 하나.
 - 생각을 곱하는 모임
 - ‘르네상스맨‘의 정신을 잇는 프로그래머들의 모임
 - 모임의 구성원 : Participants, Facilitator, Recorder
입니다.

르네상스 클럽이 하나의 스터디 그룹이라고 생각하지 않고 모임, 스터디를 하는 프로세스?라고 생각합니다.

다큐먼트모드를 위한 툴은 스프링노트의 그룹노트를 사용하기로 하였습니다.

다음 RC에 참석하기 전에 LSD책을 다 읽고, 포펜딕 부부 강연 동영상과 국내 강연 노취록을 듣고 오기. 책을 못?읽고 오더라도 2주 동안 열심히 살고 열심히 생각하기.

다음 RC는 2주 후에 있습니다.

※ SRC(가칭) 모임에 함께 하실 분들을 모집합니다. 근데 일단 저희 회사 분들만…(취지?에 어긋나는 군요…)

 

평소에 AgileTDD에 관심이 많았다.
Agile 중에서는 XP에 대해서 관련 프로젝트도 참여해 보았다. 충분한 가능성을 본 프로젝트이다.
TDD는 김창준 씨도 우리 팀에 오셔서 세미나를 하셨으나 그 당시에 우리 팀의 현실(수준?)에 맞지 않아 실천을 못 했다.
지금도 회사 내 다른 프로젝트에는 TDD를 적용하는 과제도 있을지 모르나 아직 대부분의 PL들은 큰 관심을 두지 못하는 것 같다. 앞선 글에서도 이야기했지만 지금 우리 회사는 변화고 있다. 그것이 느껴진다. 그래서 내가 열심히 해 보려고 하는 이유이다.(아~ 긍정적인 마인드..ㅋㅋ ㅡㅡ;)

Agile 중에 최근에 관심을 두게 된 것이 Scrum이고 TDD는 조금 더 깊게 들어보고 싶어 이리저리 검색을 해 보았다.
나만 몰랐는지는 모르겠지만 게임업계에서  Agile과  TDD 적용 사례에 관한 많은 글이 포스팅되고 있었다.
아래는 그 포스트 중 관심 있게 본 글 들이다.
우리가 회사에도 적용을 위해서는 많은 이들의 공감대와 Best Practice가 필요하다.
회사 블로그에 명준이가 적은 말이 공감된다.

    어떤 방법론을 맹신하는 것은 바보같은 일이다. XP를 해도 실패할 건 실패하고,
    Waterfall 모델로도 성공하는 프로젝트도 있다.

    하지만 만약 유연한 변화 관리 모델과 명시적이고 간단 명료한 성과확인이

    자주 이루어져서, 개발 업무에 도움을 준다면??

    RUP를 경험해본 나로서는 Agile의 간단하면서도 직관적인 추적과 표기법이

    무척 맘에 든다.

- 명준

Agile :
http://mypage.sarang.net/tt/143
마이에트라는 게임 개발사에서 적용한 애자일 방법을 소개함

http://betterways.tistory.com/9
High Moon 스튜디오에서 게임 개발시 애자일 방법을 이용함

http://betterways.tistory.com/183
애자일 게임 개발: 최전선의 이야기(Agile Game Development:Tales from the Trenches)

http://twiny.tistory.com/1654
기민한 방법론을 사용한 게임개발 (Paper Burns: Game Design With Agile Methodologies)

http://betterways.tistory.com/51
실전 애자일 게임 개발 (Agile Game Development From The Trenches)

TDD :
http://betterways.tistory.com/96

© 2012 기본이 바로 선 나라 Suffusion theme by Sayontan Sinha