liveBook · Manning

High-level design

As explained in Data-Oriented Programming: Reduce software complexity

A high-level design is a system-level definition of its modules and the interactions between them.

A high-level design defines a system’s modules and the interactions between them. In data-oriented programming, modules are stateless functions, while data remains outside them. section 2.3

Use these guidelines when shaping the design:

  • Align high-level modules with high-level data entities. section 2.3
  • Pass the relevant data explicitly as function arguments rather than hiding it in module state. section 2.3
  • Separate responsibilities such as catalog data and user-management data into distinct modules. section 2.3

Library Management System

A design based on the data mind map uses Library, Catalog, and UserManagement modules. Catalog functions receive catalogData; UserManagement functions receive userManagementData; Library functions receive libraryData and operation-specific arguments. section 2.3

Figure 2.7 The modules of the Library Management System with their functions’ arguments

Inspect the module diagram showing Library, Catalog, and UserManagement together with their function arguments. section 2.3

How Data-Oriented Programming: Reduce software complexity covers it

How deep it goes
Descends to module responsibilities and argument patterns, but leaves cross-module data passing partly unresolved.
Examples
Uses a Library Management System with Library, Catalog, and UserManagement modules.
What it assumes
Assumes familiarity with modules and functions, while introducing stateless module functions and externally stored data.
What you can do after
Build it from scratch by deriving module boundaries from high-level data entities and specifying each function’s data arguments.
How it connects
Connects modules with data entities, stateless functions, data-oriented programming, and explicit function arguments.

This explainer was generated by Manning's knowledge graph from the text of Data-Oriented Programming: Reduce software complexity. The section links point to the parts of the book it draws on.