Assignment (Software Engineering)
Question: Conduct a case study of your preferred choice by applying the Waterfall
Model.
NOTE: For your reference, please review the case study provided below.
Case Study: Railway Reservation System Using Waterfall Model
Objective
To design and implement a Railway Reservation System using the Waterfall Model, covering
the phases of software development: Requirement Analysis, System Design, Implementation,
Testing, Deployment, and Maintenance.
Phase 1: Requirement Analysis
Functional Requirements
1. User Registration and Login
o Users can register with personal details and create an account.
o Users log in with their credentials.
2. Search for Trains
o Search trains by source, destination, and date of travel.
3. Reservation and Ticket Booking
o Book tickets by selecting the train and class (AC, Sleeper, etc.).
o Generate a unique ticket ID.
4. Cancellation
o Users can cancel booked tickets and get a refund based on cancellation rules.
5. Admin Functions
o Admin can add, update, or remove train schedules.
o View reports on bookings and revenue.
Non-Functional Requirements
• System should be user-friendly.
• Ensure data security for user credentials and transactions.
• High availability and reliability of the system.
Phase 2: System Design
Architectural Design
• Use a three-tier architecture:
1. Presentation Layer: User Interface (web or app).
2. Business Logic Layer: Handles booking logic, train searches, etc.
3. Database Layer: Stores user data, train schedules, and booking details.
Modules and Flow
1. User Module: Register, Login, Profile.
2. Train Module: Search trains, View schedules.
3. Booking Module: Reserve, Cancel, View ticket.
4. Admin Module: Manage trains, View reports.
ER Diagram
• Entities: User, Train, Booking, Admin.
• Relationships:
o A User books multiple Tickets.
o A Train has multiple Schedules.
o Admin manages Trains and Reports.
Phase 3: Implementation
Tools and Technologies
• Frontend: HTML, CSS, JavaScript (for web-based interface).
• Backend: Python/Java/C++.
• Database: MySQL.
Sample Code for Booking Functionality (Python) ………….(Optional)
import sqlite3
def book_ticket(user_id, train_id, travel_date, class_type):
conn = sqlite3.connect('railway.db')
cursor = conn.cursor()
# Check seat availability
cursor.execute("SELECT available_seats FROM trains WHERE train_id=? AND
travel_date=?", (train_id, travel_date))
seats = cursor.fetchone()
if seats and seats[0] > 0:
# Book ticket
cursor.execute("INSERT INTO bookings (user_id, train_id,
travel_date, class_type) VALUES (?, ?, ?, ?)",
(user_id, train_id, travel_date, class_type))
# Update seat availability
cursor.execute("UPDATE trains SET available_seats = available_seats
- 1 WHERE train_id=? AND travel_date=?",
(train_id, travel_date))
conn.commit()
print("Ticket booked successfully!")
else:
print("No seats available.")
conn.close()
Phase 4: Testing
Test Cases
1. User Registration
o Verify if new users can register successfully.
o Validate form inputs (e.g., email format, password strength).
2. Train Search
o Test searching trains by various criteria (source, destination, date).
3. Booking
o Check booking process for available seats.
o Validate ticket generation.
4. Cancellation
o Verify if cancelled tickets update the seat availability.
Phase 5: Deployment
• Deploy the system on a web server or host it on the cloud (e.g., AWS, Azure).
• Ensure proper configuration for database and server communication.
Phase 6: Maintenance
• Regularly update train schedules.
• Perform database backups and monitor system performance.
• Fix bugs reported by users and add new features (e.g., mobile app integration).
Solution Benefits
• Scalability: Supports large user base and train schedules.
• Efficiency: Automates ticketing and reduces manual effort.
• Reliability: Ensures data consistency and security.