Windows Confidential호환성 문제 처리

Raymond Chen

제어판 창에서 파일 메뉴에 액세스한 다음 프린터 항목을 검색하여 프린터 제어판을 열었던 Windows® 3.1용 프로그램이 있었습니다. Windows 95로 바뀌면서 제어판의 파일 아래에서 프린터 옵션이 없어졌습니다. 따라서 이 프로그램을 Windows 95에서 실행하게 되면 가비지 명령 메시지가 제어판에 전달됩니다. 이 문제를 해결하기 위해 Windows 95에서는 이러한 프로그램이 찾을 수 있는 유인 제어판 창을 만들었습니다. 프로그램에서 메시지를 유인 창에 전달하면 프린터 폴더가 열립니다.

어떤 사람들은 Windows 3.1에서 제어판에 대해 잘못된 가정을 하고 있는 프로그램을 감지하여 경고를 표시했어야 했다고 주장합니다. 이렇게 했다면 프로그램 작성자가 제품을 출시하기 전에 경고를 보고 문제를 수정할 수 있었을 것입니다. 그러나 코드의 의도를 정확히 파악하려면 인공지능 수준의 분석 능력이 필요합니다. 기본적으로 Windows 3.1에서는 프로그램에서 프린터에 대해 strcmp를 수행하는지 파악하고 특정 strcmp를 분석한 다음 잘못되었는지 확인했어야 했습니다. 그러나 이 방법은 프린터일 경우에만 문제를 파악할 수 있을 뿐입니다. 이러한 문제를 파악하기 위해 시스템에서 호환되는 문자열을 얼마나 많이 검사해야 합니까? 또한 거짓 양성일 경우에는 어떻게 해야 합니까?

Windows 95에서 "프로그램 XYZ에서 잘못된 작업을 수행하고 있습니다"라는 경고 대화 상자를 사용하여 이 잘못된 가정에 대응해야 했다고 주장하는 사람도 있습니다. 그러나 제어판에서 가비지 메시지를 전달한 프로그램을 파악하려면 창 관리자에 검색 기능을 삽입해야 합니다. 이 경우 제어판과 창 관리자라는 두 구성 요소 사이에 깨지기 쉬운 연결이 만들어집니다. 이 방법 또한 한 가지 경우만 해결할 수 있을 뿐입니다. 시스템의 다른 모든 구성 요소와 창 관리자 사이에 불안정한 연결을 만들고 싶습니까?

보다 쉬운 방법은 특정 응용 프로그램의 이름을 지정하지 않고 일반 메시지를 제공하는 것입니다. 하지만 이 방법도 좋은 해결책이 아닙니다. 모호한 오류 메시지는 오류 메시지가 없는 것보다 나을 것이 없습니다. 더구나 이 대화 상자에는 권장되는 구체적인 작업이 없기 때문에 사용자가 무시하기 쉽습니다. 사용자는 이 대화 상자를 귀찮게 여길 것입니다. 이 점이 아주 중요합니다. 모든 오류 메시지는 대처 가능해야 합니다. 사용자가 경고에 대처하는 방법을 알려 주는 대화 상자야말로 유용한 대화 상자입니다.

  

또 다른 문제는 대화 상자 루프로 인해 재진입 지점이 만들어진다는 것입니다. 이는 기술적인 문제인데, 예기치 않은 재진입은 UI 프로그램에서 발생하는 버그의 주 원인입니다. 더구나 제어판 자체가 모달 상태에 있을 때 대화 상자를 표시하면 모달 구조가 깨집니다.

또한 대화 상자가 추가되면 지역화해야 할 개체가 하나 더 증가하는 셈입니다. 모든 호환성 문제에 대해 대화 상자를 만든다면 시스템 전체적으로 이러한 대화 상자가 수백 개가 될 것입니다. 각 대화 상자는 전체 Windows 번역이 제공되는 33개의 언어로 번역해야 합니다.

마지막으로, 경쟁 업체의 제품에 대해 이러한 대화 상자가 표시된다면 경쟁 업체에서는 어떻게 반응할까요? "Microsoft가 자사의 운영 체제 버그로 인한 책임을 다른 업체에 떠넘기고 있다"고 하면서 "Microsoft가 우리 프로그램을 의도적으로 망치고 있다"고 비난할 것입니다. 이 말은 절대 과장이 아닙니다. Microsoft에서 악의적으로 자기 회사의 소프트웨어를 사용하지 못하게 했다고 위원회에 불평한 회사들이 있었습니다. 물론 상세하게 조사한 결과 해당 업체의 프로그램에 버그가 있었다는 것이 밝혀지긴 했지만 말입니다. 하지만 솔직히 많은 시간이 걸리는 위원회 조사를 기다리는 것보다는 버그를 해결하는 편이 더 낫습니다.

그렇다면 현재 Windows 버전에서는 어떨까요? 프로그램이 Windows와 호환되지 않아서 전혀 실행되지 않거나 심각하게 제한된 상태로 실행되는 경우 경고 대화 상자만을 표시합니다. 하지만 이 경우에도 Microsoft는 해당 공급업체와 협력하여 고객의 불편 사항을 해결하려고 노력합니다. 결국 사용자가 원하는 것은 구입한 운영 체제에서 프로그램을 정상적으로 실행하는 것입니다. 프로그램이 작동하지 않을 때는 누구의 잘못인가를 따지기 보다는 문제 해결 방법을 찾는 것이 좋습니다.

Raymond Chen은 자신의 웹 사이트인 The Old New Thing(영문)을 통해 Windows의 역사와 Win32 프로그래밍에 대한 정보를 제공합니다. 또한 The Old New Thing(Addison-Wesley, 2006)이라는 같은 제목의 책도 출간하였습니다.

© 2008 Microsoft Corporation 및 CMP Media, LLC. All rights reserved. 이 문서의 전부 또는 일부를 무단으로 복제하는 행위는 금지됩니다..