1 Articles, Search for '좋은 소프트웨어'

  1. 2008/09/02 소프트웨어 품질
Research2008/09/02 11:39

소프트웨어 개발에서 비개발자 출신의 경영자가 가장 이해하지 못하는것이 시간과 품질간의 관계다.

10 점 만점의 소프트웨어 품질을 만족시키기 위해서 10일이라는 시간이 필요하다고 가정하고, 단순 기능 구현은 5일의 시간이 필요하다고 가정하자. 이때 대부분의 경영자는 5일동안 기능을 구현해서 개발 비용을 줄이려고 시도하고, 동작하는 모습을 빨리 보고싶어한다. 그리고 대부분 1일이나 2일의 시간을 추가로 들여 상용화 하려고 시도한다. 그리고 5일동안 개발하게 만든 자신의 관리 능력을 스스로 칭찬할 것이다.

소프트웨어 품질이 무엇을 의미하는지 쉽게 예를 들어 설명하자면, 문서 프린트 소프트웨어가 있다고 가정하였을때 품질이 높은 소프트웨어는 사진을 프린트하는 기능을 추가하는데 1일의 시간이 걸리고 그 안정성 또한 높아서 시장에 바로 내보냈을 때 사용자들이 만족하는 반면, 품질이 낮은 소프트웨어는 2일의 시간이 걸리고 그 안정성이 낮아서 시장에 내보냈을 때 사용자들이 외면할 가능성이 더욱 높아진다는 것이다.

소프트웨어를 상용화 했을 때, 소프트웨어가 팔리기 시작하면 유지 보수 이슈는 100% 발생한다. 버그를 수정하는 이슈이던, 업그레이드 이슈이던 무조건 발생하게 되어 있다. 한번 개발해서 평생 쓸 수 있는 소프트웨어는 단정적으로 없다. 그래서 언젠가는 결국 소프트웨어 품질이 10을 향해 달려가야 하고 10에 가까워질수록 사용자를 더 만족시키는, 그래서 더욱 잘 팔리는 소프트웨어가 된다. 소프트웨어가 10을 향해 가지 않고 5나 6에 정체되어 있다면, 소비자는 그 소프트웨어를 기다려주지 않고 뒤따라오는 다른 소프트웨어를 사용하게 되는 것은 말할것도 없다. 다른 소프트웨어가 나오지 않을거라고? 그래서 사용자는 선택의 여지가 없을것이라고? 물론 이상적인 모습이다. 그런 경우라면 유지 보수 안해도 된다. 하지만 팔리는 소프트웨어이고 그 소프트웨어가 엉망이라면, 어떤 다른 경영자가 더 좋은 소프트웨어로 시장을 장악하려고 안하겠는가? 그리고 소비자의 행동 양식상 한번 다른 소프트웨어를 사용하면 왠만하면 다시 원래의 소프트웨어를 사용할 가능성은 매우 낮다. 한번 따라 잡히면 그것을 복구하는데는 더 많은 시간과 비용이 발생한다.

소프트 웨어라는것은 같은 기능을 수행해도 수십만가지의 구조가 나올 수 있다. 하물며 Hello world 를 찍는 프로그램도 몇십만개의 구조를 가질 수 있는데 다른 복잡한 소프트웨어는 더 심하지 않을까? 소프트웨어와 건축물과 비교를 많이 하는데 (그래서 대부분의 경영자는 자사의 소프트웨어 개발을 건축물을 짓는것에 대입해서 생각한다. 여기에 가장 큰 오류가 있다.) 건축물과 소프트웨어의 가장 큰 차이점은, 건축물은 오랜 역사 속에서 기능과 구조가 거의 1:1 매칭이 되어 있지만 소프트웨어는 기능과 구조가 매칭되어 있지 않고 구조는 개발자의 마음대로 변한다는 것이다.(기능과 구조의 1:1 매칭이, 그래서 같은 기능의 소프트웨어가 같은 구조를 갖는것이 소프트웨어 공학의 최종 목표이다.) 그래서 개발이 완료 된 후를 보았을 때 같은 기능의 건축물은, 거의 같은 뼈대에 거의 같은 구조를 가지고 있는것과 달리, 소프트웨어는 같은 기능을 수행해도 비슷한 구조를 가진것이 절대 없다.

긴 배경 지식 얘기가 끝났다. 다시한번 말하지만 비개발자 출신의 경영자가 가장 이해하지 못하는것은 여기에 있다. 우선 초기 개발 시, 유지보수를 고려하지 않는다. 소프트웨어 유지보수 비용이 얼마나 큰지를 이해하지 못한다. 눈에 보이지 않고, 다른 제품처럼 자재비가 들지 않기 때문이다. 초기 사업 계획 단계부터 유지 보수 비용을 책정하여 계획에 넣는 경영자가 얼마나 될까? 두번째로, 가장 이해하지 못하는 것은, 5일의 시간으로 5라는 품질의 소프트웨어를 만들어서 보유하고있고, 초기에 10일의 시간으로 10이라는 품질의 소프트웨어를 개발할 수 있다고 했으니, 추가로 5일을 더 사용하면 되겠네, 라고 생각하는 것이다. 절대 아니다. 이유는, 5의 품질을 목표로 개발하는 소프트웨어와 10의 품질을 목표로 개발하는 소프트웨어는 그 출발점 부터 다르고, 이것은 두 소프트웨어의 구조가 완전히 다르다는 것을 의미한다. 즉, 10의 품질을 만족하기 위해서는 5의 품질의 소프트웨어를 처음부터 다 뜯어서 다시 개발해야 한다는것을 의미한다는 것이다. 결국 10의 품질을 가진 소프트웨어를 개발하기 위해서는, 아무리 5라는 품질을 만족하는 소프트웨어를 가지고 있어도, 최소 10일 이상의 시간을 들여야 한다. 10이라는 품질로 발전시켜야 살아남을 수 있는 소프트웨어 산업에서, 누가 먼저 1을 올리냐 하는 긴박한 상황에서, "처음부터 다시 개발"은 해당 프로젝트가 망하는 것과 거의 일치한다.

우리나라 소프트웨어가 왜 외산 소프트웨어에 밀리는지 이해가 되는가? 초기 아주 좋은 아이디어로 출발했으나, 빨리 출시하는것만을 목표로 5라는 소프트웨어를 개발하여 재미를 보다가, 뒤따라 들어온 다른 8의 품질을 가진 외산 소프트웨어에 시장을 뺏기고, 그때서야 품질을 끌어올리려고 노력하지만, 이미 늦었다. 처음부터 품질의 목표가 5였기 때문에 그 이상은 절대 올릴 수 없다. 엄청 뜯어 고쳐서 품질을 올린다해도 6이다. 처음부터 다시 개발하면, 이미 그 기간동안 다른 소프트웨어들에 시장을 다 뺏긴 후다. 이게 대부분의 국내 소프트웨어 기업의 시나리오다. 이 시나리오에 대입되는, 생각나는 기업들 많을 것이다.

개발자들의 꿈이 무엇일까? 처음부터 10의 소프트웨어 품질을 목표로 정말 제대로된 소프트웨어를 개발해서 자신의 역량을 다 하는것이다. 만약 이런 마인드를 가지고 그대로 실천하는 경영자가 있다면, 거짓말 조금 보태서 월급 안받고도 일할 수 있다.

Posted by Getroot

Leave your greetings.