[노개북] 실용주의 프로그래머 #12

·2022년 4월 4일
0
post-thumbnail

📚 노마드 개발자 북클럽 aka. 노개북 - 실용주의 프로그래머 3주 완독 챌린지의 기록을 남긴다.
챌린지 이동

📝 TIL 2022.04.04

📌 연습문제 33

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

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

📖 책의 해답

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

💡 나의 해답

요구사항이라고 생각한다. 궁극적으로 응답 속도 감소라는 목적을 내포하고 있다는 것이 응답시간의 허용 범위를 정하는 해당 요구사항에서 명확하게 드러난다. 그러나 진정한 요구 사항이 되려면 응답시간이 왜 500ms 이하여야만 하는지에 대한 기술이 덧붙여지는 것이 좋겠다는 생각이 든다. 또한 응답시간을 줄이기 위해 다른 제약조건이 붙는다면 무엇이 우선시되어야하는지에 대한 파악도 필요할 것이다.

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

📖 책의 해답

회사의 표준이 이렇더라도, 이것은 요구사항이 아니다. 이 문장은 '모달 창의 바탕색은 최종 사용자가 변경할 수 있어야 한다. 출시할 때에는 회색으로 맟주어둔다.'라고 고치는 것이 더 낫다. 더 좋은 문장은 '애플리케이션의 모든 시각 요소(색상, 글꼴, 언어)는 최종 사용자가 변경할 수 있어야 한다.'이다.

💡 나의 해답

요구사항이 아니다. 바탕색이 회색이여야 하는 이유는 무엇인가? 회색이 아니라면 어떤 문제가 발생하는가? 모달 창과 기존 창의 상호작용에서의 문제인가? 등을 먼저 파악해야한다. 어째서 바탕색에 대한 조건이 만들어진 것인지 그 배경을 살펴보아야 할 것이다. 회색이라는 구체적인 조건보다는 기존 창과 대비되는 색상, 중복되지 않는 색상 등의 추상화도 필요하다는 생각이 든다.

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

📖 책의 해답

이 문장은 요구사항이 아니다. 이것은 아키텍쳐다. 이런 것과 비슷한 것과 마주칠 경우, 사용자가 무슨 생각을 하는지 알아내기 위해 깊게 파고들어야 한다.

💡 나의 해답

이 문장은 요구사항이라기보다 기술 명세에 가깝다고 생각한다. 요구사항이 되기 위해서는 어째서 다수의 프론트엔드 프로세스, 하나의 백엔드 서버가 필요한 것인지, 해당 구성으로 무엇을 달성해야하는지가 드러나야 한다. 요구사항은 사용자 입장에서 전달받는 것이기 때문에 애플리케이션이 어떤 기능을 필요로 하며, 어떤 작동 방식을 거치게 되는지를 파악하고 -> 따라서 프론트엔드 프로세스 몇 개와 백엔드 서버 하나로 구성되어야 한다는, 해당 문장이 결론이 되는 흐름이 자연스럽다.

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

📖 책의 해답

밑에 깔린 요구사항은 아마 '시스템은 사용자가 필드에 올바르지 않은 값을 입력하는 것을 막는다. 그리고 사용자가 그렇게 했을 경우 경고를 보낸다.'라는 문장과 더 가까울 것이다.

💡 나의 해답

요구사항은 맞지만 지나치게 구체적이라는 생각이 든다. '사용자는 숫자 필드에 숫자만 입력해야한다'는 것으로 명료화할 수 있겠다. 추가로 시스템이 입력 필드를 깜빡이고 입력을 거부한다는 것을 사용자에게 알려야할 필요가 있다. 따라서 '사용자가 숫자 필드에 숫자를 입력하지 않으면 사용자에게 잘못된 입력임을 알린다'라고 다시 작성해볼 수 있겠다.

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

📖 책의 해답

이 문장은 아마도 꼭 지켜야 하는 요구사항일 것이다.

💡 나의 해답

1번 문장과 마찬가지로 요구사항은 맞지만 해당 요구사항이 어떠한 맥락에서 필요한지를 파악해야한다고 생각한다. 32Mb 라는 크기는 기준을 무엇에 두고있는 것인지, 임베디드이기 때문에 만들어진 요구사항인건지, 요구사항의 우선순위는 어떻게 되는지 등의 구체적인 기술이 필요하다는 생각이 든다.

profile
걸음마 개발 분투기

0개의 댓글