본문 바로가기
DEVELOPMENT/BOOK

실용주의 프로그래머 Mission3(22.04.04)

by Z@__ 2022. 4. 4.
반응형

실용주의 프로그래머 Mission 3

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


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


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


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

 

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

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


 

📌 연습문제 33

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

 

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

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

예) 요구사항일 수 있다. 하지만 궁금할 것 같다. 이 속도가 최소 요구 조건인지? 만약에 응답시간을 줄이려면 특정 애니메이션이나 기능을 빼야한다면? 그 기능이 마케팅에서는 가장 최우선으로 생각하는 기능이라면? 등.. 왜 500ms 이하라는 제약이 필요한지 질문해볼수도 있겠다. 만약 500ms이하로 최적화를 못하면 “앱스토어에서 반려된다” 혹은 “검색 알고리즘이 스팸으로 인식한다” 등 외부 환경 때문일수도 있다.이런 이유라면 더 명확한 요구사항이 될 수 있을거라는 생각이 든다.

 

💡 나의 해답 : 응답시간이 500ms 이하로 요구되는 이유에 대해 알아야 할 것 같다. UX 때문인지 혹은 정해진 규칙상 나온 것인지등등에 대해 고민해봐야 할 것 같다. 또한 하드웨어 성능상 500ms이하로 구현되기 힘들다면, lazy loading이나 animation등 다른 방법을 통해 해결방법에 대해 모색해봐야 할 것 같다. 또한 응답시간이 돌아오는 건 환경마다 다를 수 있을 것이라고 생각되는데 명확한 환경에 대한 설정이 필요할 것 같다.

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

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

 

💡 나의 해답 : "모달 창의 바탕색이 회색이다"라는 요구사항은 조금 더 명확해야 할 필요가 있어보인다. GREY라는 변수를 이용해서 스타일을 정하기 위함인지, 혹은 다른 요소들과의 조화를 위해서인지? 그렇다면 회색도 엄청나게 다양한 색상이 있는데 어떤 hex값을 사용해야할지에 대한 것들이 추가적인 질문으로 필요할 것 같다. 또한 모달창의 바탕색이 특별히 정해져있다면, 다른 요소들 중에 그런 것들이 있는지 추가적으로 확인을 해봐야할 것 같다. 그래서 결론적으로는 모달 창이 특정 hex로 되어야하는 이유를 듣고 변수화하여 수정하기 용이하도록 개발을 해야할 것 같다.

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

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

 

💡 나의 해답 : 사실 이 요구사항이 원하는 바를 정확하게 이해하기 힘들다. 프론트엔드 프로세스 서버가 필수로 여러 개 있어야 한다는 것인지, 아니면 명확하게 3개 이상으로 구성되어야 한다는지 이해할 수가 없다. 또한 백엔드 서버와 어떻게 통신하는지에 대한 명확한 설계가 필요할 것 같다. 혹은 하드웨어 스펙적인 이유로 여러 개로 구성되어야 된다고한다면 로드밸런싱이 어떻게 처리되어야 할지, 얼마만큼의 부하를 견딜 수 있게 설계되야 하는지 등 복합적이고 다양한 측면이 고려된 요구사항이 필요할 것 같다.

 

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

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

 

💡 나의 해답 : 입력 필드가 깜빡이는 UI에 대한 명확한 정의가 있어야 할 것 같고, 깜빡이는 애니메이션 자체도 스타일과 duration등 다양한 정보가 필요할 것 같다. 또한 입력을 거부한다는 것이 입력이 되고 난 다음 지워지는 것인지, 아니면 아예 입력 자체가 안되는 건지 등 명확한 스타일이 필요하다. 또한 dom조작으로 인해 입력 필드 값이 백엔드 서버로 전달되는 경우에는 어떻게 예외처리를 할 것인지에 대한 요구사항도 필요해보인다. render된 화면에서 입력 필드 검증, 요청을 보낼 때 담긴 값에 대한 예외처리, 백엔드에서 전달받은 값을 처리하기 전에 예외처리등 여러 방면으로 해당 입력값을 어떻게 막고, 예외처리를 할 수 있는지 명확하게 알아야 한다.

 

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

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

 

💡 나의 해답 : 임베디드 애플리케이션의 경우 하드웨어 스펙이 명확하게 정해져있기 때문에, 해당 제약조건을 맞추기 위한 데이터 압축 방식이나 하드웨어 스펙에 대한 범위가 명확하게 나타나야 할 것 같다. 해당 요구사항을 반드시 지켜서 개발될 수 있는지, 혹은 하드웨어를 증축할 여건이 갖춰져있는지 등등 고려해야 할 것들이 있을 것 같다.

반응형

댓글