통계 위젯 (화이트)

434
346
2205785

저작권

모든 내용은 허락없이 상업적으로 사용하실 수 없습니다. - 오광섭 -

클릭몬 (와이드)





하위호환성.. ▣ 컴터야그 ▣

재미나게 읽었던 조엘 스폴스키의 2권의 책을 보면 공통적으로 등장하는 내용이 있는데, 바로 Microsoft가 얼마나 하위호환성 보장을 위해 노력했는지에 대한 내용이다.. 조엘이 지적한대로 많은 S/W 엔지니어들 (설계자 및 프로그래머)이 이러한 코드를 좋아하지 않으며, 심지어는 소용없는 짓이라고 생각하는 사람도 있다.. 조엘은 애플사의 엔지니어들을 이 예로 들고 있다.. 사용자 입장에서도 사용하던 S/W를 다시 구매하는 경우가 화나겠지만, 개발자 입장에서도 이전 OS 버젼에서 작성한 코드를 새 버젼에서 사용하기 힘들다면 맥이 빠질 것이다.. 국내에 애플 S/W 개발사가 많지 않은 것은 사용자가 적기 때문만은 아닌 것 같다..

조엘이 엄선한 소프트웨어 블로그 베스트 29선 7장
이 방식에 동의하지 않는 개발자와 엔지니어도 많습니다. 응용프로그램이 바보 같은 짓을 하거나 문서화되지 않은 현상을 이용해 구현됐다면, OS를 업그레이드할 때 문제가 생기도록 그냥 내버려둬야 한다는 주장입니다. 매킨토쉬가 처음 나왔을 때, 애플의 매킨토시 OS 개발팀이 이쪽 진영에 속했습니다. 이후로 애플 사는 하위 호환성 개선을 위해 많은 노력을 기울였습니다만, 초기 매킨토시 응용프로그램이 지금은 거의 돌아가지 않는 이유가 바로 여기에 있습니다. 응용프로그램 제작업체를 망하게 하는 회사가 잘 될 리가 만무하지요. (실제로 대부분 망했답니다.)
마이크로소프트가 OS의 하위호환성 확보를 위해 노력한 내용을 보면, 정말 MS 아니면 할 수 없는 일이라는 생각도 들고, 하위호환성 확보라는 것이 매우 중요한 일임을 공감하기 때문에 저런 환경에서 S/W를 개발해보고 싶다는 부러움도 많이 생긴다..

조엘 온 소프트웨어 42장
레이몬드의 블로그에서 가장 인상적인 부분을 꼽으라면, 윈도우 팀이 하위 호환성을 지원하기 위해 수년 동안 쏟아부은 엄청난 노력에 대한 이야기입니다.

고객 입장에서 생각해 봅시다. 프로그램 X, Y, Z를 샀습니다. 그리고나서 윈도우 XP로 판올림을 했더니, 시스템이 종종 죽습니다. 프로그램 Z은 아예 돌지도 않습니다. 고객은 친구에게 말할 겁니다. “윈도우 XP로 판올림하지마. 시스템이 이유없이 죽고, 프로그램 Z와 호횐도 안돼.” 시스템이 죽는 이유는 프로그램 X때문이고, 프로그램 Z는 문서에도 없는 윈도우 메시지를 쓰기 때문에 안 돌아간다는 사실을 밝히려고 고객이 직접 시스템을 디버깅할까요? 천만에 말씀입니다. 그냥 윈도우 XP 박스를 들고 환불받으러 올 겁니다. (프로그램 X, Y, Z는 몇 달 전에 구매했기 때문에, 30일 환볼 보장이 안됩니다. 반환할 수 있는 건 윈도우 XP뿐이죠.)

