소프트웨어 요구사항을 작성해야 하는 이유

Source : http://flic.kr/p/bC9Tin
Source : http://flic.kr/p/bC9Tin

소프트웨어 개발에서 요구사항이 무척 중요하다. 소프트웨어를 개발하는 사람들은, 이 문장에 다들 동의할 것이다. 그런데 현실로 돌아와 보면, 요구사항을 작성하는 데 많은 노력을 들이지 않는다. 일반적으로 요구사항이란 소프트웨어 개발 시 통과해야 할 관문 정도로 생각한다. 그리고 많은 노력은 개발에 치중한다.

요구사항을 잘 적지 않는 이유는 여러가지가 있을 것이다. 가장 일반적인 이유는, 아주 새로운 것을 개발하지 않기 때문이다. 해당 분야의 신규 입사자가 아닌 이상 기존에 개발하던 소프트웨어를 개발한다. 따라서 구현까지 다 해보았고 잘 돌아가는 코드도 있기 때문에, 요구사항을 새롭게 적는 게 어떤 효용이 있는지 잘 느끼지 못한다.

다음으로 다른 사람이 만든 걸 그대로 따라서 만드는 경우다. 흔히 벤치마킹이라는 이름으로 이런 작업을 한다. 다른 사람이 만든 소프트웨어를 복사하는 경우엔 이미 잘 동작하는 프로토타입?이 있기에, 요구사항을 적는 것도 그다지 의미가 없어 보인다.

제품의 수명이 짧은 경우에도 요구사항을 잘 작성하지 않는다. 요구사항을 잘 기록한다는 건, 그만큼 개발 기간에 여유가 많다는 뜻이고 아울러 해당제품의 수명이 상당히 긴편이란 소리다. 제품 수명이 짧은 경우엔 일단 어느 정도의 개념만 잡히면 최대한 빠른 시간에 제품을 만든다. 아울러 트랜드에 민간하기 때문에 요구사항을 깊이 있게 작성하거나 요구사항에 많은 투자를 하지 않는다.

개발자 가운데 ‘요구사항’을 작성해 본 경험이 없는 경우가 상당히 많을 것이다. 개인적으로 이 이유가 가장 핵심적인 이유일 것 같다. 즉 요구사항이 중요하다고 하지만 요구사항을 작성하는 방법을 배워 본 적도 없고, 요구사항이 중요하다고 해서 요구사항을 적을려고 하면, 무얼 적어야 할지 몰라서 요구사항을 적지 않는다.

꼭 요구사항만이 아니다. 아키텍처 설계, 일반적인 설계, 테스트 등. 우리가 소프트웨어 개발에서 중요하다고 하는 것들 중에서 정말로 현업에서 실천하는 경우가 그다지 많지 않다. 이 포스트를 쓰기 위해서 최근의 실증적인 데이터, 현업에서 요구사항 작성이나, 소프트웨어 설계, 테스트 등에 실제로 얼마나 투자하는지 조사한 자료가 있는지 찾아봤는데, 찾지 못했다.* 아쉽게도 데이터가 없어서 일반화할 수 없지만, 내가 직간접적으로 경험한 현장에서 코드 개발에 거의 대부분의 시간을 투자했다.

모든 제품이 그렇겠지만, 개발 초기에 완벽한 요구사항을 작성할 수 없다. 요구사항 작성이 개발 단계로 보면 가장 먼저 하는 일이지만, 실제로 완벽한 요구사항은 제품을 모두 완성하고 시장에 출시했을 때 알 수 있다. 시작 초기에 그다지 완벽하지도 않은 요구사항을 작성하는 건, 무의미해 보이는 게 현실적이다.

다들 잘하는 것에서 더 잘하기란 쉽지 않다. 개발자들이란 그 업의 이름에서 알 수 있듯이, 개발로 먹고 사는 사람이다. 이들 가운데서 개발을 조금 더 잘한다고 소프트웨어의 품질 차이가 많이 나지 않을 것이다. 하지만 다들 신경쓰지 않고 관심도 적은 분야에서 더 잘한다면 어떨까? 당장 차이가 나지 않겠지만, 비 경쟁적 요소에 많은 관심을 기울이면 이게 어느 순간에 경쟁자와 큰 차별점으로 나타날 것이다.

이런 비 경쟁적 요소에 대표적인 것으로 요구사항이 있다. 당장에 위에서나 다른 부서에서는 돌아가는 코드를 내놓으라고 하겠지만, 그래도 요구사항 한 줄이라도 적어보려는 노력을 기울여 보자. 이런 노력이 강남에서 박씨 물고오는 제비를 부르는 계기가 될 수도 있다.

* 내 검색 능력이 부족해서 찾지 못했을 수도. 혹시 우리나라 문헌 중에서 이런 문헌을 알고 계시는 분은 알려주길 바란다.

글 : 신승환
출처 : http://www.talk-with-hani.com/archives/1642

%d bloggers like this: