The OPC base specification offers several reference types to describe the relation between software and hardware components.
Below is an example of an IPC running some image processing software framework. To build the model, the first thing is to decide which software components should be named in the model. We here tried to include the things needed for an application that could be updated independently. Therefore, it makes sense to give some version information for those components to be able to keep track of their compatibility if they are updated during normal maintenance operations.
- The Firmware / BIOS of the IPC is needed to run the computer, of course it must fit to the hardware of the IPC.
- The operating system is usually provided as a software image (e.g., backup of the system drive). To be able to run on the IPC it often needs specific BIOS settings and functionality.
- Usually, you need some driver software to adapt the OS to the hardware of the computer and its periphery
- Installed to the OS you will have some application software packages, like the Image processing framework or some service tools. These programs may be started or stopped during normal operation
- To legally use some of the software components like the OS or the Image processing software you usually need software licenses that may have a digital and/or physical representation (license dongle)
Figure 57 – Software and Licenses
We now will have to add information about the relationships of the named components.
This can be difficult, as it is often hard to decide if a software is “running on” or “hosted by” something or if it “requires” or “utilizes” another component.
There is no right or wrong here, it mainly depends on what aspect you need to make visible to fulfill your monitoring and maintenance needs. And if you can’t decide it is always possible to show multiple aspects by using different reference types in parallel.
The model does not necessarily have to be complete; it is often more helpful to limit it to the important information / relations.
To give you an impression, here are some thoughts why we did put the example together in this specific way:
- If a BIOS update is to be done, we need to check compatibility. The BIOS has to fit to the hardware, but also its configuration has to fit to the OS image running on that machine. Therefore, we decided to show the aspect that the hardware as well as the OS has requirements on the BIOS distributed. The knowledge that a firmware runs on the hardware it is installed on is somehow trivial and therefore we decided to skip that relation.
- If you want to keep track of different versions of the OS Images you did distribute to your system over time, there may be more than one OS Image entity present in the software folder. Therefore, we decided to use the “is executing on” reference to show that the OS image shown in the model is currently running on the IPC.
- A driver package distributed often includes drivers for multiple versions of operating systems (e.g. Windows 10 and 11). Therefore, we did use an “IsHostedBy” to express that in this application the driver package runs on a specific OS Version.
- The Image processing framework may be connected only loosely to the specific IPC and OS Image but instead run on “one available machine” (virtual environments, Docker etc.). Therefore, we used the “IsHostedBy” reference to connect it to the OS and the “IsExecutingOn” reference to show where it is currently executed. This may change during runtime if it becomes assigned to a different IPC.
- The “OtherApp” is currently not executed, but if needed it could run on the IPC, which is indicated by the “IsExecutableOn” reference.
- The OS may need a unique license key, which makes a one-to-one relation between the OS and the license. This is shown by the “Requires” reference. This OS needs this specific key.
- The Image processing Framework may use some kind of “floating license” model. A license dongle allows to run up to a specific number of Image processing Frameworks in parallel no matter on which IPC they are executed. Therefore, we here used the “Utilizes” reference to express that, as long as it is executed, the framework uses up one of these floating licenses.