Prod[01]: Functional Requirement Specification (FRS) for Hotel Reservation App

Automate This. By Mrigank Saxena
4 min readFeb 26, 2025

--

Image by freepik

Alright, imagine you’re building a payment app or a hotel reservation system (or literally any software). You have the idea, a great development team, and a deadline. But how do you ensure that everyone — developers, testers, stakeholders — understands what needs to be built exactly the same way?

That’s where the Functional Requirement Specification (FRS) comes in. Think of it as the blueprint for your project.

1. Avoids “I Thought You Meant That!” Moments

Ever played Chinese whispers? One person says something, but by the time it reaches the last person, the message is completely different. Without an FRS, software development works exactly like that. Stakeholders expect one thing, developers build another, and testers are left wondering what’s right.

2. Sets Clear Expectations for Everyone

An FRS defines what the system should do, covering features, user interactions, and system behavior. This ensures that:

  • Developers know what to build
  • Testers know what to test
  • Stakeholders know what they’ll get

No assumptions, no guesswork — just clarity.

3. Saves Time, Money & Frustration

A missing feature or a last-minute change can be costly. If you don’t document requirements upfront, expect endless revisions, miscommunication, and delays. With an FRS, you lock in the requirements early, reducing rework and keeping development on track.

4. Acts as a Reference for Future Enhancements

Think long-term. You might release version 1.0 today, but what about future updates? The FRS helps new developers understand how the system was originally designed, making it easier to add new features without breaking things.

5. Ensures Compliance & Security

For apps dealing with payments, user data, or security regulations, the FRS is critical. It defines how the system should handle sensitive information, ensuring compliance with standards like PCI-DSS (for payments) or GDPR (for data protection).

Bottom Line? You NEED an FRS!

Without one, software development is a mess of misunderstandings, rework, and delays. With an FRS, you get clarity, efficiency, and a solid foundation for your project, here is an example of how one looks like

1. Introduction

1.1 Purpose

The purpose of this document is to outline the functional requirements for the Hotel Reservation App, which allows users to search, book, and manage hotel rooms efficiently. The system will also handle payment processing and support multiple payment methods.

1.2 Scope

The application will allow users to:

  • View available rooms
  • Book a room
  • Cancel bookings
  • Process payments via different methods
  • Manage user profiles

This app will be designed using Object-Oriented Programming (OOP) principles, integrating Encapsulation, Inheritance, Polymorphism, Abstraction, and Composition.

2. Functional Requirements

2.1 User Management

  • The system shall allow users to register and log in.
  • Users shall be able to update their profile details (name, email, phone number).
  • Users shall be able to view their past and upcoming bookings.

2.2 Room Management

  • The system shall allow users to search for available rooms.
  • Rooms shall have attributes such as room type (Single, Double, Suite), price, availability, and features.
  • The system shall allow hotel administrators to add, remove, or update room details.

2.3 Booking Management

  • Users shall be able to select an available room and make a booking.
  • The system shall mark the room as booked (unavailable) after successful booking.
  • Users shall be able to cancel a booking, making the room available again.
  • Users shall receive booking confirmation details via email or notification.

2.4 Payment Processing

  • The system shall support multiple payment methods, including:
  • Credit/Debit Card
  • UPI Payments
  • PayPal
  • An abstract class shall manage different payment methods.
  • The system shall ensure secure payment processing and provide payment confirmation receipts.

2.5 Reservation Service

  • The ReservationService class shall manage the booking process.
  • It shall allow users to choose any available payment method.
  • It shall confirm room availability before processing payments.

2.6 Booking Records & History

  • The system shall store all booking details linked to a user’s profile.
  • Users shall be able to view their booking history.

3. Non-Functional Requirements

3.1 Performance

  • The system shall process room availability checks in under 2 seconds.
  • Payment transactions shall be completed within 5 seconds.

3.2 Security

  • User data shall be encrypted and stored securely.
  • Payment processing shall comply with PCI-DSS standards.

3.3 Availability & Scalability

  • The system shall support multiple concurrent users without performance issues.
  • The backend shall be designed to handle high traffic efficiently.

4. System Architecture Overview

Class Design

  1. UserProfile → Manages user information
  2. Room → Represents hotel rooms
  3. Booking → Manages reservations
  4. PaymentProcessor (Abstract Class) → Defines payment structure
  5. CreditCardPayment, UpiPayment, PayPalPayment → Handle specific payment methods
  6. ReservationService → Handles booking and payments
  7. Main → Runs the application

5. Assumptions & Constraints

  • Users must register before making a booking.
  • A valid payment method is required to confirm a booking.
  • Rooms are assigned on a first-come, first-served basis.

6. Notifications & Types

The system shall notify users regarding important events through different channels:

6.1 Notification Types:

  • Booking Confirmation: Sent via email and in-app notification when a booking is completed.
  • Payment Success/Failure: Notifies users if the payment is successful or failed.
  • Booking Cancellation: Sends confirmation when a booking is canceled.
  • Upcoming Stay Reminder: Notifies users a day before their check-in date.
  • Promotional Offers: In-app notifications for discounts and special deals.

6.2 Notification Methods:

  • Email Notifications — Sent for confirmations, cancellations, and reminders.
  • Push Notifications — Sent for real-time updates on booking status and offers.
  • SMS Alerts (Optional) — Can be enabled for critical notifications like payment failures.

This will serve as a reference point for us when creating automation suites in the future.

--

--

Automate This. By Mrigank Saxena
Automate This. By Mrigank Saxena

Written by Automate This. By Mrigank Saxena

Join me as I share insights, tips, and experiences from my journey in quality assurance, automation, and coding! https://www.linkedin.com/in/iammriganksaxena/

No responses yet