SRS (Software Requirements Specification) - SQA-PROJECT-1/Konta-Niben GitHub Wiki

1. Introduction

The Software Requirements Specification (SRS) serves as a user-friendly guide, bridging the understanding between customers and developers by outlining the precise functionality of the upcoming E-commerce platform. Organized into clear sections, it not only defines what the software can do but also addresses how it connects with external interfaces, showcases special features, and outlines design constraints for a straightforward and successful development process.

1.1 Purpose:

The purpose of our project (Konta-Niben) is to establish a user-friendly and efficient platform dedicated to selling products directly to customers. The primary objective is to provide a seamless and enjoyable shopping experience for individuals looking to purchase our products. This project aims to create a digital space where customers can easily browse through our offerings, make purchases, and have their chosen products delivered to their doorstep. By focusing exclusively on direct-to-customer sales, our goal is to streamline the buying process, making it straightforward for customers to find, select, and order products they desire. The project emphasizes user convenience, aiming to eliminate unnecessary complexities and offer a hassle-free online shopping experience. Additionally, this project seeks to leverage technology to enhance customer engagement and communication. Through effective use of the platform, we aim to keep customers informed about product updates, promotions, and other relevant information.

1.2 Intended Audience:

The intended audience for our e-commerce system's Software Requirements Specification (SRS) includes stakeholders such as project managers, developers, quality assurance teams, designers, and business analysts. Additionally, end-users, including customers and administrators, are part of the target audience to ensure the system meets their needs and expectations.

1.3 Intended Use:

Why we are building this website? Simple – to make life easier for both buyers and sellers. Our e-commerce website is like a helpful friend, managing databases, and providing authentic information at the right time. Whether you are an administrator, business analyst, developer, or a savvy shopper, this software is designed to help everyone in a better and seamless way.

The software provides the following facilities to the administrator:

  • Administrator can see, add, edit, and delete products from the database easily.
  • The Administrator can see the dashboard where the graphical representation of selling growth is displayed to see the growth.

The software provides the following facilities to the customer:

  • The customers register with their necessary information and get authenticated for authorized logging.
  • Customers can see all the updated information about products available by their category.
  • Customers can get notified about the offers and new arrivals.
  • After using a shopping cart, customers can see the items they selected for purchase.
  • Check out the option for the items they purchased.
  • After completing the payment procedure the products are sent to the customer’s address.
  • Customers can add products to their Wishlist.

1.4 Product Scope:

Imagine our website as a treasure trove of features! For administrators, it's a tool to add, edit, and delete products. Customers get a user-friendly experience with secure registration, easy browsing, and a shopping cart for hassle-free shopping. We've got comprehensive product details, multiple shipping options, and even strategic insights for administrators. It's a one-stop shop for all your E-commerce needs. Our software provides the following product scopes:

  • Authentic and secure registration for the customers.
  • Specific product details with categorizations of products.
  • Easy and quick product searching facilities are available.
  • Creating a shopping cart so that customers can buy multiple items at a time.
  • Regular updates to registered customers about new arrivals and offers.
  • Graphical representation for administrators about the most popular items in each category.
  • A feedback mechanism, where customers can give feedback for the product they purchased.

1.5 Risk Definition:

Every adventure comes with its challenges, and we're prepared. Here are the risks we've identified:

  • Online Security Breach: One of the biggest problems that come with the online world is its security risks. Think of it like guarding a castle. We need robust security to protect against hackers who might try to sneak in and access sensitive data. Hackers can breach the network and gain unprecedented access to sensitive information such as company data and customer’s credit card information. Our e-commerce website must be adequately protected.
  • Client Disputes: Sometimes, customers might not be happy. It's like handling a friendly disagreement. We're ready to address issues like refunds and ensure customer satisfaction.
  • Seller Disputes: Just like in a traditional store, we might face challenges with the seller. We're keeping an eye on timely deliveries and maintaining a smooth relationship with our vendor.
  • Shipment Problems: Ever had a package arrive late or damaged? We get it. Our focus is on ensuring reliable and timely deliveries, avoiding issues like high fees or damaged goods.
  • Credit Card Scams: Picture it as protecting your wallet. We're putting measures in place to prevent unauthorized credit card use and ensure safe transactions.

2. Overall Description

2.1 User Classes and Characteristics

  • Customer: Users who will buy products from the website.
  • Registered User: Users who will create an account and log in to the website.
  • Normal User: Users who will not create an account.
  • Admin: Who will monitor all user-related content like add product, remove product, etc.
  • Developer: Users who will maintain and develop the e-commerce website.

