요구사항 정의의 필요성
요구사항 정의는 개발 외주를 맡길 때 매우 중요한 단계입니다. 이유는 아래와 같습니다.
- 프로젝트의 방향성을 명확하게 할 수 있습니다. 요구사항 정의를 통해 개발사와 고객사 모두가 프로젝트의 목표와 범위를 명확하게 이해할 수 있습니다. 이는 프로젝트의 방향을 잃지 않게 하고, 프로젝트의 진행을 원활하게 합니다.
- 비용과 시간을 효율적으로 관리할 수 있습니다. 요구사항을 미리 정의하면 개발사는 필요한 리소스와 시간을 미리 예측하고 효율적으로 배분할 수 있습니다. 이는 프로젝트의 비용을 미리 예측하고 관리하는 데 도움이 됩니다.
- 의사소통의 문제를 최소화할 수 있습니다. 요구사항을 명확하게 정의하면 개발사와 고객사 사이의 의사소통 문제를 최소화할 수 있습니다. 이는 프로젝트가 원활하게 진행되게 하고, 잠재적인 갈등을 방지하는 데 도움이 됩니다.
개발 외주 희망편
예를 들어, ABC 회사가 클라우드 기반의 프로젝트 관리 도구를 개발하고자 외주를 맡기기로 결정했다고 가정해봅시다. ABC 회사는 세부적인 요구사항을 명확하게 정의했으며, 이에는 사용자 인터페이스, 데이터 관리, 보안 요구사항, 통합 요구사항 등이 포함되었습니다. 이를 통해 개발사는 ABC 회사의 요구를 정확하게 이해하고, 효율적으로 프로젝트를 진행할 수 있었습니다.
결과적으로, 개발사는 ABC 회사의 요구사항을 충족하는 프로젝트 관리 도구를 성공적으로 개발했습니다. 이 도구는 클라우드 기반으로 작동하며, 사용자는 어디에서나 접근하여 프로젝트를 관리할 수 있습니다. 또한, 이 도구는 사용자의 데이터를 안전하게 보호하며, 다양한 플랫폼과 잘 통합됩니다.
이렇게 요구사항 정의서를 통해 ABC 회사와 개발사는 효과적으로 협력하여 성공적인 Saas 프로덕트를 출시할 수 있었습니다.
개발 외주 절망편
이번에는 XYZ 회사가 요구사항 정의서 없이 모바일 앱 개발 외주를 맡겼다고 가정해봅시다. XYZ 회사는 개발사에게 자세한 요구사항을 전달하지 않았으며, "사용자 친화적인 모바일 앱을 만들어 주세요"라는 막연한 지시만 내렸습니다.
개발사는 자세한 요구사항이 없어서 초기에는 프로젝트의 방향성을 이해하는 데 어려움을 겪었습니다. 이로 인해 프로젝트의 진행이 지체되고, 프로젝트의 비용도 불필요하게 증가했습니다.
또한, 개발사는 XYZ 회사의 불분명한 요구사항을 해석하고 이를 기반으로 개발을 진행했으나, 이는 XYZ 회사가 원하는 결과와 맞지 않았습니다. 이로 인해 개발사는 여러 번의 수정을 거쳐야 했으며, 이는 추가적인 시간과 비용을 소모했습니다.
결과적으로, 모바일 앱은 원래의 예정보다 늦게 출시되었고, XYZ 회사와 개발사 모두가 만족하지 못했습니다. 이러한 경험을 통해 XYZ 회사는 요구사항 정의의 중요성을 깨닫게 되었으며, 다음 프로젝트에서는 요구사항을 더욱 명확하게 정의하고 개발사와 공유할 것을 결정했습니다.
요구사항 정의서 필수 정보
- 페이지: 페이지 단위로 정의하는 것은 이후 스토리보드, 와이어프레임, 개발 단에서의 업무가 더 효율적으로 이뤄질 수 있습니다. 페이지 안에는 여러 기능들이 있을 수 있고 해당 기능들은 아래와 같은 요소들로 명시합니다.
- 구분: 요구사항 정의서의 각 항목을 구분하는 것은 중요합니다. 이는 각 항목이 다른 항목과 어떻게 관련되어 있는지, 그리고 전체 요구사항 내에서 어떤 위치에 있는지를 명확하게 이해하는 데 도움이 됩니다. 또한, 이는 효율적인 소통과 정확한 프로젝트 추적을 가능케 합니다. 아래와 같은 구분들이 존재할 수 있습니다.
- 디자인 : 복잡한 기능이 포함되지 않은 디자인 요소입니다. 배너 등이 디자인 요소에 해당됩니다.
- 폼 : 사용자로 부터 정보를 입력받는 요소입니다. 회원가입, 로그인 폼 등이 여기에 해당됩니다.
- 링크 : 클릭 시 사용자를 다른 페이지로 이동시키는 요소입니다.
- 액션 : 클릭 시 사용자가 어떤 변동을 줄 수 있는 요소입니다. 인스타의 스토리 올리기, 댓글 쓰기, 좋아요 누르기 등이 액션에 해당합니다.
- 리스트 : 저장된 정보들을 보여주는 요소입니다. 인스타 피드, 유튜브 피드, 커뮤니티의 글 목록 등이 여기에 해당합니다.
- 기능명: 각 요구사항이 어떤 기능을 가리키는지 명확하게 명시하는 것은 중요합니다. 이는 개발사가 요구사항을 정확하게 이해하고, 해당 기능을 올바르게 개발하는 데 도움이 됩니다.
- 설명: 각 요구사항에 대한 자세한 설명은 필수적입니다. 이는 개발사가 요구사항을 정확하게 이해하고, 고객사의 기대치를 충족하는 결과물을 제공하는 데 도움이 됩니다. 설명은 요구사항의 목적, 구체적인 작동 방식, 그리고 기대되는 결과 등을 포함해야 합니다.
요구사항 정의서 예시
이제 예시로 알아보도록 합시다! 간략한 버전으로 하나 준비해봤습니다.
반려동물 영양제 구독 플랫폼 웹
-
랜딩페이지
구분 기능명 설명 디자인 헤더 로고, 로그인 / 마이페이지 이동 링크 디자인 배너 슬로건, 이미지 캐로셀 디자인 기능 설명 섹션 플랫폼에서 제공하는 기능을 설명하는 섹션, 카드 형식으로 구현 디자인 푸터 회사 정보 등 -
로그인 페이지
구분 기능명 설명 폼 로그인 폼 아이디 비밀번호 등의 정보를 받고 로그인 시켜줄 수 있도록 링크 회원가입 링크 회원가입 페이지로 이동 -
회원가입 페이지
구분 기능명 설명 폼 회원가입 폼 아이디, 비밀번호, 유저 정보들을 기입받고 회원가입 시킬 수 있도록 링크 로그인 링크 로그인 페이지로 이동 -
상품 리스트 페이지
구분 기능명 설명 리스트 상품 리스트 관리자 페이지에서 등록해둔 상품들을 볼 수 있는 리스트 링크 상품 상세 클릭한 상품이 상세 페이지로 이동 -
상품 상세 페이지
구분 기능명 설명 리스트 상품 정보 상품 정보, 이름, 가격, 할인 등 상세 정보 액션 장바구니에 담기 선택된 상품이 장바구니에 담기도록, 장바구니로 이동할지, 머무를지 선택 가능 액션 즉시 결제 장바구니를 거치지 않고 바로 결제 할 수 있는 기능 -
장바구니 / 결제 페이지
구분 기능명 설명 리스트 장바구니 상품 리스트 장바구니에 담아 둔 상품들 리스트 액션 결제 장바구니에 담긴 상품들 중 선택해서 결제할 수 있도록 액션 상품 삭제 장바구니에 담긴 상품들 중 선택해서 삭제할 수 있도록 (장바구니에서 뺄 수 있도록) 링크 상품 리스트 링크 전체 상품 리스트 페이지로 이동 링크 상품 상세 링크 클릭한 상품 상세 페이지로 이동 -
마이페이지
구분 기능명 설명 리스트 사용자 정보 사용자 정보 (이름, 닉네임 등)이 나열되도록 리스트 결제 정보 결제내역 정보들이 뜨도록 액션 회원 탈퇴 사용자가 회원탈퇴할 수 있는 기능
리퀘스터
막상 요구 사항 정의서를 작성하시게 되면 쉽지만은 않습니다! 이에 저희 코드스테이션은 편하게 요구사항 정의서를 작성하고 PDF로 내보내 사용하실 수 있는 서비스를 제작하고 있습니다.
이 글에서 소개드린 간략한 방법으로 요구사항 정의서를 작성하시게 되고 쉽게 공유하고 활용하실 수 있도록 만들고 있습니다.
2024년 4월 중으로 오픈할 예정이니 많이 기대해주세요!