스펙에 대해서 얘기할 때 종종 혼동해서 사용하는 것이 요구사항이다. 영어로는 Specification과 Requirement(s)다. 두 용어는 같은 것일까? 다른 것일까? 가끔은 혼용해서 사용하지만 우리는 스펙의 원리를 정확하게 이해하기 위해서 두 용어의 차이를 명확하게 구분하는 것이 필요하다.

“요구사항”이라는 용어는 소프트웨어 업계 외에서도 일반적으로 의미와 비슷한 뜻으로 사용된다. 고객이나 이해관계자가 요구하는 것을 뜻한다. 하지만 소프트웨어 “스펙”은 좀 다른 의미를 가지고 있다. 그래서 수많은 회사에서 또, 여러 개발자들이 그 의미를 미묘하게 서로 다르게 생각하고 있나보다. “스펙”도 소프트웨어 업계 외에서도 많이 사용한다. 취업 시장의 후보자도 “스펙”이란 용어를 쓰고, 스마트폰 등 디바이스도 “스펙”이란 용어를 쓴다.

일반적인 의미로 소프트웨어도 “스펙”은 비슷한 의미를 가지고 있지만, 소프트웨어 “스펙”이라고 하면 머리 속에 그려지는 모습이 있다. 그리고 그 모습은 전세계 개발자들이 공통적으로 생각하는 것이 있다. 적어도 이런 내용들이 포함되어 있고 이런 절차를 통해서 만들었을 것이라는 생각을 할 수 있다.

그래서 요구사항은 한 줄 또는 몇 줄에 불과하지만 그 요구사항을 잘 분석해서 스펙을 작성하면 수 페이지 또는 수십, 수백 페이지의 문서가 될 수도 있다. 그래서 스펙을 제대로 작성하지 않고 요구사항만 가지고 프로젝트를 시작하면 큰 재앙이 닥칠 수 있다. 특히 외주 프로젝트라면 그 재앙은 회사를 매우 어렵게 할 수도 있다.

내부에서 진행하는 프로젝트든 외주나 SI로 진행하는 프로젝트든 스펙을 제대로 작성하지 않고 요구사항 수준의 요청으로 진행을 하면 분석이 제대로 되지 않았기 때문에 프로젝트를 진행하는 내내 수많은 문제가 발견되고 난상토론, 불 끄기, 고치기 반복이 발생한다. 물론 스펙을 적절히 잘 작성하면 이런 문제 상황을 훨씬 줄어든다.

지금도 수많은 사람들이 “요구사항”과 “스펙”이란 용어를 혼동해서 사용을 하고 있다. “요구사항”과 “스펙”의 차이를 사전적으로 아무리 설명해도 그 차이를 실감하기는 불가능하다. 외울 수는 있어도 금방 잊어버려서 실전 개발 프로젝트에 적용을 하지 못한다. 유일한 방법은 소프트웨어 “스펙”의 원리를 제대로 이해하면 “요구사항”과 “스펙” 차이를 명확하게 알게 된다. 그래서 이 시리즈에서는 “스펙”의 원리에 대해서 자세히 다루고 있다.

(요구사항과 스펙의 차이)

from allofsoftware.net