2.2 User Needs

  • Efficient Shopping Experience: Sometimes many people do not have enough time to go shopping. Through this system, they can have a convenient and time-efficient shopping experience; they can easily find and purchase their desired products from the comfort of their homes.

  • Product Requests and Customization: Users can request specific products that may not be available in the system. This feature enhances user satisfaction by providing a personalized shopping experience.

  • Transparent Pricing and Policies: Users will get clear and transparent pricing, along with detailed product information. The system will also have return and refund policies.

  • Secure Transactions: Secure payment gateways will be integrated to protect users' financial information during transactions.

  • Customer Support: User will get a responsive customer support system. Multiple communication channels such as chat, email, and phone support will be available to ensure that users receive timely assistance.

2.3 Operating Environment

  • Node.js and Express.js will run on the JavaScript runtime environment and Node Package Manager (npm)
  • At first, it will operate on Google Chrome and Microsoft Edge.
  • For the client side, the operating system of end-user devices (Windows, Android, macOS, Linux).
  • We also use Windows for the server-site but it’s good to use Linux for server site.
  • Need CORS configurations to handle requests from different ports.
  • We will use MongoDB as a database for storing data in our project.
  • We will use GitHub for Distributing the data.

2.4 Constraints

  • Technology Constraints: Use the latest version of node.js, react, and the npm packages we will install into our system.
  • Database Constraints: Use MongoDB atlas database because it is “NoSQL” and it’s an online version so that different collaborators can access this database easily.
  • Internet Constraints: An Internet connection is always required while working on the system. One of the main reasons of it that we use an online MongoDB database.
  • Developer Constraints: Developer should need proper knowledge about React,Node.js.
  • Security Constraints: Secure our API so that other people use the API and can’t get essential data from our system, also secure our router so that unauthorized users can’t see web pages. When a user registers an account then his password can’t be directly written into the database use the npm package called “bcrypt” for hashing password.

2.5 Assumptions

Provider’s Perspective:

  • We have assumed that our site will be running on a properly working web server and database system with an Internet connection that allows this system to perform all communications with clients.
  • We have assumed that regular backups of the database are performed to prevent data loss in the event of system failures or other unexpected circumstances.

Client’s Perspective:

  • Users are expected to have a stable internet connection for optimal site performance.
  • We have assumed that all of our clients have at least one smartphone to browse this site.
  • The users are capable of registering and logging in to their accounts on this online platform.
  • Users are assumed to have access to email or phone numbers for order updates, promotions, and important announcements.

3. Requirements

3.1 Functional Requirements

Searching/ Sorting Products:

As a customer, I want to search for products so that I can find my required product easily.

Success:

  1. The user can search his/her product by product name.
  2. The user can search his/her product by category name.
  3. The user can search his/her product by brand name.
  4. The user can filter his/her products by
    • Price Range.
    • Categories
    • Skin Type
    • Best Selling
    • Rating
  5. When a searched product is out of stock, users are presented with similar alternative products.
  6. The alternative products are relevant to the original search and meet the user's requirements.
  7. Users can easily navigate to view and purchase the suggested alternative products.

Failure:

  1. If the user encounters any technical issues during the search or filtering process, the user receives an appropriate error message.
  2. If the user has a poor internet connection, the user receives a notification suggesting, “Please check your internet connection”.

Compare Between Products:

As a customer, I want to compare products by searching so that I can make informed purchase decisions.

Success:

  1. Users can select multiple products and compare their features side by side.
  2. The comparison results are displayed in a clear and understandable format, highlighting the differences between the products.

Failure:

  1. If users are unable to compare products seamlessly or if the comparison results are not presented effectively, the user receive a message accordingly.
  2. If the user encounters any technical issues during comparison, the user receives an appropriate error message.
  3. If the user has a poor internet connection, the user receives a notification suggesting, “Please check your internet connection”.

Product Description:

As a customer, I want to see the description of products to make purchase decisions.

Success:

  1. Users can see the detailed product descriptions that provide a clear understanding of the product.
  2. The user can see the ingredients and materials of that product.
  3. The user can see the using procedure of that product.
  4. For skin and hair care products, the user can see the specific skin or hair types for which the product is suitable.
  5. Video description will also be added.

Failure:

  1. If the user has a poor internet connection, the user receives a notification suggesting, “Please check your internet connection”.
  2. If a product description is unavailable, a user should see a clear message indicating that information is currently not available and provide an option to be notified when it becomes available.

