System Design of Retail Management System

Do not miss this exclusive book on Binary Tree Problems. Get it now for free.

In this article, we will take a look at the key features a retail management system needs to offer, its high-level, low-level design, database design, and some of the already existing retail management systems.

Table of Contents

  1. Retail Management System
  2. System Requirements
  3. High-Level Design
  4. Low-Level Design
  5. Database Design of Retail Management System
  6. Leading Retail Management Systems

Retail Management System

A Retail Management System (RMS) is a platform that aggregates the control of all processes of the retail business: from inventory flow to employee management and accounting software. Combining different modules in a single system is useful to improve collaboration between departments and, what is most important, to allow better control of inner processes to increase overall business efficiency.
The exact number and content of modules vary depending on the business, but in general, RMS includes or allows integration with the following modules:

  • Point of sale (POS) features
  • Customer Relationship Management (CRM)
  • E-commerce
  • Inventory management
  • Employee management
  • Accounting
  • Analytics and reports

System Requirements

An adequate Retail Management System helps to increase business revenue and the level of customer satisfaction, as well as enhance the management experience by introducing a set of key features and consolidating in one place the data and control flow. The main requirements of the RMS are based on the business expectations, from which functional and non-functional requirements derive.

Functional Requirements

Retail Management System has a modular nature, so it is logical to address requirements to different modules (some of the modules can be integrated into RMS as stand-alone solutions):

  • Point of sale - manages sales in a retail store

    • Scan item barcode and load the item info from the system
    • Allow manual input and search of sale item
    • Record sale, return, and exchange to the database
    • Accept payment by cash, credit cards, iPay
    • Print invoice
  • Customer Relationship Management - consolidates information about customers

    • Save and store customer information (name, date of birth, contact info, client id, password)
    • Apply client's discount levels
    • Automate marketing and customer satisfaction analytics
  • E-commerce - manages an online store

    • Add item to the catalog (manually or from file)
    • Update item in the catalog
    • Show sale items info
    • Record online orders
    • Allow online payment
    • Connect customer with the sales manager for consultation
  • Inventory management - track goods throughout the supply chain

    • Remove or add items from the store
    • Remove or add items to the warehouse
    • Ship items between stores
    • Ship items to customers
    • Order supplies
  • Employee management - automate HR tasks

    • Store information about employees
    • Track employees' attendance
    • Manage absence and leave requests
    • Collect productivity data
    • Manage payments
    • Manage employee accounts permissions
  • Accounting - transfer data to the accounting department/software and import approved reports

    • Integrate with accounting software
  • Analytics and reports - consolidate data from all active modules for reports and dashboard

    • Collect data from modules
    • Run informative dashboard
    • Provide templates for periodic reports
    • Allow custom reports creation

The use case diagram below summarizes the conceptual areas of application of the Retail Management System and interaction between customers, sales department, warehouse, accounting department, and the manager of the retail business.

Non-Functional Requirements

Non-functional requirements define requirements to the system as a whole and should be considered with attention before approaching the architecture phase, as introducing changes in later stages will be difficult.

Usability
The Retail Management system is required to have a simple and user-friendly interface, and allow to customize the interface and dashboard for individual users. The system must fully support languages that business operates on and allow to import and export of data in .csv and spreadsheet file formats.

Interoperability
The System must allow integration and partial replacement of sub-modules.

Data integrity
All data about sales, orders, client information, and other must be accurate and consistent over the entire life cycle.

Environmental
The system must require minimum resource usage for its maintenance to comply with the principles of sustainability.

Security
The system restricts access to client data, analytics, and reports to only authorized users. The rights to add or correct data must be restricted for individual employees. Financial data must be secured with two-factor authentication. Data relative to the latest operational year must be duplicated on a reserve server.

Maitainability
System maintenance must run without shutting down or in automated mode during non-working hours.

Capacity
The system must be capable of handling 100 employee accounts and 10000 orders per day without affecting its performance.

