‘몸에 맞는’ 소프트웨어공학을 위해

작은 벤처기업에서 다닐때는 느끼지 못했지만, 개발자들의 협업이 중요시 되는 규모의 회사에 와서 어떻게 하면 더 빠르고 품질이 높은 소프트웨어를 만들까 고민했던 적이 있었다. 당시에 유행했던 익스트림 프로그래밍(XP) 혹은 애자일 방법론을 도입 하기도 하고 다양한 개발 지원 도구를 적용시켜 보기도 했었다.

특히, 오픈 소스 개발 커뮤니티에 참여해서 수백명의 공동 개발 프로젝트에 몸을 담고 있다보니 서당개 삼년이면 풍월을 읊는다고 S/W 개발 프로세스의 중요성을 어렴풋이 알게 된듯 하다. S/W 복잡도가 증가함에 따라 더 효율적인 개발을 할 수 있도록 만들어진 학문이 ‘소프트웨어 공학‘이다.

사용자 삽입 이미지
컴퓨터 전공자는 학부 3학년 무렴 한과목씩 의례적으로 개설되어 있고 들어보면 산업 공학의 개발 공정과 엇비슷한 이 영역은 마치 개발자에게 큰 부담을 지우는 것처럼 보이기 일쑤다. 그도 그럴것이 회사에 들어와 보면 SW 공학은 산출물과 문서화라는 것으로 개발자를 얽매고 있기 때문일 게다. 게다가 CMMI 라고 불리는 아주 복잡한 프로세스 때문에 SI 업체나 연구 개발 프로젝트에서는 개발 보다 CMMI 준수에 더 많은 리소스가 든다는 불평을 듣는다.

개발자에게 소프트웨어 공학은 뭔가 불편한 그런 것이다.

하지만, 소프트웨어 공학은 개발자들이 삽질하지 않고 더 효율적으로 개발하도록 도와 주는 도구가 되어야 한다. 문제는 국내에 그런 도움을 줄 S/W 공학자들이 잘 없다보니 인식의 전환이 잘 이루어지지 않고 있는 것이다. 솔직히 아직도 SW 개발 시 기본적인 도구인 버그 트래커와 소스 콘트롤을 사용하지도 않으면서 CMMI 같은 걸 적용한다는 데를 본적이 있다.

실제 사용한다고 해도 기본적인 지식도 잘 모르는 경우도 많다. 예를 들면, 버그 트래커와 소스콘트롤 로그는 서로 정확히 일치 했을 때 유용하다. 문제점을 해결한 커밋용 패치를 코드 리뷰하고 이를  커밋 로그를 통해 처리할 필요가 있다. 게다가 소스 콘트롤의 Branch와 Merge 기능을 멋지게 사용하는 방법도 아직 모르는 사용이 많다.

사용자 삽입 이미지최근 나의 절칠한 친구이자 연구 토론자인 홍콩과기대 김성훈 교수가 MIT 포닥을 마치고 근 8년 만에 귀국해서 한국에 머무르고 있다. 1995년에 학부생으로 서로 만났던 인연이 이어져 2005년에 미국에서 봤을 때 향후 한국에서 SW 공학에 대한 전망에 대해 토론을 한적이 있었다.

당시 XP와 애자일이 국내 인기를 끌고 있었던 때인데다 조엘 스폴스키와 맥코넬이나 켄트백의 책이 인기를 끌고 있었기 때문에 한국에서도 앞으로 S/W 공학에 대한 관심이 늘것이라고 판단했다. 문제는 기업의 요구가 있어야 한다는 점이었다. 물론 경영자의 요구가 아닌 개발자의 요구 말이다.

김성훈 교수는 기업에서도 근무한 경험이 있어서 소프트웨어 개발에서 개발자들의 요구를 연구에 접목하는 데 탁월한 능력을 발휘한다. 현재, 구글과 야후 같은 글로벌 기업과 일하고 있기도 하지만 그와 토론을 하다 보면 즉각 연구 주제를 끌어내기도 한다. 연구와 실용이 만나는 순간이다.

