Non-Functional Requirements
Performance
- The system must maintain consistent response times as user traffic increases.
- The system must efficiently handle a high number of requests, ensuring low latency and high performance even under increasing load.
Security and Privacy
- The system must comply with LGPD (Lei Geral de Proteção de Dados) or GDPR (General Data Protection Regulation) guidelines, ensuring the protection of student data.
- Users inputs should be sanitized to avoid common security problems such as XSS, SQL injection or CSRF
- Role-based access control (RBAC) must be enforced to grant different permission levels (students, tutors, administrators).
- Authentication must be handled via UA’s IdP (Identity Provider) using secure authentication methods,
Usability and User Experience
- The system must adapt to smaller screens, such as mobile phones and tablets.
- The user interface must follow a consistent and simple design to avoid confusion.
- Forms must provide real-time visual feedback when users make errors.
- Icons must be representative of their function and consistent across all pages.
- The system should have a support section with FAQs and a contact form for users to report issues.
- The system should have a guide for first-time users to help them navigate the platform in case they have any doubts.
Maintainability
- The system code must be simple and easy to understand (and commented when necessary) to allow future developers to modify the system when required.
- All API endpoints must be documented, providing details about their purpose and usage within the application.
- A logging system must be implemented to record all significant errors and warnings occurring in the system.
- Logs must include a timestamp and the source of the error (affected service).
- The logging system must be centralized, consolidating logs from all system components.
Scalability
- The system must accommodate an increasing volume of data without significant performance degradation.
- The system must be easily scalable to support a growing number of users and data.
- Database queries should be optimized for fast access and indexing should be used to handle large datasets.
Reliability and Fault Tolerance
- Some system functionalities must be operational even in the absence of an internet connecting.
- Specific changes made offline should be synchronized with the server once the connection is reestablished.