UML Fever

얼마전에, ACM Queue에 올라온 Death by UML FeverUML Fever: Diagnosis and Recovery를 읽었다.

UML을 사용하면서 발생하는 여러가지 부정적인 현상들을 UML Fever라고 표현하고 있다. 이 글을 쓴 Boeing Company의 Alex Bell은 UML Fever의 궁극적인 원인은 그 기술이나 프로세스를 선택하고 적용해야하는 개인의 경험 부족에 있다고 본다. 쓸데없이 메타포를 남발해서 읽기가 굉장히 힘들지만, 요약하면 다음과 같은 현상들로 나타낼 수 있다.

  • 자신의 프로그램에 어떠한 기술과 프로세스가 적합한지 평가하는 것이 아니라, 다른 사람이 다른 프로그램에서 사용한 것들 그대로 받아들이는 행위.
  • UML 다이어그램만 있으면 자동적으로 소프트웨어를 개발할 수 있고, UML이야말로 모든 소프트웨어 공학의 해결책이다라는 생각.
  • UML artifact를 많이 가지고 있을 수록 가치가 증가한다는 생각.
  • 쓸데없이 너무 많거나 상세한 UML artifact를 만들어내는 것을 소프트웨어 개발 프로세스나 프레임워크 혹은, UML 그 자체의 탓으로 돌리는 행위.
  • 생산성의 향상을 이유로, 자신의 프로세스에 맞지도 않는 비싼 UML 툴을 구입하는 행위.
  • 이미 불필요해진 UML artifact를 버려서는 안된다고 생각하고, 비용을 감수하면서 관리하려는 경향.
  • 아무런 목적이 없이 UML을 만드는 행위.
  • 세분화된 기능적 decomposition을 use-case로 만들려는 경향. (모델을 단순화하려는 목적을 잃고, 오히려 더욱 이해하기 힘들게 만든다.)
  • UML 다이어그램을 극단적으로 상세하게 만드려는 욕구. (어떤 것이 중요하고 중요하지 않은지 판단하기 위해서는 코딩 경험이 중요하다.)
  • 상세한 디자인 요소들을 포함하는 거대한 UML 모델을 만드는 행위. (코드 없이, 모든 정보를 표현할 수 있다는 생각.)
  • UML 디자인 모델과 코드로부터 reverse-engineer한 구현 모델의 차이를 인지하지 못하는 것
  • 모든 프로젝트 구성원들이 경험에 상관없이 교환가능하다는 생각.
  • 전문적인 기술이 없는 사람을 그 기술이 필요한 position에 기용함으로써, 조직 전체가 그 사람의 practice를 best practice로 여기게 되는 현상.
  • 간단한 디자인 툴이나 언어 문법에 대한 클래스에 사람을 보내고서, 전문가로 될 것이라고 기대하는 행위.

UML Fever의 여러가지 현상은 단지 UML에 한정되는 것이 아니라, Software development에서 사용하는 모든 기술, 더 나아가서는 모든 기술에 적용된다고 생각한다. 어떤 기술에 대한 제대로 된 지식이나 경험의 부족은, 그 기술이 어떠한 해결책에 적합한지를 제대로 평가하지 못하게 만들고, 그 기술에 대한 맹신이나 잘못된 적용을 낳는 것 같다. 이와 비슷한 얘기를 삼색볼펜초학습법과 소프트웨어 엔지니어링이란 글에서도 언급을 했었다.

UML Fever 더 읽기"

de_port, de_inferno, 그리고 비키니 모델

토요일 새벽 무렵에 프로젝트 결과물을 메일로 보내고, 한숨 돌렸습니다. 그리고나서, 일주일간 멀리하고 있었던 Counter-strike: Source를 다시 잡았습니다.

