Requirements [Animal Trove] - bounswe/bounswe2024group10 GitHub Wiki

Domain:

Animal sightings.

Glossary:

  • User: A person who is using the app or the website. They do not necessarily have to have an account.
  • Alert: The special notification that is sent from verified users to other users when a rare animal is sighted.
  • Verified Users: Users who have a certain amount of karma.
  • Karma: The difference between the likes a user has recevied and the dislikes.
  • "Unknown" Nametag: The special name that is given to the animal's name in the post when it is unknown and the poster requires information.
  • Guest users: Users who do not have an account.
  • Registered User : Users which have opened an account.
  • Bookmark: Recording the address of a post to enable quick access in future.
  • Semantic search: Data searching technique in a which a search query aims to not only find keywords, but to determine the intent and contextual meaning of the the words a person is using for search.
  • Tag: A string that helps identifying a post by the animal's name, location or the date.
  • Caption: A title or brief explanation accompanying the picture in the post.
  • User Interface (UI): The space where interactions between users and the system occur.
  • Comment: A written remark expressing an opinion or reaction under an art item.
  • Username: A string that allows registered users to log in their accounts. It will be publicly visible to other users and shall be unique.
  • Password: A string that allows registered users to log in their accounts. It is essential for security and uniqueness of accounts.
  • Inappropriate Content: Hate speech, predatory behavior, graphic violence, malicious attacks, and content that promotes harmful or dangerous behavior.
  • Notification: An alert (typically a pop-up or other message) generated by an application to notify the user of alerts, likes, comments etc.