Availability
The availability of the system must be not less than 99.999% during the retail working hours, and not less than 95% round-the-clock for the e-commerce module.

Scalability
The system must support implementing new features and modules without disrupting existing processes. The system must support horizontal scaling for launching new retail stores with multiple POS.

Software Requirements

Software requirements specification (SRS) is the description of the software system that is going to be developed, it is made at the latest phase of analysis, after the functional and non-functional requirements. This document should give a detailed representation of the system and serve as the basis for the establishment agreement between the customer (who is the system developed for) and the developing team. It is important to take time to write software requirements with consideration before approaching the design stage to clarify beforehand future misunderstandings and to make a product that best answers to customers' needs.

The goal of the Retail Management System is to provide an application for Retail System staff and owners to control business processes in retail chains and online stores. The RMS system integrates business processes from cataloging and tracking inventory, managing sales in stores and on an online store, and storing clients' and personnel's info. The system is subdivided into replaceable modules RMS POS, RMS CRM, RMS E-commerce, RMS IM, RMS EM, RMS AC, and RMS AR.

The system requires a stable Internet connection to handle online shop requests, as well as to communicate between different departments and database servers. The number of simultaneous employees supported is not less than 100, and the number of POS terminals to be supported is not less than 50 for the medium size retail chains. The performance - 90% of database transactions called from the client-side shall be processed in less than 1 second.

An RMS actor should see the log-in page on opening an application, the log-in account and password for the staff members will be created by the business owner/administrator, and the clients can register at the online shop.
The main view of the application should show a customizable dashboard, access to modules should be restricted depending on the department of the employee. The help button should give immediate access to the product documentation.

The development of the system is based on the following technologies:

  • To run the system, servers with Windows Server/Linux OS are required.
  • For the backend part, a scalable programming language supporting multi-threading like Java, Node.js, or PHP is required.
  • User interface should be developed with modern front-end frameworks like React/AngularVue/jQuery.
  • Data should be stored in relational DBMS PostgreSQL/MySQL/Microsoft SQL Server.

High-Level Design

After analysis of the requirements, a high-level design stage begins when the system architecture is described without diving into details.

For Small Retailers

For the small retailers, a simple architecture will fulfill the requirements without burdening the budget.

Option 1 - On-premises system architecture

In the example set-up, implementation includes a web-server for managing requests to web-store from the outer network and personnel requests to the RMS application from the inner/outer network, the back-end server that runs the application, and the database cluster to store and back up data.

Another, more preferable option is to cut off all work with the hardware (buying, setting up, administering servers, running updates) and to organize the system based on cloud services. For example, Amazon Web Services (AWS) provides reliable and scalable up and down infrastructure.

Option 2 - Cloud-based system architecture

The example set-up includes DNS service via Amazone Route 53, CloudFront (content delivery network) which is a global network of edge locations that will route the requests to the nearest edge, and durable storage resource for static content (Amazone bucket S3). The dynamic requests are routed through a load balancer to the amazon web servers (Amazon EC2), and another load balancer manages communication between web servers and application servers (Amazon EC2). Finally, Amazon RDS storage works as a database with synchronous replication. Each element of this architecture is supported on failing (for example, if one web server fails, another takes its job), and the servers are auto-scalable.

For Large and Medium Retail Chains

The management system for the large and medium retailers should include the potential for growth with an increasing number of customers/departments, as well as be efficient from an economical point of view. The basic on-premises architecture can not accommodate the needs of growing numbers of customers and stores, as the vertical upscaling has upper boundaries in terms of money/efficiency growth. The cloud-based architecture scales well but might become too costly for a large number of client requests. So, depending on the size of the retailer and growth potential, another design approach has to be used.

On-premises system architecture

With the example architecture above, horizontal scalability is provided by adding such key elements as requests load balancers, multi clustered servers, and splitting locations of data servers.

  • Load balancers route requests to the web-servers (can add multiple web-servers, with support of failing servers), web-servers are connected to the application servers (back-end, also can add multiple servers with support of failing ones).
  • Application servers ask for and store data in the main database, and another database stores a synchronous data replica.
  • Additional layer between application servers and data storage is cached data, which helps to speed up data loading.
  • Another key component is a separate server for authentication that handles authentication requests with optimal speed.