며칠 전 릴리즈된 de_port 맵을 오늘 처음으로 플레이해보았는데, 꽤 재미있더군요. 그동안 Source 버전에는 넓고 확 트인 맵이 별로 없어서 좀 답답한 느낌이 있긴 했죠. 상당히 넓은 맵이라 스나이퍼들이 필수적으로 필요하고 (의도적으로 스나이퍼들을 위한 장소들을 제공해주고 있습니다.), 더군다나 지하 통로나 건물을 통해서 생기는 경로가 많아서, 돌아다니다 보면 화력이 분산되는 면이 있습니다. 양측 실력이 비슷하면, 후반에서 난전이 되는 경향이 있죠.(전 난전을 좋아합니다. 순발력이 좋다기보다는 경험많은 노련한 플레이어거든요.) 반대로 한쪽 실력이 더 좋으면, 상대편 스나이퍼들을 학살해주는 재미가. ;;;

더불어, de_inferno도 처음 해봤는데요. 맵이 상당히 예뻐졌습니다. A bomb site에서는 통로에 엄폐물이 많아져서, CT에게 상당히 유리해졌고, B bomb site에서는 앉아서 지나야 했던 구멍이, 오르막으로 바뀌어서 TR이 진입하기에 좀 더 쉬워진 느낌입니다.

하핫, 28 킬의 [=FoxHound=] Raiden이 접니다.

다음은, 이른바 “비키니 모델”을 적용한 화면입니다. 덕분에 인질맵을 플레이하는 게 좀 즐겁죠. 호홋. (저는 인질맵에서 TR을 선택하는 경향이 있어서 더욱 좋죠)

de_port, de_inferno, 그리고 비키니 모델 더 읽기"

Galaxy 0.1.0 Released!

Galaxy 0.1.0 Relased!

The first release of Galaxy: Web-based RSS Feed Aggregator! This release includes basic functionalities of Galaxy. If you’re very serious about subscribing RSS in web, just try it.
WARNING: I’m aware that it has crude look and quite messy installation steps. But, I promise next release will address these problems.

릴리즈를 계획한 것은 꽤 오래전인데, 학업이 바쁘다보니 차일피일 미루다, 드디어 Galaxy 0.1.0을 릴리즈 했습니다. 곧 Rubyforge 탑에 올라오겠죠.

결함도 많고 마음에 안드는 것도 많이 있지만(코드는… 물론 엉망입니다.), 일단은 릴리즈하고 피드백 받으면서 개선해나가는 것이 좋을 것 같습니다. Eric Raymond의 The Cathedral and the Bazaar를 읽어보신 분이라면 이해하시리라고 생각합니다.

그러한 결함 중 한가지 예를 들면, 설치 방법이 너무 복잡한 문제가 있는데요. crontab 사용을 포기한다든가, RubyOnRails로 간다든가 해서, 설치 방법을 단순화할 수 있는 방법을 찾아보아야할 것 같습니다.

릴리즈를 위해서 데모 사이트도 만들었습니다. 관심 있으신 분은 둘러보시길.

한가지 덧붙일 것은, 0.1.0 릴리즈와 동시에, 갤럭시 개발 Iteration 3를 마치고, Iteration 4가 시작된다는 것입니다. Iteration 4에서 개발할 것들을 결정해서 곧 올리도록 하겠습니다.

Galaxy 0.1.0 Released! 더 읽기"

"언어 사대주의 비판" 유행에 대한 비판

likejazz.COM에 달았던 comment덕에 받은 comment.

한가지만.

우리말로 할 수 있는 표현은 가급적이면 우리말을 사용하면 어떨까요?
http://www.likejazz.com/29458.html

내가 영어 단어를 사용하는 것은, 언어 사대주의와는 완전히 거리가 멀다. 완전히 실용적인 이유 – 가볍게 적는 글에 번역의 비용을 들이기는 부담스러운 이유라든가, 원문의 글을 오해 없이 옮기거나 쉽게 찾아볼 수 있도록 하기 위한 이유라든가, 하루에 접하는 언어의 양이 한국어보다도 영어가 더 많다든가 하는 이유 때문이다.