저는 이런 이야기를 심시티 개발자에게서 처음 들었습니다. 당시 게임 프로그램에 결정적인 버그가 있었다고 하더군요. 해제한 메모리를 참조하는 심각한 버그인데, DOS에서는 운좋게도 문제가 없었으나 윈도우에서는 말썽이었답니다. 윈도우에서는 해제한 메모리를 다른 응용프로그램이 바로 채어갈 가능성이 높기 때문이죠. 윈도우 개발팀 테스터는 많은 응용프로그램을 구해다 테스트를 했는데, 심시티는 계속 죽었답니다. 테스터는 윈도우 개발팀에게 이 문제를 보고했고, 윈도우 개발팀은 심시티를 역어셈블한 다음에 디버거로 추척해 버그를 찾아냈답니다. 그리고는 심시티를 돌릴 경우 메모리 할당자를 특수 모드로 돌려서 해제 후에도 메모리를 참조할 수 있게 만들었답니다.

이 정도는 보통이었습니다. 윈도우 테스트팀은 그 규모가 대단했을 뿐만 아니라, 어떤 사용자도 운영체제 판올림에 문제가 있어서는 안된다는 점을 지상최대 목표로 삼았습니다. 괴상한 짓을 하는 응용프로그램, 문서화되지 않은 함수를 호출하는 응용프로그램, 윈도우 버전 N에 있었던 버그를 이용하여 구현되었으나 윈도우 버전 N+1에서 버그가 없어지면서 문제를 일으킬 소지가 있는 응용프로그램 등, 사용자가 어떤 응용프로그램을 설치했건 판올림 후에도 문제없이 돌아야 했습니다. 레지스트리에서 AppCompatibility 부분을 뒤져보면, 윈도우가 특별취급하는 응용프로그램 전부를 확인할 수 있습니다. 옛 버전에 있었던 버그나 기이한 현상을 잘 흉내내서 응용프로그램이 계속 돌아가게 합니다. 다음은 레이몬드 첸이 한 말입니다. “마이크로소프트 사가 OS 판올림을 이용해 응용프로그램을 고의로 못쓰게 만든다는 비난을 받을 때면 저는 굉장히 화가 납니다. 윈도우 95에서 응용프로그램이 실패하면, 저는 이를 개인적인 실패로 여겼습니다. 윈도우 95에서 돌릴 수 있도록 남의 프로그램 버그까지 디버깅하느라 밤을 샌 적이 하루이틀이 아니었습니다."
다른 프로그램의 버그까지 분석하여 대처하는 모습은 정말 감동적이기까지 하다.. 물론 MS처럼 거대한 회사에서 이런 부분에 대한 반대세력도 많겠지만, OS 개발의 모토에 하위호환성 보장이라는 부분을 주요부분으로 인정해주고 지원해주는 개발환경은 부럽지 않을 수 없다.. 어쩌면, 일정안에 이러한 것들을 해내는 개발자들의 능력이 더 부러울 것일지도 모르지만..

덧글

  • 아크몬드 2006/03/19 13:09 # 삭제 답글

    조엘이 강조하는 하위 호환성부분이네요.. 저도 참 인상적이라고 생각했습니다.
    이번 윈도우 비스타에서도 그 호환성을 제대로 지켜낼 수 있을지 궁금합니다.ㅎㅎ
  • 바나나우유 2006/03/19 23:02 # 답글

    저도 이책 사놨었는데,다른 볼책들이 밀려있는 관계로 아직 못보고 있네요.
    이번주에는 꼭 봐야겠습니다.
  • CN 2006/03/22 12:48 # 삭제 답글

    최근의 MS는 undocumented 뿐만 아니라 기존 플랫폼의 잘못된 설계로 인한 결과 역시 하위 호완성 보장을 안해주는 쪽으로 흘러가고 있습니다. Firefox나 Apache와 같은 오픈소스 쪽의 개발자들도 대세는 그렇구요. 조엘이 여전히 MS에 있었다면 호완성 쪽에서는 마이너 쪽에 속하지 않았을까 생각합니다.
  • 미친병아리 2006/03/27 13:11 # 답글

    아크몬드님 : 비스타에서도 하위호환성은 보장되리라 기대됩니다..

    바나나우유님 : 재밌게 읽을 수 있으실 겁니다..

    CN님 : 조엘이 자신의 책에서 그러한 부분에 대한 아쉬움을 표현했지요.. 하지만, 많은 부분에서 하위호환성 보장 부분은 계속 이어지리라 생각됩니다.. Microsoft의 입장에서는 그것이 수익과 직결되는 부분이라서..
댓글 입력 영역