Contrary to intuition, many architecturally significant requirements are difficult to spot at first glance. This is caused by two factors: they can be hard to define and even if they're described, this can be done vaguely. Your customers might not yet be clear about what they need, but you should still be proactive in asking questions to steer clear of any assumptions. If your system is to send notifications, you must know whether those are real time or whether a daily email will suffice, as the former could require you to create a publisher-subscriber architecture.Â
In most cases, you'll need to make some assumptions since not everything is known upfront. If you discover a requirement that challenges your assumptions, it might be an ASR. If you assume you can maintain your service between 3 a.m. and 4 a.m. and you realize your customers from a different time zone will still need to use it, it will challenge your...