The ORIS Tool: Quantitative Evaluation of Non-Markovian SystemsJ1
ORIS is a toolbox enabling quantitative evaluation of transient and steady-state measures in stochastic models of concurrent behavior. As a salient and characterizing feature, ORIS supports numerical solution of models with generally distributed timers, possibly limited by firm upper and lower bounds, which break the limits of memoryless Markovian behavior so as to improve models validity through the ability to fit real data and firm timing constraints obtained by design.
The toolbox includes functions for creation, validation, and evaluation of models specified through the formalism of Stochastic Time Petri Nets (STPNs), which can be exploited through an interactive GUI or through programmatic access by a Java application.
ORIS provides a robust and well-engineered Java implementation for a suite of advanced numerical solution techniques, which can contribute to the practice of software engineering in multiple directions. On the one hand, ORIS supports engineering and early evaluation of non-functional requirements related to various characteristics, notably including Performance Efficiency, Reliability, and Maintainability. A rich literature of model transformation techniques supports integration of this capability into Model Driven Engineering processes fitting the needs of industrial practice.
On the other hand, ORIS functional capabilities can be embedded in software components implementing descriptive, diagnostic, predictive, and prescriptive analytics, which in turn can fit in advanced software architectures implementing the concepts of models@runtime and self-adaptation. For example, data analytics components acquiring data on a monitored system (e.g., a software architecture, a fault-tolerant system, a cyber-physical infrastructure) can use ORIS as a Java library to derive quantitative measures of interest (e.g., QoS violations, expected repair times) to tune system parameters and optimize system behavior.
Over the years, ORIS was tested against a number of different scenarios in both directions, for various application cases including: - Optimal input selection in testing of partially controllable real-time software; - Performability analysis of ERTMS/ETCS railway signaling standards under GSM-R failures; - Verification of real-time software in model-driven development processes based on model transformation from input UML statechart specifications; - Analysis of expected service disruption due to failures in critical infrastructures; - Evaluation of real-time mutual exclusion protocols among concurrent processes.
On the ground of this experience, the underlying Java implementation of ORIS was recently released in an open-source distribution, and its overall structural and functional characteristics were reported in a paper that appeared in the IEEE Transactions on Software Engineering.