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.
- 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.