기능정의서 작성 방법 및 이유 📃

곽동현·2023년 10월 21일
1

1) 글을 쓰게 된 개요

미션은 기능 요구 사항, 프로그래밍 요구 사항, 과제 진행 요구 사항 세 가지로 구성되어 있다.
세 개의 요구 사항을 만족하기 위해 노력한다.
특히 기능을 구현하기 전에 기능 목록을 만든다.

"특히 기능을 구현하기 전에 기능 목록을 만든다."

최근에 우아한 테크코스를 시작하게 되었다.
우아한 테크코스를 진행 하다보면, 여러 요구사항을 만나게 되는데,
그 여러 요구사항들을 보며 프로그래밍을 해야한다.

하지만, 여기서 우테코에서 요구하는 것이 한 가지 더 있다!
바로,

구현에 들어가기 전, 사전에 기능 목록을 정의 하는것

여태 프로그래밍을 하면서, 무작정 코딩만 했지. 이렇게 기능목록을 정리 한 후에
구현에 들어간 적이 없었다..

하지만 생각보다, 이 일은 굉장히 중요한 과정이며,
개발자로 현업에서 일 하려면 반드시 해야만 하는 (할 수 밖에 없는) 일이다.

그렇다면 기능 정의서를 무엇이며, 왜 해야하고, 마지막으로 어떻게 하는지 알아보자!


2) 기능정의서가 뭐예요?

기능정의서란

요구사항을 보며,
각각의 기능에 대해 정의를 내리고 개발요건 등을 담은 설명을 통해 어떻게 구현되어야 하는지를 기재한 문서이다.

개발자는 무언가를 만들기 위해,
만들어주길 원하는 요청자에게 요구사항을 접하게 된다.

요청자 : 아, 저 야구게임 하나 만들기로 기획했는데, 이렇게 만들어주세요 ~
아 참,
여기 A를 입력받으면 꼭 ! 이렇게 B처럼 출력이 나오게끔 만들어주셔야 해요!

개발자 : 아니 이게 뭔.. 말이쉽지..

생각보다 개발자는 불친절한 요구사항을 많이 접하게 된다고 한다. ( 성의없는 요구사항 )
하지만 우리는 한다면 해야하는 개발자.


일단 구현이 되는지 안되는지 미리 설계를 하며 파악 해야한다 !
그러기 위해 필요한 작업이 요구사항들을 바라보며 나만의 기능을 생각하고 흐름을 생각해보는 것이다 !

다시말해, 기능 정의서란
요구설계서를 쭉 흝어보며 구현에 들어가기 전에
어떤 기능이 필요로 되고 어떤식으로 구현을 해야할 지 생각해보고 정리 해놓은 문서이다.

3) 귀찮은데... 왜 이걸 꼭 작성 해야해요?

기능 정의서는
기획한 기능에 대해 개발자와 소통하기 위함이다.
개발자와 소통을 통해 좋은 서비스를 만들어 내기 위한 방향성을 잡아주는 역할을 한다.

기능 정의서가 없이 구현했을 때 발생하는 실수들을 예시로 들어보자.

구현자 : 여기 야구게임 만들어드렸습니다. 확인 바랍니다.

요청자 : 엥? 여기 요구사항 23번째 보시면 제가 분명 이렇게 요구드렸는데.. 이게 구현이 안된 것 같은데요..?
추가하고 수정해주세요.

구현자 : 헉,, 아 저거 깜빡했다..

극단적인 예시이긴 하지만
이처럼 기능 정의를 미리 하지 않으면 구현과정중에 요구사항을 까먹고, 빠뜨리거나 이상하게 구현하는 일이 허다할 것이다.
이를 예방하는데에 아주 중요한 지표로 작용될 것이다.

하지만 무엇보다 요청자와의 검증 과정이 아주 효과적일 것이다!

구현자 : 아, 여기 제가 구현 하기전에 기능을 쭉 나열해봤는데..
이 A를 입력받았을 때 B를 출력나오게끔 하려면.. 꽤나 복잡해질 것 같더라구요?
혹시 이 부분을 B' 로 나오게끔 진행해도 될까요?

요청자 : 아 그럼 그렇게 하죠! 아 그리고 여기 기능목록 쭉 살펴봤는데 이 F라는 기능보다 F'' 기능으로 대체 가능할까요?
이게 더 퀄리티가 높아질 것 같아요.

구현자 : 아 그럼 그렇게 하겠습니다 !

이처럼 실제로 구현에 들어가기 전에
다양한 소통으로 미리 설계를 꽉 잡고 들어갈 수 있어서

엄청나게 구현에 대한 자원과 에너지를 아낄수가 있을 것이다.

4) 그럼 어떻게 작성해요?

사실 인터넷에 "기능정의서 양식" 이라고 검색해본다면 다양한 양식을 토대로 작성해 나가면 된다.
따라서 공통적인 특징을 가지고 있는 것을 위주로 설명해보겠다.

1. 버전 / 수정 이력 관리

버전 / 수정 이력을 남기는 것은 중요하다.

사소할 수도 있는 부분이지만, 개발은 혼자하는 것이 여러명이 팀을 이루어 작업하는 것 이므로
수정 이력을 기재하지 않는다면 어느순간 기획, 개발, 소통 모든것이 망가질 수가 있다.

방법은 다양하지만, 이런식으로 유동적으로 쓰면 될 것 같다!

2. 기능 정의서 작성

크게 4가지로 설정할 수 있다!

A. 기능 ID 부여.

고유 기능 ID를 부여한다.
만일 기능중 가장 큰 부분이 1 이라면 , 그에 파생된 기능은 1.1 식으로 연결해 나갈수도 있을 것이며,
검색과 소통에 용이해질 것이다!

B. 주요 기능

기능의 명칭을 기재하는 부분이다.

C. 기능 정의

기능이 동작하는 행동, 맡은 역할에 대해 기재한 부분이다.
가독성을 위해 한 줄로 요약을 시키는 것이 좋다.

D. 기능 설명

크게 시간을 들여 작성해 나가는 부분이다.
이는 개발자, 비개발자 사이에서 모두가 이해할 수 있도록 최대한 친절하고, 최대한 자세하게 신경써서 작성을 해줘야 나중에 소통의 오류가 발생하지 않을 것이다!

사진 출처

이 또한 간단한 예시이지만,
이런식으로 기능을 사전에 정리해나간 후에 구현을 한다면,
수많은 소통후에 멋진 애플리케이션이 탄생할 것 이다!

5) 마무리

이번에 우테코를 통해서 기능정의서를 사전에 작성 해야만하는 이유와 중요성을 깨달았다.
그동안은 무작정 구현에 들어가 코드 작성에만 힘을 써서 개발도중 갈피를 못잡을 때가 많았던 것 같다.

기능정리를 통해 요구사항을 한번 더 검토할 수 있었고
코드간의 '자연스러움' 이 생길 수 있었던 것 같다.

앞으로도 요구사항에 대한 기능명세서를 신경쓰도록 하자.

profile
실패의 경험들을 채워나가기!

1개의 댓글

comment-user-thumbnail
2024년 7월 5일

잘 보고 갑니다

답글 달기