Motivation
Systems of systems (SoS) need to be monitored at runtime to detect deviations from important requirements, as the full behavior only emerges during operation. However, existing approaches to check runtime behavior and performance characteristics are limited with respect to the kinds of checks and the types of technologies supported, which impedes their use in industrial SoS.
To address these challenges we have been developing REMINDS — REquirements Monitoring INfrastructure for Diagnosing Systems of Systems — a flexible framework [1][2] facilitating the development of monitoring support across various systems, for different technologies, and for different monitoring purposes in SoS. The framework is based on a Requirements Monitoring Model (RMM) [3] providing the conceptual foundation for relating requirements to be monitored, the SoS architecture, and events and data captured by the monitoring infrastructure at runtime. The REMINDS tool suite implements the REMINDS framework and supports engineers, project managers or service staff in industrial monitoring scenarios [4][8][9]. The tool suite eases developing probes to instrument heterogeneous systems in an SoS. It facilitates the definition of event models to aggregate events and event data provided by the probes, the foundation for capturing and replaying event traces. The tool suite further supports the definition and evaluation of constraints on events and event data using a domain-specific language [5]. Additional views can easily be added to visualize the runtime behavior of the SoS.
Tool Description
Based on the REMINDS framework, we have developed a set of tools together with our industry partner Primetals Technologies, one of the world’s leading engineering and plant-building companies in the iron, steel, and aluminum industries, founded as a joint venture of Siemens and Mitsubishi Heavy Industries. A research license can be granted for research and non-productive use.
REMINDS Tool Architecture [6].
The REMINDS tools are divided into several categories, providing support for the different layers of the framework. The framework components comprise the Aggregation and Distribution Component containing an event broker and an implementation of the RMM, a Persistence Component providing support for different databases, and the Processing and Analysis Component containing event processors, the constraint checking engine, as well as a violation handler. The User Interface Components are divided into a set of different user interfaces, editors, and tools for managing the elements of the RMM, supporting developers in developing probes, managing the monitoring server infrastructure, and performing monitoring and diagnosis.
The technology stack of our current implementation of the framework’s core components includes Java Message Service (JMS), Java RMI, JSON, and Hibernate. The event broker aggregates events from different systems and distributes them to the analysis and visualization tools. It uses different communication links: the aggregation part currently supports socket-based communication with the probes, which works well for Java or C++ as well as JMS using Apache’s ActiveMQ. The distribution part supports Java RMI communication, but additional solutions may be plugged-in if required. The RMM is also implemented in Java and uses JSON objects to represent event data. Regarding persistence we implemented a number of connectors for SQL and No-SQL databases (Oracle, Postgres, MySQL, Mongo-DB, Hibernate), as well as the Apache Hadoop distributed file system.
The Monitoring Tool Suite provides tools for runtime analysis and for managing the RMM. The Developer IDE Tools support engineers in creating probes and analyzing traces. The Server Management Tools allow maintaining the server infrastructure.
Monitoring and Diagnosis View and Event Reviewer [6].
The Monitoring Tool Suite provides several different editors for creating and managing the different parts of the RMM. The Requirements Editor allows to define the requirements to be monitored. The Constraint DSL Editor provides support for creating new constraints in a simple DSL [5]. The editor is based on the XText framework and supports auto-completion, highlighting of the constraint syntax, and integration with the monitoring server. Newly created constraints are directly transferred, compiled, and activated at runtime. The Scope Editor and the Event Model Editor allow to easily define and extend the two other dimensions of the RMM. Scopes and events can be created, managed, and arranged hierarchically to represent the SoS architecture for monitoring. Furthermore, metadata and additional properties can be added which are then used during error diagnosis. To analyze SoS behavior, the Monitoring and Diagnosis view (see screenshot above, left part) provides details on the current state of the system (active scopes, incoming events, constraint violations). Also, using the interface of the persistence component, the Events/Violations Reviewer (see screenshot above, right part) provides capabilities for reviewing past violations and recorded event traces.
Starting from the Monitoring and Diagnosis view showing the monitored systems and their relations engineers can view trends and statistics about performed analyses and diagnose the root cause of problems by inspecting the events and event data that led to a specific violation [9], see the screenshots below.
REMINDS provides diverse visualizations supporting engineers in diagnosing constraint violations [9].
The IDE Tools comprise a Probe Wizard helping engineers in generating new probes for Java-based systems using AspectJ as these are the probes most frequently used so far. The wizard generates the method pointcuts and the skeleton for the required probe only leaving it to the engineer to define the data that should be captured and sent to the monitoring server. Furthermore, a Trace Manager allows analyzing captured trace data used for offline analysis and allows replaying the captured traces.
The Server Management Tools provide user interfaces for managing the different parts of the monitoring server as well as the RMM residing on the server. It supports managing connected probes, persistence handlers, and clients, as well as processing and analysis components used for constraint checking.
Screen Casts
The first screen cast demonstrates REMINDS using the example of two open source desktop applications instrumented to provide events and data at runtime. Diverse constraints check requirements at runtime based on the monitored events and data. In [9] another screen cast is linked, which demonstrates the visualization capabilities of REMINDS.
(Thanks go to Lisa M. Kritzinger for creating the screen cast)
The second screen cast demonstrates how we instrumented RoboCode to extract events and data at runtime and define and check constraints on the application’s behavior using REMINDS.
(Thanks go to Dario Romano for creating the screen cast)
Contact
For any questions, please contact Rick Rabiser.
References
[1] M. Vierhauser, R. Rabiser, P. Grünbacher, C. Danner, S. Wallner, and H. Zeisel, A Flexible Framework for Runtime Monitoring of System-of-Systems Architectures, Proc. of the 11th Working IEEE/IFIP Conference on Software Architecture (WICSA 2014), Sydney, Australia, IEEE, 2014, pp. 57-66.
[2] M. Vierhauser, R. Rabiser, P. Grünbacher, K. Seyerlehner, S. Wallner, and H. Zeisel, ReMinds: A Flexible Runtime Monitoring Framework for Systems of Systems, Journal of Systems and Software, vol. 112, pp. 123-136, 2016.
[3] M. Vierhauser, R. Rabiser, P. Grünbacher, and B. Aumayr, A Requirements Monitoring Model for Systems of Systems, Proc. of the 23rd IEEE International Requirements Engineering Conference (RE’15), Ottawa, Canada, IEEE, 2015, pp. 96-105.
[4] M. Vierhauser, R. Rabiser, and P. Grünbacher, A Case Study on Testing, Commissioning, and Operation of Very-Large-Scale Software Systems, Proc. of the 36th International Conference on Software Engineering, ICSE Companion, Hyderabad, India, ACM, 2014, pp. 125-134.
[5] M. Vierhauser, R. Rabiser, P. Grünbacher, A. Egyed, Developing a DSL-Based Approach for Event-Based Monitoring of Systems of Systems: Experiences and Lessons Learned. Proc. of the 30th IEEE/ACM International Conference Automated Software Engineering, Lincoln, Nebraska, USA, IEEE, 2015, pp. 715-725.
[6] M. Vierhauser, R. Rabiser, P. Grünbacher, and J. Thanhofer-Pilisch, The REMINDS Tool Suite for Runtime Monitoring of Systems of Systems. Proc. of the 30th IEEE/ACM International Conference on Automated Software Engineering, Lincoln, Nebraska, USA, IEEE, 2015, pp. 777-781.
[7] R. Rabiser, M. Vierhauser, and P. Grünbacher, Assessing the Usefulness of a Requirements Monitoring Tool: A Study Involving Industrial Software Engineers. Proc. of the 38th International Conference on Software Engineering (ICSE 2016), ICSE Companion, Austin, TX, USA, ACM, 2016, pp. 122-131.
[8] M. Vierhauser, R. Rabiser, and P. Grünbacher, Monitoring Requirements in Systems of Systems, IEEE Software, vol. 33(5), pp. 22-24, September/October 2016.
[9] L. M. Kritzinger, T. Krismayer, M. Vierhauser, R. Rabiser, P. Grünbacher, Visualization Support for Requirements Monitoring in Systems of Systems. Proc. of the 32th IEEE/ACM International Conference on Automated Software Engineering, IEEE, 2017, pp. 889-894.