0% found this document useful (0 votes)
25 views22 pages

Taskfrenzy: Software Requirement Specification Document

Uploaded by

singhpratap12345
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
25 views22 pages

Taskfrenzy: Software Requirement Specification Document

Uploaded by

singhpratap12345
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 22

Jabalpur Engineering College, Gokalpur

Jabalpur, Madhya Pradesh

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

Non Functional Requirements…………………………………………


● Performance
● Usability
● Availability
● Scalability
● Security
● Compatibility

Technical Requirements………………………………………………………
● Backend
● FireBase

● ExpressJs and NodeJs ● Frontend

● 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 :

In today's fast-paced world, managing daily tasks can be a challenging and


overwhelming experience. With an ever-growing list of tasks, it can be difficult
to keep track of everything that needs to be done. This is where a To-Do List
Application comes in handy.

A To-Do List Application is a software application that allows users to manage


their daily tasks in a more organized and efficient way. The application
provides users with a simple and user-friendly interface for creating, updating,
and deleting tasks. The backend of the application provides the storage and
retrieval of data, making it possible for users to access their tasks from any
device.

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.

In addition to managing individual tasks, a To-Do List Application also enables


collaboration between users. Users can share tasks with others, assign tasks
to team members, and receive notifications when tasks are assigned or due.
This makes it easier for teams to work together and ensures that everyone is
on the same page.

The frontend of the application is developed using modern JavaScript


frameworks such as React or Angular, which provide a seamless and
responsive user experience. The backend of the application is developed
using scalable and secure server-side technologies such as Node.js or
Python, which ensure that the application can handle a growing number of
users and tasks.

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 :

Organize and Prioritize Tasks: The primary purpose of a To-Do List


Application with Backend is to help users organize and prioritize their tasks.
With the application, users can create a list of tasks, set due dates, and
prioritize them based on importance. This helps users stay on top of their work
and ensure that nothing falls through the cracks.

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.

Collaboration: A To-Do List Application with Backend enables collaboration


between users. Users can share tasks with others, assign tasks to team
members, and receive notifications when tasks are assigned or due. This
makes it easier for teams to work together and ensures that everyone is on
the same page.

Accessibility: A To-Do List Application with Backend is accessible from any


device, making it easy for users to access their tasks from anywhere. This
ensures that users can stay productive and organized, even when they are
away from their primary work device.

Time Management: A To-Do List Application with Backend helps users


manage their time more effectively. By setting due dates and priorities for
tasks, users can ensure that they are making progress on their most important
work. This helps users avoid procrastination and ensures that they are making
the most of their time.

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.

Task Creation and Management:

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 enable users to collaborate with others by sharing


tasks, assigning tasks to team members, and receiving notifications when
tasks are assigned or due.

Search and Filter:

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.

Reminders and Notifications:

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:

The application should integrate with other software applications, such as


email clients, calendar applications, and project management software, to
provide a seamless user experience.
Non-functional Requirements :

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:

The application must be designed to scale horizontally and vertically to handle


increases in traffic and usage. The application must be able to handle a
minimum of 100,000 active users without any significant impact on
performance. The application must have a load balancing mechanism in place
to distribute traffic across multiple servers to ensure high availability and
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:

The application must be compatible with a range of web browsers, including


the latest versions of Google Chrome, Mozilla Firefox, and Microsoft Edge.
The application must be compatible with popular operating systems, including
Windows, macOS, iOS, and Android. The application must be designed using
responsive design principles to ensure it works seamlessly across different
devices and screen sizes.
Technical Requirements :

Backend :

The backend of the to-do list will be built using FireBase, ExpressJS and
NodeJS.

FireBase

Firebase is a cloud-based platform that provides a range of services for


developing and deploying web and mobile applications. When building a to-do
list application using Firebase, developers can take advantage of a range of
services, including:

Real-time Database:Firebase Realtime Database is a cloud-hosted database


that enables developers to store and synchronize data in real-time. This
means that any changes made to the data are immediately reflected in the
application, providing a seamless experience for users.

Authentication:Firebase Authentication provides a simple way for developers


to authenticate users and manage user sessions. This service can be used to
implement secure login and authorization workflows for the application.

Cloud Functions:Firebase Cloud Functions allows developers to run custom


server-side code in response to events triggered by Firebase services. This
can be used to perform tasks such as sending push notifications, processing
data, or integrating with other services.

Cloud Messaging:Firebase Cloud Messaging is a messaging service that


