Community

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

← Go back
[Assignment 14] - Mission 3
#pragmatic
2년 전
771
1

Q: 요구사항을 받았는데, 요구사항이 아닐 수 있습니다! 요구사항이 아니라면 사용자가 진짜로 원하는게 무엇인지 알아내야합니다. 애매한 요구사항에서 진짜 요구사항을 찾아내는 연습을 해봅시다.


(1) '연습문제 #33'을읽습니다.


(2) 1-5번까지 문제를 클라이언트가 건넨 요구사항이라 상상하며 문제를 풀어봅시다.


(3) 진정한 요구사항이 아닐 경우 어떻게 질문을 해야하는지, 무엇을 알아야 하는지, 왜 그렇게 생각하는지 등 나의 생각을 작성해보세요.

❗️ 풀이과정은 문제당 300자 이상으로 작성해주세요.

❗️ 책에 있는 해답은 참고용이며, 본인의 생각을 잘 작성해주세요.



📌 연습문제 33

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

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

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

💡 나의 해답 :

요구사항이 맞다고 생각한다. 이 책에선 요구사항을 아키텍처, 설계, 사용자 인터페이스가 아닌 '사용자의 필요'를 표현한 것이라고 정의한다. 응답시간이 500ms 이하여야 하는것은, 사용자가 진짜 필요한것이기 때문에 요구사항이라고 할 수 있다. 그런데 어쩌다가 응답시간이 500ms 이하여야 한다는 제약이 생겼는지 궁금하기 때문에, 그 부분은 의뢰자에게 질문하여 기록해두는 편이 좋을 것 같다. 응답시간이 500ms 이하여야 하는 이유와 같은 이유로 다른 제약들이 생갈 수 있기 때문이고, 저 요구사항이 사실은 잘못됐거나 필요 없을 수도 있기 때문이다.

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

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

💡 나의 해답 :

좋은 요구사항은 아니라고 생각한다. 이 문장은, 사용자 인터페이스에 관련된 것이기 때문이다. 이 책에서 말한 요구사항의 정의에 따르면, 사용자 인터페이스는 요구사항이 아니다. 의뢰자가 회색을 좋아해서 저런 문장을 말한 것이 아닌 이상, 어떤 이유 때문에 바탕색을 회색으로 한 것일텐데, 그 이유를 질문해야 할 것 같다. 그 이유에 따라 주어진 문장을 다음과 같이 사용자가 뭘 필요로 하는지 드러나게 바꾸고 싶다. '이 부분은 사용자에게 텍스트를 정확히 인지시켜야 하기 때문에 바탕색을 글자색과 겹치지 않게하여 가독성이 좋아야 한다.'

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

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

💡 나의 해답 :

좋은 요구사항이 아니다. 이 책에서 말한 요구사항 정의에 따르면, 아키텍처는 요구사항이 아니기 때문이다. 그리고 지나치게 추상적이다. 의뢰자가 어떤 생각을 가지고 있어서(무엇이 필요해서) 이런 말을 했는지 알아낼 수 있는 질문을 해야 할 것 같다. "왜 이렇게 설계하셨나요?" 라고 질문하면 "이런 이유때문에 설계했습니다." 라고 답이 올텐데, 그러면 의뢰자가 궁극적으로 원하는 것보다, 현재의 제약사항을 대답할 것 같다. 그 질문 대신, "이렇게 설계하면 얻게 되는 장점들이 무엇인가요?"라고 질문할 것 같다. 그러면 "이러이러한 장점이 있습니다." 라고 답변이 올텐데, 그게 의뢰자가 원하는, 긍정적인 결과물을 나타낼 가능성이 높아보인다.

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

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

💡 나의 해답 :

이 문장도 역시 사용자 인터페이스에 관련된 문장이다. 따라서 좋은 요구사항이 아니다. 이 경우 역시 의뢰자가 뭘 원해서 이런 말을 했는지 궁극적인 목적을 알아내야 할 것 같다. 먼저 의뢰자에게 "사용자가 입력필드에 글자를 입력할 수 없게 해야 하나 보죠?"라는 추측을 한 후 그대로 질문을 한 뒤에 대답에 따라서 메모를 더 해야 할 것 같다. 만약 답변이 "입력필드에는 숫자 이외의 문자는 입력 받지 못하도록 해야 합니다. "라고 온다면, 위 문장을 '시스템은 사용자가 입력필드에 숫자만 입력하도록 유도, 강제한다.'라고 바꾸고 싶다.

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

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

💡 나의 해답 :

이 문장은 좋은 요구사항이 맞고 생각한다. 이 문장은,아키텍쳐, 설계나 인터페이스가 아니고, 사용자의 필요를 표현한 문장이기 때문이다.. 다만 이유가 궁금하기 때문에 왜 하필 32Mb 이내여야 하는지 질문하고, 메모해 두고 싶다. 그 이유에 맞춰 다른 제약사항들도 생길 수 있고, 사실은 없어도 되는 제약일 수도 있기 때문이다. 만약 이 요구사항이 지켜질 수 없다면 어떤 방식으로 풀어나갈 수 있을지 까지도 토론해보면 좋을 것 같다. 지금 상황에서의 후보 해결책들을 만들어놓고 작업을 시작한다면 일을 더 수월하게 처리할 수 있을 것 같기 때문이다.

1 comment