Nonfunctional aspects pose new challenges to the software development and delivery:
- Long test run: The tests can take a long time to run and may need a special execution environment.
- Incremental nature: It's hard to set the limit value when the test should fail (unless SLA is well defined). Even if the edge limit is set, the application would probably incrementally approach the limit. In most cases, actually, no one code change caused the test failure.
- Vague requirements: Users usually don't have much input concerning nonfunctional requirements. They may provide some guidelines concerning the request-response time or the number of users; however, they won't probably know much about maintainability, security, or scalability. ...