Community

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

← Go back
Mission 3. 진짜 요구사항
#pragmatic
2년 전
488

📌 연습문제 33

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

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

💡 나의 해답 : 요구사항으로 보인다. 하지만 왜 500ms 이하여야 하는지는 알고 적용해야 한다. 이 조건을 충족시키기 위해 특정 기능을 제거해야 할 수도 있기 때문이다. 그런 경우, 어떤 것을 더 높은 우선순위로 삼을 것인지도 사전에 충분히 논의하여 요구사항에 반영해야 할 것이다.

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

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

💡 나의 해답 : 회사에서 표준으로 정한 규격 중 하나라면 요구사항으로 받아들여야 할 것이다. 단순한 개인의 취향이나 팀의 선택에서 비롯된 것이라면 요구사항이 될 수 없다. 기호가 바뀌면 언제든 수정될 수 있는 부분이기 때문이다. 이럴 경우는 디폴트값을 회색으로 지정하고 사용자가 모달 창의 바탕색을 설정할 수 있게 하면 좋을 것 같다.

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

이것이 회사의 표준일 수 있다. 그렇다면 진짜 요구 사항은 "모든 UI 요소는 메가코퍼레이션 사용자 인터페이스 표준 V12.76을 준수해야 한다."같은 것이어야 한다.

우연히 디자인팀이 좋아하는 색깔일 수도 있다. 그렇다면 디자인팀이 생각을 바꿀 가능성도 고려해야 한다. 따라서 요구 사항을 "모든 모달 창의 바탕색은 설정 가능해야 한다. 출시될 때는 회색으로 한다"로 바꾸어야 한다. 더 범위를 넓혀서 "애플리케이션의 모든 시각 요소(색상, 글꼴, 언어)는 설정 가능해야 한다."라고 하면 더 좋다.

아니면 단순히 사용자가 모달 창과 다른 창을 구별할 수 있어야 하는 것일 수도 있다. 그렇다면 더 논의해 볼 필요가 있다.

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

💡 나의 해답 : 요구사항으로 보기 어렵다. 의뢰인이 도대체 무슨 생각으로 이런 것을 요청한 것인지 의아하기만 하다. 아키텍처 부분까지 말한다는 것은 큰 그림을 그리고 있을 가능성이 크므로, 의뢰인과 깊이 있는 대화가 필요하다. 실제로 원했던 요구사항이 확장성인지 성능인지에 따라 최적의 아키텍처는 달라질 수 있다. 처음에 제대로 요구사항을 설정해 두지 않으면 훗날 낭패를 당할 듯 싶다.

📖 책의 해답 : 이 문장은 요구사항이 아니다. 이것은 아키텍처다. 이런 종류의 것과 마주쳤다면 사용자가 무슨 생각을 하는지 알아내기 위해 깊이 파고들어야 한다. 확장성 문제인가? 아니면 성능? 비용? 보안? 고객의 대답이 여러분의 설계를 안내할 것이다.

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

💡 나의 해답 : 하나의 구체적 사례를 쓴 것처럼 보인다. 의뢰인이 원하는 것을 콕 집어서 "사용자가 필드에 올바르지 않은 값을 입력하면 경고를 보내고 거부한다"고 쓰면 될 것 같다.

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

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

💡 나의 해답 : 이 부분은 꼭 준수해야 하는 요구사항으로 보인다.

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