소스코드위를 걷다... 왕멀

wangmul.egloos.com

방명록



프로그래밍과 주석, 그리고 문서화하기 ◈ 설계와코딩 ◈

내가 프로그래밍을 처음 시작했을 무렵 디자인패턴이나 TDD, 개발방법론 같은 것이 있는지도 모르고 있던 시절 항상 날 괴롭혔고 그렇기에 가장 큰 관심사가 되었던 것은 문서화주석이었다.

참 많은 사람들이 이것에 대한 이야기를 했다. 그 이야기의 맥락은 문서화가 잘 되어 있으면 주석따위는 필요없다 라는 의견과 주석이 잘 되어 있으면 문서화를 별도로 할 필요가 없다는 것이었는데 이 이야기의 중심에는 언제나 Doxygen이 있었다. 코드에 달아놓은 주석들이 소스코드와 함께 그대로 문서화가 되어버리는 Doxygen.

문서화라는 것을 정말 싫어하는 개발자 입장에서는 최고의 방법이었고 문서화를 주장했던 많은 사람들에게 완전하지는 않지만 그래도만족시킬 수 있는 수준의 문서화방법이 되어주었기에 Doxygen은 이 논란의 시작이자 마무리가 되어주곤 했다.

시간이 꽤 지난 지금 생각을 해 보면 이 논란은 서로 다른 분야에 있는 이야기를 같은 분야에 있는 것으로 착각하고 진행을 해온게 아닌가 아는 생각이 든다. 문서화와 주석이란 서로 다른 분야에 있는 것인데 그것을 같은 곳에 있는 것이라고 착각을 했던것이 아닐까?

문서화에 대해서 내 스스로 내린 정의는 프로젝트에 대한 백서(White paper)를 만들어내는 과정을 이야기한다고 생각한다.

프로젝트에 대한 공식 보고서중에 프로그래밍 분야에 대한 항목을 만들어내는 것이 문서화가 되며 문서화에서 주력해야 하는 것은알고리즘, 구현(릴리즈)목표와 일정, 세부 진행사항, (큰 의미에서의) 클래스 설계에 관련된 내용이 포함되어 있어야 한다.
문서화의 목적은 어떤 프로그래머든간에 문서화 자료를 봤을 때 프로젝트의 숲 전체를 바라보며 그 숲이 어떻게 구성되어 있는지를 알게 하는 것이 목표가 되어야 한다.

그렇다면 주석은 뭘까?
주석은 레퍼런스를 만드는 과정이다. 그리고 Doxygen은 효율적인 레퍼런스를 만들어주는 툴이 되어줄 수 있다. 즉, 이 곳에는 어떤 나무들이 심어져있는지를 보여주는 것이 목표가 되어야 한다.
실제로 Doxygen으로 생성된 문서를 봤을 때 그것을 통해 프로젝트를 이해하는 것은 굉장히 어렵다. 하지만 내가 찾고자 하는 부분을 찾아 들어갈 때는 그 어떤 것 보다도 힘이 되어준다.

문제가 발생했을 때 해당 문제가 생기는 원인을 문서화 작업으로 만들어낸 백서에서 찾아내고 찾은 부분에 대한 구체적인 확인은레퍼런스에서 하며 그 확인이 끝났을 때 코드에 수정하는 "문서화자료 --> 주석(레퍼런스) --> 코드"의 과정이이루어지도록 해야 한다.

그러므로 프로그래머라면 문서화도 주석도 소홀히 해선 안된다고 생각한다.
결국 프로그래머는 코딩, 알고리즘과 더불어 주석, 문서화까지 신경써야 한다는 깝깝한 이야기가 되어버리긴 했지만 내가 했던프로젝트를 5년쯤 후에 다시 맞닥뜨리게 되었을 때 적어도 내 코드를 보면서 머리 갸웃거리기 보단 당당하게 후임자에게 "내가도와줄 거 별로 없지?"라고 말해줄 수 있는 프로그래머가 되는게 훨씬 멋있지 않겠는가.

트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://wangmul.egloos.com/tb/1605430 [도움말]
  • 2. Trac 위키를 활용한 문서화 및 협업 2009/02/13 12:06 #

    2. 문서화 목차 서문 2. 문서화 목차 서문 일반적으로 문서화란 문자나 도식을 이용해 문서로 만드는 의사소통의 도구이다. 그리고 소프트웨어 공학에서 문서화란 소프트웨어에 관한 여러 정보를 소프트웨어 개발자나 기획자, 설계자들 간의 의사소통을 위하여 문서로 만드는 것이다....... more