Product Recommendation:

As a Customer, I want to see recommended products so that I can choose the best option easily.

Success:

  1. The user can see the recommended products according to his/her skin type.
  2. The user can see the recommended products according to his/her age.
  3. The user can see the recommended products according to his/her skin and hair concerns.

Failure:

  1. If there are no suitable product recommendations available for the user's skin type, the user receives a message “No Product found” and offers alternative suggestions, such as browsing products by category.
  2. If technical issues are preventing the generation of product recommendations, the user should receive an error message and instructions for troubleshooting or contacting customer support.
  3. If the user has a poor internet connection, the user receives a notification suggesting, “Please check your internet connection”.

Order Method:

As a customer, I want to quickly and effortlessly place an order for the selected products so that I can complete the purchase easily, quickly, and effortlessly.

Success:

  1. Multiple products can be selected.
  2. The number of each product can be selected.
  3. Products can be added to the shopping cart.
  4. Can do pre-orders for a product.

Failure:

  1. The product is stocked out.
  2. No internet connection.
  3. This page can’t be loaded.

Payment Method:

As a customer I want to have a secure and smooth payment method for my orders so that I can complete the transaction effectively without any hassle.

Success:

  1. Credit Cards can be used for payment.
  2. The Bkash account can be used for payment.
  3. Cash on delivery is allowed.
  4. A confirmation message will be sent to the customer.
  5. An e-receipt will be sent to the customer via mail.

Failure:

  1. Showing the message -“Enter a valid mobile no or Mail address”
  2. Showing the message -“The selected District/ City/ Area/ Postal Code is not valid”
  3. Showing the message -“The applied coupon is not valid”
  4. The card is declined
  5. There is no Bkash account for this number or don’t have sufficient balance
  6. No internet connection
  7. This page can’t be load

Purchase History:

As a registered customer, I want to easily view and track my purchase history So that I can see past orders.

Success:

  1. All the purchase history will be shown at the respective time.

Failure:

  1. No internet connection
  2. This page can’t be load

Shopping cart method:

I want to have a cart so that I can keep track of the product that I have chosen to buy.

Success:

  1. Selected products are added to the cart.
  2. The number of selected products can be increased or decreased.
  3. A list of products is shown in the cart if the user adds more than one product.
  4. The total price of the products is shown below.
  5. The checkout button is used to proceed with the payment.

Failure:

  1. No internet connection
  2. Product stock out!
  3. Can’t remove product because of failure of internet connection
  4. Can’t remove the product from the cart because of some coding issue that may happen.

Wishlist method:

I want to have a wishlist so that I can save the collections of desired products in my user account, signifying interest without immediate intent to purchase.

Success:

  1. Add product to wish list successfully.
  2. See all items added to the wish list.
  3. Change the status of out-of-stock products.

Failure :

  1. Poor internet connection.

CRUD Operation:

As a seller, I want to see available products, add new products, update existing products, and delete a product from the database easily, quickly, and effortlessly.

Success:

  1. Can see products in stock.
  2. New arrival products can be added.
  3. Can update the details of a product.
  4. A specific product can be deleted.

Failure:

  1. Showing the message “Please fill out all the required fields information.”
  2. No database connection.
  3. Showing the confirmation message “Delete this product.”

Dashboard:

As a seller, I want to see the visual representation of the daily, and monthly selling rates of each product. Strategic data and about the most popular items in each category.

Success:

  1. Can see the most popular product list.
  2. Can see the total number of users.
  3. Can see the total number of products.
  4. Can visualize brand-wise products chart
  5. Can visualize Category/subcategory-wise product chart
  6. Selling rates with time will be displayed.
  7. Most selling price rates will be displayed.
  8. Reviews and ratings of the brand will be displayed.

Failure:

  1. No database connection.
  2. Please connect to the internet.

Product Status:

As a user, I want to see the product status whether it is available or not in stock.

Success:

  1. Available products will be displayed as “In Stock”.
  2. Product Quantity will be displayed.
  3. The number of sales on a particular product will be displayed.

Failure:

  1. Please connect to the internet.
  2. Unavailable products will be displayed as “Out of Stock”.

Ongoing Offer:

As a user, I want to see the ongoing offers easily so that I will be benefited.

Success:

  1. You can check the ongoing offer.
  2. You can recommend any offer on a specific product.
  3. You can get notifications on new offers.