Such architecture allows scaling up and down, and does not rely on the third-party cloud services, which is especially important if cloud services are based in a country with different laws.

Low-Level Design

In the Retail Management System application, different classes represent real business processes and categories. Main actors and actions are represented by the following classes:

/**
 * Person abstract class represents all participants of the retail business from customer to staff side.
 */
abstract class Person {
	int ID;
	String firstName;
	String lastName;
	String birthday;
	String phoneNumber;
	String email;
	String registrationDate;
    String login;
    String passwordHash;

	public void login(String ID, String password) {}; 
	public void logout() {};
}

/**
 *	Customer can order and buy items from the store on place or online
 */
class Customer extends Person {
	List<Item> cart;
	
	public void order(List<Item> items) {};
	public void buy(List<Item> items) {};
	
}

/**
 *	Retail system personnel is represented by Staff abstract class 
 */
abstract class Staff extends Person {
	String position;
	Double kpi;
}

/**
 * Sales representative can serve customers in the store and manage store inventory.
 */
class Salesman extends Staff {
	
	SaleService saleService;
	
	public boolean addItem(Item item) {};
	public Item updateItem(Item item) {};
	public Item removeItem(Item item) {};
	
	public Customer registerNewCustomer(){};
}

/**
 * SaleService class represents an interaction between sales staff and customers.
 */
class SaleService{
	public BigDecimal calculateTotal(Customer customer) {};	
	public BigDecimal calculateTotal(List<Items> items) {};
	public ReturnDetail returnItem(Item item) {};
	public ExchangeDetail exchangeItem(Item item) {};
	public SaleDetail saleItem(Item item) {};
}

/**
 *	Members of the sales department can be assigned to update the online catalog
 *	and connect with customers 
 */
class OnlineSalesman extends Salesman {
	public boolean updateCatalogue() {};
	public void consult (Customer customer) {};
}

/**
 *	Logistic services are controlled by Warehouse staff
 */
class WarehouseMan extends Staff {
	ShipService shipServise;
}

/**
 * ShipService class represents the delivery of items to clients and shipment between storages.
 */
class ShipService{
	public ShipDetail shipItem(Item item) {};
}

/**
 * Accounting department gets additional privileges to view Data from other departments
 */
class Accountant extends Staff {
	public void viewData() {};
}

/**
 * Manager/owner of the retail system has a unique set of functions to control personnel
 */
class Manager extends Staff {
	public void hire (Staff staff, Accountant accountant) {};
	public void giveRaise (Staff staff, Accountant accountant) {};
}

Main functional buildings include warehouses, stores, and points of sale as parts of stores:

/**
 *	Store class represents a single store from the retail chain, identified with a unique ID
 */
class Store {
	String storeID;
	String address;
    String phone;
    String firstOpen;
	Staff manager;
	
	List<PointOfSale> pos;
	List <Staff> staff;
	List <Item> itemsInStore;
}

/**
 *  Each of the points of sales in the store is assigned to the sales operator.
 */
class PointOfSale{
	String id;
	Salesman salesman;
	
	PointOfSale(Salesman salesman){};
	
	public Item scanBarecode() {};
	public Item searchItem() {};
}

/**
 *	Warehouse class represents a single warehouse at a unique address.
 */
class Warehouse {
	String warehouseID;
	String address;
	
	List <Staff> staff;
	List <Item> itemsInWarehouse;
}

The retail system sells products, each product is added to the catalog, and the information about it can be accessed through the online shop or at the POS system. Main fields include id, description, manufacturer info, photo, and price:

/**
 * Item of sale, can be entered into the system manually or exported in bulk from spreadsheets.
 */
class Item {
	String itemId;
    String name;
	String description;
	String producer;
	BufferedImage img;
	BigDecimal price;
}

