✏️ Explanatory Question

How would you write functional and non-functional requirements for a chat application?

👁 3 Views
📘 Detailed Answer
🟢 Easy
No previous question
No next question
💡

Answer with Explanation

Functional

  • A user can send a one to one message to another user.
  • A user can create a group of up to 500 members.
  • A user sees delivered and read receipts.
  • A user receives messages sent while they were offline.
  • A user can see who is online.

Non-functional

  • Latency - message delivery under 200 ms at p99 for online users.
  • Availability - 99.99% for the messaging service.
  • Durability - a sent message is never lost, even if the recipient is offline for a week.
  • Ordering - messages within one conversation appear in causal order.
  • Scale - 50 million DAU, 40 messages per user per day.
  • Security - end to end encryption; the server cannot read message content.

Notice the ordering and E2E encryption requirements alone eliminate several architectures - that is why writing them down first matters.

No previous question
No next question