Outils
SURLOG. développe ses propres outils afin d'optimiser ses missions d'évaluation :
- Analyse par Graphe Fonctionnel du Logiciel (outil AGFL®)
- Recherche des Classes d'Équivalence du Logiciel (outil RCEL®)
- Analyse Préliminaire des Logiciels de Sûreté (outil APRLS®)
- Test Unitaires et Tests d'Intégration (Outil TUTI ®)
- Audit de conformité aux normes de Sûreté de Fonctionnement (outil Audit_SdF®)
AGFL® 
Analyse par Graphe Fonctionnel du Logiciel.
AGFL® traite le logiciel dès les spécifications décrites en Langage Intermédiaire ou les programmes écrits en langage de haut niveau (ADA, C, C++, Modula2,…) ou en Assembleur.
La forme obtenue, le graphe fonctionnel, est une description " Entrées/Sorties " du composant, qui décrit l’ensemble des chemins fonctionnels du composant sous forme d’une liste de couples Conditions/Actions.
Les résultats fournis par la méthode outillée AGFL® sont utiles pour :
- l’équipe de développement, en phase de mise au point du code pour le contrôle de l'application des règles de programmation et la conformité du code aux spécifications (gain en fiabilité du logiciel + gain de temps pour le diagnostic et la mise au point).
- l’équipe de tests, pour la définition des jeux de Tests Unitaires et d’Intégration (complétude de couverture des tests, gain de temps dans la génération des plans de tests).
- l’équipe de sécurité, pour l'analyse fonctionnelle du logiciel nécessaire à tout contrôle de la sûreté de fonctionnement (gain de traçabilité dans la vérification de la Sécurité Fonctionnelle du logiciel, gain de temps dans l'analyse d'impact des modifications du logiciel).
PROCESSUS D’UTILISATION D’AGFL®

RESULTATS
- chemins fonctionnels du logiciel,
- jeux de Tests Unitaires ou d'Intégration attendus,
- modèle en Langage Intermédiaire des constituants logiciels,
- classes d'équivalence des Entrées/Sorties des constituants logiciels,
- traces et résultats d'exécution symbolique des chemins,
- dépendances des Entrées/Sorties des constituants logiciels,
- journal des interventions manuelles de l'analyste.
RCEL® 
Recherche des Classes d'Équivalence du Logiciel
RCEL® est destiné aux évaluateurs de la sûreté des logiciels pour réaliser une analyse des modes de défaillance et de leurs effets (AMDE) du logiciel ainsi que les effets de combinaisons de modes de défaillance.
Un modèle fonctionnel est constitué d'informations telles que le flux des données (au sens SADT) et des expressions sur le comportement des différents composants du modèle. Afin de faire des analyses sur un modèle, les évaluateurs ont besoin d'effectuer des propagations dans le flux.
Une propagation est une analyse d'erreurs sur un logiciel. L'évaluateur initialise les valeurs d'entrée du modèle et vérifie l'évolution de ces variables à travers les composants du flux jusqu'à la sortie du modèle. Les sorties du modèle peuvent ainsi être interprétées pour révéler ou non des Événements "Redoutés".
RCEL® permet de faciliter cette phase de propagation en effectuant les instanciations dans le modèle de façon automatique. Une instanciation représente un raffinement des valeurs des variables d'un composant par rapport à son environnement d'analyse. Les instanciations sont internes ou inter-composants.
RCEL® se base sur des techniques d'interprétation abstraite pour calculer les instanciations. L'interprétation abstraite est une analyse statique portant sur des programmes.
APRL® 
Analyse Préliminaire des Logiciels de Sûreté
APRLS® est un outil dont la fonction est d’obtenir, rapidement et automatiquement, les informations permettant d’évaluer la fiabilité, la robustesse, la testabilité, la maintenabilité, la portabilité, l'intégrité et la sécurité de tout le code d'un exécutable. Il permet d’établir une pré-analyse des exigences de sûreté du logiciel au travers de l'analyse de son code, de son architecture, de son flots de données telles que décrites dans les normes du domaine.
L’intérêt de l’outil APRLS® est d’automatiser la réalisation de l’analyse statique du code d’un logiciel sûr de fonctionnement.
Cet outil permet, à l’évaluateur ou au vérificateur, de traiter rapidement un grand nombre de composants d'une application complète (200 composants / 20 000 lignes de code par jour).
APRLS® respecte des exigences de différentes normes ; les exigences à contrôler sont paramétrables en fonction de la norme de référence (IEC 61508, CENELEC 50128, DO178B, CEI 880…).
Les langages supportés par l’outil APRLS® sont :
- C, C++
- Modula 2.
RESULTATS
-
le graphe d’appels des traitements parallèles,
-
les entrées et les sorties des composants,
-
les graphes de contrôle des composants,
-
les graphes de flux des données des composants,,
-
le graphe des dépendances par sortie,
-
la détermination de la cible d'analyse (liste de composants) à partir des sorties de sécurité,
-
des métriques sur le code telles que :
- la profondeur du graphe d’appels des traitemens parallèles
- le nombre de composants et des lignes de traitement,
- le nombre d'entrées/sorties par composant,
- le nombre de chemins d'exécution,
-
l’identification des constructions non-sûres sur les composants telles que :
- les boucles imbriquées,
- les sauts inconditionnels,
- les sorties multiples de boucles,
- les sorties multiples de fonctions,
- les levées d’exceptions,
- les casts dangereux,
- les entrées non initialisées ou non affectées,
- les appels récursifs,
- les appels aux COTS,
-
la localisation de l’utilisation des constantes,
-
la localisation de l’utilisation des données globales,
-
la description détaillée des composants (entrées globales et paramétrées, sorties globales et paramétrées, constantes, composants appelés, ....).

