실용주의 프로그래머 12일차

최정환·2022년 4월 4일
0

pragmatic-programmer

목록 보기
11/13

실용주의 프로그래머 Mission 3

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

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

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

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




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

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

📌 연습문제 33

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

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

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

💡 나의 해답 :

이유에 따라 요구사항일 수 있다고 생각한다.
게임과 같이 빠르게 정보를 주고 받는 상황이나 유튜브 같은 스트리밍에서 이 정도 속도가 안나온다면 플레이어에 문제가 생기는 것과 같은 이유가 존재한다면 중대한 요구사항이 될거라 생각하지만 만약 이유가 없다면 이것을 하기 위한 비용을 계산한 후에 어떨지 결정할 것같다.



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

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

💡 나의 해답 :

이게 왜 필요할까? 나도 문장을 보자마자 생각했었다.
뭐 딱히 이런것은 구현하는데 큰 비용이 들지 않아 그냥 넘어갈테지만 진정 요구사항을 찾아보자라고 한다면 이건 아마 진짜 필수적인 요구사항이 아닐것이다.



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

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

💡 나의 해답 :

이것은 요구사항이 아니라 웹앱의 구성요소이다.
내가 바꾸고 싶다고 바꿀 수 있는게 아니라 웹은 프론트엔드와 벡엔드로 구성된다.
이 요구사항은 어떤 이유로 작성되었는지 확인할 필요가 있다고 생각한다.




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

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

💡 나의 해답 :

요구사항이다.
시스템이 어떤 기능을 가져야 하는지 조건과 출력을 제대로 작성했다고 생각한다.
하지만 입력을 거부하고 어떤 동작을 하는지 궁금해진다.



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

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

💡 나의 해답 :

임베디드면 하드웨어를 제어하는 소프트웨어라는 뜻일텐데 만약 제한사항이 있다면 하드웨어가 적절하게 제어가 가능한 범위일 것이다.
이것은 필수적으로 지켜야할 요구사항이다.
만약 코드의 크기가 커질것같다면 한번 더 클라이언트에게 물어봐 진짜 최대가 어느 정도인지 확인하고 크기에 따라 최적화를 위해 노력해야한다.

0개의 댓글