The system of operation details allows to create, update and retrieve information about customer-staff interactions for sales or shipments:

/**
 *	Possible outcomes of running a business operation
 */
enum OperationStatus{
	COMPLETE,
	IN_PROGRESS,
	CANCELLED	
}

/**
 * OperationDetail represents information about a single operation, 
 * can be printed on the invoice or sent via email.
 */
class OperationDetail{
	String date;
	String time;
	OperationStatus status;
}

/**
 * Subclass of OperationDetail specifying sale.
 */
class SaleDetail extends OperationDetail{
	Item item;
	BigDecimal salePrice;
}

/**
 * Subclass of OperationDetail specifying shipment.
 */
class ShipDetail extends OperationDetail{
	Item item;
	String destination;
	String deliveryDate;
	String deliveryTime;
}

/**
 * Subclass of OperationDetail specifying item return.
 */
class ReturnDetail extends OperationDetail{
	Item itemReturned;
	String returnReason;	
}

/**
 * Subclass of OperationDetail specifying item exchange.
 */
class ExchangeDetail extends ReturnDetail{
	Item itemExchanged;	
}

Inheritance in Java allows adding new features to the application without changes in existing classes and interfaces, which is useful for the long life cycle of the application.

Database Design of Retail Management System

The retail management system uses an SQL-based database like MySQL or Postgre and includes tables for main business entities and the link tables between them.

Products relation stores information about all items in the retail catalog, as well as the current price of the products.
Customers relation stores the customer base of the retailer, some of the customers may register at the online shop and set up a username and password. At the online shop, they are free to add items to the virtual cart, which will be stored in the database for the later orders.
Each customer can buy or order one or multiple products, which will be registered in orders and order-products relations. Detailed information about payments status is stored in a payments relation. In case if client requests delivery, it is registered as a task in shipment relation.
Staff relation contains data about employees, each of them can be placed in one of the stores and assigned a manager.
Stores relation contains data about running stores and warehouses, and stocks relation shows the products available at each of the stores.

The products and stocks relation is going to be requested most often, so they will be indexed to improve search speed by product name, description, or store.

Leading Retail Management Systems

When it comes to the Retail Management System, there are two options to choose from that both have pros and cons: either to put time and money into the development of the own system that perfectly suits all needs of the business or to rely on the existing software solutions. And for the second option, there are hundreds of products on the market to choose from: some are more simplistic and targeted at the smaller businesses, some are targeting larger and bigger scale retail chains, some are completely cloud-based solutions with decent monthly pay, and some are promising to give support to accommodate product for the business needs.
Below are the short descriptions of the most reviewed retail management systems:

Heartland Retail - user-friendly cloud POS and Retail Management platform with comprehensive tools for the growth. Allows scaling up and down and nice features like mobile POS, multi-store inventory lookup, real-time sales dashboard, custom fields, and reports.

Similar cloud-based solutions to look at are Rain Retail and Lightspeed Retail.

Dynamics 365 from Microsoft - product unites solution for sales management, marketing engagement, service delivery, agile finance management, as well as managing supply chains, powered up with AI. This is a quite complicated product that provides multiple tools, but has a steep learning curve and requires fast ethernet connection. Another concern with cloud-based RMS is retrieving data in case one wants to move to another RMS, as in some cases providers don't give options for doing so.

Retail Pro is a software platform with an adaptive user interface and features for POS, inventory management, customer management, performance, and KPI reports. The nice thing is that product allows leveraging API to connect with third-party solutions.

CIN7 is another cloud-based solution that positions as an inventory and order management software. The key feature is integrating with third-party products like e-commerce marketplaces(Amazon, eBay, etc.), shipment services (SOS Logistics, Shipwire, Shiphero, etc.), or other tools.

Overall, there is a vast variety of Retail Management System products to choose from, so depending on the business this might be the first option to look at.

With this article at OpenGenus, you must have a strong idea of the System Design of the Retail Management System.

Sign up for FREE 3 months of Amazon Music. YOU MUST NOT MISS.