이번 2010년이 들어서 S/W 업계에서 가장 큰 화두는 LG폰 SMS의 2010년 표시 버그일 것으로 생각한다.
SMS의 스펙을 확인 해 보니, 연도는 1byte에 "Swapped Nibble”을 적용한다고 되어 있으며 Swapped Nibble의 정의는 BCD code where nibbles within octet is swapped. E.g.: 0x31 Represents value of 13 라고 되어 있다. 여기서 문제가 되는 것은 BCD인데, Swapped Nibble 이라는 말을 단어 자체로만 들으면 4비트가 서로 바뀌어 있다라는 의미만 내포된 것으로 보이기 때문에 그것이 BCD로 표현될 것이란 예상을 하기가 어렵다. (물론 스펙을 제대로 안 본 사람이 무조건 잘 못이지만…)
그래서 원래는 (year >> 4) + (year & 0x0F) * 10 이어야 하는 공식을 (year >> 4) + (year & 0x0F) * 0x10 로 쓴 것으로 예상한다.
여기에서 특별히 기술적인 내용을 이야기 하려는 것은 아니고, 이런 사소한 실수 하나 때문에 회사의 이미지가 떨어지고 관련된 담당자와 그의 상사들과 QA팀은 큰 화를 입을 것이란 것이라는 것이다. 실수의 경중으로 보면 굉장히 가벼운 실수이긴 하나 파급 효과는 굉장히 크다. 버그 있는 코드는 누구나 만들고 있지만 운도 많이 작용하고 있다는 일례일 것이다.
LG의 개발 상황을 예상해보면, 문제의 코드를 만든 본인은 이미 퇴사 또는 다른 부서로 발령이 났고, 몇 명의 담당자를 거쳐 지금은 사원급 개발자가 인수 받았으며 그 한 명이 국내판 백 종 이상의 양산 코드를 담당하고 있었을...
Posted by 안영기