오늘의../이달의 책

[노개북] 실용주의 프로그래머 (Mission 3)

호마 2022. 4. 4. 23:28

Mission (3) 진짜 요구사항

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

(1) '연습문제 #33'을 읽습니다.
(2) 1-5번까지 문제를 클라이언트가 건넨 요구사항이라 상상하며 문제를 풀어봅시다.
(3) 진정한 요구사항이 아닐 경우 어떻게 질문을 해야하는지, 무엇을 알아야 하는지, 왜 그렇게 생각하는지 등 나의 생각을 작성해보세요.

❗️ 풀이과정은 문제당 300자 이상으로 작성해주세요.
❗️ 책에 있는 해답은 참고용이며, 본인의 생각을 잘 작성해주세요.


📌 연습문제 33

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

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

💡 나의 해답 : 명확한 요구 사항이라고 생각한다. 하지만 네트워크 어느 범위까지 포함인지 구체적으로 명시되면 좋을 것 같다. 예를 들어 API를 내부망에서 호출한 시간과 외부에서 호출하는 시간이 미세하게 다를텐데 어디서 호출하는 시간을 기준으로 잡는지 기준이 필요하다.

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

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

💡 나의 해답 : 일단 모달 창의 범위를 명확히 할 필요가 있어 보인다. 모든 새로 뜨는 창에 해당하는지, 만약 새로 뜬 창에서 또 새로 뜬 창이 있다면 그 창도 해당하는지. 그리고 바탕색을 지정하면 혹시 테두리색은 지정하지 않아도 괜찮은지, 그리고 회색에 대한 명확한 RGB 값과 투명도도 필요하다.

📖 책의 해답 : 이 문장 자체만으로는 진짜 요구사항이 아니다. 하지만 진짜로 무엇이 필요한지 알아내려면 마법의 질문을 던져야 한다. ”왜?” 이것이 회사의 표준일 수 있다. ..(중략)..우연히 디자인팀이 좋아하는 색깔일 수도 있다. 그렇다면 디자인팀이 생각을 바꿀 가능성도 고려해야 한다. "모든 모달 창의 바탕색은 설정 가능해야 한다. 출시될 때는 회색으로 한다"로 바꾸어야 한다. 범위를 넓혀서 "애플리케이션의 모든 시각 요소(색상, 글꼴, 언어)는 설정 가능해야 한다"라고 하면 더 좋다. 
아니면 단순히 사용자가 모달 창과 다른 창을 구별할 수 있어야 하는 것일 수도 있다..(후략)

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

💡 나의 해답 : 매우 애매한 요구사항인 것 같다. 프론트엔드와 백엔드로 나뉜다는 것은 확실한데 프론트엔드 프로세스의 개수로 단위를 매긴 게 잘 이해되지 않는다. 몇 개라는게 1,2개인지 10개 이상인지 조차 알 수 없어서 애매하다. 프론트엔드는 가볍게 만들어도 되고 서버를 중요하게 여겨야 하는건지..? 만약 수많은 요구사항 중 하나로 받는다면 다른 요구사항에 더 비중을 둘 것 같다.

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

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

💡 나의 해답 : 숫자가 아닌 글자가 숫자 외 모든 글자(특수문자 포함)가 맞는지 되물을 것 같다. 입력 필드를 깜박이는 부분은 샘플을 요구하거나 한번 만들어보고 중간에 보여주고 맞는지 확인하며 조율할 것 같다. 그리고 그냥 깜박이는 것 보다 입력 필드의 색깔을 빨간색으로 변경하면 사용자가 잘못 입력했다는 것을 좀 더 명확하게 알 수 있을 것 같다. 

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

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

💡 나의 해답 : 코드는 어떤 코드, 설정 파일 포함인지, 데이터는 어떤 데이터가 있는지 구체적인 목록을 검토할 필요가 있다. 만약 컴파일하는 애플리케이션이라면 당연히 컴파일 후의 크기일 것 같지만 서로 생각하는게 다를 수 있으니 혹시 맞는지 확인할 수도 있을 것 같다.

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