Failure:

  1. Please connect to the internet.
  2. Please log in to see ongoing offers.
  3. Not available no offer on this product.

Chatbot Method:

As a customer, I want to easily communicate with the service team through a chatbot so that I can gather additional information about the products I am interested in.

Success:

  1. Users can ask specific questions about a product, such as its feature specifications and availability.
  2. The User Can directly speak with the service team about the product through a phone call.
  3. The user will get accurate and relevant information about the products.

Failure:

  1. Please connect to the internet
  2. Please log in first to chat with the service team.
  3. Something went wrong please try again later.

Rating Method:

As a customer, I want to be able to easily provide feedback by rating a product so that I can share my experience with other potential buyers.

Success:

  1. The user can give a rating for a product.
  2. User can select a star rating from 1 to 5 (1 being the lowest and 5 being the highest).
  3. Users can write a short review of a product.
  4. The overall product rating will be updated to reflect the new rating given to the product. Other users will be able to view and consider this updated rating when evaluating the product.
  5. Current/ recent ratings will be shown first in the rating list.

Failure:

  1. Please connect to the internet.
  2. Please log in first to add a rating.
  3. Something went wrong please try again later.

3.2 Nonfunctional Requirements

Performance Requirements:

  1. For signing up in the website user need get a confirmation link in their mail within 30 sec.
  2. For signing in process, it need to be done within 30-40 sec.
  3. Pages need to be loaded within 3 sec.
  4. Optimize product images and descriptions for faster loading times.
  5. Ensure search results are relevant to user queries and display accurate product information.
  6. Credit card / Bkash account validation must be done within 5-10 sec.
  7. User get a confirmation message within 1 min for each purchase.
  8. Support 200 customer logged at the same time.
  9. Ensuring website is responsive and optimized for mobile devices.
  10. Using a high performance hosting service with enough resources.

Safety Requirements:

  1. Regularly backup data and have a disaster recovery plan as database may get corrupted due to virus or crash of operating system.
  2. Implement a web application firewall (WAF) to filter and block malicious traffic and prevent common web attacks.
  3. Regularly scanning the website to find out the vulnerabilities and find out the remedy.

Security Requirements:

  1. Prioritizing data security and protect sensitive user information including financial details and personal data.
  2. Implementing multi-factor authentication for additional security.
  3. User can only update or change their personal information but can’t have the access to the main database.
  4. Using strong password policies and restrictive access.
  5. Website should be secure from cyber-attacks and data breaches.

Quality Requirements:

  1. The system need to be easy to use.
  2. Easy to operate.
  3. Use mobile-friendly design elements and layouts and implement fast loading times for mobile user.
  4. The system provide multi language support.
  5. The system provide high quality and clear images and videos to represent products.
  6. Information about shipping, returns, and customer service should be readily available.
  7. Provide responsive and helpful customer support and resolve customer inquiries and issues promptly and efficiently.
  8. Analyze website data and user feedback to identify areas for improvement.

Accessibility Requirements:

  1. User with disability can easily access to the website without any hassle.
  2. Provide assistive technology alternative text for images using semantic HTML markup without using any CAPCHAs for the users who are disable or old.

Maintainability Requirements:

  1. Website needs to be designed for easy update and maintenance.
  2. Having well-structured code & clear documentation.

Appendices

Glossary:

  • npm - npm is a package manager for the JavaScript programming language. It is used to manage and share packages of code written in JavaScript.
  • macOS - macOS is an operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac computers.
  • CORS - CORS stands for Cross-Origin Resource Sharing, which is a mechanism that allows web browsers to request resources from different origins (domains, protocols, or ports) than the one that the page is loaded from.
  • MongoDB - MongoDB is a popular database software that supports a variety of use cases and data formats. It is based on a document data model that allows us to store and query data in JSON-like documents.
  • API - An API, or application programming interface, is a set of defined rules that enable different applications to communicate with each other. It acts as an intermediary layer that processes data transfers between systems, letting companies open their application data and functionality to external third-party developers, business partners, and internal departments within their companies.
  • Bcrypt - The bcrypt npm package is a JavaScript implementation of the bcrypt password hashing function that allows you to easily create a hash out of a password string.
  • WAF - Web Application Firewall
  • CRUD - CRUD is an acronym for Create, Read, Update, and Delete, the four fundamental operations of data storage.
  • CAPTCHA - CAPTCHA is a type of challenge–response test used in computing to determine whether the user is human in order to deter bot attacks and spam.