하지만, 요즘 들어, likejazz에서 뿐만 아니라, 이오덕 선생의 언어사대주의에 관한 글을 많이 링크하는 것을 보게되었다. 내 주변의 엔지니어들 중에는 말을 할 때도 영어를 사용하는 사람이 많은데, 언어사대주의 때문에 그렇다는 생각은 전혀 하지 않는다. 위에 적은 것과 유사한 순전히 실리적인 목적이다. 실제로 사대주의와 거리가 먼 사람에게 저러한 글을 링크해주는 것은 거의 인신공격적이라고 생각한다. 물론, 언어사대주의나 순전히 과시욕에서 영어를 사용하는 사람들도 있다. 하지만, 그렇지 않은 사람들에게는 언어 사대주의를 내세우는 방식보다는 우리말 사용의 실리나, 한국 문화의 발전 또는 정체성 확립과 같은 이유를 통해 합리적으로 설득을 하는 것이, 그들이 원하는 올바른(?) 우리말 사용의 확산을 앞당기는 길이라고 생각된다. 그 같은 이유로 나를 설득하는 것은 힘들겠지만 말이다.

한가지, 영어 단어를 사용하는 것이 (글을 쓴 사람을 포함하여) 독자가 글을 읽게 힘들게 만드는 것은 인정한다. 이러한 면에서, 한영 병기를 사용하는 것이 좋은 해결책이 된다고 생각한다. 문화적 정체성 운운은 내게는 통하지 않는다. 문화의 다양성에는 동의하지만, 특정한 문화를 무조건 수용하라는 태도는 마음에 들지 않는다. 무엇보다도, 영어공용론을 반대하는 사람들의 논지처럼, 내게 언어는 “한낱 연장에 지나지 않”기 때문이다.

한편, 어떤 사물이나 사건의 본질을 파악하기 전에, 그에 대한 유행하고 있는 생각을 비판없이 무조건적으로 받아들이고, 아무 경우에나 사용하는 경향을 너무나도 자주 본다. 블로그가 유행하면서 다른 사람들의 생각을 더욱 세세하게 볼 수 있게 되면서 이러한 현상을 더욱 자주 볼 수 있는 것 같다. 요즘 유행하는 “언어 사대주의”의 비판도 이러한 경향 중의 하나가 아닐까?

무엇이 옳든 간에, 로마에서는 로마의 법을 따라야 하는거겠지만.

"언어 사대주의 비판" 유행에 대한 비판 더 읽기"

War Room과 Peopleware

다음은 likejazz.COM에 올라온 War Room에 관한 글에 대해 적은 comment. “DeMarco는 Peopleware에서 독립된 개발환경을 주장하지만, XP 또한 옹호하고 있는데, XP의 War Room과 배치되지 않느냐라는 생각”에 대한 반론이다. 여기서 김창준님의 comment도 참고.

이 comment를 적을 당시에는 마침 Peopleware의 그 부분을 읽는 중이었는데, comment를 쓰고 나서 읽은 그 다음 단락에서, comment에서 내가 얘기한 것과 똑같은 논지의 얘기가 나왔다. 즉, 팀은 대체로 같은 일을 하기 때문에, noise나 interruption에 의한 문제가 별로 없다는 것이다.

War Room과 Peopleware 더 읽기"

To do

학생의 비극이랄까요. 악몽의 주간입니다. T.T (아참! Ta-Da Lists 한글이 이제 되더군요.)

bullet디지탈 실험, #5 준비 (2005년 5월 12일)
bullet전산학 프로젝트, 디자인 문서 (2005년 5월 12일)
bullet영미소설, 발표할 내용 한번쯤 더 읽어보기 (2005년 5월 12일)
bullet영미소설, 백경에 나오는 성서적 상징에 대한 조사 (2005년 5월 12일)
bullet영미소설, 중간 레포트 (2005년 5월 16일)
bullet한국근현대사, 교재 요약 숙제할 것 (2005년 5월 16일)
bullet시스템 엔지니어링, 중간 발표 다시 준비 (2005년 5월 18일)
bullet한국근현대사, 중간 레포트 (2005년 5월 27일)
check한국근현대사, 조선독립선언과 기미독립선언문의 비교 레포트 (2005년 5월 9일)
check시스템 엔지니어링, book presentation 준비 (2005년 5월 11일)
check문학의 이해, “칼의 노래” 감상문 (2005년 5월 10일)

http://josephjang.tadalist.com/lists/public/38951

To do 더 읽기"

