Pattern Compositions

A solution may require the composition of science use case design patterns. A simple example from the pattern catalog is the Design of Experiments strategic pattern that already uses the Experiment Control strategic pattern, but could use the Experiment Steering strategic pattern instead. Similarly, the Multi-Experiment Workflow strategic pattern already uses the Experiment Control strategic pattern, but could use the Experiment Steering strategic pattern, the Design of Experiments strategic pattern, or a combination of Experiment Control, Experiment Steering, and Design of Experiments strategic patterns instead. This composition of strategic patterns is then also reflected in composition of architectural patterns.

The decision to compose a solution from multiple science use case design patterns depends on the actual properties of the solution. The most significant indicator is the need for multiple, different control loops. Another indicator is the existence of a Multi-Experiment Workflow with different experiments that have different control loops. The number and properties of the control loops typically define the composition of science use case design patterns, from strategy to architectural. Note that there may be more than one control loop implementing the same strategic and even architectural pattern, but with different properties. For example, there may be multiple Local Experiment Steering control loops that are independent from each other. They may operate with different timing requirements, perform analysis on different computational resources and modify different parameters independent from each other.

Example

The following example illustrates the composition of science use case design patterns. In this solution, there is a control loop for Experiment Steering to change parameters based on observation as the experiment is progressing. There is also a second control loop for Design of Experiments to change the experiment plan based on the prior experiment result after each experiment. Fig. 22 illustrates the involved components and control/data flow of the Experiment Steering and the Design of Experiments strategic pattern composition. The Experiment Design Plan and the experiment planner are exclusive parts of the Design of Experiments strategic pattern, while the other components are part of the Experiment Steering strategic pattern that the Design of Experiments strategic pattern is using as its experiment to control from an experiment plan perspective.

Example of a strategic pattern composition

Fig. 22 Example: Components and control/data flow of Experiment Steering and Design of Experiments strategic pattern composition

In the given science use case example, the Experiment Steering utilizes a local shared storage device, such as a small NAS, for all sensor data and its analysis results. It also relies on a local computational resource, such as an NVIDIA Jetson Nano computer, for analysis and decision making. The Design of Experiments transfers the sensor data of the entire experiment from the shared storage device to a remote analyzer, such as an NVIDIA DGX computer. Its analysis results are evaluated and a new experiment plan is created by the Controller on a desktop computer running a GUI. The corresponding involved components and control/data flow of the Local Experiment Steering and the Distributed Design of Experiments architectural pattern composition is shown in Fig. 23.

Example of an architectural pattern composition

Fig. 23 Example: Components and control/data flow of the Local Experiment Steering and Distributed Design of Experiments architectural pattern composition

This is just one example of how a solution may require the composition of science use case design patterns. Different logical components may utilize the same physical components, such as when different control loops use the same storage device or the same computational resource for analysis and/or control. For example, separate controllers for different Experiment Steering control loops may use exactly the same physical component, such as a Raspberry Pi computer, for storing and analyzing sensor data and for issuing different, non-conflicting control commands to a robot.