1. Functional Requirements:

  • 1.1. User Requirements

  • 1.1.1. Account

    • 1.1.1.1. Users shall be able to open an account. (Done)
      • 1.1.1.1.1. Users shall enter their unique e-mail, unique username, and password to open an account to become a registered user. (Done)
        • 1.1.1.1.1.1. Registered users shall be able to enter the application using their own username and password. (Done)
        • 1.1.1.1.1.2. Registered users should be able to make the application remember their username and password. (Not Done)
        • 1.1.1.1.1.3. Registered users should be able to change their usernames once a month. (Not Done)
      • 1.1.1.1.2. Registered users shall be able to put up a profile picture. (Not Done)
        • 1.1.1.1.2.1. Registered users shall be able to change their profile pictures. (Not Done)
      • 1.1.1.1.3. Registered users shall be able to write their personal information in their personal pages while either creating their account or after registering the application. (Not Done)
        • 1.1.1.1.3.1. Registered users shall be able to change this information. (Not Done)
    • 1.1.1.2. Guest users shall be able to use the application. (Done)
      • 1.1.1.2.1. System shall disable some functions for the guests. (Done)
    • 1.1.1.3. Registered users shall enter their e-mail or username and password to re-enter their account if they are logged out. (Done)
    • 1.1.1.4. System should offer the choice to keep to user logged in (Not Done)
    • 1.1.1.5. Registered users shall be able to follow other authenticated users. (Not Done)
    • 1.1.1.6. Registered users shall be able to unfollow other authenticated users. (Not Done)
    • 1.1.1.7. Registered users should be able to block another authenticated user. (Not Done)
    • 1.1.1.8. Registered users should be able to unblock another authenticated user. (Not Done)
    • 1.1.1.9. Registered users shall be able to delete their accounts. (Not Done)
    • 1.1.1.10. Registered users shall be able to change their password. (Not Done)
  • 1.1.2. Posts

    • 1.1.2.1. Registered users shall be able to post pictures of animals. (Done)
      • 1.1.2.1.1. Registered users shall be able to put captions to posts. (Done)
      • 1.1.2.1.2. Registered users shall be able to add a location to the post. (Done)
        • 1.1.2.1.2.1. System should integrate the location with Google Maps. (Not Done)
      • 1.1.2.1.3. Registered users shall be able to add a date to the post. (Backend->Done)
        • 1.1.2.1.3.1. Registered users shall be able to add a different date than the moment they are posting. (Backend->Done)
        • 1.1.2.1.3.2. System shall also display the real time the post was posted. (Not Done)
      • 1.1.2.1.4. Verified users shall be able to send alerts for a post. (Not Done)
        • 1.1.2.1.4.1. Guest users shall not see the alerts. (Not Done)
      • 1.1.2.1.5. Registered users shall be able to put the animal's name to the post. (Done)
        • 1.1.2.1.5.1. Registered users shall be able to put the "Unknown" nametag if they do not know the animal's name. (Not Done)
          • 1.1.2.1.5.1.1. Registered users shall be able to put the animal's correct name. (Done)
    • 1.1.2.2. Registered users shall be able to like posts. (Done)
      • 1.1.2.2.1. Users shall be able to see which users have liked a post. (Not Done)
      • 1.1.2.2.2. Users shall be able to see how many users have liked a post. (Done)
    • 1.1.2.3. Registered users shall be able to unlike a post. (Done)
    • 1.1.2.4. Registered users shall be able to dislike posts. (Done)
      • 1.1.2.4.1. Users shall not be able to see which users have disliked a post. (Not Done)
      • 1.1.2.4.2. Users shall be able to see how many users have disliked a post. (Done)
    • 1.1.2.5. Registered users shall be able to remove a dislike from a post. (Done)
    • 1.1.2.6. Registered users shall be able to comment on posts. (Done)
      • 1.1.2.6.1. Users shall be able to see which users have commented on a post. (Done)
      • 1.1.2.6.2. Users shall be able to see the comments. (Done)
      • 1.1.2.6.3. Registered users shall be able to report comments. (Not Done)
    • 1.1.2.7. Registered users shall be able to delete their comment on a post. (Backend Done)
    • 1.1.2.8. Registered users shall be able to bookmark posts.(Done)
      • 1.1.2.8.1. User shall not be able to see which users have bookmarked a post. (Done)
    • 1.1.2.9. Registered users shall be able to unbookmark posts. (Done)
    • 1.1.2.10. Users shall be able to find information about the animal in the post. (Done)
    • 1.1.2.11. Users should be able to find information about the location in the post. (Not Done)
    • 1.1.2.12. Guest users shall not be able to post pictures of animals. (Done)
    • 1.1.2.13. Registered users should be able to report inappropriate content (Not Done)
    • 1.1.2.14. Registered users shall be able to delete their posts.(Not Done)
  • 1.1.3. Search (Rarely some search results may be irrelevant; some searched terms may need be written case sensitively; some family searches may return results that contain the searched keyword for example when "cat" is searched two results show up "house cat" and "saber-toothed cat", in this case one of the results must be re-entered to clarify the searched term. (The message that says user should clarify the search term is sent from the backend but not processed))

    • 1.1.3.1. System shall implement semantic search. (Done)
      • 1.1.3.1.1. Users shall be able to look for information about a particular animal. (Done)
        • 1.1.3.1.1.1. System shall recommend similar types of animals if the initial animal is not found. (Partially Done(System shows similar animals regardless if the initial animal is found (Rarely no other animal is shown)))
        • 1.1.3.1.1.2. System shall show the posts featuring that animal. (Done)
      • 1.1.3.1.2. Users should be able to search locations. (Not Done)
        • 1.1.3.1.2.1. System should give information about the location. (Not Done)
        • 1.1.3.1.2.2. System should show the posts located in that location. (Not Done)
      • 1.1.3.1.3. Users should be able to search animals by their properties. (Not Done)
      • 1.1.3.1.4. System shall fetch the information from Wikidata. (Done)
    • 1.1.3.2. System shall implement basic text search. (Backend-> Done)
      • 1.1.3.2.1. Users shall be able to search another user by their username. (Backend->Done)
      • 1.1.3.2.2. Users shall be able to find "Unknown" name tagged posts. (Not Done)
    • 1.1.3.3. System shall keep a history of the searches of authenticated users. (Not Done)
      • 1.1.3.3.1. Authenticated users shall be able to delete their history at will. (Not Done)
  • 1.2. System Requirements

  • 1.2.1. Feed

    • 1.2.1.1.1. System shall refresh the feed page to show the latest posts when it is first booted. (Done)
    • 1.2.1.1.2. Users shall be able to refresh the feed page at will. (Done)
    • 1.2.1.1.3. Users should be able to sort the feed page to show the latest posts or the most liked ones. (Not Done)
  • 1.2.2. Deleted Accounts (Not Done)

    • 1.2.2.1. System shall keep the deleted accounts in the database until 1 month after deletion.
      • 1.2.2.1.1. System shall remove the deleted accounts from the database 1 month after deletion.
    • 1.2.2.2. System shall keep the posts of the deleted users.
      • 1.2.2.2.1. System shall display the username of the post as "deleted user".
  • 1.2.3. Passwords

    • 1.2.3.1. System shall hash the passwords. (Done)
      • 1.2.3.1.1. System shall keep the passwords in the database in the hashed form. (Done)
    • 1.2.3.2. System shall let users change their passwords if they forget it. (Not Done)

