Class2Code Design Specification PDF
Document Details
Uploaded by GuiltlessPlateau2720
Bethlehem University
2023
Mohammad Abu Salh, Osama Ghneem
Tags
Summary
This document details the design specification for Class2Code, a simulated software development learning platform developed by the Faculty of Computer Science at Bethlehem University. The document highlights the platform's goals, scope, and anticipated benefits.
Full Transcript
Design Specification @Mohammad Abu Salh @Osama Ghneem Faculty of Computer Science Department of Software Engineering Bethlehem University...
Design Specification @Mohammad Abu Salh @Osama Ghneem Faculty of Computer Science Department of Software Engineering Bethlehem University 2023-2024 Class2Code - “C2C” Combines the terms "class" and "code" to represent its focus on teaching practical programming and software skills through a simulated learning environment, In other word moving students from classroom learning to practical application. Version 1.0 Date: November 15, 2023 Prepared By Vamos Team: Mohammad Abu Salh - Project Leader Osama Ghneem Advisor: Dr. Mohammad Ghattas - Project Advisor Professor: Dr. Ko, Hong-Hee Table of Contents Introduction As technology continues to transform education at an unprecedented pace, there is a growing need for innovative learning platforms that can effectively bridge the gap between traditional academics and real-world job skills. Class2Code aims to address this need through an immersive virtual environment that simulates authentic software development workflows. This document presents the detailed design specifications for the Class2Code system. It outlines the key architectural components, interface designs, interaction flows, and technical implementation requirements to realize the vision of an engaging experiential learning platform. The purpose of this design specification is to guide the development team in building a robust and user-centric solution per the outlined specifications. It serves to establish a common understanding of the system among stakeholders and provides a baseline for development, testing, and future enhancements. System Scope The Class2Code system aims to provide an end-to-end virtual platform for simulating real-world software development experiences. It will enable users to collaborate on simulated projects, take on various roles within teams, track progress, and develop skills through hands-on learning opportunities. The initial scope covers core features required to replicate key aspects of the software development lifecycle and company workflows. Future enhancements may expand the scope to offer advanced capabilities. Statement of the problem While academic programs impart theoretical knowledge, there remains a lack of practical training opportunities that develop job-ready skills. This leaves a disconnect between education and industry needs. Not all learners have access to internships, projects, or mentors due to capacity limitations. There is a need for scalable platforms that can simulate authentic work experiences to bridge this gap. Anticipated Business Benefits (Tangible & Intangible): The Class2Code system envisions a transformative impact on the education and technology landscape by addressing the gap between theoretical knowledge and practical skills. The anticipated business benefits, both tangible and intangible, are outlined below: Tangible: 1. Users gain tangible skills, including coding, project management, collaboration, and problem-solving, making them more job-ready for the technology industry. 2. Reduced training costs for companies by providing a ready talent pool at a lower cost. 3. Career Exposure and Portfolio Building. 4. Reducing the training costs incurred by students at universities while they go to companies for training. 5. Talent Pipeline for Companies: Tangible advantages for companies include a pipeline of potential hires who have already demonstrated their capabilities in a simulated work environment, reducing onboarding time and costs. Intangible: 1. Enhanced Soft Skills and Networking. 2. Competitive Edge in the Job Market. 3. Complementing Academic Curricula. 4. Enhanced Industry-Academia Collaboration through Experiential Learning Platform. System Capabilities Key capabilities include simulating software projects, role assignments, collaborative tools, communication channels, and tracking progress. An AI assistant will act as a client to define challenges. Users can explore roles, skills, and companies. Admins can manage simulated organizations, and teams and review performance. Integrated training resources will foster continuous learning. Figure 1.0 Company Overview Relation to other product Although alternative platforms exist, Class2Code stands out through its AI foundation that authentically replicates real business scenarios and its focus on the practical over the theoretical. It aims to provide a fully immersive experience through intelligent simulations on an unprecedented scale. 1. Design Overview This system will consist of one part: a single web platform that contains the system as a whole. The web platform will manage all aspects of the Class2Code system, including project management, AI assistant interactions, task assignments, communication tools, training resources, and administrative controls. Both students/participants can access all system functions through the central web portal. Class2Code System is a new web-based platform that aims to provide students and recent graduates with practical experience by simulating real-life projects. It will work with multiple subsystems and devices to provide a life-like environment for working in software companies. Devices and subsystems include but are not limited to, the following: projects management system, AI trainer system, task management and scheduling system, communication system, training system, and company's management system. Figure 1.1 The above diagram outlines the major components of the overall system. Subsystems Explain The project management system will allow administrators to create, organize, and assign simulated software development projects. It will interface with the AI assistant to provide project details and requirements. The AI assistant system utilizes machine learning models to simulate client interactions. It will act as the requestor of projects, providing requirements and responding to queries from project teams. The task management and scheduling system will enable project managers to assign tasks, track progress, and ensure work is completed according to defined milestones. It facilitates coordination between team members. The communication system provides integrated communication channels like messaging, video conferencing, and collaboration tools to foster effective interactions between project stakeholders. The training system offers on-demand learning resources and documentation to help users develop in-demand skills relevant to each project. It also schedules training sessions. The company management system gives administrators control to oversee the platform’s portfolio of simulated companies, clients, and projects. Figure 1.2 Context Diagram of Class2Code System 2. System Requirements 2.1 Functional Requirements: 2.1.1 User Number Priority Requirement U.01 High Users can create a secure account with signup. U.02 Medium The system must support user profile management, enabling users to update their personal information. U.03 High Users can view available projects and bid/apply to work on them. U.04 Medium Users can view details of available projects like descriptions, requirements, skills required, etc. U.05 High Administrators can review bids and assign projects based on the team's suitability. U.06 Medium User roles and permissions should be defined to determine access to specific features and functionalities. U.07 High The system should provide a secure user authentication process to allow access to the platform. U.08 Medium Users should have the ability to customize their profiles, including avatar, display name, and other relevant details for team interaction. U.09 Low The user can evaluate other users. U.10 Low The user can perform the process of evaluating companies. 2.1.2 Projects Number Priority Requirement PR.01 High Admin can pick simulated software development projects. PR.02 High Projects have detailed descriptions, requirements, timelines, etc. PR.03 High The AI assistant can provide project details to teams. PR.04 Low Search/filter capabilities for projects. 2.1.3 Teams Number Priority Requirement TE.01 High Team Leads can add users to existing teams. TE.02 High Team leads can be assigned to manage projects. TE.03 High Teams collaborate on assigned projects. TE.04 Medium Team Leaders can monitor the progress of all active projects. TE.05 High The system should offer team chat functionality for real-time communication among team members. TE.06 Medium Users should be able to initiate new conversations with teams and send messages. TE.07 Medium The system must provide access to existing conversations for users to continue communication with the team. 2.1.4 Project Management & Task Scheduling Number Priority Requirement PM.01 High Team leads can organize tasks, assign roles, and track progress. PM.02 High Messaging supports communication within teams. PM.03 High The system must support task assignment, notification, and tracking features. PM.04 Medium Users should be able to view and select specific companies and tasks within the platform. PM.05 High The system must enable users to perform assigned tasks and submit them for review or approval. PM.06 Medium A "Finish" button should be available for users to indicate task completion. PM.07 Medium The system should allow users to filter and sort tasks based on various criteria such as due date, priority, status, and assigned team members. 2.1.5 Training Number Priority Requirement TR.01 High The system should guide projects. TR.02 Medium The system should provide resources and articles on advanced topics. 2.1.6 Notifications Number Priority Requirement N.01 Medium The system should provide a notification and alert system to keep users informed about task updates, new messages, and other relevant activities within the platform. N.02 High Users should receive real-time notifications for task assignments, deadlines, and communication events to stay updated on their responsibilities. 2.1.7 Company and Team Page Navigation Number Priority Requirement C.01 High The platform should have a navigable interface for users to access company teams, tasks, and communication features. C.02 High Users should be able to select specific teams and access relevant information and functionalities within the platform. C.03 Medium The user must be able to change the information of his companies and teams. 2.1.8 Error Handling and Support Number Priority Requirement ER.01 High The platform should have error-handling capabilities to address technical issues or system errors encountered by users. ER.02 Medium Users should have access to support channels for reporting and resolving technical problems or errors with the system. 2.1.9 Message Management Number Priority Requirement ME.01 High The system must support message composition, sending, and retrieval within the team chat feature. ME.02 High Users should have the ability to send and receive messages. ME.03 Medium The system should provide the capability to archive old conversations for teams, enabling users to access and review historical communication for reference or auditing purposes. ME.04 Medium Archived conversations should be easily retrievable and searchable within the platform for convenient access to past discussions. 2.2.0 AI Chat CNumber Priority Requirement AI.01 High Natural Language Processing (NLP): The system should be capable of understanding and interpreting natural language input from users, allowing for conversational interactions in a human-like manner. AI.02 High The user should be able to get all the answers he needs about the system. AI.03 High The user will be able to create a new AI conversation. AI.04 Medium The user will be able to go back to old conversations and communicate with them. 2.2.0 Company Ads Number Priority Requirement AD.01 High The company can add a job advertisement. AD.02 High The company can see the jobs it has added and edit or delete. AD.03 High Users can search for the suitable job and apply for it. 2.2 Technical Requirements 1. The front-end interface should be built using a modern JavaScript framework like React/Angular for enhanced interactivity and component-based design. 2. The back-end services should be developed using a robust programming language like JavaScript along with a framework like Express.js. 3. A relational database like MySQL should be used to store structured data. A NoSQL database like Neo4j can also be used for certain unstructured data, and File Storage to save files. 4. User authentication and authorization should be implemented using industry-standard mechanisms like OAuth. 5. Session management and security best practices should be followed to prevent vulnerabilities. 6. APIs should be developed following GraphQL architecture principles for front-end and external system integration. 7. Source code version control should be implemented using Git along with branching strategies for collaborative development. 8. The system should support horizontal scaling of application servers and databases on cloud platforms. 9. Coding best practices like design patterns, code quality checks, documentation, etc should be adopted. 10. Performance and load testing should be done to ensure responsiveness under heavy usage. 11. Monitoring and logging mechanisms should provide visibility into system health and errors. 12. The system architecture should support adding new features with minimal rework. 13. Security, privacy, and data protection should be top design and implementation priorities. 14. Cache must be used to speed up data fetching, so we will use REDIS. This diagram provides a high-level overview of the major architectural components, their functions, and how they interact within the Class2Code system. It helps communicate the overall system design at a conceptual level. Figure 2.1 Architectural Diagram for Class2Code 3. Business Rules 1. User Registration: Users must provide a valid email address during registration Email addresses must be unique (no duplicate emails allowed) Users must be at least 18 years old to register Passwords must meet minimum complexity requirements 2. Project Creation: Only administrators can create new projects Projects must have a title, description, timeline, and requirements defined Projects can only be assigned to active users 3. Team Formation: A team must have between 3-10 members assigned to it Only registered users can be added to teams Team leads must be assigned before projects can be allocated 4. Project Allocation: Projects can only be allocated to teams with an assigned lead A user can only be part of one team at a time Teams must acknowledge acceptance of allocated projects 5. Task Management: Team leads are responsible for assigning tasks to team members Tasks must have descriptions, deadlines, and assignees defined Tasks can only be assigned to members of the allocated project team 6. Feedback & Reviews: Team members are required to provide peer feedback on tasks Code reviews must be completed before sign-off on milestones Feedback must be respectful and constructive 7. Inactive Users: Users have been marked inactive if there has been no activity in the past 6 months Inactive users cannot engage with active projects or teams 4. Context Diagram data dictionary: Entity Attributes User ID, Username, FirstName, LastName, Email, Password, Rate, DateOfBirth, Gender, last time online, Role, Skills, Country, Work, Bio, SocialMediaLinks, Educations, IsActive, CreateDate. Project ID, ProjectName, ProjectDescription, IsActive, FileName. Team ID, TeamName, TeamLead, IsActive, CreateBy, CreateDate, Role. Task ID, TaskName, TaskStatus, Start Date, End Date, TaskProgress, IsMarked, CreateBy, CreateDate, Priority, Comments. Message ID, MessageContent, Date, IsDelete. Company ID, CompanyName, CompanyDescription, Rate, CompanyAdmin, Domain, CreateBy, CreateDate. Training ID, TrainName, Skills ID, Skill. ContactMessages ID, MessageContent, Date. Comments ID, Comment, Date. SocialMediaLinks ID, PlatformName, Link Education ID, Title, File Chat ID, Sender, Reciver, IsDelete Friends ID, FriendID TaskSteps ID, Description, Number Requirements ID, Requirments AI-Message ID, Question, Answer, CreateDate AI-Chat ID, CreatedDate PositionPosts ID, Content, IsDelete, CreateDate Relationships: 1. User - Teams: A User can belong to multiple Teams. Teams have multiple Users as members. 2. Project - Team: A Project is associated with a single Team. A Team can be assigned to multiple Projects. 3. Task - Project: A Task is linked to a specific Project. Projects may have multiple associated Tasks. 4. Message - Users - Chats: Messages are exchanged between Users through Chats. Chats consist of multiple Messages and involve multiple Users. 5. Project Manager - Project: A Project Manager is assigned to oversee a specific Project. Projects have a reference to the assigned Project Manager. 6. Team - TeamLead - Users: A Team has a designated TeamLead. The TeamLead is a reference to a User within the system. 7. Company - Clients - Users: A Company can have multiple Clients. Each Client is represented by a User. 8. Company - Admin - User: A Company has an admin, which is a reference to a User. 9. Project - Train: Projects are associated with specific Training sessions. 10. User - Messages - Developer's Team: A User can communicate with the developer's team through multiple Messages. The developer's team is not explicitly defined, but Users are involved in development tasks. 11. User - Comments - Company: A User can contribute multiple Comments related to a Company. Comments are associated with both Users and Companies. 5. User Interface: 5.1 screens Certainly, here are descriptions for each page based on the provided information: 1. Home: The central hub of the system is where users initiate their interaction. It serves as the starting point and gateway to various features and functionalities. 2. Log in: Allows users to securely access their accounts by entering their credentials. It plays a crucial role in maintaining user privacy and system security. 3. Register: Enables new users to create accounts, providing necessary information for system access. This page is pivotal for onboarding new participants. 4. Second subscription: Facilitates users in subscribing to additional services or plans beyond their initial registration, Skills, and experience. 5. I forgot my password: A recovery mechanism for users who have forgotten their passwords. This page assists in securely resetting and regaining access to accounts. 6. Page not found/error: Informs users when a requested page is unavailable or encounters an error, ensuring transparency and user awareness during unexpected situations. 7. About us: Provides insights into the background, mission, and values of the Class2Code system. Users can learn more about the creators and the purpose behind the platform. 8. Contact us: Offers users a direct channel to reach out for support or inquiries, enhancing communication between users and the system administrators. 9. Privacy page: Contains detailed information about the system's privacy policies and data handling practices, ensuring transparency and compliance with privacy standards. 10. Load the page: Represents the process of rendering and displaying a specific page. This action is fundamental for users as they navigate through different sections of the system. 11. Dashboard: The main interface provides an overview of relevant information, features, and ongoing activities within the Class2Code system. 12. Available companies: Displays a list of companies accessible to users, allowing them to explore and engage with various simulated organizations within the system. 13. Project tasks: Showcases tasks related to specific projects, providing users with a detailed view of the activities and responsibilities associated with ongoing projects. 14. Task details: Offers in-depth information about a particular task, including its name, description, start date, end date, and other relevant details. 15. User profile: Displays information about the logged-in user, offering a personalized view of the user's details and activities within the system. 16. Another user profile: Exhibits information about a different user within the system, allowing users to learn more about their colleagues or collaborators. 17. Company Overview: Provides a comprehensive view of a specific company, including its name, description, teams, and ongoing projects. 18. Project artificial intelligence chat: Incorporates AI-powered chat for communication within a project, enhancing collaboration and providing users with an intelligent interaction experience. 19. Frequently Asked Questions page powered by artificial intelligence: Utilizes AI to generate responses for frequently asked questions, offering users an efficient and dynamic resource for information. 20. All friends in the chat: Lists all users considered friends within the chat feature, facilitating easy access to communications with known contacts. 21. Project details: Presents intricate information about a selected project, including its components, requirements, and current status. 22. Create a task: Facilitates the addition of new tasks to a project, enabling users to contribute to project development and progress. 23. Edit email: Permits users to modify their registered email addresses, ensuring flexibility and adaptability in user account management. 24. Modify the password: Enables users to change their account passwords, promoting security and regular updates to access credentials. 25. Establishing a company: Involves the creation of a new company within the Class2Code system, providing users with the opportunity to simulate company management. 26. Create a team: Allows users to form and manage teams, fostering collaboration and coordination among team members. 27. The training page: Likely a page related to training materials or resources, offering users educational content to enhance their skills. 28. Amending the company file: Involves updating information within a company's profile, ensuring accuracy and relevance in the representation of simulated companies. 29. My companies and work teams: Aggregates information about companies and teams associated with the user, providing a centralized view of the user's professional engagements. 30. Available projects: Indicates the option to add new projects to a company within the application, allowing users to expand their project portfolio and simulate project management scenarios. 6. Output Forms 1. Text outputs. 2. Media: a. Project documentation/specs. b. Training/tutorial materials. c. Code snippets. d. Screenshots in chat. 7. Object Model 7.1 Architectural Diagram The Class2Code system follows a multi-tier architecture with a clear separation of concerns. Major system components include: Presentation Tier The presentation tier consists of the client-facing interfaces that users interact with. This includes: Website: Built as a single-page application using React for enhanced interactivity. Manages routine and renders UI components. Application Tier The application tier contains the core business logic and rules. It is comprised of: API Gateway: Acts as a single entry point for client requests which are routed to appropriate services. Services: Developed using Node.js/Express to handle specific use cases like user management, project workflows, etc. Data Tier The data tier manages persistent data storage and retrieval. It contains: Databases: A Neo4J database stores unstructured data. A Digitalocean S3 database handles file data. Cache: An in-memory Redis cache improves performance for frequent reads. Other Components Message Queue: Kafka facilitates asynchronous communication between tiers. Logging/Monitoring: ELK Stack provides visibility into system health and errors. 7.2 Client-Server Pattern The client-server pattern divides the system into two parts - the client and the server - to improve modularity and scalability. Server The server side would include: Application servers to host the backend services and APIs. Database servers to store and retrieve data like user profiles, projects, code, etc. AI model servers to power the machine learning models acting as clients. File/media servers to manage uploaded files, documents, code repositories, etc. Client The client-side includes: Users access the frontend web interfaces through browsers. The AI assistant subsystem interacts as a client through APIs. You can return to Figure 2.1 to see the Architectural Diagram with all these Components. Core Objects/Entities User: Attributes: ID, Username, FirstName, LastName, Email, Password, Rate, DateOfBirth, Gender, last time online, Role, Skills, Country, Work, Bio, SocialMediaLinks, Educations, IsActive, CreateDate. Methods: login(ID), CreateNewUser(User), logout(ID), updateUser(ID, User), getUser(ID). Project: Attributes: ID, Project Name, Project Description, Start Date, End Date, Training, IsActive. Methods: getProject(ID), getAllProjects(), srarch(Name), createNewProject(Project), fillter(Date, Requirements). Team: Attributes: ID, TeamName, TeamMembers, TeamLead, TeamRoles, IsActive, CreateBy, CreateDate. Methods: CreateNewTeam(Team), DeleteTeam(ID), getAll(CompanyID), updateTeam(ID, Team). Task: Attributes: ID, TaskName, TaskSteps, TaskStatus, Start Date, End Date, TaskProgress, CreateBy, CreateDate, Priority, Comments. Methods: getAlltasks(ProjectID), getAlltasks(UserID), search(Name), fillter(Date, Status, Priotiy). Chat: Attributes: ID, Sender, Receiver, IsDelete. Methods: getAllChats(UserID), search(Team Name), createNewChat(Chat), getChat(ID). Message: Attributes: ID, MessageContent, DateTime, IsDelete. Methods: sendMessage(ChatID), getAllChats(ChatID). Company: Attributes: ID, CompanyName, CompanyDescription, Rate, CompanyAdmin, Domain, CreateBy, CreateDate. Methods: getAll(), createNew(Company), search(Name), getOne(ID), fillter(Rate, CreatedDate, Domain). Train: Attributes: ID, TrainName. Methods: get(ProjectID). Skills: Attributes: ID, Skill. Methods: createNew(Skill,UserID), Delete(SkillID), getAll(UserID). Social Media Links: Attributes: ID, PlatformName, Link. Methods: createNew(Social,UserID), Delete(SocialID), getAll(UserID). Requirement: Attributes: ID, Requirements. TaskSteps: Attributes: ID, Description, Number. Education: Attributes: ID, Title, File. ContactMessage: Attributes: ID, MessageContent, Date. Methods: createNew(ContactMessage), getAll(). AI-Message: Attributes: ID, Question, Answer, CreateDate. Methods: getAnswer(Message). AI Chat: Attributes: ID, CreateDate. Methods: createNew(UserID), getOldChats(UserID), getChat(ID). PositionPosts: Attributes: ID, Content, IsDeleted, CreateDate. Methods: getAll() , search(), applay(UserID, PostionID), getOne(ID). Objects Relationships: 1. User - Belongs to - Team (Many-to-Many): A User can belong to multiple Teams. Teams have multiple Users as members. 2. Project - Belongs to - Company (Many-to-Many): A Project exists within the context of a Company. A Company has multiple Projects. 3. Task - Assigned to - User (Many-to-One): A Task can be assigned to one User. A User can have multiple Tasks assigned. 4. Message - Exchanged between - Users (Many-to-Many): Users communicate with each other via Messages. 5. Train - Belongs to - Project (One-to-One): A Project can have one Train object. 6. User - Works on - SocialMediaLink (One-to-Many): A User can have multiple SocialMediaLinks. A SocialMediaLink can be added by one user. 7. User - Can have - Skills (One-to-Many): A User can have multiple Skills. Skills can be added by one user. 8. Teams - Work on multiple - Companies (Many-to-Many): Teams can work with multiple companies. Companies can have multiple Teams. 9. Task - Assigned to - Team (Many-to-One): A Task can be assigned to one Team. A Team can have multiple Tasks assigned. 10. User - Has - Friends (One-to-Many): A User can have multiple Friends. Class Diagram Figure 2.7 UML Diagram. 8. Dynamic Model Use cases Diagrams Figure 8.1 Log in UseCase Figure 8.2 My Company UseCase Figure 8.3 SignUp UseCase Figure 8.4 Profile UseCase Figure 8.5 ProjectTask UseCase Figure 8.6 Available Company UseCase Figure 8.7 ContactUs UseCase f F Figure 8.8 Available Projects UseCase Figure 8.9 FAQ UseCase Figure 8.10 TeamChat UseCase Figure 8.11 TrainPage UseCase Figure 8.12 AI Chat UseCase Figure 8.13 UserChat UseCase Scenarios Use Case 1 Login Actor User, System (login page) Description This use case describes the process by which a registered user logs into the system. Basic Flow 1. The user navigates to the login page. 2. The user enters their username and password. 3. The system validates the entered credentials. 4. If the entered credentials are valid, the system grants access to the user and logs them into the system. 5. If the entered credentials are invalid, the system notifies the user and prompts them to re-enter the correct credentials. Alternative Flow 1 The user clicks on forgot password link. Alternative Flow 2 The user clicks on the signup button. Alternative Flow 3 The user clicks the social login button like Google/Facebook. The system authenticates via OAuth and logs in. Conditions The user must be a registered user with valid login credentials. Use Case 2 User Sign-up Actor User, System (Sgin-up page) Description This use case describes the process by which a user creates a new account within the system. Basic Flow 1. The user navigates to the sign-up or registration page. 2. The user enters their personal information, including name, email address, and desired password. 3. The system validates the entered information and ensures that the required fields are populated. 4. User agrees to the terms and conditions, privacy policy, or any other necessary agreements. 5. The system creates a new user account and sends a verification email to the user. 6. The user verifies their email by clicking on the verification link. 7. Once the email is verified, the user account is considered successfully registered. 8. If the basic details are valid, the user is redirected to the detailed profile form. 9. The user fills in additional details such as skills, experience, and any other required information. 10. The system validates the detailed profile details, ensuring that all required information is provided and in the correct format. 11. If the detailed profile details are valid, the user's account is created in the system. Alternative Flow 1 If the user's chosen email address is already registered in the system, the system prompts the user to use a different email address or attempt to log in using the existing account. Alternative Flow 3 The user clicks the social login button like Google/Facebook. The system authenticates via OAuth and logs in. Conditions The user must provide all required information for successful sign-up. Users must agree to the system's terms and conditions. Use Case 3 Forgot Password Actor User, System (Forget Password Page) Description This use case describes the process by which a user can reset their password in case they have forgotten it. Basic Flow 1. The user navigates to the "Forgot Password" or "Reset Password" option on the login page. 2. The user enters their email address or username associated with their account. 3. The system validates the email address or username and confirms that it exists in the system. 4. The system sends a password reset link to the user's registered email address. 5. The user clicks on the password reset link received in the email. 6. User is directed to a page where they can enter a new password. 7. The user enters a new password and confirms the change. 8. The system updates the user's password in the database. Alternative Scenario If the entered email address or username is not found in the system, the system prompts the user to verify the information entered or to attempt with a different email address or username. Conditions User must provide the correct email address or username associated with their account for a successful password reset. User must have access to the email account to receive the password reset link. Use Case 6 Evaluating Other Users Actor User, System (User Profile) Description This use case describes the process of the Initiator evaluating another user's performance on a project within the system. Basic Flow 1. The Initiator navigates to the team information page on the system. 2. The Initiator selects the user they want to evaluate from the list of team members. 3. The system displays the selected user's profile. 4. The Initiator provides a rating for the selected user, ranging from 0 to 5, based on their performance and contribution to the project. 5. The Initiator submits the evaluation. Alternative Scenario If the selected user is not found or an error occurs, the system displays an error message and prompts the Initiator to try again or contact the system administrator. Conditions The Initiator must be logged into the system. Use Case 7 Evaluating Companies Actor User, System (Company Profile) Description This use case outlines the process of the Initiator evaluating a company with which they have collaborated on a project within the system. Basic Flow 1. The Initiator navigates to their company's page on the system. 2. The Initiator selects the option to view company information. 3. The Initiator chooses the company they want to evaluate from the list of associated companies. 4. The system opens the selected company's profile. 5. The Initiator provides a rating for the company, ranging from 0 to 5, based on their experience and satisfaction with the collaboration. 6. The Initiator submits the evaluation. Alternative Scenario If the selected company is not found or an error occurs, the system displays an error message and prompts the Initiator to try again or contact the system administrator. Conditions The Initiator must be logged into the system. The Initiator must work in this company. Use Case 8 Edit My Companies Actor User, System(My Companies page) Description This use case describes the process by which the User can edit and modify information relating to their own company within the system as well as manipulate the teams and projects associated with their company. Basic Flow 1. The user navigates to the My Companies page within the system. 2. User selects the company they wish to edit from the list of companies associated with them. 3. User has the option to edit various information about the company. 4. The user can add or delete teams within the company and make necessary updates to the team information. 5. The user can add or delete projects within the company and make necessary updates to the project information. 6. The user clicks on the save button to confirm the changes. 7. The system validates the changes made by the user and updates the company information, team configurations, and project data accordingly. Alternative Scenario If the User encounters an error while editing the company information, the system prompts an error message and allows the User to rectify the issue before saving the changes. Conditions The user must be logged into the system. The user must be the admin of the company. Use Case 9 Create Task Actor User, System (My Company Page) Description This use case outlines the process by which a user creates a new task within a company's system, providing necessary details and assigning the task to a designated team member(s). Basic Flow 1. The user navigates to the My Companies page and selects one. 2. The user clicks on the "Create User/Team Task" button. 3. The task creation form is displayed with fields to input task information such as task name, description, start date, end date, and assignee. 4. The user fills in the required task details. 5. The user clicks the "Add" button to submit the task. 6. The system validates the accuracy of the entered information. 7. If the information entered is correct, the system saves the task and associates it with the designated assignee(s). 8. If there are validation errors, an error message is displayed to the user, indicating the specific fields that require correction. Alternative Scenario If the user decides not to proceed with creating the task, they can choose to cancel or discard the task creation form. Conditions The user must be logged into the system. The user must be the admin of the company. Use Case 10 Edit Email or Password Actor User, System(Setting) Description This use case describes the process by which the user can update their email address or password within the company's system. Basic Flow 1. The user navigates to their profile or account settings within the system. 2. User selects the option to edit their email or password. 3. If the user chooses to edit the email address: 3a. The user enters the new email address and re-enters it for confirmation. 3b. User submits the changes. 4. If the user chooses to edit the password: 4a. The user enters the current password, and the new password, and re-enters the new password for confirmation. 4b. User submits the changes. 5. The system validates the changes made by the user. 6. If the changes are valid, the system updates the email address or password accordingly. Alternative Scenario If the user attempts to input an invalid email format or a password that does not meet the system's security requirements, the system prompts an error message and prevents the changes from being saved until the corrections are made by the user. If the user does not remember the old password, he can click on Forgot password and send a link to change it via email. Use Case 11 Create Company Actor User, System (My Company Page) Description This use case outlines the process for a user to create a new company within the system. Basic Flow 1. The user navigates to the My Companies page and clicks the "Create Company" button. 2. The system presents a form with fields to enter company information, such as the company name, address, industry, and contact details. 3. The user fills in the required information and clicks the "Submit" button. 4. The system verifies the accuracy of the entered information, including checking for any duplicate company names. 5. If the information is correct and there are no validation errors, the system creates a new company and assigns the user as the administrator. Alternative Scenario If the system detects any validation errors, such as a duplicate company name or missing required fields, it prompts an error message and highlights the specific areas that need attention. The user must correct the errors before resubmitting the form. Conditions The user must be logged into the system. Use Case 12 Create Team Actor User, System (Teams Page) Description This use case outlines the process for a user to create a new team within the company's system. Basic Flow 1. The user navigates to the "My Companies" page and selects one then clicks the "Create Team" button. 2. The system presents a form with fields to enter team information, such as team name, description, and member details. 3. The user fills in the required information and adds members to the team by providing their names or email addresses. 4. After ensuring the accuracy of the entered information, the user clicks the "Create" button. 5. The system validates the data, checking for errors such as duplicate team names or incomplete member information. 6. If the information is correct and there are no validation errors, the system creates a new team and adds the specified members to the team. Alternative Scenario If the system detects any validation errors, such as a duplicate team name or incomplete member information, it prompts an error message and highlights the specific areas that need attention. The user must correct the errors before resubmitting the form. Conditions The user is logged in and has the necessary permissions to create a new team within the company. Use Case 13 Content Us Actor User, System (Content Us Page) Description This use case outlines the process for contacting the website or company by User for inquiries, feedback, or support. Basic Flow 1. The user navigates to the "Contact Us" page or section of the website. 2. The user is presented with a form or contact details to reach out to the company, including fields for name, email, subject, and message. 3. The user fills in the relevant information, including their inquiry or feedback. 4. The user submits the form or sends the message. 5. The system acknowledges the submission and provides a confirmation message. Alternative Scenario If the user encounters issues submitting the form, an error message is displayed prompting them to correct any missing or incorrect information. Use Case 14 AI Chat Actor User, System (Chat AI) Description This use case outlines the process for initiating a chat with the selected company project using the AI chat feature. Basic Flow 1. The user selects the "companies I am working in it" button from the navbar on the website or application. 2. User selects the specific company they want to engage in a chat with. 3. The user clicks on the chat option available for the selected company. 4. The AI chat interface opens, and the user is prompted to type their message or query. 5. The user inputs their message or query and sends it. 6. The AI chatbot processes the message and responds accordingly, providing assistance or necessary information. Alternative Scenario If the user encounters technical issues while trying to initiate the chat, the system should provide a relevant error message and offer assistance. If the selected company's chat feature is not available or offline, the system should inform the user and provide alternative contact options. Conditions The user should be logged in to access the company chat feature. The user should be working in the company which works on the project. Use Case 15 FAQ Page Actor User Basic Flow The user has questions and goes to the FAQ page. He types in her queries, and the AI system responds by replaying relevant information from the FAQ section, helping The user find the answers she needs. Use Case 16 Edit Team Actor User, System (Edit Team Page) Description This use case describes the process a user goes through to edit an existing team in the company's system. Basic Flow 1. The user navigates to the "My Companies Teams" page. 2. The user locates the team they want to edit from the list and clicks on the team's name. 3. The system displays the current team information. 4. The user makes the necessary changes to the team name, description, or member information. 5. After ensuring all the changes are accurate, the user clicks on the "Save" button. 6. The system verifies the updated information and checks for any potential conflicts with existing data. 7. If the verification is successful, the system displays a confirmation message indicating that the team has been updated. Alternative Scenario If there are any conflicts or errors in the updated team information, the system will display error messages prompting the user to correct the issues before saving the changes. Conditions The user must be logged into the system and have appropriate permissions to edit teams. Use Case 17 Add Job Ad Actor User, System (Posts Page) Description This use case outlines the process a user follows to add a job advertisement, review applicants, select a candidate, add them to a team, and delete the ad. Basic Flow 1. The user navigates to the "Posts" page and selects the "Add Ad" button. 2. The system presents a form for the user to input the content of the job ad, including job title, description, requirements, and other relevant details. 3. The user selects the company from their list of companies that the ad is associated with. 4. After entering all the necessary information, the user clicks "Publish Ad". 5. The system confirms the successful publication of the job ad and sends notifications to the user about new applicants. 6. The user receives and views the notifications, then navigates to the "Posts" page and selects "My Posts". 7. The user reviews the list of applicants and selects a candidate who matches the requirements of the job ad. 8. The user chooses the selected candidate and has the option to add them to a team within the system. 9. After adding the candidate to the team, the user is asked to confirm the changes. 10. The user reviews the confirmation and finalizes the addition to the team. 11. Once the position is filled, the user deletes the job ad. Alternative Scenario If there are no suitable candidates, the user may choose to keep the ad active and continue the applicant review process until a suitable candidate is found. If the user encounters any issues during the selection or addition process, the system may provide error messages or prompts for resolving the issues before finalizing the changes. Use Case 18 Looking for a Job Actor User, System (Posts Page) Description This use case outlines the process a user follows to search for and apply for a job, and the actions taken by the company manager upon receiving the application. Basic Flow 1. The user navigates to the "Publications" page within the system. 2. The user searches for a suitable job by browsing available job listings or using filters such as job title, location, and required skills. 3. After finding a suitable job, the user selects the job listing to view the details. 4. The user submits an application for the job by providing the necessary information and documents, such as a resume, cover letter, and any additional application requirements specified by the company. 5. The system confirms the successful submission of the application and notifies the company manager or designated recipient of the application. 6. The company manager receives the application notification and reviews the submitted materials. 7. The company manager makes a decision on the application, either accepting or rejecting it through the system. 8. The user receives a notification about the status of their application, informing them of the company manager's decision. Use Case 19 Add Project for The System Actor Admin, System (Admin Section) Description This use case describes the process of an admin adding a new project to the system through the admin section. Basic Flow 1. The admin logs into the system's admin section. 2. The admin navigates to the "Projects" or "Add Project" section within the admin interface. 3. The admin selects the option to add a new project. 4. The admin provides essential details of the project, including the project name, description, start date, end date, project manager, and any additional relevant information. 5. The admin saves the project details, and the system validates and confirms the successful addition of the project. Conditions System admin can make this only. Use Case 20 Responding to users' messages by email Actor Admin, System (Admin Section) Description This use case outlines the process of an admin responding to users' messages through email within the system's admin section. Basic Flow 1. The admin logs into the system's admin section. 2. The admin navigates to the "Messages" or "User Communication" section within the admin interface. 3. The admin selects the option to view unread or pending messages from users. 4. The system displays a list of unread messages from users, including the sender's details, message content, and timestamp. 5. The admin selects a specific message to respond to and chooses the option to reply via email. 6. The system prompts the admin to craft a response, allowing them to compose the email using an integrated email interface within the admin section. 7. After composing the response, the admin sends the email, and the system confirms the successful transmission of the response. 8. The system marks the responded message as "read" or "replied" in the message list to indicate that the user's message has been addressed. Conditions System admin can make this only. Use Case 21 Finish Tasks Actor Admin, System (Companies Tasks) Description This use case describes the process of a user completing tasks assigned to them within the system. Basic Flow 1. The system sends a notification to the user about the new tasks assigned. 2. The user navigates to the companies' tasks page. 3. The user selects the company with the new tasks indicator. 4. The system displays the list of tasks for the selected company. 5. The user reviews the tasks and performs them. 6. After completing the tasks, the user submits them to the team leader for review. 7. The user clicks "Finish" to mark the task as completed. Conditions The user has logged into the system and has tasks assigned to him. Use Case 22 Team Chat Actor User, System (Chats) Description This use case illustrates the process of a user initiating and participating in a team chat within the company's communication platform. Basic Flow 1. The user navigates to the company teams page within the communication platform. 2. The user selects the specific team they want to communicate with. 3. The user clicks on the "Start a Conversation" or "New Message" button to initiate a new chat with the selected team. 4. The user enters the message content and sends the message to the team. Alternate Flow 1. If a conversation already exists for the team, the user can access the list of old conversations within the team page. 2. The user selects the existing conversation with the team to continue the chat. 3. The user enters the message content and sends the message to the team within the existing conversation. Conditions The user must be logged in to the system. The user must be within one of the teams in one of the companies. Sequence Diagrams 9. ER Diagram