최근 전국 학교의 내신성적 석차를 처리하는 나이스(NEIS) 시스템의 오류로 인한 기사를 보셨을 겁니다. 수많은 학생들의 석차가 잘못 산출되어 혼란을 가져왔고 학부모/학생들의 불만도 대단하다고 하죠.
기사를 보고선 또 개발자들 탓하는 게 아닌가 하는 생각이 들었는데, 역시나 하단과 같은 기사가 등장했군요.
관련 기사: 나이스, 프로그램에 문제… 쓰레기값 처리 누락
잠시 옛날 일로 돌아가서, 2007년 9월에 제가 블로그에 올렸던 '정부의 디지털 회계예산시스템의 오류'에 대한 글을 한번 보시죠.
관련 글: 국가 회계예산시스템의 오류에 대한 단상
어떻게 된 게 4년전이나 지금이나 똑같네요. ㅠㅠ
1차적으로 개발자들이 프로그램에 버그를 발생시킨 건 사실이겠죠. 그런데 프로그래밍이란 게 사람이 하는 일이고, 또한 대개의 개발자들이 자신이 짠 프로그램에 대해서는 정상적인 입출력만 테스트하고 예외적인 값에 대한 처리나 테스트에 취약한 경향이 있습니다.
극히 소수의 최상급 개발자라면 모르겠지만, 대부분의 개발자들은 자신의 짠 코드의 양에 비례해서 일정 수준의 버그를 발생시키는 경향이 있습니다. 거기에다 복잡한 수식이 많을수록 버그가 발생할 가능성은 기하급수적으로 높아지게 됩니다.
그것이 바로 소프트웨어 프로젝트의 본질적 특성입니다.
그렇기 때문에 테스터들과 품질 매니저가 프로젝트의 초기에 합류해서 테스트 계획을 작성하고 개발 진도에 따라 지속적으로 테스트를 하고 프로세스에 의한 철저한 품질관리를 해야 합니다.
더군다나 나이스 시스템처럼 수식 계산이 중요한 경우에는 아주 집중적으로 관리를 해야겠죠. 주요 케이스들에 대한 테스트만 제대로 했다면 충분히 잡을 수 있는 게 이런 유형의 버그입니다. 수식 계산이 복잡할 수록 개발할 때 버그가 생기기 쉽지만, 수식 계산이라는 게 입출력이 정직하기에 테스트 하기도 쉽고 그만큼 버그도 잘 잡힙니다.
미국, 일본 등과 같은 소프트웨어 선진국들에서는 코드 작성 그 자체보다 품질 관리를 더욱 중요하게 생각합니다.
실례로 제가 미국의 한 회사와 잠시 일했을 때, 개발자 1명당 테스터 4명을 할당하여 빌드와 테스트를 매일 같이 함께 하는 걸 경험한 적이 있습니다. 단순 테스터뿐만 아니라 테스트를 위한 코드를 작성하는 테스트 개발자(Test Developer)도 있었습니다. 그렇게 한다고 하더라도 자잘한 버그까지 100% 잡을 수는 없지만, 적어도 심각한 버그는 다 잡을 수 있습니다.
주요 기능에 대한 테스트 케이스, 입출력 결과값 등을 모두 프로세스화해서 관리하고 충분한 리소스를 투입하기 때문에 가능한 일입니다.
그러므로 ‘프로그래머가 프로그램을 잘못 짜서 이런 일이 생겼다’는 건 사실상 다음의 두 가지 중 하나를 뜻합니다.
A. 프로젝트에 적절한 테스트 인원과 품질 매니저가 제대로 배정되지 않았다.
B. 프로젝트에 적절한 테스트 인원과 품질 매니저가 배정되었지만, 어떤 이유로 인해 제대로 업무를 수행하지 못했다.
개인적인 의견으로는 A일 가능성이 높다고 봅니다. 촉박한 일정에, 부족한 예산에, 제대로 된 인력 배정 없이 개발자들만 쪼았을 가능성이 큽니다. 그러다 일정에 쫓겨 충분한 테스트도 못한 채로 출시했을 겁니다.
지금 이 순간에도 정말 당연히 필요한 테스터와 품질 매니저의 지원을 받지 못하며(소프트웨어 선진국들에서는 있을 수도 없는 일입니다) 열악한 환경에서 개발하고 있는 개발자들이 많습니다. 버그를 만들었다고 손가락질 받으면서요.
4년전이나 지금이나 나아진 게 없는데요. 이런 식이면 40년이 흘러도 마찬가지일 겁니다.
이번 일을 계기로, 소프트웨어 프로젝트에 제대로 된 인력 배정이 있기를 바랍니다.
개발자는 만능선수가 아닙니다. 소프트웨어 프로젝트에는 아키텍트도 있어야 하고 테스터, 품질매니저도 반드시 필요하며, 그들이 함께 협업하며 일할 수 있는 일정과 환경을 제공해 주어야 합니다.
이번 나이스 스캔들과 같은 기사를 다시는 보지 않았으면 좋겠습니다.
관련 글: SI업계의 갑을병정, 그 죽음의 순환고리
댓글 15개:
좋은글이네요
공감합니다.
그렇죠 국내에는 IT 는 개발자만 존재 하고,테스터와 관리 감독 하는 사람들은 존재 하지 않는 듯한 인식이 참 문제고요.
그걸 당연시 받아 들이는 언론인 그걸 기사화하는 것도 문제죠.
IT 관련 높은 위치에 있는 분들이 침묵하는 게
가장 큰 문제 같아요.
공감합니다. ^^
좋은글입니다만.... 답답하네요 ㅠㅠ
SDS가 삼성 자식들 물려 줄려고 급조한 회사입니다. 프로그램에 관심 없는 사람들이 운영하는 회사죠. 당연히 자사 프로그래머들은 없고 있어도 활용 안하고 모두 하도급으로 돌리는 악질회사죠. 평생 남 욕만 하고 살겁니다.
우리나라 SI환경에서 바랄걸 바래야죠.
품질보다는 기한내에 아니 더 짧은기간내에 끝내 SI 대기업 회사들이 돈을 버는 이런 현실에서...
구조적인 문제지요.. 구조적인 문제가 해결되지 않으면 이런일은 머 꾸준히 발생할 겁니다.
동의합니다.
주말 동안 점검작업에 긴급 투입었던 SDS 직원입니다. 저는 밤 새도록 ASIS 코드와 TOBE 코드를 비교하며 오류를 찾아보았고, 다른 층에서는 최대한 테스트케이스를 도출하여 테스트를 재수행하였습니다. 말씀드리고 싶은 점은 최소한 SDS는 개발자를 탓하지는 않았다는 것입니다. 프로젝트 현장에서도 본사에서도 개발자를 탓하는 사람은 지위고하를 막론하고 아무도 없었습니다. 혹시 그렇게 보도된 언론이 있었나 찾아보았는데, 아무리 찾아도 없더군요. 테스트가 부족하였던 것은 사실인 것 같은데, "교과부장관의 의사결정"으로 납기가 반/토/막 났었다는 사실에 주목할 필요가 있다고 봅니다.
To 마지막 익명님/ 기사들을 보시면, 일정 부족이나 품질관리를 제대로 하지 않은 내용은 쏙 빼고 프로그래머 탓만 하고 있습니다.
그런 내용을 지적한 것이며, 이번 일로 인해 해당 SDS 직원들과 협력사에 직간접적으로 문책이나 불이익이 따를 가능성이 높습니다. 삼성의 기업문화상, 그리고 제가 일해본 경험으로는 쉽게 넘어갈 거 같지는 않습니다.
삼성은 결코 실수에 관대한 회사가 아닙니다.
관련 기사도 참고하시고요: http://bit.ly/r43nHQ
요전에 농협전산시스템도 그렇고 우리은행 온라인뱅킹도 그렇고 나이스도 그렇고 구조적으로 사고가 날수 밖에 없는 현실입니다. 운영 맡기면서 개발 맡기면서 프로젝트 맡기면서 운영비를 해마다 감축하고 개발단가는 해마다 줄이고 프로젝트 비용 줄이기 위해서 기간 줄이고하니 ...
예산없는데 어떻게 적자보면서 테스트 엄청 많이 하고 할 수 있겠나요? 아직도 우리나라는 S/W에 대해서는 가치를 인정해 주지 않죠? 90년 초만해도 IT 하는 직원과 각사 직원이 동일한 회사에서 같이 일하다가 지금보면 (갑)(을) 관계로 (을)은 연봉도 훨씬작고 일에 치이고 ... 앞으로도 이런 사고가 날 가능성이 많이 보이는 것은 저만 그렇게 보일까요?
류한석 님이 링크하신 기사에 대해서 잠깐..
"☞쓰레기값
컴퓨터 연산 과정에서 극히 드물게 도출되는 무의미한 값으로 언제, 어떤 상황에서 발생하는지 그 원인이 아직까지 밝혀지지 않고 있다. 작업 결과에 중대한 영향을 미칠 수 있기 때문에 통상 컴퓨터 프로그래머들은 이런 쓰레기값을 처리하는 작업을 한다."
이라고 하셨는데,
딴지를 걸려고 하는 건 아닙니다만...
기사만 봐서는 쓰레기값이라는 게 어떤 건지 잘 모르겠고, 게다가 그 원인이 아직까지 밝혀지지 않았다는 게 놀랍군요. 게다가 전산쟁이들이 이런 영역을 가만히 놔 뒀을 리가 없다는 생각이 듭니다 :-)
혹시 나이스가 Java로 되어 있다면, 평점을 계산하는 변수로 double 이나 float 타입을 썼기 때문이 아닐까 추측해 봅니다만...
지금 문제가 되고있는 차세대나이스 업무 맡아 일하고
있는 우리 남편..살인적인 스케쥴에 지난 1,2,3월
특히 3월엔 9일 집에 들어왔습니다. 그것도 새벽 두시에..
못자고 못먹고 새까맣게 내려 앉은 다크써클.
오죽하면 그때 급하게 피검사를 다 했습니다.
이런 고충이야 집식구들 아님 모르는거지만 그런 수고에도
불구하고 이런 비난들을 받게 되서 무지 맘이 아픕니다.
모쪼록 고생한 여러분들 기운잃지마시고
화이팅 하시길 간절히 빌어봅니다....
어, 어제 글을 남겼었는데 글이 안 남아 있네요.
이번 NEIS 문제점은 점수(score)를 표기하는데 있어서 정수를 쓰지 않고 실수(부동소수점)로 표기를 했기 때문에 야기되었습니다. 0.6과 같은 단순한 숫자도 부동소수점으로 표시를 하면 정확하게 표시가 될 수 없죠. 자세한 것은 아래에서...
http://www.gilgil.net/8358
http://www.gilgil.net/8417
댓글 쓰기
댓글을 환영합니다.
스팸으로 인해 모든 댓글은 운영자의 승인 후 등록됩니다. 스팸, 욕설은 등록이 거부됩니다. 구글의 블로그 시스템은 트랙백을 지원하지 않습니다.