enables developers to send notifications and messages to users across
different platforms. This service can be used to send notifications to users
when a task is due, for example.

Hosting:Firebase Hosting provides a simple way for developers to host their


web application on Firebase servers. This service is optimized for
performance and scalability, ensuring that the application can handle high
levels of traffic.

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.

ExpressJS and NodeJS

Node.js is a server-side JavaScript runtime environment


that is designed to build scalable and efficient web
applications. It allows developers to use JavaScript for
both the front-end and the back-end, making it an
extremely versatile tool.
ExpressJS and NodeJS are popular backend frameworks
that are used for designing and building web applications.
ExpressJS is a minimal and flexible web application
framework that provides a set of features for building web
applications, while NodeJS is a runtime environment that
allows JavaScript to be executed on the server-side.

In this application, Node.js is used as the server-side runtime environment,


while Express.js is used as the web framework to handle the HTTP requests
and responses. By using these technologies together, the application can
efficiently handle a large number of requests and serve up data to the client in
a fast and reliable manner.

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.

Here are some of the key features and benefits of using


ReactJS for the frontend of our web application:

● Component-based Architecture: ReactJS is built around the concept of


components, which are small, reusable building blocks that can be used to
build complex user interfaces. This makes it easy to break down our
application into smaller, more manageable pieces, which in turn makes it
easier to test, maintain, and update.

● Virtual DOM: ReactJS uses a virtual DOM, which is a lightweight


representation of the actual DOM. This allows ReactJS to update the user
interface efficiently, without having to update the entire DOM tree each time a
change is made. This makes ReactJS very fast and efficient, even for large
and complex web applications.

● 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.

Other Technical Requirements :

Cross-browser compatibility: The application should be compatible with


major web browsers, including Google Chrome, Mozilla Firefox, Safari, and
Microsoft Edge, to ensure that the application works correctly for all users.

Mobile responsiveness: The application should be designed to be mobile-


responsive, meaning it should adjust its layout and behavior to fit smaller
screens, touch-based input, and slower network speeds.

Server-side language and framework: The application backend should be


developed using a server-side programming language and framework, such
as Node.js with Express, Ruby on Rails, Django, or Laravel.

Relational database: The application should use a relational database to


store user data, such as PostgreSQL, MySQL, or Microsoft SQL Server.

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.

Authentication and authorization: The application should use secure


authentication and authorization mechanisms, such as OAuth or JSON Web
Tokens (JWT), to protect user data and ensure that users can only access
their own tasks.
Data validation: The application should validate user input data, such as task
names and descriptions, to prevent injection attacks, malformed data, and
other issues.

Error handling: The application should have appropriate error handling


mechanisms in place to handle errors and exceptions gracefully and provide
meaningful error messages to users.

Testing: The application should be tested thoroughly at every stage of


development, including unit testing, integration testing, and end-to-end testing,
to ensure that it meets functional and non-functional requirements.

Version control: The application source code should be managed using a


version control system, such as Git or SVN, to track changes, manage
conflicts, and facilitate collaboration among developers.

Design constraints:

Platform compatibility: The application must be designed to work on multiple


platforms, including web browsers on desktop and mobile devices, to ensure
that it can reach the widest possible audience.

User experience: The application must be designed to provide a smooth and


intuitive user experience, with features such as drag-and-drop functionality,
responsive design, and real-time updates, to ensure that users can easily
manage their to-do lists.

Accessibility: The application must be designed to be accessible to users


with disabilities, in compliance with the Web Content Accessibility Guidelines
(WCAG). This may include features such as keyboard navigation, alternative
text for images, and high contrast mode.

Scalability: The application must be designed to be scalable, to


accommodate increasing numbers of users and data volumes. This may
include designing for horizontal scalability, using load balancing and database
sharding techniques, and caching frequently accessed data.

Security: The application must be designed to be secure, to protect user data


and prevent unauthorized access. This may include using secure
authentication and authorization mechanisms, implementing encryption and
data protection measures, and following best practices for preventing common
security vulnerabilities.
Performance: The application must be designed to provide high
performance, with fast response times and minimal downtime. This may
include optimizing database queries, using caching and content delivery
networks (CDNs), and using efficient data structures and algorithms.

Maintenance: The application must be designed to be maintainable, with a


clear and modular codebase, version control, and documentation. This
ensures that the application can be easily updated and modified as required,
and that bugs can be quickly identified and fixed.