그는 자동 버그 검출 및 해결에 관심을 갖고 주로 오픈 소스  프로젝트를 대상으로  연구를 진행해 왔다. 그의 연구 결과에 따르면, 오픈 소스 프로젝트의 버그 검출율을 매우 낮아 높은 코드 품질을 유지한다고 한다. 따라서 관심사는 기업 내 소스 코드와 버그의 경우 어떤지에 대한 것인데, 실제 기업에서 가장 기본 데이터에 속하는 버그트래커와 소스콘트롤을 적절히 사용하는 예가 드물어 애로를 겪고 있기도 한다. 이런 부분에 도움을 줄 사람이라면  그의 학생이 되어도 좋겠다.

사용자 삽입 이미지다행인 것은 국내에도 S/W 공학자들 중에 개발자들과 실제로 호흡하려는 움직임이 있다는 것이다. 최근 안랩의 김익환 부사장님과 소프트웨어 개발의 모든것이라는 책을 집필한 전규현 PM의 경우 소프트웨어 개발에 대한 팀블로그 운영을 시작했다. 김성훈 박사도 나의 조언을 받아들여(?) 소프트웨어 스토리라는 블로그를 시작했다. 두 블로그  모두 글 갯수는 아직 몇 개 안되지만 하나 하나가 정말 읽어볼 만하다.

물론 애자일 전도사이신 김창준님의 블로그인 애자일 이야기에서는 좀 더 혁신적이고 실험적인 협업 방법 및 커뮤니케이션이 실험되고 있기도 하다.

이런 분들의 노력으로 인해 앞으로 소프트웨어 공학이 개발자에게 더욱 편한 것으로 다가왔으면 좋겠다. 제가 잘 모르는 좋은 블로그가 있으면 추천해 주시면 좋겠다.

- ;

Disclaimer- 본 글은 개인적인 의견일 뿐 제가 재직했거나 하고 있는 기업의 공식 입장을 대변하거나 그 의견을 반영하는 것이 아닙니다. 사실 확인 및 개인 투자의 판단에 대해서는 독자 개인의 책임에 있으며, 상업적 활용 및 뉴스 매체의 인용 역시 금지함을 양해해 주시기 바랍니다. 본 채널은 광고를 비롯 어떠한 수익도 창출하지 않습니다. (The opinions expressed here are my own and do not necessarily represent those of current or past employers. Please note that you are solely responsible for your judgment on checking facts for your investments and prohibit your citations as commercial content or news sources. This channel does not monetize via any advertising.)