칼의 노래

“칼의 노래”는 임진왜란, 정유재란을 배경으로 한, 이순신의 삶을 그린 일종의 전기 소설이자 역사 소설이다. 줄곧 1인칭 시점으로 그려져있고, 이순신 자신이 한 일들을 나열해 놓은 식이 많아서, 읽는 동안 딱딱하다는 느낌도 들었고, 마치 이순신 자신이 쓴 일기 – “난중일기”의 현대어 번역판을 읽는 느낌이었다. 리얼리즘? 글쎄. 김훈의 작품을 별로 읽어보지 않은 나로서는 당대최고의 산문가라는 평에 약간은 반발심을 느끼지 않을 수 없었다.

대한민국의 정규 교육과정을 거친 사람이라면, 이순신은 어린 시절, “존경하는 인물”의 후보들 가운데 한명이었을 것이다. 그가 원균의 모함을 받고, 백의 종군을 하고, 몇몇 대첩에서 크게 승리했다는 역사적 사실이나, 그가 지었다는 유명한 시조, 그가 삶을 거두면서 한 얘기 정도의 조각들은 이른바 상식일 것이다.
억울한 누명을 쓰고도, 백의 종군을 해서, 종묘사직을 지켜내는 그 충의! 거북선이라는 인류최초의 철갑선을 발명한 희대의 지장! 죽음에 이르러서도 혹여 자신의 죽음이 전쟁에 영향을 미칠까 자신의 죽음을 감추는, 대의를 위한 그 희생 정신! 사직을 위태롭게 하는 왜를 물리치고 나라를 구한 무인! 그는 바로 영웅의 전형이었다.
어느 나라에나 위대한 정복자라든가 숭고한 방어자와 같은 국가적 민족적 영웅은 있게 마련이다. 그러한 영웅들이 “만들어진 영웅”이라는 사실은 더이상 비밀이 아니다. 영웅은 비극적으로 스러져가고 없어도, 그의 영웅담은 계속 재생산되면서 국가적 민족적 정체성을 확립하는 도구가 되었던 것이다.
영웅의 일대기를 역사로 본다면, 영웅이 일대기가 그 도구적 역할에 의해 창조되었다는 사실은 도리어, 역사가 그 도구적 역할에 의해 창조되었다는 사실로부터 연역될 수 있다는 것을 깨달을 수 있을 것이다. 역사에 대한 상대주의적 관점이 확립된 이래로, 역사는 상아탑의 학문이 아니라, 역사가 개인의 감정이나 정치적인 도구의 산물로서 해석되기 시작했다.
이처럼, 오랜 군사 독재가 지배하던 시절의 영웅 이순신에는, 어떤 불순한 의도가 섞여있으리란 생각을 떨칠 수 없다. 충의정신, 얼마나 전근대적인가. 그의 희생정신은 파쇼에의 의심마저 들게한다. 거북선이 실제로는 이순신이 창제한 것이 아니라는 사실은 언급할 필요조차도 없다. 하지만, 신기한 것은, 이러한 낡은 정신들이나 인식은 철이 들면서 기꺼이 버렸지만, 이순신이라는 인물은 영웅이라는 생각이 머리 속에 각인되어있다는 것이다. 게다가, 그 영웅을 둘러싸고 있는 정신들은 완전히 지워진 것이 아니라, 내 무의식 중에서 그 본연의 목적을 충실히 수행하고 있을지도 모르는 일이다. “내 귀의 도청장치”랄까.

