Non-functional requirements are the main forces driving architecture and design decisions, not the functional requirements. Because non-functional requirements mainly drive our design so you can begin developing your architecture while functional requirements are still incomplete or unstable.
Non-functional requirements:
Quality requirements
Design Qualities: Conceptual Integrity, Maintainability and Reusability.
Runtime Qualities: Availability, Interoperability, Manageability, Performance, Reliability, and Scalability.
System and User Qualities: Supportability, Testability, Usability.
Cross Cutting Concerns
Security, Configuration, Communication, Caching, Exception Handling, State Management, Logging, Monitoring.
IT Constraints
Systems Management, Installation, Integration with other systems, Company Standards/Policies.
Others Constraints/factors:
Legal, Packaging, Licensing, Cost, Time to market.