Skip to main content

Introduction and use case

This tutorial will guide you through the initial steps of designing and building a web-ready applicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution. named 'euRent', a car rental management systemSystemA set of interconnected components that work together to achieve a specific purpose or function.. We will use the Normalized SystemsSystemA set of interconnected components that work together to achieve a specific purpose or function. (NS) approach and NSX tooling such as NS Initializer and the Micro RadiantMicro Radiant (MicroRadiant). The graphical modeling IDE and tooling environment used to design, edit, and maintain NS applications and project models. (μRadiant) modeler, to create a minimal implementation of an NS applicationNS Application (NSApplication). A pre-built software stack that provides common enterprise application functionality such as CRUD, search, authentication, and business process modeling out of the box..

The Normalized Systems Approach​

The core motivation behind Normalized SystemsSystemA set of interconnected components that work together to achieve a specific purpose or function. (NS) theory is to create highly evolvable software by addressing the problem of combinatorial effects. A combinatorial effect occurs when the effort required to apply a change to a systemSystemA set of interconnected components that work together to achieve a specific purpose or function. increases disproportionately with the size of the systemSystemA set of interconnected components that work together to achieve a specific purpose or function., a phenomenon that leads to the inevitable degradation of software over time, as described by Lehman’s Law of Increasing Complexity.

NS Theory mitigates this by applying core principles, including Separation of Concerns (SoC) and Data Version Transparency (DVT), to enforce a highly fine-grained modular structure. By using NS tools, we generate this modular structure automatically, ensuring the resulting applicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution. is inherently stable and evolvable, even as it grows to enterprise scale.

euRent: A european rental car booking platform​

Before diving into the NS Initializer and μRadiant modeler, let's establish the systemSystemA set of interconnected components that work together to achieve a specific purpose or function. requirements for the 'euRent' applicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution.. This requires defining the following core data concepts: cars, customers, and the bookings that link them.

Defining data requirements (data elements)​

In NS, every key data concept in the business domain is represented by a Data ElementData Element (DataElement). A fundamental data concept or entity within an application's domain, acting as an anthropomorphic translation of a real-life object or concept.. For euRent, we require the following Data ElementsData Element (DataElement). A fundamental data concept or entity within an application's domain, acting as an anthropomorphic translation of a real-life object or concept.:

  • Person: To manage customer details. (Attributes: firstName, lastName, birthDate)
  • Car: To manage the fleet inventory. (Attributes: brand, model, numberplate)
  • Booking: To track rental agreements. (Attributes: bookingNumber, startDate, endDate)

Defining business processes (flow elements)​

The systemSystemA set of interconnected components that work together to achieve a specific purpose or function. must also implement specific business logic, which in NS are defined as Flows executed by Task Element. We will implement the following processes later in the tutorial:

  • Booking Validation: A check to ensure a chosen car is not already reserved during the requested period.
  • Booking Confirmation: The process of sending a confirmation message to the customer upon successful booking creation.

With the requirements clearly defined, we can now proceed to setting up the project environment using the NS tools.