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

E.W. Dijskra.

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.

- First, I am contributing to the state-of-the-art regarding the mathematical and algorithmic corpus used in reliability and systems engineering.
- Second, I am exploring new scientific territories. Computational complexity of calculations is actually a central problem of reliability and performance engineering. The only way to make significant progresses in this field is to test new ideas on industrial scale case studies, which requires high quality and highly efficient software.
- Third, I am demonstrating, by the example, that academic researches can impact directly industrial practice, which is in turn a good way to establish fruitful relationships with industrial partners.
- Last but not least, I am using these tools for teaching purposes, notably the course I delivering on model-based engineering.

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:

- XFTA, a calculation engine for fault trees and related models;
- AltaRicaWizard, an integrated modeling environment for the AltaRica 3.0 modeling language.

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.

- The S2ML+X Toolbox, a set of tools implementing the S2ML+X paradigm;

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:

- First, the tools I am developing are highly complex software, involving advanced data-structures and algorithms. Consequently, they cannot benefit of a community development. Mastering the complexity these software requires too much competences and time for occasional developers to contribute to these projects. The tools are anyway provided with simple, file-based, interfaces which make it possible to take a full benefit of them without entering into their code.
- Second, making source available to a limited audience is a way to encourage industrial partners who support academic researches and to preserve intellectual property on most advanced algorithms and heuristics.

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:

- A mathematical framework, the X, in which the behavior is represented.
- A set of constructs to structure the models. S2ML, which stands for system structure modeling language, is such a set versatile and complete set of constructs stemmed from object-oriented and prototype-oriented programming.

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):

- Combinatorial formalisms such as fault trees, event trees and reliability block diagrams.
- Stochastic state automata such as Markov chains, Petri nets and AltaRica.
- Stochastic process algebras.

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.

You can download the following tools from their dedicated pages,

- XFTA is the most powerful available calculation engine for fault tree and related models;
- AltaRicaWizard, an integrated modeling environment for both AltaRica 3.0 and S2ML+SBE. It embeds XFTA as well as assessment tools for AltaRica 3.0.
- The S2ML+X Toolbox, a set of tools implementing the S2ML+X paradigm.