트랙백: 소프트웨어와 공학 - 달룟 님
흔히들 소프트웨어는 말 그대로 소프트(soft)한 무형의 제품이기 때문에 나중에 얼마든지 변경할 수 있다고 생각합니다. 그리고 그것이 소프트웨어의 하나의 특징이자 장점으로도 여기지고 있는게 사실입니다.
그러나.. 그건 착각일 뿐입니다.
소프트웨어가 무형이라고요?
천만에요. 그것도 엄연히 형태를 가지고 있습니다.
바로 코드(Code)라는 것으로 말이지요.
코드는 단순한 문자열이 덩어리가 아닙니다. 코드를 작성하는 행위 그 자체는 실제 건축을 하는 행위와 마찬가지입니다. 프로그래머가 코드를 한 줄 작성하는 것은 벽돌을 하나 쌓아 올리는 것과 마찬가지인 겁니다. 코드는 그 자체가 프로그램의 하나의 동작을 표현하는 것이고, 각 코드는 톱니바퀴처럼 서로 긴밀한 연관을 가지면서 움직이고 있는 겁니다. 때문에 이미 만들어져 있는 코드를 수정하게 되면 그 여파가 어떻게든 다른 코드의 동작에도 영향을 미치기 마련입니다. (물론 그 여파를 최소화하기 위해서 좋은 설계라는 것이 필요하긴 합니다.)
문서상에서 소프트웨어의 동작 하나를 수정하는 것은 매우 쉬운 일입니다. 해당 문장을 삭제하고 고쳐쓰기만 하면 되니까요. 하지만 코드상에서 그걸 수정하려면, 건축을 하는 도중에 설계를 변경하는 것 만큼이나 큰 비용을 지불해야 합니다. 코드 하나 수정하는게 뭐 그리 돈 드는 일이냐구요? 그 코드를 수정하는데 걸리는 시간 만큼 제품의 출시가 지연되고, 그러는 동안 프로그래머가 땅파먹고 살지는 않겠죠.
사소한 변경은 그런대로 잘 처리될지도 모르겠지만, 요구사항 수준의 변경은 개발 일정 자체를 흔들어 놓을 수 있습니다. 개발이 지연되면 지연되는 만큼 프로그래머를 먹이고 재우는 데 드는 비용도 추가되는 겁니다.
요구사항을 변경하려면, 적어도 그 내용이 코드로 옮겨지기 전에 하는 것이 바람직합니다. 소프트웨어의 유연성을 믿고 나중에 바꾸면 된다... 물론 그렇게 할 수는 있습니다. 하지만 그만큼 개발이 늦어지고 개발에 들어가는 비용 역시 증가하게 될 겁니다.
어쨌거나 모든 변경에는 돈이 든다는 것을 기억해야 할 겁니다.
흔히들 소프트웨어는 말 그대로 소프트(soft)한 무형의 제품이기 때문에 나중에 얼마든지 변경할 수 있다고 생각합니다. 그리고 그것이 소프트웨어의 하나의 특징이자 장점으로도 여기지고 있는게 사실입니다.
그러나.. 그건 착각일 뿐입니다.
소프트웨어가 무형이라고요?
천만에요. 그것도 엄연히 형태를 가지고 있습니다.
바로 코드(Code)라는 것으로 말이지요.
코드는 단순한 문자열이 덩어리가 아닙니다. 코드를 작성하는 행위 그 자체는 실제 건축을 하는 행위와 마찬가지입니다. 프로그래머가 코드를 한 줄 작성하는 것은 벽돌을 하나 쌓아 올리는 것과 마찬가지인 겁니다. 코드는 그 자체가 프로그램의 하나의 동작을 표현하는 것이고, 각 코드는 톱니바퀴처럼 서로 긴밀한 연관을 가지면서 움직이고 있는 겁니다. 때문에 이미 만들어져 있는 코드를 수정하게 되면 그 여파가 어떻게든 다른 코드의 동작에도 영향을 미치기 마련입니다. (물론 그 여파를 최소화하기 위해서 좋은 설계라는 것이 필요하긴 합니다.)
문서상에서 소프트웨어의 동작 하나를 수정하는 것은 매우 쉬운 일입니다. 해당 문장을 삭제하고 고쳐쓰기만 하면 되니까요. 하지만 코드상에서 그걸 수정하려면, 건축을 하는 도중에 설계를 변경하는 것 만큼이나 큰 비용을 지불해야 합니다. 코드 하나 수정하는게 뭐 그리 돈 드는 일이냐구요? 그 코드를 수정하는데 걸리는 시간 만큼 제품의 출시가 지연되고, 그러는 동안 프로그래머가 땅파먹고 살지는 않겠죠.
사소한 변경은 그런대로 잘 처리될지도 모르겠지만, 요구사항 수준의 변경은 개발 일정 자체를 흔들어 놓을 수 있습니다. 개발이 지연되면 지연되는 만큼 프로그래머를 먹이고 재우는 데 드는 비용도 추가되는 겁니다.
요구사항을 변경하려면, 적어도 그 내용이 코드로 옮겨지기 전에 하는 것이 바람직합니다. 소프트웨어의 유연성을 믿고 나중에 바꾸면 된다... 물론 그렇게 할 수는 있습니다. 하지만 그만큼 개발이 늦어지고 개발에 들어가는 비용 역시 증가하게 될 겁니다.
어쨌거나 모든 변경에는 돈이 든다는 것을 기억해야 할 겁니다.




덧글
웃기는건 일부 프로그래머들은 저 유연한 구조가 필요 없는곳에도 억지로 넣어서 나중에 수정이 더 골때려지는 재미있는 현상도 나타나죠. ^^;
진짜로 수정하기는 힘든거니까요..(주석을 아무리 달아도 헷갈리는...)
헝가리안 표기법까지는 안바라니까.. 주석이라도 잘 달았으면... 설계는 포기고..
(학생들의 경우입니다만)
팀 프로젝트할 경우에 진짜 난감한 경우가 많습니다...
아, 그다지 반론하기 위해서 글을 쓴건 아니었습니다만, 생각나는대로 쓰다보니 문장체가 그리되어버린 것 같습니다.
제가 말하고 싶은 건, 소프트웨어가 무형적 제품이라고 볼 수는 없지 않을까 하는 점이었는데 뒤에 사족을 좀 달다보니 어조가 강해졌군요.
지금생각하면 굳이 트랙백까지 걸필요는 없지않나는 생각도 듭니다.
오해의 소지가 있는 부분에 대해서는 사과드립니다. -_-
지난번 글이 너무- 반응이 좋더라구요
이제는 [오피니언]이 아니라 [블로그뉴스]라는 섹션을 개설했답니다.
앞으로는 뉴스-[블로그뉴스]로 오시면 볼 수 있을 꺼에요
좋은하루 보내세요~