정치가나 독재자가 역사 속의 영웅을 적절하게 해석하고 변용하여 모종의 목적을 이루어 내려는 것처럼, 작가도 글을 쓰는 목적이 있고, 문학작품 속의 허구적 인물을 통해 이루고자 하는 목적이 있다. 그렇다면, 역사가 아닌 문학이, 역사가가 아닌 김훈이라는 작가가 얘기하는 영웅 이순신은 어떤가를 살펴보아야할 것이다.
김훈의 이순신은 임금이나 다른 장수들의 무능함, 세상이 돌아가는 방식을 제대로 인식하고 있다. 그러면서도, 필요할 때는 맞서고, 필요할 때는 타협하는, 현실적이고 합리적인 인간이다. 그는 군기를 어긴 자는 엄하게 다스려 곤장을 치고 목을 베나, 아들의 마지막 순간을 얘기해달라고 청하며 슬퍼하는, 엄격한 아버지이자, 동시에 자상한 아버지이기도 하다. 여진이라는 한 여자에 대한 욕과 정을 동시에 지닌, 그는 한 인간이기도 하다. 한마디로, 김훈의 이순신은 전근대에 살고 있는 현대적 인물이다. 그는 잘 나가는 기업의 중역 정도의 캐릭터를 맡아도 아무런 문제가 없을 정도다.
김훈의 이순신은 자신의 무능력함에 고뇌하면서도, 때로는 투쟁하면서, 때로는 타협하면서 세상을 헤쳐가는 인간형을 나타낸다.
임금이나 원균, 명의 수군 총병관 진린과의 거듭되는 정치적인 게임에서도 이순신의 그러한 면을 잘볼 수 있다. 세상은 그가 원하는 것을 도와주지 않지만, 그는 적절하게 투쟁하거나 타협함으로써 그가 원하는 것을 얻어낸다. 이러한 정치 게임도 재미있게 볼 수 있지만, 이순신의 인간형을 가장 극적으로 보여주는 부분은, 이순신이 그와 정분이 있던 여진의 시체를 발견하지만, “내다 버려라.”라고 명령하는 장면과 이 때 그의 심정이 아닐까. 그는 여진의 죽음앞에서 성욕을 느끼는 자신을 발견하며, “세상은 칼로써 막아낼 수 없고 칼로써 헤쳐나갈 수 없는 곳”이라는 것을 확인한다.
한편, 어린 시절 알고 있던 이순신의 영웅성에 비해, “칼의 노래”의 이순신은 너무나 인간적이다. “칼의 노래”를 읽는 것은 마치 그리스 로마 신들의 찬란함에 가려진 인간적인 모습이 드러나는 장면 같달까. 이순신의 인간적임은, 그의 주변에 있는 인물들의 인간적임과 어우러져 묘한 여운을 준다. 예를 들어, 자신이 사랑하는 여자와 탈영하다가 붙잡힌 군관의 자기 여자를 살려달라는 애원 앞에 선 이순신의 모습을 보자. 이순신은 그 군관의 생사여탈을 결정할 수 있는 신 또는 영웅의 위치에 있다. 하지만, 곧바로 형 집행을 명령하는 장면과 애원대로 그 여자를 놓아주는 장면 사이에 있는 여운은, 노골적인 찬사보다도, 이순신의 인간성을 훨씬 돋보이게 만들어준다.
영웅에는 필수적인 조건이 있다. 보통 사람보다 싸움을 잘한다거나, 불사의 몸을 가졌다거나, 지혜로운 것이 아니다. 바로 영웅을 영웅으로 기억해주는 사람들의 가치나 생각을 반영해야한다는 것이다. 이러한 의미에서, 김훈의 이순신은 김훈의 영웅이자, 김훈이 현대를 살아가는 우리 모두에게 영웅으로서 제시해주고 싶었던 이순신의 모습이 아닐까? 우리가 삶의 고통이라는 질곡에서 빠져나올 수 있다는 실날같은 희망을 주는 인간적인, 너무나 인간적인 본보기를 보여주고 싶었던 게 아닐까?

세상의 끝이……이처럼……가볍고……또…….고요할 수 있다는 것이……, 칼로 베어지지 않는 적들을…… 이 세상에 남겨놓고…… 내가 먼저……, 관음포의 노을이…… 적들 쪽으로……

“칼의 노래”는 이 마지막 독백을 통해 죽음을 앞둔 영웅이, 아니 한 인간이, 어떤 진리를 깨닫는 것으로 끝난다. 그것은 “칼로 베어지지 않는 적”이라는 인간의 힘으로 어찌할 수 없는 문제에 고뇌하며, 진중한 영웅의 삶을 살았으나, 결국 죽음의 앞 – 세상의 끝에서는 모든 것은 아무런 가치를 지니지 않게 되어버린다는, 너무나 진부하지만 역시 참일 수 밖에 없는 삶의 진리가 아닐까.

