Page 163

그렇다면 이런 문제가 다른 공학 분야에 비해 소프트웨어에서 두드러지게 나타나는 이유는 뭘 까? 예를 들어 자동차는 (소프트웨어의 비중이 높음에도 불구하고) 달리던 중에 버퍼 오버플 로로 인해 갑자기 멈추고 재부팅을 해야 하는 상황은 거의 볼 수 없다. TV도 완벽하지 않지만

6번 채널을 제대로 보기 위해 2.3 버전으로 업그레이드해야 하는 경우는 거의 없다. 그렇다면 다른 공학 분야에서 따르는 원칙이 소프트웨어 개발 기법보다 훨씬 앞서 있기 때문일 까? 토목 공학자가 다리를 안전하게 건설하는 건 오랜 시간 동안 축적된 기술을 활용하기 때문 일까? 화학 공학자가 혼합물을 성공적으로 제조할 수 있는 이유는 지금까지 발견된 버그를 모 두 해결했기 때문일까? 소프트웨어 공학은 나온지 얼마 되지 않았기 때문이거나, 다른 공학 분 야와 본질적인 성격이 달라서 버그가 많이 발생하고, 결과를 재사용하기 어려워서 프로젝트를 망치기 쉬운 것일까? 소프트웨어 분야와 다른 공학 분야의 차이점은 분명 존재한다. 무엇보다 컴퓨터 기술은 급격히 변해서 개발 과정에서 발생하는 불확실성이 높은 편이다. 프로젝트를 수행하는 동안 기존 기술 을 뒤바꿀 수준으로 변하지는 않더라도 IT 기술의 발전 속도로 인해 분명히 발생하는 문제가 존재한다. 또한 소프트웨어 분야의 치열한 경쟁으로 인해 개발 기간을 앞당겨야 할 때도 많다. 소프트웨어는 개발 일정을 예측하기 힘들다는 점도 다르다. 일정을 정확히 맞추는 것은 거의 불가능에 가깝다. 이상한 버그 하나만으로 며칠에서 몇 주를 잡아먹을 수도 있다. 모든 일이 일 정대로 순조롭게 진행되더라도 갑자기 목표와 요구사항이 변경되는 피처 크리프 feature creep (기 능 변형)가 발생하여 프로젝트 일정이 어긋나버릴 수도 있다. 소프트웨어는 복잡해지기 마련이다. 프로그램에 버그가 없다는 것을 정확히 증명하기도 쉽지 않다. 여러 차례 버전을 올리는 과정에서 발생하는 지저분하고 버그가 있는 코드가 소프트웨어 에 끼치는 피해는 상당히 오래 간다. 담당자를 교체해야 할 상황에 소프트웨어 시스템이 너무 복잡하고 지저분해져서 그 업무를 맡고 싶어 하는 사람이 하나도 없을 수 있다. 그러다 보면 끝 없이 패치하고, 꼼수나 임시방편으로 문제를 해결하는 악순환에 빠지게 된다. 물론 비즈니스에서 흔히 발생하는 문제도 소프트웨어에서 똑같이 발생한다. 시장이나 고객으 로부터 발생하는 압력이나 의사소통의 문제로 얼마든지 발목을 잡힐 수 있다. 사내 정책으로 인한 영향을 최소화하더라도, 개발 부서와 제품 마케팅 부서 사이에서 마찰이 발생하는 경우가 많다. 이렇게 소프트웨어 제품 개발에 악영향을 미치는 요인들을 감안하면 일정한 프로세스를 갖출

24장 소프트웨어 공학 기법 1187

Profile for 한빛미디어

전문가를 위한 C++ (개정4판) - 맛보기  

『전문가를 위한 C++』(개정4판)은 새로 추가된 기능과 관련 도구를 비롯해 C++에 대한 모든 내용을 코드와 솔루션 위주로 소개한다. 저자는 실전 프로그래밍에 적용할 수 있는 현실적인 기법을 다양하게 소개하였으며, 본 교재는 C++를 더 깊이 이해하...

전문가를 위한 C++ (개정4판) - 맛보기  

『전문가를 위한 C++』(개정4판)은 새로 추가된 기능과 관련 도구를 비롯해 C++에 대한 모든 내용을 코드와 솔루션 위주로 소개한다. 저자는 실전 프로그래밍에 적용할 수 있는 현실적인 기법을 다양하게 소개하였으며, 본 교재는 C++를 더 깊이 이해하...

Advertisement