Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
Misson3 . 요구사항
#pragmatic
2년 전
638

📌 연습문제 33

다음 문장들이 진정한 요구 사항인가? 가능하다면 진정한 요구사항이 아닌 것을 좀 더 유용하게 고쳐 써 보라.

요구사항(要求事項, 영어: Requirement)이란 시스템 개발 분야에서 어떤 과제를 수행하기 위하여 필요한 조건이나 능력을 말한다. 시스템 개발 및 운영 시 발주자가 특정 과제를 수행하는데 필요한 조건과 능력을 체계적으로 정리하여 요구사항 번호를 붙여서 제안요청서를 작성하고, 제안자가 해당 요구사항에 맞춰 제안서를 작성한다.(출처: 위키백과)

1. 응답시간은 500ms 이하여야 한다.

📖 책의 해답 : 이 문장은 진짜 요구 사항처럼 보인다. 환경 때문에 애플리케이션에 제약을 추가해야 할 수 있다.

💡 나의 해답 :

이 조건은 요구사항이다. 이 조건이 없이는 서버 응답시간이 길어졌을 경우 적절한 처리를 수행하기 어렵기 때문에 적절한 처리를 위해서 필요한 조건이기 때문이다.

이에 더해 응답시간이 길어졌을 경우 어떤 메세지를 내보낼 것인지, 별도의 에러화면구성을 할 것인지 혹은 특정화면으로 되돌아갈 것인지에 대한 추가 피드백을 받아야할 것 같다.

2. 모달 창의 바탕색은 회색이다.

📖 책의 해답 : 이 문장 자체만으로는 진짜 요구사항이 아니다. 하지만 진짜로 무엇이 필요한지 알아내려면 마법의 질문을 던져야 한다. ”왜?”(중략)

💡 나의 해답 :

디자인 자체로는 어떤 과정 처리에 영향을 주지 않는다. 이 때문에 이 자체로는 요구사항이 아니지만,

각 창의 색에 따른 의미가 있어서 해당 디자인이 기능과 관계가 있다면 요구사항이 될 수 있을 것 같다.

또한 디자인에 기능과 관련된 의미를 부여한다면, 다른 컴포넌트에 대한 요구사항도 추가로 물어보아야할 것 같다.

3. 애플리케이션은 프론트엔드 프로세스 몇 개와 백엔드 서버로 구성된다.

📖 책의 해답 : 이 문장은 요구사항이 아니다. 이것은 아키텍처다. 이런 종류의 것과 마주쳤다면 사용자가 무슨 생각을 하는지 알아내기 위해 깊이 파고들어야 한다.

💡 나의 해답 :

이 내용은 기능을 수행하기 위한 조건이나 능력이 아닌 구성에 관한 이야기이다. 아키텍처에 대한 정의가 있다면, 해당 아키텍처에 대한 목적을 듣고 구현에 반영해야한다고 생각한다.

지정된 프로세스 개수가 초과할 경우 어느 정도부터 대기를 허용할지 어디서부터 에러를 발생시켜 재시도를 하게 할 것인지 등 프로세스와 백엔드 서버에 비해 초과된 양과 관련된 제약사항을 함께 고려해야할 것 같다.

4. 사용자가 숫자가 아닌 글자를 숫자 필드에 입력하면 시스템은 입력 필드를 깜빡이고 입력을 거부한다.

📖 책의 해답 : 밑에 숨겨진 요구 사항은 아마 “시스템은 사용자가 필드에 올바르지 않은 값을 입력하는 것을 막는다. 올바르지 않은 값을 입력하는 경우 경고를 보낸다.”라는 문장에 더 가까울 것이다.

💡 나의 해답 :

해당 조건은 요구사항이 맞다. 해당 사항이 없으면 정상적인 기능 처리가 어렵다. 파싱에러가 날 수 있기 때문이다.

input태그의 number를 이용한다면, 해당요구사항을 구현할 수 있다. 경고를 띄우려면, 입력을 할때마다 한 자씩 받아서 확인 처리를 구현해야하기 때문에, 또한 입력시 입력의 정보를 알려주는 라벨에 숫자나 문자 몇글자 등 입력조건에 대한 언급이 있기 때문에 책의 해답에서 언급된 경고가 필요한 지에 대해서 확인을 해야할 것 같다.

더불어 언어에 따라 number데이터 형식에 대해 범위 제한이 있으므로 해당 조건을 물어보아야 할 것 같다.

5. 이 임베디드 애플리케이션의 코드와 데이터 크기는 32Mb 이내여야 한다.

📖 책의 해답 : 이 문장은 하드웨어의 규격에 맞춘 것 같아 보인다. 아마 꼭 지켜야 하는 요구 사항일 것이다.

💡 나의 해답 :

애플리케이션의 코드와 데이터 크기는 요구사항이라고 생각한다. 애플리케이션의 코드와 데이터 크기는 서버의 최소한의 작동가능한 환경에 대한 언급이다. 서버가 돌지 않으면, 기능은 당연 실행되지 않는다.

이 뿐만 아니라, 서버환경에 대한 구체적인 사항들 OS나 기타 주의할 점에 대해 시스템 개발 전체과정에서 계속해서 확인해서 완성 후 배포시에 문제가 없도록 해야한다.