If debugging is the process of removing bugs, then programming must be the process of putting them in.

E.W. Dijskra.

Role of Software Development in my Research Activities

I am developing software tools as part of my research work, and I am trying to develop them at professional quality level.

Doing so, I am pursuing several goals at once.

Put in this way, software development seems a great idea and it actually is. It has however a downside: it takes a lot of time and energy and it is not recognized by the academic institution. This one of the many very unfortunate consequences of the publish-or-perish academic management.

Nevertheless, I am working on several development projects, some publicly available in the hope these efforts will be scientifically and socially useful:

Put together, these tools represent something like 400 000 lines of C++ code, i.e. countless hours of work.

I am also working on some other tools, notably a number of tools gathered in the S2ML+X Toolbox. I use them mostly for teaching purposes or as proof-of-concepts. These tools are developed in Python. They do not have (and do not aim to have) the level of quality, nor of course the efficiency, of XFTA and AltaRica Wizard.

All the tools I am working on are distributed free of use, with no other restriction than the obligation to cite them if you use them. Being free of use is a mandatory condition for new niche tools to be tested by academic researchers and engineers from industry via proof-of-concepts. Free of use does not mean open-source, for two main reasons:

Modeling Languages

An important part on my research activities is related to the design of modeling languages for the assessment of the performance of complex technical and socio-technical systems. This led me to propose the S2ML+X family of languages (Batteux, Prosvirnova and Rauzy, 2018, Rauzy and Haskins, 2018). The key underlying idea is that any behavioral modeling language consists of two parts:

If the mathematical framework is specific to the behavior we want to represent (and the type of calculations we want to make on models), the set of structuring constructs, here S2ML, can be common to all modeling languages (at least all modeling languages dedicated to the representation of behaviors of systems).

If we look more specifically to reliability engineering, we can distinguish three categories of mathematical frameworks (Rauzy, 2018):

These three categories are nested in terms of expressive power: process algebras are more expressive than state automata which are themselves more expressive than combinatorial formalisms. This expressive power comes however with a huge price in terms of computational complexity of assessment algorithms and of difficulty of designing and validating models. This is the reason why stochastic process algebras are seldom used in industrial (and even academic) practice.

The two main languages I am working on are AltaRica 3.0 (Batteux, Prosvirnova and Rauzy, 2019) and S2ML+SBE (Rauzy, 2020)

In S2ML+SBE, SBE stands for systems of (stochastic) Boolean equations, which are the underlying mathematical framework of popular combinatorial formalisms, i.e. fault trees and reliability block diagrams. S2ML+SBE generalizes both, without introducing any additional complexity regarding the authoring of models and the calculation of qualitative and quantitative risk and safety indicators.

AltaRica 3.0 could be designated as S2ML+GTS, where GTS stands for guarded transition systems (Rauzy, 2008, Batteux, Prosvirnova and Rauzy, 2017). GTS generalizes a wide category of stochastic state automata found in the literature, including Markov chains, Petri nets, state charts or stochastic automata networks. Here again, the generalization comes at no additional costs regarding the authoring of models and the calculation of performance indicators. The official specification of the language as well as (references to) scientific articles can be found on the AltaRica Association website (www.altarica-association.org). Alternatively, you can dig in my list of publications.

Download

You can download the following tools from their dedicated pages,