coo poo 1 3 2 Fiabilite

1.3.2 Fiabilité, vérificabilité, résistance aux pannes, coupe feux, check-point, faible couplage.

 

Fiabilité: définition: C'est pas faux. Quand c'est faux, l'erreur est facile à localiser. Quand c'est faux c'est rapide à corriger. Quand c'est faux, ça ne se propage pas partout. Quand c'est faux, ça se voit facilement que c'est faux.

    La fiabilité vient d'une série de mesures de sécurité et de vigilance comprenant: la modularité, l'encapsulation, la séparation des modules, l'introduction de frontières et de garde-frontières, d'interfaces d'entrée sortie, de check-points, de la standardisation et normalisation, de lois, règles et interdictions (ex:interdit à deux modules de mettre à jour la même table).

 

Vérificabilité

    La modularité donne des frontières de modules.

    Les frontières de modules donnent des possibilités de checkpoint.

    L'existance de checkpoint donne la vérificabilité.

    La facilité de vérification donne la vitesse de développement, l'exactitude des résultats de tests, la sécurité de la mise en oeuvre et la qualité du logiciel livré.

 

Résistances aux propagation de bugs et aux pannes:

    L'encapsulation, le faible couplage entre modules, l'indépendance des objets, les coupe feux, les check-points donnent la résistance aux propagations de bugs.

    Si c'est faux dans un objet, le check point à la sortie le révèle.

    Si c'est faux à l'entrée, l'interface d'entrée le révèle car l'entrée est fixe, standardisée, normalisée, connue.

    Si c'est faux à l'extérieur, le bug ne peut pas entrer car l'entrée est gardée.

    Si le module est validé, ca ne peux plus être faux à l'intérieur car la fonctionnalité est fiabilisée.

    Si c'est faux par les données en entrée ca se voit facilement.

    Si c'est faux en aval, on ne peut soupconner la sortie de l'objet qui est fixe aussi et facilement vérifiable.

    Donc à chaque erreur, la zone de soupcon est réduite aux développements nouveaux, cela ne remet pas en cause les développements déjà validés. Dans un système non orienté objet toutes les lignes de codes sont suspects il n'y a pas de distinction entre lignes validées et lignes pas encore validées.

    Dans un programme sauvage, chaque erreur cause la revérification de toutes les lignes et la recherche fastidieuse des bugs dans tout le système.

 

    La résistance aux pannes vient de l'indépendance des modules: quand un module est faux, l'erreur est localisée, elle se propage moins que si c'était linéaire sans frontière.


 

Coupe feux:

    La frontière entre modules fonctionne comme un coupe feux dans un système orienté objets. il y a une porte blindée constituée par l'interface d'entrée sortie qui est standardisé et donc refuse de laisser passer tout ce qu'il n'attend pas c'est à dire tout ce qui est anormal.

 

Check-point

   A chaque sortie d'un petit module de traitement il y a un check-point permanent bien connu qu'on peut vérifier à tout moment. Dans RTGE 96 le check-point est une table permanente qui n'est pas détruite à la fin de l'exécution. Cette table permanente aux colonnes bien définies peut être vérifiée après le job. Si on détecte une anomalie au niveau d'un check-point alors il y a une erreur en amont du check-point.

   Une table permanente peut être calculée et modélisée au préalable avant le lancement du job. On peut modéliser toutes les 16 bases du RTGE pour générer un jeu d'essai (indépendant de DB2) de vérification beaucoup plus fin que les seules tables finales et états édités. La multiplication des check-point multiplie la vérificabilité et validité du logiciel, sa fiabilité et la facilité de maintenance et débugging.

   Dans le nouveau RTGE 96 les check-points sont:

 

 

   Les check-point sont comme autant de lumières et de clignotants sur un réseau: imaginez la même application sans check-point, sans points de lumières: ça serait l'obscurité.

Les check-points permettent de faire de la recherche dichotomique en cas de dépannage de bugs. par exemple

    avec cette méthode et en profitant des tables permanentes persistantes on peut débugger après que la chaîne a tourné en vérifiant tour à tour tous nos principaux check-points qui sont faits pour cela check veut dire vérifier et check-point veut dire points de vérifications.

    Etant donné qu'on connaît les points sensibles de notre logiciel où on a précisé les résultats exacts à sortir d'après nos calcul mathématiques à la main et sous Excel alors il est clair et pratique d'utiliser ces tables vivantes (pas effacées) et fraîches (qui viennent d'être renseignées) pour nous éclairer sur les problèmes d'erreur logiciel

 

Faible couplage:

    Plus le couplage est faible entre modules et plus les bugs ont de difficulté de voyager de module à module.

Lorsque, face à la base existante B11+B19 on ajoute les

BDROO BF1 BD1 BD2 BF5 BD5 BD6 cela crée des séparations, barrières et tourniquets; lorsqu'un bug sort d'un module, on le voit.

Un couplage faible permet de tester un module indépendamment des autres.

Un couplage faible permet de relancer un module planté indépendamment des

autres.

Un couplage faible permet de comprendre un module indépendamment des autres.

Un couplage fort oblige à comprendre tous les modules couplés, et à scanner tous les modules couplés en cas de bug et de mobiliser sur le pont tous les responsables des modules touchés en cas de bug.

Un couplage fort oblige à lancer le module quand on n'a besoin que de lancer le module aval.

Un couplage fort oblige à rendre suspect le module amont lorsqu'il apparaît un bug dans le module aval.

Un couplage fort oblige à finir parfaitement le développement du module amont avant de bien tester et déduire le module aval.

Un couplage faible permet de mieux développer en parallèle chaque module.

Un couplage fort rend plus complexe l'établissement d'un PERT et d'un GANTT.

Un couplage faible rend plus simple plus sûr le PERT, le GANTT, le planning, le suivi des tâches, la gestion des ressources et la conduite de projet car les tâches sont indépendantes, peuvent être développées en parallèle, ont peu de contraintes de finition et départ en ordre chronologique.

La COO et POO permet d'optimiser la conduite de projet en souplesse selon la disponibilité des ressources et permet de mieux distribuer les tâches.

 

Exactitude des résultats.

    Lorsque le traitement est bien découpé en objets, les vérifications et validations des résultats sont plus précis plus logiques, plus sûr, plus exacts.

    On peut calculer par multiplan ou Excel ou Excel Access et comparer avec les bases en sortie de chaque étape; s'il y a 4 étapes principales on peut les vérifier toutes au lieu de ne pouvoir vérifier que la fin. on peut sortir les données de db2 vers Access faire des calculs avec Excel VB pointer les calculs à la main puis utiliser les tables résultantes de niveau siège groupe centre des étapes lecture calculs totaux consolidation pour les différents datamart axes et dimensions puis on peut comparer à l'étape d'expérimentation entre la chaîne Access Excel VB et la chaîne Cobol DB2 sur des petits exemples tests peu volumineux au niveau du micro de développement

    Les humains se trompent moins quand ils programment des petits modules de trois queries que quand ils pataugent dans des gros batch de 400 queries.

    Les sorties de petits modules sont plus faciles à pointer que les sorties de procédures volumineuses.

 

 

   Méthode de vérification par comparaison

   entre l'application en SQL et le calcul théorique sous EXCEL