덧붙임: 위의 글은 “문학의 이해” 강의 숙제로서, 가능한 한 “무난하게” 쓰려고 노력한 것이지만, 사실 그다지 새로울 것도 없는 문제의식이라고 생각한다. 평범한 주제를, 이순신이라는 대중적인 소재와 결합한, 베스트셀러용 작품이었다고 생각한다. (김훈 씨 자신도, 자신은 밥벌이를 위해 글을 쓴다고 했으니, 대단히 예의에 어긋나는 말은 아닐 것이다.) 그 결합 자체가 도발적이었는가 하면, 우리가 살고 있는 시대에 있어, 결코 아니다라고 생각한다. 추천하기는 힘들 것 같다.

칼의 노래 더 읽기"

MT에서의 트랙백 인코딩 문제

대부분의 블로그 서비스가 트랙백 표준을 지키지 않고, EUC-KR 트랙백에 의존하고 있어서 MT로 트랙백을 보내는 데에 애로사항이 있다. 물론, Gratia님의 트랙백 패치도 있지만, 패치 자체가 복잡해서 귀찮은 나머지, 그냥 euc-kr로 보내도록 수정해버렸다. charset을 적절히 설정해주는 한 트랙백 표준 1.2에 위배되는 것은 아니니까… 그리고, UTF-8을 지원하는 블로그 구현이라면, 트랙백 표준도 제대로 구현하고 있을거야, 라는 약간은 안일한 가정. 다음 코드는 MT/lib/MT.pm의 수정사항.

의도한 것은 아닌데, 어쩌다보니 마루타가 되어버린, 젊은 거장님윗치님, 그리고 묵형에게 심심한 사과의 말씀을 드려야겠다. (사실 묵형쪽은 의도적으로 테스트한 것이다!)

        ## Build query string to be sent on each ping.
my @qs;
# BEGIN trackback patch by Joseph Jang
#push @qs, 'title=' . MT::Util::encode_url($entry->title);
#push @qs, 'url=' . MT::Util::encode_url($entry->permalink);
#push @qs, 'excerpt=' . MT::Util::encode_url($entry->get_excerpt);
#push @qs, 'blog_name=' . MT::Util::encode_url($blog->name);
use Encode;
push @qs, 'title=' . MT::Util::encode_url(Encode::encode("euc-kr", Encode::decode("utf-8", $entry->title)));
push @qs, 'url=' . MT::Util::encode_url(Encode::encode("euc-kr", Encode::decode("utf-8", $entry->permalink)));
push @qs, 'excerpt=' . MT::Util::encode_url(Encode::encode("euc-kr", Encode::decode("utf-8", $entry->get_excerpt)));
push @qs, 'blog_name=' . MT::Util::encode_url(Encode::encode("euc-kr", Encode::decode("utf-8", $blog->name)));
#END
my $qs = join '&', @qs;
#$qs = Encode::encode("euc-kr", Encode::decode("utf-8", $qs));
## Character encoding--best guess. Default to iso-8859-1, just as we
## do in MT::Template::Context::_hdlr_publish_charset.
# BEGIN trackback patch by Joseph Jang
#my $enc = $mt->{cfg}->PublishCharset || 'iso-8859-1';
my $enc = "euc-kr";
#END

MT에서의 트랙백 인코딩 문제 더 읽기"

나르니아 연대기 영화화

책으로 읽어보지는 않았지만, (적어도 판타지 장르 소설계에서는) 너무나 유명한 작품이죠. 디즈니에서 영화로 제작중이고 2005년 12월 9일에 개봉한답니다.

http://www.narnia.com/

다음은 티저 트레일러(.mov)입니다. (Slashdot에 떴더군요!) 트레일러를 보니까, 책을 읽고 싶은 마음이 굴뚝같지만, 너무 바빠서 참아야겠습니다. 방학 때에나 도전해봐야겠군요.

http://tinyurl.com/bmdhh

 

나르니아 연대기 영화화 더 읽기"