Taskfrenzy: Software Requirement Specification Document
Taskfrenzy: Software Requirement Specification Document
TaskFrenzy
-"Get in the Zone of Productivity"
Submitted to : Subject :
Mrs. Bharti Solanki Software Engineering
Faculty Information Technology Dept.
Submitted by : Branch :
Abhay Pratap Singh (0201IT201003) (VI semester)
Shashwat Kumar Jain (0201IT201084) Information Technology
Vaibhav Rajawat (0201IT201091)
Shyam Pachouri (0201IT201087)
Index :
Introduction……………………………………………………………………
Purpose…………………………………………………………………………
Functional Requirements……………………………………………………
● User Authentication
● Task Creation and Management:
● Collaboration
● Search and Filter
● Reminders and Notifications
● Data Backup and Restore
● User Profile
● Reporting
● Integration
Technical Requirements………………………………………………………
● Backend
● FireBase
● ReactJs
Other Technical Requirements…..…………………………………………
● Cross-browser compatibility
● Mobile responsiveness
● Server-side language and framework
● Relational database
● API design
● Authentication and authorization
● Data validation
● Error handling
● Testing
● Version control
Design constraints……………………………………………………………
Performance requirements…………………………………………………
Future Design……………………………………………………………………
Working Model………………………………………………………………………
● Agile
● Scrum
Testing…………………………………………………………………………………
● Alpha Testing
● BETA Testing
Future Scope………………………………………………………………………
Introduction :
The primary purpose of a To-Do List Application is to help users manage their
daily tasks effectively. By using such an application, users can easily prioritize
their tasks, set due dates, and track their progress. This helps users stay on
top of their work and ensure that nothing falls through the cracks.
To store user data and task data, the application uses a scalable and secure
database such as Real-time Database provided by FireBase. This ensures
that user data is protected and the application can handle a large volume of
data.
Overall, a To-Do List Application is a valuable tool for anyone who wants to
stay organized and productive. With its user-friendly interface, robust features,
and secure backend, it is the perfect solution for managing daily tasks and
collaborating with others.
Purpose :
Track Progress: A To-Do List Application with Backend allows users to track
the progress of their tasks. This helps users stay motivated and focused on
completing their tasks on time. Users can mark tasks as completed, which
provides a sense of accomplishment and helps users stay motivated.
Data Security: A To-Do List Application with Backend provides users with
data security. User data and task data are stored in a secure backend
database, which ensures that data is protected from unauthorized access or
loss. This gives users peace of mind that their data is safe and secure.
Functional Requirements :
User Authentication:
The application should have a user authentication system that allows users to
create an account, log in, and log out. This ensures that user data is secure
and protected.
The application should allow users to create tasks, set due dates, and assign
priorities to tasks. Users should also be able to edit, delete, and mark tasks as
completed.
Collaboration:
The application should have a search and filter functionality that allows users
to search for specific tasks or filter tasks based on priorities, due dates, or
other parameters.
The application should provide users with reminders and notifications for
upcoming tasks, due dates, or task assignments. This helps users stay on top
of their work and avoid missing important deadlines.
Data Backup and Restore:
The application should have a data backup and restore functionality that
allows users to save their task data and restore it if necessary. This ensures
that user data is protected from loss or accidental deletion.
User Profile:
The application should have a user profile section that allows users to view
and update their personal information. Users should be able to update their
name, email address, and password.
Reporting:
The application should provide users with reporting functionality that allows
them to view their progress on tasks, track completion rates, and view other
performance metrics.
Integration:
Performance:
The application must have a response time of less than 1 second for most
user requests. The application must be able to handle a minimum of 500
requests per second without any significant impact on performance. The
application must have a load testing mechanism in place to ensure it can
handle spikes in traffic and high usage periods. The application must be
optimized for fast data retrieval and processing to minimize the time required
to load and display information to the user.
Usability:
The application must have a consistent and easy-to-use user interface, with
clear navigation and visual cues to guide the user. The application must be
intuitive and require minimal training for users to understand how to use it
effectively. The application must be accessible to users with disabilities,
including those using screen readers and other assistive technologies. The
application must have a responsive design that adapts to different screen
sizes and devices, including desktops, laptops, tablets, and smartphones.
Availability:
The application must be available 24/7, with no more than 99.9% downtime
per month. The application must have a disaster recovery plan in place to
ensure the application can be restored quickly in the event of a system failure
or other catastrophic event. The application must be monitored 24/7 for
uptime and performance, with alerts and notifications sent to the development
team in case of any issues.
Scalability:
Security:
The application must be secure, with all user data encrypted and protected
from unauthorized access. The application must comply with relevant security
standards, including OWASP Top 10 and PCI DSS. The application must
have a robust authentication and authorization mechanism in place to prevent
unauthorized access to user data. The application must be regularly tested for
vulnerabilities, and any identified vulnerabilities must be addressed promptly.
Compatibility:
Backend :
The backend of the to-do list will be built using FireBase, ExpressJS and
NodeJS.
FireBase
By using Firebase services, developers can save time and effort when
building a to-do list application, as many of the complex infrastructure and
backend components are already taken care of. This allows developers to
focus on building the core functionality of the application, improving the user
experience, and delivering value to users.
For this To-Do List Application, ExpressJS and NodeJS will be used to design
and build the backend. ExpressJS will provide the framework for building
REST APIs that will be used for data retrieval and manipulation. NodeJS will
provide the runtime environment that will allow the server-side code to be
executed.
Schema Structure for the Application:
● User Schema: This schema structure would store the information
related to each user. It would contain fields such as name, email,
password, and a unique user ID
● Task Schema: This schema structure would store the information
related to each task or activity. It would contain fields such as task
name, task description, start date, end date and a unique task ID.
● Parameter Schema: This schema structure would store the parameter
set by admin for each user on their tasks. It would contain fields such as
task ID, user ID, date, progress made, and a unique parameter ID.
● Admin Schema: This schema structure would store the information
related to the Admin. It would contain fields such as name, email,
password, and a unique Admin ID.
Frontend :
ReactJS
ReactJS is a popular JavaScript library that is widely used
for building dynamic user interfaces. It is particularly well-
suited for building web applications that require a lot of
interactivity and data-driven functionality.
● One-way Data Binding: ReactJS uses a one-way data binding model, which
means that data flows in one direction, from the parent component to the child
components. This makes it easy to manage the data flow and to avoid
unexpected side effects.
● JSX: ReactJS uses JSX, which is a syntax extension for JavaScript that
allows us to write HTML-like code in our JavaScript files. This makes it easier
to build complex user interfaces, as we can write our markup and logic in the
same file.
● Large and Active Community: ReactJS has a large and active community of
developers, which means that there are plenty of resources available to help
us learn and troubleshoot any issues we encounter.
ReactJS for the frontend of our web application would provide us with a powerful and
flexible toolkit for building a dynamic and interactive user interface. With its
component-based architecture, virtual DOM, one-way data binding, JSX syntax, and
large community, ReactJS is a great choice for building modern web applications.
API design: The application backend should be designed with a RESTful API
that can be accessed by the frontend application, as well as any third-party
integrations.
Design constraints:
.Performance requirements :
Response time:
The system should be able to support at least 500 concurrent users performing tasks
simultaneously to ensure that the system can handle high traffic periods without
performance degradation.
Throughput:
The system should be capable of handling at least 1000 requests per second to
ensure that users can interact with the system without experiencing delays.
Resource usage:
The system should use resources efficiently to ensure that it can scale with minimal
additional resources. This may include optimizing database queries, using efficient
data structures and algorithms, and minimizing redundant code.
Availability:
The system should be available 24/7 to ensure that users can access their tasks and
make updates at any time. The system should be designed with fault-tolerant
measures such as load balancers, backup servers, and redundancy to ensure high
availability.
Load testing:
The system should be tested under high load conditions to verify that it meets
performance requirements. Load testing should be conducted regularly to ensure
that performance is maintained as the system scales.
The system should have low response time variability, meaning that response times
should be consistent across users and requests. Inconsistent response times can
lead to frustration and reduced productivity.
Working Model :
Scrum under Agile methodology is a good choice for To-Do List Application
the reason being as follows :
Flexibility:
The Scrum methodology is known for its flexibility, which is critical for web
applications that may require changes or updates as users and the admin's
needs change. Scrum allows for continuous feedback and iteration, making it
easy to adapt to changing requirements and priorities.
Iterative approach :
Scrum involves breaking down the project into smaller sprints, which can
range from a few days to a few weeks. Each sprint has its own set of goals
and deliverables, and at the end of each sprint, the team reviews and adapts
the project plan based on feedback and progress.
This iterative approach ensures that the development team can deliver a
minimum viable product (MVP) quickly and then iterate on it based on
feedback from the admin and users.
Collaboration :
Scrum emphasizes collaboration, communication, and teamwork between the
development team and stakeholders. In your case, the admin can be involved
in the development process, providing feedback on the application's
functionality and user experience.
This collaboration ensures that the application meets the needs of the admin
and users and reduces the risk of miscommunication or misunderstandings
between the development team and stakeholders.
Continuous improvement :
Scrum is designed to encourage continuous improvement. Each sprint ends
with a review and retrospective, where the development team and
stakeholders reflect on what went well, what didn't go well, and how they can
improve the process.
This continuous improvement ensures that the development team can identify
and address any issues or challenges early on, resulting in a higher-quality
application and a more efficient development process.
Testing :
We did alpha testing and beta testing to test our web application on various
parameters.
Alpha Testing :
One of the main objectives of alpha testing is to identify any defects or issues
in the software before it is released to the public. During alpha testing, the
testers would try to break the system and identify any bugs, glitches, or other
issues that need to be resolved before the software is released to the public.
The testing team would also evaluate the software's documentation, such as
user manuals and help files, to ensure that they are accurate and complete.
Once the alpha testing phase is complete, the development team would fix
any identified bugs and perform further testing to ensure that the software is
stable and reliable. The software would then move to the next stage of testing,
known as beta testing, where it would be tested by a wider audience in a real-
world environment.
Overall, BETA testing is a valuable tool for your To-Do List Application
development as it helps to identify issues early, improve the user experience,
build user engagement, and ensure a smooth launch. By involving real users
in the testing and development process, you can ensure that the final product
meets their needs and expectations, resulting in a successful and well-
received application.
Class Diagram:
The future scope of this web application is vast and can be expanded to
provide more value to users. Some potential future scope of this web
application includes:
Overall, this web application has a lot of potential for future development
and can be continuously improved to meet the evolving needs of
organisations and their employees.