덧글

  • 네모도리 2007/07/23 15:54 # 답글

    저도 요즘 비슷한 생각하고 있었네요 ^^
    외골수로 개발자 하면 코딩스킬만이 최고라고 생각하는 사람들이 의외로 많은 것 같습니다
    교육기관에서도 코딩스킬위주로 너무 집중하지 않나 하는 생각도 많이들구요
    요즘 회의록조차 통신체로 산만하게 쓰는 신입들보면 참....
    자기 생각을 논리적으로 글이나 말로 표현하는 게 먼저라는 생각이 많이 듭니다
  • 굴돌 2007/07/27 01:06 # 답글

    "내가 도와줄 거 별로 없지?" 이 말 정말 마음에 드네요 :)
  • 인생은게임 2007/07/29 20:38 # 답글

    처음 뵙겠습니다. 우연히. 들어 오게 되었습니다.

    일본의 게임을 보면, 제작 완료를 하고 나오는 사진중에는 게임을 정리해놓은 문서들의 표지가 보입니다.

    당연히 책안의 내용은 보여주지 않고, 표지만 보여 줍니다.
    플스2로 발매된 테일즈 오브 데스트니의 시르지의 경우는
    책으로 5권으로 되어 있습니다.

    이 책의 내용에는 게임의 컨셉 그림, 주제, 캐릭터 디자인, 게임의 시나리오, 주인공들의 대화, 배경 , 일러스트레이트, 등등이 들어 있는것으로 알고 있습니다.

    소스코드는 관리 한다는데,,, 이 책속에 들어 있는지는 모르겠습니다.

    애들은, 이걸 다음 시리즈나, 리메이크를 할때 사용하기 위해서
    기록해 하는것으로 알고 있습니다.

    제작진이 변경되고, 다른회사로 가더라도, 일관성을 유지하기 위해서겠지만,,,,,

    // 이런, 다른 이야기를 해벼렸습니다.
    프로그램의 문서화가 아닌, 게임의 문서화 였습니다.

    한국에서는 마비노기를 문서화 놓았다고, 잡지에서 보았습니다.
  • 인생은게임 2007/07/29 21:22 # 답글

    두번째 뵙겠습니다. 저는 프로그램 학원의 학생입니다.
    약 3개월 배우고 지금은, 여름방합니다.

    프로그램의 주석과, 문서화는 제게 큰 문제점입니다.

    주석은 2개로 나누어서, 기능설명과, 기능구현으로 설명으로
    내용을 담고서 프로그램을 써놓고 있는데,

    주석을 넣는 시간이 프로그램의 코딩 시간보다 길어 지는 경우가 있습니다.
    30분정도 걸려서 만든 삼각형 프로그램이라고 하면,

    주석넣고, 설명을 넣고, 플로우 차트까지 따로 만들면
    코딩보다, 더 시간이 걸립니다.
    --------------------------------
    학교뒤에 있는 책꽃이에 '시스템 설계'라는 낡은 책에 문서화에 대한 예문이 나왔습니다.

    언제, 누가, 무슨 프로그램을 만들고,
    소스코드를 붙여넣고 알고리즘이 어떻게 움직이는지, 글자로 좔좔좔 써놓은

    예문입니다.

    간단한, 구매 프로그램을 만들고, 문서화 까지 하는게 여름방학 숙제입니다.


    프로그램은 버그나면, 수정을 해야 하므로,
    수정을 하고나면, 수정한 문서를 또 만들어야 하므로,

    프로그램의 문서화는 인터넷의 RFC문서와 비슷하다고 생각합니다.
    ---------------------------
    게임프로그램의 문서화는 2가지로 만들어 지면 어떻까 생각합니다.
    (실제로 일을 하게 되면, 바빠서 그럴 시간이 없다고 들었지만,,, )


    프로그램을 모르는 사람이 보는 문서와.
    프로그램을 아는 사람이 보는 문서.

    2가지가 있어야 한다고 생각합니다.

    마치 가전제품, 냉장고를 구입하면 2가지의 메뉴얼이 있는데.
    퀵 메뉴얼과, 두꺼운 자세한 메뉴얼이 있는것처럼,


    간단한 문서는 프로그램의 소개를 위한 문서이며
    (예를 든다면, 기획자나, 일러스트 레이터, 사운드, 시나리오를 만드는 팀원)



    자세한 문서는 실제로 프로그램을 만들고, 수정하는 사람들이 보는 문서입니다.
    (기능구현과 제작시 발생했던 버그와 해결방법등... )


    실제 게임을 만들거나, 회사에 들어가서 문서화를 이렇게 하자고 말하면,
    대답은 뻔할것 같습니다.

    1. 귀찮아 필요없어.
    2. 너가 만들어라.

    안녕히 게세요.
  • Ronie.Kang 2007/09/20 19:25 # 삭제 답글

    문서화와 주석에 대해서 좋은 예를 들어 주셨네요.

    문서화 : "숲이 어떻게 구성되어 있는지를 알게 하는 것이 목표가 되어야 한다."
    주석 : "어떤 나무들이 심어져있는지를 보여주는 것이 목표가 되어야 한다."

    그럼 고운하루 되세요.
  • 즈모모 2008/07/07 09:35 # 답글

    orz 누가... 기획단계문서를 어떻게 작성하는지좀 알려줬으면 좋겠어요...
    지금회사에 프로그래머들이 자기 살길 찾겠다고 다들 나가버렸으니...
    어떻게 배울수도 없고.. GG..
덧글 입력 영역