Non-functional Requirements
Non-functional requirements in software refer to the system's characteristics such as security, reliability, performance, maintainability, and usability. They are not about specific functionalities but rather about the system's quality, defining how the system should work. These requirements are often considered constraints or qualities within which the system must operate.
1. Performance
- Efficiency: Ensure the system handles data transfers and processing efficiently, even at the scale expected during the POC.
- Response Times: Response times will largely depend on the responsiveness of the Relativity One REST API. The system should aim for minimal latency but will be subject to the performance of the external API.
2. Security
- Data Encryption: Implement HTTPS for data in transit to ensure secure file transfers.
- Access Control: Utilise existing authentication and authorization mechanisms in the PII application.
- Compliance: Ensure compliance with general data protection practices.
3. Reliability
- Stable Performance: The system must demonstrate stable performance with minimal downtime during the POC.
- Fault Tolerance: Basic error handling and retry mechanisms should be in place.
4. Maintainability
- Modular Design: Ensure the system is designed with modularity and clear separation of concerns to facilitate easy maintenance and future updates.
- Documentation: Provide comprehensive documentation for all system components and operational procedures.
5. Usability
- User-Friendly Interface: Provide an intuitive interface for managing file transfers and metadata processing.
- Error Messaging: Offer clear and actionable error messages to help users troubleshoot issues.
6. Backup and Recovery
- Manual Methods: Data integrity and recovery will be handled through simple, manual methods if needed during the POC. A comprehensive backup and recovery plan will be considered for production.
7. Interoperability
- Standard Protocols: Use standardized protocols and interfaces to facilitate interoperability with existing systems and future integrations.