Functional qualities, also known as functional requirements, describe the specific features, capabilities, and functions that the system or software must perform to satisfy the user's needs and requirements.
They define the "what" of the system, focusing on its behavior and functionality from the user's perspective.
Examples of functional qualities include user authentication, data validation, report generation, search functionality, and transaction processing.
Functional qualities are typically specified in terms of specific features, use cases, and user interactions that the system should support.
Application runs on at least 2 Industrial Edge device versions¶
Test Title
App runs on at least 2 Industrial Edge device versions
Test ID
100
Test Category
Release blocking check
Description
App runs on the latest (n) and previous (n-1) Industrial Edge Device firmware version of at least one supported Industrial Edge Device. The hardware requirements documentation provided by the app developer specifies the device type. If the previous (n-1) Device firmware version does not provide all of the required functionality for the app to run without restrictions, the app must run on the latest (n) version of the Industrial Edge device.this must be specified in the hardware requirements documentation.
Failed condition
The app does not work as expected on one of these Industrial Edge device versions.
Procedure
Steps
Action
Expected Result
1.
Install the app on a supported device with the latest Industrial Edge device version.
The app runs with at least a minimal use case.
2.
Install the app on a supported device with a previous (n-1) Industrial Edge device version.
The app runs with at least a minimal use case.
Application can be updated from the latest released application version¶
If the app does not have a new MAJOR version number, which implies a breaking change of the app, it must continue to run after an upgrade from a previous released version without loss of data or user input.
Warning Condition
During the update, some data is lost.
Failed condition
After the update, the app fails to run or all of its configuration/data is lost.
Procedure
Steps
Action
Expected Result
1.
Install the (n - 1) version of the app on your device.
2.
Set up a minimal use case,for example via configs/data.
3.
Update the app to the latest (currently tested) version via the Industrial Edge Management.
4.
Verify that the app is still running with the previous configuration and that there has been no loss of data.
All stored data is available and the app is still running. If necessary, stored data will be converted to a new format.
To ensure a scalable and resilient ecosystem, we've implemented the 12-factor methodology, which includes robust processes against failures and a policy to review exceptions where developers justify the need for specific app behaviors. There are containers that are not restricted to these rules, if they are defined init-container (see this specification)
Failed condition
Any services, not specified as init-container, have a restart policy set to "NO". This means that the app will not restart after a device reboot or after a failure, and therefore does not comply with the "12-Factor" strategy.
Procedure
Steps
Action
Expected Result
1.
Open the app's docker-compose.yml.
2.
Check the restart policy for each container.
The restart policy of each container should be "unless stopped", "on failure" or "always".
3.
Install the app on your device with a minimal setup. Reboot the device.
After rebooting the device, the app should start automatically. The app should restart without any loss of data.
Non-functional qualities, also known as non-functional requirements or quality attributes, describe the overall characteristics, properties, and behaviors of the system or software that affect its performance, reliability, usability, security, and other aspects.
They define the "how" of the system, focusing on its qualities and attributes rather than its specific features or functions.
Examples of non-functional qualities include performance, reliability, usability, security, scalability, maintainability, portability, and interoperability.
Non-functional qualities are typically specified in terms of constraints, thresholds, and metrics that the system must meet to be considered acceptable from a quality perspective.
The app should be able to run without a configuration. Therefore, the app is not allowed to die in this scenario, but instead should notify the user to provide a configuration. This must be done via the app's Web UI. If the app does not provide a Web UI, the application must provide this information instead through its logs instead.
Warning Condition
The app requests a configuration but does not provide a config template.
Failed condition
- The app's Web UI does not notify the customer that a configuration file must be provided. - If the app does not provide a Web UI and the logs do not include information about the missing configuration.
Procedure
Steps
Action
Expected Result
1.
Install the app on a device without any configuration chosen.
The app is running and not shutting down.
2.
Click on the app icon and check the application's web UI. If the app does not provide a UI, check the logs. You should be informed here that providing a configuration is necessary.
Administration and configuration is not done by an extra process or tool, it should be part of the normal IE environment. All tools, for example configurator, are released and bundled with the app. An exception applies to Engineering tools.
Warning Condition
The app can be configured by configuration files, for which it is necessary to start additional software (not hosted on IE platform).
Failed condition
To change the configuration of the app, you must start additional software that is not hosted on the IE platform; the configuration cannot be changed via the IEM directly.
Procedure
Steps
Action
Expected Result
1.
Deploy the app on a device.
2.
Set up a minimal use case.
You do not need to leave the IE environment to configure the minimal use case..
If an app provides a web interface through one of its containers, the Redirect URL must point to this service. This ensures that when the user clicks the app icon on the device, they are redirected to the web interface.
Failed condition
The app has a web UI service, but the Redirect URL either points to the wrong container or is not set.
Our IEM has a feature called "Remote Access" that allows you to access the IED through your connection to the IEM. It works like a VPN tunnel through the IEM and the device establishes the connection to the IEM (southbound to northbound). Many customers only access their device using this functionality, so to give the customer the full experience, if an app provides a web interface, the app must be able to support this.
Failed condition
The app UI can not be accessed via the "Remote Access" of the IEM.
Procedure
Steps
Action
Expected Result
1.
If your IEM does not has a "Relay Server" configured, create it for your IEM in the "Admin Management".
2.
Enable the remote access for the Edge device\n
The Remote Access can be enabled.
3.
Install the app to the device where the remote access has been enabled.
4.
Left click on the device in the "Edge Devices" view of the IEM and click on "Connect".
You will get redirected to the device UI
5.
Log on to the device and navigate to the "Apps" view on the device.
The app can be restored using the Backup & Restore feature of Industrial Edge. Note: When using the backup and restore functionality in the IEM, all apps on the device are stopped. For more information regarding the backup of volumes, see also: How to backup/restore a Device
Failed condition
The app does not start after a restore, with persistent configurations or user data.
Procedure
Steps
Action
Expected Result
1.
Install the app on a device.
2.
Go to IEM > Edge Devices.
3.
Execute a backup of the device via the system command button. Include the backup of app volumes via checkbox.
4.
Uninstall the app from the device.
The app is removed from the device.
5.
Execute a restore of the device in the "Backups" tab in your IEM.
The app is deployed to the device and starts up with the previous configuration and data storage without any failures.
To scale the deployment of the app, we also evaluate the user experience for mass installation. We aim to deploy the app on multiple devices (at least 5) within 5 clicks, ensuring it runs on each device without failure. Depending on the App classification, the requirements slightly vary. Data Integration and Configurator apps must be mass deployed and fully configured within 5 clicks. Connectors, Suppliers, Consumable, and Monolithic apps must simply be mass deployable and running within 5 clicks.
Warning Condition
The app is able to be mass deployed, but the installation takes more than 5 clicks.
Failed condition
No mass deployment is possible as the configuration to run the app, needs to be adjusted per device.
Procedure
Steps
Action
Expected Result
1.
Log in to an IEM with more than one onboarded device.
2.
Navigate to the "Catalog" and choose the app to install.
3.
Check, if the app installation with configurations can be executed with maximum 5 clicks.
An ecosystem control point typically refers to a specific juncture or component within a complex system or ecosystem where control or management actions can be applied to influence the behavior, performance, or outcome of the system as a whole. This concept is often used in the context of environmental management, ecological systems, or complex technological ecosystems.
Overall, the concept of an ecosystem control point emphasizes the strategic identification and targeting of key leverage points within complex systems or ecosystems to achieve desired outcomes, whether it be environmental conservation, system optimization, or risk management.
Only released versions are offered on the SDEX market, so we only accept release candidates for testing. Our system does not work with downgrading apps. Therefore, we need to ensure that the new version of the app deployed is higher than the last version deployed. Also, the app must be approved by our Publisher and Industrial Edge Hub according to the policy defined at https://semver.org/. So called Pre-Release version (e.g. 1.0.0-rc2) are not accepted for the Ecosystem Review or the onboarding to the marketplace.
Containers can address each other by using their service name. This could cause some problems when addressing a specific container. The service name must be unique. We have defined a syntax to ensure this: "application name""-""service name"
The exception condition is met if the app has defined a network and the network type is set to INTERNAL. This is an exception because the app will be on a network that cannot be accessed or addressed by other containers. Therefore the naming is irrelevant.
ALL CONTAINERS MUST CONNECT TO THE INTERNAL NETWORK
App specific URL subdirectory path (aka. Revers Proxy name) are set by the app builder per service. These naming need to be unique upon one device, otherwise the app installation would fail. Best practice is to use your service name as the App specific URL subdirectory path
Here is an example that would pass the test.
The Application name is: My very special application
Service 1 Name: My-very-special-application-Web-UI"*
The exception condition is met if the app provide supplies twice the exact same nginx configuration name, in the scope of preventing these apps to run on the same device at the same time.
If the app nginx configuration names do not match, but are unique enough that they are unlikely to exist in different applications, then the warning condition is met.
The repository name of your app must be unique upon our system, this is to ensure the uniqueness of an image. The Industrial Edge Hub does not check the uniqueness of the repository name by default, so we need to manually check that it is not already in use. To do this, we should find the application's repo name in the digests.json file and match it against our database. Once this is done, we need to add the repo name to the list.
Failed condition
The repository name is already in use, or has a name that could occur multiple times. The application developer should be notified of this problem so that the repo name can be changed.
Procedure
Steps
Action
Expected Result
1.
Download the .app file.
2.
Open the file with 7zip.
3.
Open the digests.json file.
4.
Locate the part of the file that describes the docker-compose.yml file.
5.
The name in front of "/docker-compose.yml" is the name of the repository.
6.
Check the database (Only possible by Ecosystem Team of Siemens AG). See if the name already exists.
7.
If it does not exist, enter the repository name as a new entry.
Applications that wish to use the registry service must ensure that their appId is unique when making themselves public to the service. To guarantee this uniqueness, it is best practice to use the repository name of the application as the appId for the service registry.
Failed Condition
The appId is already in use or has a name that could occur multiple times.
Port numbers are assigned in various ways, based on three ranges: System Ports (0-1023), User Ports (1024-49151), and the Dynamic and/or Private Ports (49152-65535); the different uses of these ranges are described in RFC6335. System Ports are prohibited to be used by applications as these are reserved for the Industrial Edge system and underlying OS-System.
Using payment mechanisms for software other than one offered by the Marketplace isn’t permitted. Any deviation to this must be aligned and approved with the Siemens Industrial Edge EOM Team via a contract.
Failed condition
It is possible through other channels than the Siemens offered SDEX-Marketplace, to buy feature/functions/packages for the application.
Ecosystem scalability pertains to the ability of a digital ecosystem to grow, adapt, and handle increased demands without compromising its functionality or performance.
It involves expanding the ecosystem while maintaining its efficiency, responsiveness, and value to customers.
Scalability ensures that the ecosystem can accommodate more users, services, and interconnected products as it evolves.
Industrial Edge devices communicate using network protocols. Therefore, all services must make data transparent to other applications over IP-based networks. Services are addressed by a combination of device service name/IP address and port. All services should be accessible through a URL.
Failed Condition
Other constructs such as sockets, files, etc. are used for inter-application communication.
Procedure
Steps
Action
Expected Result
1.
Install the application on a device.
2.
Set up the minimal use case of the application.
3.
Install a network diagnostics tool.
4.
Monitor traffic of the application.
5.
Check the reachability of its subcomponents, for example via telnet.
All the services communicate via ports and are bound to them.
The recommended device must suit the use case description based on the app's resource allocation. The device you recommend must have at least 25% of its resources unallocated when the entire use case is installed on the device.
Failed condition
The entire end-to-end use case takes up more than 75% of the available resources.
For every supplier app, a payload has been defined. If no payload has been defined yet, the App Provider has to suggest and align a payload with the Industrial Edge Ecosystem Team. All apps have to use this payload format.
Failed condition
The app is communicating with a supplier app, without using the defined payload formats.
The larger the .app file, the longer the user has to wait for the app to download to the IEM/IED. App providers should aim to reduce the size of their images as much as possible to improve the user experience.