여러분의 생각 (14개)

  1. 활의노래 댓글:

    오… 흥미있는 분야네요.

  2. daybreaker 댓글:

    저번에 만났을 때도 말씀드렸었지만 다짜고짜(?) UML 문서 300장씩 써내야 하는 상황이 오면 누구라도 소프트웨어공학을 저주할 것 같습니다. 좀더 즐겁고 좀더 생산성 있게 할 수 있는 방법들이 분명히 있을 텐데 말이죠. ㅠㅠ;

  3. 제주소년 댓글:

    저번에 강의하셨던 분이시군요 자동 버그 검출은 흥미 있었습니다. 아직 잘은 모르지만 소프트웨어 공학을 공부하다보면 괜시리 작업량만 2배로 만들어주는 학문 같더군요 -_-;;;

  4. HannaKim 댓글:

    맞습니다. 그동안의 소프트웨어 공학(SE)이 오히려 개발자들에게 불필요한 작업만 증가 시킨 부분도 있습니다. (실패한 경우지요)

    그러나 성공한 것들도 많습니다. 개발하시는 분들이 대부분 사용하시는 CVS/SVN등도 SE의 한 연구에서 나온 것이고 Unit test등도 비교적 많이 사용되는 것 같아요. 저도 역시 실 개발자들에게 도움이 되는 SE 개념이나 알고리즘, 도구등을 만들고 싶습니다.

    많이 조언 주시고 도와 주세요.

  5. 후미후 댓글:

    흥미있게 잘 읽었습니다.^^ 매주 rss로 잘보고 있습니다.

  6. StudioEgo 댓글:

    소프트웨어공학(S.E.)을 학교서 배울때 왜 배워야 하는지에 대해서 이해를 못하였습니다.
    그러나 오픈소스 프로젝트에 대해 연구를 하고 나서는 정말 필요하구나를 졸업하는 마당에 느끼게 되었답니다.
    그렀다만 UML문서를 일일히 밤새면서 작성한다면 저주를 할것입니다 ㅠㅠ

  7. 두렁청해 댓글:

    소프트웨어 공학이 불필요한 일과 부담만 증가시킨다면 공학으로서 매력이 없을꺼 같아요

  8. Ray♫ 댓글:

    윤석찬님 반갑습니다.
    소프트웨어 공학에 관심을 가지시는 분이 점점 많아지는 것 같아서 기쁘네요. 과거에 우리의 몸집이나 실력에 맞지 않는 방법론이나 CMMI를 가지고 소프트웨어 공학에 먹칠을 해서 아직도 부정적인 인식들이 꽤 있는 것 같습니다.
    많은 젊은 분들이 소프트웨어 공학을 올바르게 리드하고 있어서 차츰 바뀌어나갈 것 같네요.

  9. 소프트웨어 공학 블로그를 운영하고 있으면서도 전면에는 소프트웨어 공학이라는 말을 사용하고 있지 않습니다. 그 이유는 소프트웨어 공학은 막연하고 왠지 모르게 문서도 만이 만들어야 할 거 같고, 절차도 엄격히 따라야 할 것 같아서 부담스러운 느낌을 줄 수 있기 때문입니다. 이것이 다 소프트웨어 공학에 대한 오해에서 비롯된 것 같습니다. 이미 유행이 한번 쓸고 지나간 CMMI나 외국의 유명한 방법론들을 도입했다가 실해한 경험과 소문들 때문일 겁니다. Na..

  10. 종종 들르곤 하는 Channy님 블로그에서 S/W 공학 이야기를 보곤 나름 버닝하여 쓰고 해당 글에 트랙백 단 글입니다. 저도 어지간히 당했나 봅니다. 말장난일지 모르겠습니다만…. 그래도 1999년 12월 16일부터 개발자로 나름 살았으니 감히 말할 자격은 아주 쬐끔 있다고 생각하고 말씀드리자면… 아직은 S/W 개발에 공학(Engineering)이라는 표현을 함부로 붙여도 되는 것 아닌가 모르겠습니다. 공학이 되려면 무릇 측정 및 측정 방법(..

  11. 최준열 댓글:

    오픈소스 개발모델이 소프트웨어의 품질을 높여준다는 평소의 확신이 역시 맞군요.

    저는 데스크탑 회사를 하고 있지만 가끔 혼자서 완성할 수 있을 정도의 간단한 프로그램을 오픈소스로 진행할 때가 있습니다.

    할 때마다 느끼는 거지만 완전히 오픈해 놓고 모두의 검증을 받을 때 최상의 결과물이 나오더군요.

    죄송하지만 소프트웨어 공학이 뭔지는 잘 모르겠습니다. -_- (저의 관심사는 오로지 오픈소스 개발모델)

  12. hera 댓글:

    티스토리타고 왔습니다 ^^저 역시 개발자 입니다. 요즘 대규모 프로젝트에 참여 하고 있는데 규모가 커질수록 역시 소프트웨어공학의 중요성을 절실히 느끼고 있습니다. 중요성은 크게 인지하고 있지만, 굳이 소프트웨어 공학쪽으로 빠지고 싶진 않네요 ㅋㅋ 자주 와서 많이 배우고 가겠습니다 ^^

  13. peer 댓글:

    소프트웨어 공학이란 너무나 필요하지만, 소프트웨어의 세계가 학문적 뒷받침할 겨를이 없이 흘러가는 것이 아닌가 생각합니다.
    철학없는 소프트웨어란 상상만 해도 아찔하다는 생각을 자주 합니다..
    좋은 글 많이 부탁드립니다.

  14. 소프트웨어 개발의 모든 것 – 김익환.전규현 지음/페가수스 소프트웨어 개발의 모든 것이라 제목이 붙긴 했다만 물론 제목은 뻥이다. 어떻게 이 얇은 책이 소프트웨어 개발의 모든 것을 다루겠는가. 사실은 소프트웨어 공학의 모든 것이 책 내용과 조금 더 어울리긴 하지만 그렇게 이름지었으면 난 죽을 때까지 이 책을 안 읽었을 것이다. 나는 컴퓨터 과학의 대부분의 분야가 아주 재밌고 흥미롭지만 소프트웨어 공학 만큼은 질색이다. 그럼에도 불구하고 이 책은 꽤나..