Community

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

← Go back
실용주의 프로그래머 Mission 3
#pragmatic
2년 전
920


📌 연습문제 33

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

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

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

💡 나의 해답 : 코딩테스트 등을 할 때 처리 시간이 조건으로 올라와 있는 경우가 많던데 항상 왜 그 시간만큼을 조건으로 걸었는지 궁금할 때가 있었다. 대체로 그 시간을 맞추기 위해서는 일일이 데이터를 확인하는 방법으로는 조건을 해결하기 어려웠다. 여기에서도 응답시간을 500ms로 준 것은 좀 더 효율적인 처리 방법을 제시하라는 조건으로 보인다. 이렇게 효율적인 방법으로 제시한 이유가 이 다음 스텝으로 이어지면서 전체 반응 속도가 추가로 발생하여 느려질 수 있는 것을 보완하기 위함인지 등에 대한 것도 나오면 좀 더 요구사항이 구체화될 거라 생각한다.

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

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

💡 나의 해답 : 모달 창의 다양한 조건 중에서 바탕색이 회색이 되어야 하는 이유를 알아내는 것이 중요하다. 예를 들면 모든 화면에서 모달창이 여러 색으로 나오는 경우 전체적인 통일성이 떨어져서 보일 수 있으므로 표준색으로 나오는 것이 회색인 경우인지 알아본다. 또는 바탕에 깔려있는 색깔과 비교했을 때 모달창이 좀 더 잘 보이게 할 수 있는 색깔로 회색이 정해진 것인다. 회색으로 정해진 원인에 대한 부분을 알아본다. 또한 바탕색에 관한 요구 조건이 있는 경우에는 색 뿐만 아니라 다른 조건들도 통일감있게 구성을 해야 하는 것인지도 알아보아야 한다.

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

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

💡 나의 해답 : 프로트엔드 프로세스 몇 개로 구성되어 있는 이유에 대해서 좀 더 알아본다면 그 원인이 다양할 수 있다. 프로트엔드 프로세스 별로 다른 기능을 맡고 있는 것인지 그 기능 간에 공통으로 구성하는 것은 무엇이고 다르게 작동되는 부분은 무엇이기 때문에 다른 프로세스로 운영이 되는 것인지 좀 더 알아볼 수 있고 이러한 설계를 구성하게 된 원인을 바탕으로 이 프로세스가 현재 효율적인 구성인지 아니면 좀 더 발전적인 형태로 변화될 수 있는 구조인지를 생각해볼 수 있다.

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

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

💡 나의 해답 : 많은 경우 특정한 값의 입력을 요구하는 경우가 있다. 특히 숫자 필드의 경우에는 전화번호의 경우에도 많이 활용되고, 그 외 특정 코드 번호를 요구하는 경우에도 활용된다. 이렇게 정해져 있는 형태의 값을 입력하는 경우에 다른 형태의 값을 막는 방법은 다양하다. 아예 입력이 되지 않게 하거나 입력하여 제출했을 경우에 빨간 글씨로 변화된 뒤 경고창을 보내는 등의 다양한 형태로 값이 제대로 입력되어 있지 않음을 사용자에게 전달할 수 있다. 특히 경고창이나 빨간 글씨와 함께 왜 그 값이 제대로 입력된 것인지 알 수 있도록 설명을 추가하는 것이 단순히 입력을 막는 것보다 더 사용자의 편의성을 높이는 것일 수 있다.

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

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

💡 나의 해답 : 코드와 데이터 크기에 관한 제한은 규격에 대한 부분이므로 최소한의 조건으로 보여진다. 코드를 효율적으로 구성하고 최소한의 데이터를 활용하여 프로그램을 돌릴 수 있도록 하여 업로드나 실행 시 최적화된 상태에서 구동이 될 수 있기 위해서는 반드시 위 요구사항을 이행하여야 한다.