2. Non-Functional Requirements:

  • 2.1. Performance

    • 2.1.1. System Response Time

      • 2.1.1.1. The feed page's refresh time shall be kept low, aiming for a maximum of 2 seconds to ensure a seamless browsing experience for users, enhancing engagement and satisfaction.
      • 2.1.1.2. The search's fetching time shall be minimized to provide quick and responsive search results within 1 second, enabling users to efficiently find relevant content and information.
    • 2.1.2. Scalability

      • 2.1.2.1. A memory-efficient DB design shall be implemented to reduce the load on the system, ensuring smooth operation even during peak usage periods.
    • 2.1.3. System Maintenance

      • 2.1.3.1. The system shall undergo regular maintenance to uphold performance standards, including software updates, database optimizations, and server monitoring.
      • 2.1.3.2. Cloud architecture should be carefully designed to ensure reliability and scalability.
        • 2.1.3.2.1. A load balancer shall be implemented to distribute the server load evenly across multiple machines, preventing overloads and downtime.
        • 2.1.3.2.2. At least two instances shall be set up to provide redundancy and fault tolerance, minimizing the risk of service interruptions.
  • 2.2. Security

    • 2.2.1. GDPR Compliance

      • 2.2.1.1. The system should always stay up-to-date with the latest developments and updates in GDPR regulations, ensuring ongoing compliance with data protection laws.
      • 2.2.1.2. Regular audits should be conducted to verify GDPR compliance and address any identified gaps or issues.
    • 2.2.2. Data Security

      • 2.2.2.1. User information shall be stored securely in the database, utilizing industry-standard encryption protocols for both data in transit and data at rest to prevent unauthorized access or data breaches.
      • 2.2.2.2. Access controls shall be implemented to restrict unauthorized access to sensitive user data, protecting user privacy and confidentiality.
  • 2.3. Usability

    • 2.3.1. System shall feature a user-friendly UI prioritizing consistency.

      • 2.3.1.1. The user interface shall adhere to established design principles, providing a consistent and intuitive experience for users across all interactions and screens.
    • 2.3.2. System shall be simple since there are many different types of people in the target audience.

      • 2.3.2.1. Navigation shall be intuitive, allowing users to easily find and access the features they need without confusion.
      • 2.3.2.2. Usability testing shall be conducted for new features to ensure they meet user needs and expectations, with feedback incorporated to improve usability and user satisfaction.

Prepared by:

  • Ali Bartu Konca, 2021400177
  • Mesut Melih Akpınar, 2020400024
  • Nazlıcan Aka, 2020400027