그러니 애초에 요구 사항을 확실히 파악하는 게 매우 중요하다.
시스템 기능은 기본적으로 시스템의 행위를 나타내는 요구 사항으로 쉽게 말해 설계한 시스템이 하는 동작을 말한다. 시스템의 목적과도 연결되는 사항이고 이를 기능적 요구 사항이라고 한다. 시스템을 블랙 박스 함수로 표현하는데 사용자의 입력 값이나 외부 이벤트가 함수로 입력되면 시스템에서 수행된 결과 값이 바로 이 함수의 결과 값입니다. 기능적 요구 사항을 명시하는 건 중요하며 시스템의 기능서에 직결됩니다. 아키텍처를 결정하진 않지만 어떤 아키텍처라도 기능을 수행할 수 있습니다. 이 점이 소프트웨어 아키텍트의 역할을 어렵게 만드는 요인입니다.
질문:
클라이언트로부터 다음과 같은 의뢰를 받았습니다.
“사용자 간에 대용량 파일을 공유할 수 있는 시스템을 만들고 싶습니다.
사용자가 파일을 업로드하면 다른 사용자에게 공유할 수 있는 링크가 생성되고, 그 링크를 소유한 사용자라면 누구든 해당 파일을 다운로드할 수 있어야 합니다.
파일이 업로드되자마자 링크가 활성화되어야 하며 다운로드 속도는 최소한 50 Mbps가 되어야 합니다.
PDF, JPG 파일 형식을 지원하고, 웹 브라우저는 Google Chrome, Mozilla Firefox, Microsoft Edge를 지원해야 합니다.”
- [x] **사용자가 파일을 업로드하면 다른 사용자에게 공유할 수 있는 링크가 생성되고, 그 링크를 소유한 사용자라면 누구든 해당 파일을 다운로드할 수 있어야 합니다.**
- [ ] **파일이 업로드되자마자 링크가 활성화되어야 하며 다운로드 속도는 최소한 50 Mbps가 되어야 합니다.**
- [ ] **PDF, JPG 파일 형식을 지원하고, 웹 브라우저는 Google Chrome, Mozilla Firefox, Microsoft Edge를 지원해야 합니다.”**