Handbook
The software architecture of NUREMICS is illustrated in the diagram below. It follows the layered structure recommended by the IEC 62304 standard, distinguishing between software systems, software items, and software units. This representation provides a clear, high-level view of how the different software components of the project are organized, and how they interact within a structured yet flexible development framework. It also highlights the relationship between the core framework (nuremics
) and its domain-specific applications (nuremics-labs
), emphasizing the modular and extensible nature of the overall architecture.
In the context of NUREMICS:
-
A software unit corresponds to a single, testable function. It is the smallest building block of logic.
-
A software item typically takes the form of a Python class that encapsulates related functions (units) to serve a specific purpose.
-
A software system refers to a complete application designed to be executed by an end-user, replacing traditional scripts or notebooks.
In practice, the core framework nuremics
is composed of three foundational software items:
-
The
Process
class defines a generic process component. It provides a flexible base structure that can be extended to implement domain-specific processes withinnuremics-labs
. -
The
Workflow
class orchestrates the execution of multiple processes in a defined sequential order. It encapsulates the coordination logic and manages the progression of tasks throughout the workflow. -
The
Application
class is the top-level component. It instantiates and executes a workflow, acting as the main entry point for any end-user application developed withinnuremics-labs
.
In nuremics-labs
, two main types of software components are developed to build domain-specific applications:
-
Procs (software items) — such as
Proc1, Proc2, ..., ProcX
— are implemented by subclassing the coreProcess
class. Each Proc is defined as a class that encapsulates several functions (software units), which represent elementary operations (Ops) executed sequentially within the__call__
method of the Proc. This design enables the creation of independent, reusable Procs that can be executed on their own or integrated into larger workflows. -
Apps (software systems) — such as
APP1, APP2, ..., APPX
— are the end-user-facing software applications. They import and assemble the required Procs, executing them in a defined order through theWorkflow
class, by instantiating theApplication
class. This modular architecture promotes flexibility and reusability, allowing the same Procs to be used across multiple Apps tailored to different scientific purposes.