.Performance requirements :

Response time:

The system should respond to user actions within a maximum of 2 seconds to


ensure that users can manage their tasks efficiently without being frustrated by
delays.

Concurrent user support:

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.

Response time variability:

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 :

The Agile Model is an iterative and incremental approach to software


development that focuses on delivering working software quickly and
continuously, while allowing for flexibility and adaptability in response to
changing requirements and feedback. This model is based on the principles
outlined in the Agile Manifesto, which emphasizes individuals and
interactions, working software, customer collaboration, and responding to
change.

Agile software development is an iterative and collaborative approach to


software development that prioritises flexibility, adaptability, and customer
satisfaction. It is a process framework that values communication,
collaboration, and continuous feedback throughout the development cycle

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.

Overall, Scrum is an excellent choice for To-Do List Application because it


allows for flexibility, collaboration, and continuous improvement, ensuring that
the application meets the needs of the admin and users while being
developed in an efficient and effective manner.

Testing :
We did alpha testing and beta testing to test our web application on various
parameters.

Alpha Testing :

Alpha testing is a type of software testing that is


performed by the development team or a dedicated
testing team in a closed environment. It is the first stage
of testing that takes place after the software has been
developed and is ready for testing. The purpose of
alpha testing is to identify and resolve defects, errors, and functionality
issues in the software before it is released to the public.

During the alpha testing phase, the software is tested in a controlled


environment to ensure that it meets the requirements and expectations of the
users. The alpha testing process includes various stages, such as unit testing,
integration testing, and system testing, to ensure that the software is
functioning as expected. The testing team would perform various tests and
scenarios to evaluate the software's functionality, usability, and performance.

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.

In conclusion, alpha testing is an essential part of the software development


process, as it helps to ensure that the software is of high quality and meets
the requirements and expectations of the users. By identifying and resolving
defects and issues early in the development process, the software can be
released to the public with confidence and without causing any major
problems or issues.
BETA Testing :

BETA testing is a type of User Acceptance Testing


(UAT) that involves releasing the software application to
a limited group of users for testing and feedback before
it is launched to the public. Here's a detailed answer on
how BETA testing can be used for the To-Do List
Application:

Testing in a real-world environment:


BETA testing provides an opportunity to test the To-Do List Application in a
real-world environment with real users. This type of testing allows users to
identify any issues that may have been missed during the development
phase, as they interact with the application in their natural setting and under
normal usage conditions.

Early identification of bugs and usability issues:


BETA testing helps to identify bugs and usability issues early in the
development cycle, allowing the development team to make changes and
improvements before the application is launched to the public. This saves
time and resources in the long run and results in a higher-quality application.

Feedback and suggestions from users:


BETA testing provides an opportunity to collect feedback and suggestions
from users, which can help the development team improve the To-Do List
Application's functionality and user experience. This feedback can be used to
make necessary changes and ensure the application meets the needs of the
users.

Building user engagement and loyalty:


BETA testing can help to build user engagement and loyalty as users feel
valued and involved in the development process. This can result in positive
word-of-mouth marketing and increased user adoption once the application is
launched to the public.

Improving the application launch:


BETA testing helps to identify any issues or challenges that may arise during
the application launch, allowing the development team to address these
issues proactively. This ensures a smooth launch and reduces the risk of
negative user experiences.

Collecting data for analysis:


BETA testing allows the development team to collect data on user behavior
and usage patterns, which can be analyzed to identify trends and improve the
To-Do List Application's functionality and user experience further.

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:

Data Flow Diagram:

First Level DFD-


Future Scope :

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:

● Integration with Other Systems : The application can be integrated


with other systems such as HR systems, payroll systems, and
project management systems to provide a comprehensive view of
employee performance and productivity.

● Predictive Analytics : The application can be enhanced with


predictive analytics capabilities to provide users with insights on
future trends and patterns based on past data.

● Machine Learning : The application can be further enhanced by


incorporating machine learning algorithms that can provide
intelligent insights and recommendations based on user behaviour
and patterns.

● Mobile Application : The application can be extended to mobile


devices by developing a mobile application that allows users to
access their To-Do List on-the-go.

● Customization : The application can be customised to meet the


unique needs of different organisations, including adding or
removing features, changing the design, and adjusting the
dashboard's content and layout.

● Gamification : The application can be gamified by adding elements


such as rewards, points, and badges to motivate employees and
encourage engagement.

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.

You might also like