Non-Functional Requirements
Version: v3.0.0 Status: Normative (text), Illustrative (diagrams only) Scope: Quality attributes, performance targets, and system constraints that apply across the application Domain: NFR
Statement
The system shall meet quality attribute targets including page load times, operation completion times, concurrent user capacity, and display usability across different browser configurations.
These non-functional requirements establish performance thresholds and usability baselines that all functional domains must satisfy. They define the acceptable response times for user operations, system scalability limits, and display requirements for browser resize and zoom scenarios.
Behavior Overview (Illustrative)
This diagram illustrates the high-level behavior. It does not specify UI layout, styling, or interaction details.
Definitions
| Term | Definition |
|---|---|
| Page Load Time | The elapsed time from navigation initiation until the screen is fully rendered and interactive |
| Concurrent Session | An active authenticated user session performing operations on the system |
| Reanalysis Operation | A computation-intensive operation that reprocesses PCR well data with updated parameters |
Functional Requirements
Performance (REQ-NFR-001, REQ-NFR-002, REQ-NFR-003)
FR-NFR-001 Page Load Time
The system shall render all pages and make them interactive within 10 seconds of navigation under normal operating conditions.
Acceptance Criteria:
Load Time Limits:
- Page load time shall not exceed 10 seconds under normal network conditions
- Initial data population shall complete within the load time threshold
- Screen repopulation after data refresh shall complete within the load time threshold
Measurement:
- Load time shall be measurable via automated testing tools
Exceptions:
- Specific pages may have stricter load time requirements as documented in their respective domains
- Progress indicators shall be shown for operations approaching the 10-second threshold
Error Handling:
- Load time threshold exceeded: The system shall display a progress indicator until loading completes
- Data fetch timeout: The system shall display an error message and provide retry option
Trace: Source: 3.0.0-Performance (Row 1: Load time), 3.0.0-Runfile List NFR (Row 2-3) | Tests: See scenarios
FR-NFR-002 Reanalysis Operation Time
The system shall complete reanalysis operations within 20 seconds for standard run sizes.
Acceptance Criteria:
Operation Time Limits:
- Reanalyze action shall complete within 20 seconds for runs up to 100 wells
- Reanalyze action shall complete within 20 seconds for runs up to 384 wells
- Edit operations on analyzed data shall complete within 20 seconds
- Manage results operations shall complete within 20 seconds
Progress Feedback:
- Progress feedback shall be displayed during reanalysis operations
- Progress feedback shall show meaningful progress (not indeterminate)
- Progress bar implementation shall conform to the PROGRESS domain specifications
Scope:
- This requirement shall apply specifically to the Runfile Report screen operations
Trace: Source: 3.0.0-Performance (Row 2: Reanalyse) | Tests: See scenarios | Related: REQ-PROGRESS
FR-NFR-003 Concurrent User Capacity
The system shall support at least 30 concurrent authenticated user sessions without performance degradation.
Acceptance Criteria:
Capacity Requirements:
- 30 users shall be able to log in simultaneously
- All users shall be able to perform standard operations without timeout or failure
- Page load times shall remain within specified thresholds under concurrent load
Session Management:
- No session conflicts shall occur between concurrent users
Scalability:
- The 30 concurrent user threshold shall be treated as a minimum capacity; actual capacity may be higher
Open Questions (Resolved):
| ID | Question | Resolution |
|---|---|---|
| OQ-01 | What is the target capacity beyond the minimum 30 users? | 50 concurrent users |
| OQ-02 | What graceful degradation behavior is expected when capacity is exceeded? | System continues to function (serverless platform) but performance degradation is an accepted consequence |
Trace: Source: 3.0.0-Performance (Row 3: Login) | Tests: See scenarios
Usability (REQ-NFR-004, REQ-NFR-005)
FR-NFR-004 Browser Resize Handling
The system shall maintain usability and content accessibility when the browser window is resized.
Acceptance Criteria:
Content Adaptation:
- Screen content shall adjust to fit new window dimensions
- Vertical scroll position shall be adjusted to maintain user context
- No content shall be clipped or hidden inappropriately after resize
Data Display:
- Tables and data grids shall remain readable at smaller window sizes
Stability:
- Resize operations shall not cause data loss or navigation disruption
Trace: Source: 3.0.0-Runfile List NFR (Row 4: Resize handling) | Tests: [Pending]
FR-NFR-005 Zoom Level Usability
The system shall display optimally at 80% browser zoom level on standard laptop displays.
Acceptance Criteria:
Display Quality:
- All UI elements shall remain legible at 80% zoom
- No horizontal scrolling shall be required at 80% zoom on standard laptop displays (1920x1080)
- Layout integrity shall be maintained at 80% zoom level
Interactivity:
- Interactive elements shall remain operable at 80% zoom
Flexibility:
- Users shall be able to adjust zoom level based on preference and display size; 80% is the design target
Trace: Source: 3.0.0-UI (Row 1) | Tests: [Pending]
Configuration Options
| Option | Default | Description | Affects |
|---|---|---|---|
| - | - | [REVIEW REQUIRED: No configurable parameters were identified in the source material. Verify if performance thresholds should be configurable per deployment.] | - |
Assumptions
- Network connectivity is within normal operating parameters (latency, bandwidth)
- Client browsers are modern evergreen browsers (Chrome, Firefox, Edge, Safari)
- Server infrastructure meets minimum deployment specifications
- Load testing environment accurately simulates production conditions
- Standard laptop display resolution is 1920x1080 or similar (for REQ-NFR-005)
UI Notes (Illustrative)
FR-NFR-001 UI Specifications
- Progress indicators should provide visual feedback for operations approaching load time threshold
- Loading states should be visually distinct from interactive states
FR-NFR-002 UI Specifications
- Progress bar should be displayed during reanalysis operations
- Progress bar should show determinate progress (percentage or stage) rather than indeterminate spinner
Implementation (Illustrative)
Non-functional requirements are architectural/cross-cutting concerns. Backend implementation anchors focus on infrastructure middleware and support classes that enable the performance and scalability targets.
| Component | Type | Path | Requirements | Notes |
|---|---|---|---|---|
| Handler | Exception | code/app/Exceptions/Handler.php | REQ-NFR-001, REQ-NFR-003 | Global error/timeout handling |
| RateLimit | Middleware | code/app/Http/Middleware/RateLimit.php | REQ-NFR-003 | Request throttling protection |
| TrustProxies | Middleware | code/app/Http/Middleware/TrustProxies.php | REQ-NFR-003 | Load balancer integration |
| SetSecurityHeaders | Middleware | code/app/Http/Middleware/SetSecurityHeaders.php | REQ-NFR-001 | Response headers, charset |
| RunAnalyseProgress | Support | code/app/Support/RunAnalyseProgress.php | REQ-NFR-002 | Reanalysis progress tracking |
Architecture Notes
NFRs are primarily enforced through:
-
Infrastructure Layer (REQ-NFR-001, REQ-NFR-003)
- AWS Lambda auto-scaling for concurrent user capacity
- Aurora Serverless for database scalability
- CloudFront CDN for page load optimization
- ElastiCache for session/progress caching
-
Middleware Layer (REQ-NFR-001, REQ-NFR-003)
- Rate limiting prevents request flooding
- Proxy trust enables proper load balancer integration
- Security headers ensure proper content rendering
-
Progress Tracking (REQ-NFR-002)
RunAnalyseProgresstracks reanalysis percentage via cacheRunAnalyseProgressUpdatedbroadcasts real-time progress via Pusher- Progress bar UI shows determinate percentage during operations
-
Frontend Layer (REQ-NFR-004, REQ-NFR-005)
- Browser resize and zoom requirements are primarily CSS/JS concerns
- No backend anchors; responsive design implementation in Vue.js components
Traceability Matrix
| Requirement | Title | Verification | Implementation | Test Cases | Status |
|---|---|---|---|---|---|
| REQ-NFR-001 | Page Load Time | Test | Handler.php, SetSecurityHeaders.php | GI-625fee1dcb80cd86d84e0e6b | Draft |
| REQ-NFR-002 | Reanalysis Operation Time | Test | RunAnalyseProgress.php | GI-6261112f4766b258147fab9a, GI-626105d9cb80cd86d8ef03bd | Draft |
| REQ-NFR-003 | Concurrent User Capacity | Test | RateLimit.php, TrustProxies.php, Handler.php | GI-Suite-61ae61d4abf75b1d770a3297 | Draft |
| REQ-NFR-004 | Browser Resize Handling | Test | (Frontend CSS/JS) | [Pending] | Draft |
| REQ-NFR-005 | Zoom Level Usability | Test | (Frontend CSS/JS) | [Pending] | Draft |
Notes
- Ghost Inspector is used for automated performance testing validation
- Performance requirements should be validated under both normal and peak load conditions
- The 10-second page load threshold is an industry-standard usability guideline
- The 80% zoom requirement addresses usability on common laptop configurations where users often reduce zoom to see more content
Open Questions
| ID | Question | Source | Owner | Date Raised |
|---|---|---|---|---|
| - | No open questions. OQ-01 and OQ-02 from REQ-NFR-003 have been resolved (see requirement). | - | - | - |
Acceptance Tests
Test: REQ-NFR-001
Test: Standard page loads within threshold
Given: User is authenticated
And: Network conditions are normal
When: User navigates to any application page
Then: The page shall be fully rendered and interactive within 10 seconds
Test: Data refresh completes within threshold
Given: User is on a data display page
When: User triggers a data refresh
Then: The refreshed data shall be displayed within 10 seconds
Test: REQ-NFR-002
Test: Reanalysis completes for 100-well run
Given: User is on the Runfile Report screen
And: A run with 100 wells is loaded
When: User initiates reanalysis
Then: The reanalysis shall complete within 20 seconds
And: Progress feedback shall be displayed during operation
Test: Reanalysis completes for 384-well run
Given: User is on the Runfile Report screen
And: A run with 384 wells is loaded
When: User initiates reanalysis
Then: The reanalysis shall complete within 20 seconds
And: Progress feedback shall be displayed during operation
Test: REQ-NFR-003
Test: System supports 30 concurrent users
Given: 30 users are logged in simultaneously
When: All users perform standard operations
Then: No user shall experience timeout or failure
And: Page load times shall remain within specified thresholds
And: No session conflicts shall occur
Test: REQ-NFR-004
Test: Content reflows on window resize
Given: User is viewing an application page
When: User resizes the browser window
Then: Screen content shall adjust to fit new dimensions
And: Scroll position context shall be maintained
And: No content shall be inappropriately clipped
Test: REQ-NFR-005
Test: Application displays correctly at 80% zoom
Given: User is using a standard laptop display (1920x1080)
And: Browser zoom is set to 80%
When: User navigates to any application page
Then: All UI elements shall be legible
And: No horizontal scrolling shall be required
And: All interactive elements shall be operable
Related Design Documents
| Design Document | Relevant Sections |
|---|---|
| SDD Architecture | AWS Lambda auto-scaling, Aurora Serverless scalability, Amazon ElastiCache performance optimization |
| SDD Deployment Operations | Vapor serverless deployment architecture supporting concurrent user capacity |
Appendix: Process Artifacts
Completion Checklist
- All requirements are capability-level (describe behavior, not UI)
- Requirement variants consolidated (no requirement explosion)
- UI details are fully demoted to Illustrative section
- Configuration options are not encoded as requirements
- Acceptance criteria describe behavior, not UI mechanics
- Every requirement has acceptance criteria and source traceability
- Error handling addressed for I/O, validation, and external system requirements
- Open questions documented with owners assigned
- Consolidations documented in Reviewer Notes with reversibility info
- Module can survive a full UI redesign unchanged
- Refinements folded into acceptance criteria
- Traceability matrix is complete
Reviewer Notes
No Consolidation Required
The five requirements in this domain represent distinct quality attributes:
| Requirement | Quality Attribute | Consolidation Status |
|---|---|---|
| REQ-NFR-001 | Performance (Load Time) | Standalone |
| REQ-NFR-002 | Performance (Operation Time) | Standalone |
| REQ-NFR-003 | Scalability (Capacity) | Standalone |
| REQ-NFR-004 | Usability (Responsiveness) | Standalone |
| REQ-NFR-005 | Usability (Accessibility) | Standalone |
Rationale: Each requirement addresses a unique system quality attribute. No requirement explosion pattern was detected - these are not variants of a single capability.
Source Preservation
All 5 source requirements have been preserved without consolidation:
- Source:
output/srs/nfr.md - Original count: 5 requirements
- Converted count: 5 requirements
Refinements Folded into Acceptance Criteria
All refinements have been incorporated as acceptance criteria within their respective requirements:
- REQ-NFR-001: RF-01 and RF-02 folded into AC exceptions group
- REQ-NFR-002: RF-01 and RF-02 folded into AC progress feedback and scope groups
- REQ-NFR-003: RF-01 folded into AC scalability group
- REQ-NFR-005: RF-01 folded into AC flexibility group
Reversibility: Source file preserved at output/srs/nfr.md