'mikado'에 해당되는 글 1건

  1. 2012.01.26 [IT] the mikado method - 대규모 리팩토링을 위한 도구
2012. 1. 26. 10:20 IT

미카도 메소드 : 리팩토링, 리스트럭처링을 위한 사고 도구 "a tool for large scale refactoring"

교육용 완구, 보드게임으로 분류되는 미카도 게임과 유사한 개념임에 착안하여 명명지었다고 합니다.



물론 이게임을 소개하자는건 아니고..

대규모 코드 베이스를 변경, 개선하는 것은 쉬운 일이 아닙니다.
하지만 그래도 손대야 한다면?
안전하게, 확실하게 변경하기 위해 추천하는 방식입니다. (물론 그전에 [Working effectively with legacy code] 책을 먼저 추천합니다. )

간단한 모듈의 수정은 과감한 리팩토링을 해볼만 하지만, 그 규모가 인간의 단기기억 저장소를 넘어서는 단계에 이르면 (빅데이터냐..) 어느순간 되돌리기도, 계속 나아가기도 어려워집니다. 

미카도 게임은 기다란 나무 막대들(mikado stick)을 윷처럼 던져 막대들이 쌓이면, 주위 막대를 건들지 않도록 하면서 하나씩 들어올려 가장 높은 점수를 얻는 게임입니다.
( 자세한 게임룰 소개는  쇼핑몰에서 검색하여 제품소개를 보면 알 수 있고, 제네스 님의 설명도 이해에 도움이 됩니다.   http://blog.naver.com/PostView.nhn?blogId=genes75&logNo=100000447201  )

이것이 바로 리팩토링, 리스트럭처링을 할때 제안하는 작업 방식에 대한 은유가 되는거죠..

높은 점수의 막대 (목표, goal) 를 들어올리기 위해서는
더이상 건들 막대가 없는(그 위에 쌓인게 없는) 막대(전제조건, prerequisites)를 먼저 들어올려야 한다는 생각이고,
이를 그래프화 한 것이 바로 미카도 그래프가 됩니다. 

제안자들이 제시하는 규칙 혹은 가이드라인은 다음과 같습니다.
1. 가장먼저 목표(goal)를 적는다.
2. 시도해볼 것을 찾아내고 
3. 깨진 코드에서 돌아오고 (roll back)
4. 순환해서 전제조건들( prerequisites )을 고쳐나간다. 

아래는 미카도 그래프의 예시입니다.
그래프가 다 그려지면 제일 위에 있는 나뭇잎부터 해결하면서 체크하면 됩니다.
마지막에는 최종 목표인 "Stranger Erons 사에 새로운 제품" 을 달성하게 된다.


출처 : [Beheading the software beast] Draft버전 , Daniel Brolund외,  pdf본 p46 그림 2.16


느낀점.

심플하지만 활용도가 높은 방법이 될듯. (물론 어느정도의 규모의 복잡도가 있어야 가치가 있다.)
목표를 중심에 두고 생각 하는 것이 중요하며, 복잡한 연관관계를 머릿속에 (물론! 머릿속에서 위와 같은 그림을 그려버리는 능력자들은 존재한다. ) 그려내기 보다 시각적으로 표현하는 것이 좀더 효과적이란것.
그리고 (정말.. 별걸 다 만들었다 싶은.. )

참고로 Method&Tools 2012 Jan. 메일을 통해서 알게되었습니다. 

관련자료
- 홈페이지 :   http://mikadomethod.org/
- PDF :  Beheading the software beast   http://www.agical.com/mikmeth/mikadomethod.pdf 
- JavaZone 동영상 : http://vimeo.com/28765431  Sep 8 2011. Oslo, Norway
posted by smplnote