Défis relevés pour une meilleure productivité des développements de grands systèmes

Modéliser, simuler et générer automatiquement les tests pour valider trois paraphrases de la spécification corrigée

Cogenit refait son site Internet, si vous voulez nous aider, vous pouvez remplir un rapide questionnaire anonyme disponible à partir du lien suivant.

Merci beaucoup pour votre aide.

Voici le questionnaire!


Télécharger cette rubrique au format PDF




De l'Agile programming au cycle en V, aucune correction d'erreur ne peut se faire sans le code. Il faut donc investir sur des erreurs de spécification jusqu'à la production du code pour revenir au point de départ avec une spécification corrigée. Des cycles en V réduits et itératifs permettent les gains de temps et donc de productivité ci-dessous :
voir en grand

Contrairement aux pratiques connues, la simplicité par la rigueur dans la mise en œuvre des machines à états démontre des capacités très efficaces de modélisation et de simulations. Le penchant démontré d'encombrer les machines à états de codes inutiles et réducteurs entrave les capacités réelles de cette démarche. COGENIT, depuis de nombreuses années et avec les langages améliorées disponibles aujourd'hui, a poussé les performances de machines à états pour la modélisation et la simulation des grands systèmes jusqu'au niveau suffisant pour :

  • Corriger les spécifications du système et de ses composants sur la base de schémas facilement compréhensibles et utilisables pour voir les erreurs et pour les corriger voire les optimiser,
  • Générer les tests de façon automatique et donc complète, tels qu'ils seront appliqués à chaque itération sur les modèles, les codes, les composants et le système complet,
  • Construire les modèles,
  • Pratiquer les simulations,
  • Réaliser les tests et vérifier ainsi les trois paraphrases de la spécification que sont :
  • Les modèles et leurs simulations,
  • Les séquences de tests,
  • Les réalisations des codes, des composants et du système complet et opérationnel lui-même.
Les itérations successives garantissent la convergence et la fiabilité des compilations par une référence à des séquences de tests constantes et fiables.


Depuis 20 ans toutes les études sur les coûts de développement montrent que, de la conception aux essais en exploitation, 80 % des dépenses portent sur la correction des défauts " logiciel ". La moitié de ces défauts sont causés par la spécification dont le processus d'élaboration tient plus de l'accumulation d'exigences d'experts qui se fournissent leurs différentes approches ou contributions au système, que de la recherche des conditions nécessaires et suffisantes de réussite des performances avec la fiabilité requise. Cela se traduit dans des diagrammes de surcoûts de correction des défauts tels que celui-ci :

Ce constat répété fonde deux observations de bon sens :
  • Trouver les défauts au plus tôt,
  • Réaliser les codes sur des documents fiables.
Xcarecrows est un ensemble d'outils qui répond à ces deux objectifs avec :
  • Une interface visuelle efficace et compréhensible en langages UML pour nettoyer la spécification,
  • Des capacités de modélisation et validation sur la base des recommandations de l'Object Management Group (OMG) et des langages universels associés XML, XMI 1 et 2, dont les fiabilités sont garanties par des compilations en nombre suffisant.


COGENIT pratique depuis plus de 20 ans la démarche ci-dessous des simulations initiales à la mise en service sur le site opérationnel :
voir en grand

Au fil des progrès dans les langages et les outils, la productivité en a été très largement améliorée. Le schéma ci-dessous présente toutes les fonctions indispensables telles Xcarecrows permet de les coordonnées. COGENIT apporte la compétence de synthèse avec l'esprit de la transmettre dans une véritable action biodégradable de conseil et d'assistance.

voir en grand

Précisément, dans l'ordre des opérations, il faut souligner les progrès suivants :

  • a. La spécification est corrigée en priorité :
    Une interface conviviale et hiérarchisée permet de mettre en évidence toutes les insuffisances de la spécification, à savoir :
  • Incohérences,
  • Redondances,
  • Insuffisances et oublis.
  • Ces bases de meilleure qualité rendent possibles les démarches suivantes.

  • b. la génération automatique et complète des tests telles qu'on ne pouvait les espérer des efforts empiriques et limités des meilleures spécialistes du système considéré.
  • c. Des modélisations itératives:
    La modélisation telle que développée et éprouvée pour le Model Driven Architecture (MDA), a largement fait ses preuves. Au niveau des composants, elle est largement admise. Son application à l'ensemble du système était l'application attendue.
  • d. Des simulations :
    En matière de grands systèmes, la simulation a fait ses preuves parce qu'elle était et reste indispensable pour :
  • Approcher certains aspects critiques impossibles à reproduire manuellement,
  • Reproduire des situations catastrophiques impossibles à étudier autrement,
  • Suivre des phénomènes dont la période est trop longue,
  • Observer des phénomènes trop fugitifs.
  • On a longtemps considéré comme des limites de la simulation :

  • La difficulté de réaliser ces simulations sans que le logiciel n'ait été testé,
  • Les ressources pour créer ces simulations et les réaliser étaient présumées considérables,
  • Le modèle pouvait contenir des défauts rédhibitoires de sécurité.
  • Les qualités des modèles produits par Xcarecrows et les outils qui sont mis en œuvre réduisent substantiellement l'impact de ces préoccupations par les dispositions suivantes :

  • Assistances à la manipulation de ces nouveaux langages,
  • Automatisations des tâches les plus répétitives avec l'objectif du "clic unique",
  • Accès plus intuitif pour une compréhension plus immédiatement opérationnelle,
  • Flexibilité et "open source" qui garantissent une dynamique d'amélioration des outils au plus près des besoins généraux des utilisateurs.
  • e. Trois paraphrases d'une meilleure spécification pour :
  • la simulation,
  • les séquences de test,
  • le code,
  • garantissent une fiabilité inégalée su système complet.

C'est enfin dans la synthèse et la coordination de ces 5 activités que résident le métier original de COGENIT et la qualité des performances de Xcarecrows.

Concrètement, les outils de la famille Xcarecrows s'organisent le long du cycle des itérations comme suit :

voir en grand


Xcarecrows, ensemble d'outils, favorise les gains de productivité de la façon suivante :
  • a. Une approche plus conviviale :
    Si pour les composants, les développements peuvent se contenter d'analyses comportementales, plus les composants grossissent et plus les systèmes sont complets, plus les analyses coordonnées des structures et des comportements s'imposent. La famille des langages UML telle que préconisée par Object Management Group, simplifient ses analyses depuis les mises en ordre des spécifications jusqu'aux productions des modèles et simulateurs en code Java.
  • b. Productivité augmentée à niveau de compétence réduit :
    Par les assistances que ces outils apportent, le nombre de développeurs très compétents peut être réduit. De même, les temps d'opérations et le nombre des erreurs de développement sont diminués.
  • c. Approche graphique de tous les types d'erreurs :
    Cette pratique graphique est dix fois plus rapide que la méthode traditionnelle basée sur des tableurs. Xcarecrows permet d'identifier les quatre types d'erreurs sur :
  • Les algorithmes,
  • Les domaines de validité des données,
  • Les incohérences des échanges avec l'environnement,
  • Les cohérences et les carences par itérations de tests.
  • d. La modélisation en est rendue plus compréhensible grâce à des règles appliquées automatiquement pour plus de propreté.
  • e. Simplicité dans la rigueur :
    En limitant le développement de code à la seule manipulation des données dans les objets opératifs à l'exclusion de tout autre code caché, et en utilisant strictement le langage Object Constraint Language (OCL) à ce seul effet, les machines à état traitant du contrôle sont gardées rigoureusement indemnes de tout code.
  • voir en grand

    La circulation du contrôle est assurée par un pur mécanisme d'émissions de signaux et de réceptions d'événements. Ce mécanisme cadence la manipulation des données. Une simple passe de compilation u détecte les incohérences. C'est au sein des objets opératifs que sont manipulées les données. Les prédicats sur ces données en OCL permettent la génération des contrôles à faire à l'éxécution.

    Ce n'est que dans cette grande rigueur que le système, aussi complexe soit-il, est représenté avec le degré de simplicité compatible avec la plus grande compréhension par chacun des développeurs.

  • f. Ces outils Xcarecrows offrent une grande flexibilité à trois niveaux :
  • COGENIT offre une assistance biodégradable de ces outils en "Open Source". Dans ce cadre, elle s'engage à faire évoluer Xcarecrows pour que chaque outil garde toute la généralité de son domaine d'application.
  • Chaque équipe projet a ses acquis. COGENIT sait et s'engage à les prendre en compte.
  • COGENIT, spécialiste de l'Agile programming traditionnel et de l'application de cette démarche Agile en simulation, offre deux voies pour intégrer rapidement l'environnement de ses clients.
  • g. L'indépendance de la démarche par rapport aux codes et leurs historiques, laisse aux machines à état toute leur puissance pour prendre en compte les circonstances telles qu'elles sont. Ceci est particulièrement efficace dans le traitement des anomalies dont les enchaînements sont souvent aléatoires et doivent être travaillées comme telles.
  • h. 3 paraphrases :
    lLa maîtrise de ces capacités de simuler et de tester rajoute, au-delà de la seule paraphrase traditionnelle représentée par le code de la spécification, deux autres paraphrases :
  • Celle des simulateurs,
  • Celle des séquences de tests,
  • Offrant ainsi trois compilations différentes de la même spécification, garantie inégalée de la qualité du système produit à des coûts très inférieurs.

Ces fonctions efficacement rassemblées pour ces résultats très appréciables nécessitent et montrent la grande maîtrise de COGENIT dans la synthèse des connaissances des systèmes à la fois dans leur fonctionnement et dans leur environnement.



  • 1. Meilleure coordination des équipes internes, externes et sous-traitantes
    Le client, l'unité d'affaire et les équipes de développement du système et des composants y compris les sous-traitants éventuels pour les composants et le code s'appuient sur une base de centralisation des spécifications et des données communes grâce aux liens qu'ils construisent et tiennent à jour entre le modèle du système, le modèle de test et la spécification en suivant au plus près les enseignements de chaque itération.
  • 2. Elimination progressive des erreurs par des simulations suffisantes pour les identifier
    Le test et l'exécution des modèles de plus en plus spécifiques mettent la cohérence et exhaustivité des spécifications à l'épreuve de simulations de plus en plus proche de la réalité.
  • 3. Anticiper les comportements
    Dès la phase de spécification, les équipes disposent, grâce à la chaîne d'outils des comportements simulés du système à contrôler, d'outils pour corriger les erreurs et approcher au plus vite la réalité.
  • 4. Tester au plus tôt
    L'élaboration des tests commence dès la production et la prise en compte des spécifications. Ces tests permettent de valider les simulateurs sur des tests qui progressivement deviennent ceux du système complet.
  • 5. Produire une traçabilité en temps réel
    Les affinements itératifs des spécifications, du modèle du système et du modèle des tests fondent une traçabilité progressive qui garantit la cohérence du projet depuis les spécifications générales jusqu'aux modèles détaillés, au code du produit et au système complet.
  • 6. Prévenir les accumulations d'anomalies
    Les tests sont élaborés bien avant que le code ne soit disponible ou que des anomalies n'apparaissent dans ce code. Cette possibilité d'anticiper les corrections permet une meilleure allocation des tâches pour une productivité augmentée.
  • 7. Mieux gérer la charge des modifications
    Dans la gestion des modifications, les simulations permettent de meilleures appréciations de leurs impacts sur les charges de travails et une programmation plus sereine dans les plannings.
  • 8. Traiter les scénarios alternatifs voire anormaux
    Les modèles et leurs tests couvrent au plus tôt, non seulement les cas nominaux d'opération du produit mais également les comportements en présence d'anomalies qui sont toujours difficiles à imaginer et à réaliser avant la mise à disposition du système complet.
  • 9. Détecter les régressions
    La plate-forme d'exécution des modèles de tests prend en charge leur automatisation et rend naturelle la mise en oeuvre de tests périodiques de non-régression. La version d'origine et les versions modifiées du produit sont testées de façon aussi systématique et complète.
  • 10. Valider le système en profondeur
    La maturation des tests depuis les exigences générales de la spécification du système vers les aspects unitaires du code des composants améliore davantage le produit que les essais cantonnés aux versions successives du système complet.
  • 11. Outil contributeur à la mise en œuvre du CMMI
    Xcarecrows assure une qualité très améliorée des spécifications et le suivi des évolutions.
  • 12. Suivi personnalisé du projet
    Les informations de gestion produites par Xcarecrows peuvent être mises à aux dispositions des directeurs, des chefs de projets et des différents gestionnaires de façons sélectives et personnalisées en utilisant des logiciels d'interface.


COGENIT s'appuie sur son savoir, son métier pour
  • éditer ses logiciels en "open source" du cycle des deux vies industrielle et d'exploitation des systèmes et des composants industriels dont ces systèmes constituent les cadres de fonctionnement et
  • offrir le soutien personnalisé et biodégradable nécessaire pour le succès de projets de grands systèmes souvent sous contraintes de règles changeantes et de sécurité des personnes et des biens.

Depuis le conseil et la formation jusqu'à la prestation effective du service, l'assistance et les outils de COGENIT constituent un avantage stratégique pour ses clients dans deux grands domaines :

  • 1. dans la maîtrise des projets, l'ensemble des atouts de Xcarecrows permet des gains de productivité substantiels,
  • 2. techniquement, la génération automatique de tests identiques pour les simulateurs, le code et le système (ensemble des composants mis en système dans l'environnement " exploitant ") apporte des garanties qui vont de l'exhaustivité des tests à la comparaison de deux autres paraphrases différentes de la spécification (soit 3 au total avec celle du code) et sont deux des contributions importantes de Xcarecrows à un CMMI de qualité.
  • Assistance :
    Nos experts expérimentés apportent les directions et les soutiens nécessaires pour rapidement et efficacement tirer parti des outils les plus pertinents pour le problème à traiter.
  • Formation :
    Nos cours aident les ingénieurs systèmes et les développeurs à apprendre, appliquer et maîtriser les outils de Xcarecrows et leur fonctionnement coordonné.
  • Partenariats :
    COGENIT entretient trois types de partenariats :
  • Partenariat de compétence dont le plus éminent sont les deux avec IBM tant en matière technique que commerciale,
  • Partenariat de Conseil et d'Aide à la réflexion,
  • Partenariat de communautés de pratiques.
  • Dans ce marché très actif, COGENIT étudie et étudiera toute initiative fondée sur un "WIN WIN" durable.

  • Gestion des projets
    Un CMMI conforté par une meilleure spécification, maîtrise des modifications tout au long des cycles des 2 vies industrielle et d'exploitation apportent une contribution efficace à la maîtrise et à la productivité de la direction de projet et de tous les sous-traitants.


Le défi de la qualité de l'application et de sa sécurité ne réside pas seulement dans les erreurs de programmation mais surtout (à 80%) dans des spécifications inexactes et des architectures inadéquates. Il en résulte des dysfonctionnements, pertes de données, mise en danger d'acteurs, défaillances dans les gestions managériales ou financières, vols d'informations sensibles, etc...

Exemple de situations dont ces dégâts peuvent résulter :

Situations

Solution Xcarecrows

Compréhensions différentes des exigences entre le Client, les Business Units, les équipes de développements,

La modélisation fait apparaître sans ambiguïté insuffisances, incohérences, redondances et oublis tout en visualisant les exigences.

Pas de vérification pratique de la cohérence des exigences

Au fil des itérations et à chaque niveau d'exécution, chacun se rassure par rapport à sa propre compétence.

Il n'y a pas de façon simple d'anticiper, en phase de spécification, comment le système à contrôler va se comporter.

A chaque niveau d'itération, le modèle est développé au niveau juste nécessaire. Ce modèle est exécutable et testable autant que de besoin jusqu'à que chaque expert ait pu aller au bout de son intime conviction.

Il n'y a pas de méthode industrielle, en phase de spécification, pour définir les tests avec un coefficient de couverture significatif.

Xcarecrows permet de façon automatique de générer les séquences de tests avec une couverture quasiment complète. Ces séquences sont affinées à chaque itération jusqu'aux et y compris les composants, le code et le système complet.

Dans la pratique, la traçabilité reçoit un soin trop circonstanciel.

La prise en compte automatique de ce devoir fiabilise les bénéfices attendus.

Les tests de l'application sont confiés au seuls développeurs et intégrateurs.

Du spécificateur au metteur en route, chacun à son niveau et au moment de son intervention, valide sa contribution en fonction des mêmes séquences de test adaptées au degré d'itération considéré.

Les exigences à respecter par l'application et les équipes de conception attendent les découvertes d'erreurs faites par les développeurs et les intégrateurs pour commencer à corriger leur travail.

Les séquences de tests habituelles se limitent au fonctionnement convenable de l'application, oublieuses des conditions exceptionnelles, pathologiques, ... qui constituent 90 % de la charge finalement constatée.

La simulation permet rapidement voire systématiquement les investigations les plus variées.

Les essais d'applications modifiées portent seulement sur les parties modifiées de façon évidentes. Les essais complets de régression sont souvent escamotés.

Les automatismes rendent les régressions plus fiables.

Les corrections se limitent souvent aux stades alpha ou béta.

Les corrections se limitent souvent aux stades alpha ou béta. Les automatismes facilitent le report des corrections au niveau essentiel de la spécification et permettent de les valider à tous les niveaux pertinents avant d'engager les dépenses de développement et d'intégration.

Exemples de mécanismes d'erreurs aux différentes étapes du cycle de vie :

  • Phase de spécification : Deux attitudes sont également dommageables :
  • Sous spécifier sera aisément corrigé par les experts,
  • Sur spécifier un point délicat rendra l'exigence de plus en plus difficile à mettre en œuvre.
  • Dans les deux cas chacun choisira ce que suggère son bon sens incapable d'appréhender le vrai besoin du prescripteur. Tôt ou tard l'incompréhension fera surface et sera l'origine de discussions très onéreuses pour toutes les parties.

  • Phase de conception de l'architecture :
    Le système a été décomposé en une série de sous systèmes devant collaborer. Si les interactions ont été mal définies, la traçabilité deviendra confuse. Des résultats mal compris seront difficiles à mettre en œuvre. Des erreurs difficiles à trouver se multiplieront. Finalement, les modifications tout au long du cycle de vie seront toujours confuses.
  • Phase de conception détaillée et codage :
    Une bonne architecture, des méthodes de modélisation structurées pour déduire le code rendront le processus harmonieux aussi longtemps que la traçabilité restera pertinente tout au long de la démarche. Mais que de difficultés si les exigences sont entachées d'erreurs ?
  • Phase des tests unitaires :
    Ces tests montrent le respect des exigences au niveau de l'unité considérée. Ils sont sans ressource par rapport aux qualités des spécifications et de l'architecture.
  • Phase d'intégration :
    Les sous systèmes ont été qualifiés. Il s'agit de les assembler pour vérifier les collaborations dans l'architecture conçue dans le respect des spécifications.


Le maître d'ouvrage pourra juger utile de simuler sa spécification, première phase de la démarche ci-dessous :
voir en grand

Sans attendre les questions des fournisseurs, proposant même ce premier travail avec l'appel d'offres pour une efficacité améliorée, le maître d'ouvrage aura pu choisir les corrections les plus adéquates avec ses propres objectifs.

Une fois la spécification validée et prise en compte par tous les candidats, il produira et utilisera les scénario de tests tant sur sa propre spécification que sur les offres qu'il aura à comparer.


Au reçu de l'appel d'offres, la " business unit " et les ingénieurs associés vérifient les spécifications si le client ne joint pas à l'envoi le travail qu'il a pu faire de son coté.

La phase d'offre est toujours trop courte. Modéliser des points critiques de l'offre ou de la spécification peut :

  • Clarifier les exigences pour une meilleure coordination,
  • Démontrer des arguments convaincants pour le client,
  • Fonder les demandes de changement ou de dérogations.


Contrats signés, du temps est consacré à l'optimisation et l'affinage des spécifications. Xcarecrows permet par itération successives d'ajuster le degré de pression et par voie de conséquence, le temps passé au niveau des enjeux.

Au niveau précis de la réalisation, des options sont encore ouvertes. La simulation est un outil économique et précis pour faire les choix.

Centralisation des bases de données, mise à disposition de tous des mêmes outils de simulation, définition des séquences de tests permettent une répartition du travail et le contrôle des résultats au plus près des réalités des équipes, qu'il s'agisse de l'interne, de la sous-traitance de composants ou de code.

Au cours du cycle de vie du système ou du produit, Xcarecrows dans sa configuration spécifique au projet sera disponible pour traiter des améliorations du système ou le l'obsolescence des composants.


La génération automatique et exhaustive des tests à partir de la spécification permet un grande cohérence des contrôles et validations depuis les première itération de simulation jusqu'à la mise ne service du système. L'application de scénarios identiques sur les simulateurs, les composants, le code et le système complet, avec les ajustements pour tenir compte du degré de développement garantit l'accès au plus vite du meilleur niveau de fiabilité.


CMMI vise :
  • La réduction des coûts de développement,
  • L'amélioration de la qualité des logiciels,
  • La réalisation de produits réellement conformes aux besoins de l'entreprise.
CMMI est :
  • Une gestion intégrée de l'amélioration du processus et de la qualité pour le développement et la maintenance de systèmes,
  • Une approche progressive pour l'amélioration des pratiques de développement de systèmes,
  • L'infrastructure de validation de la maturité de développement de systèmes cohérents.

Mais CMMI ne précise que ce qu'une organisation doit faire pour améliorer ses résultats. Xcarecrows contribue au " comment ". Par une démarche itérative de simulation et de séquences de tests définies sur la base des spécifications de façon automatique et exhaustive applicables à l'identique à chaque simulation et jusqu'aux mises en service, Xcarecrows permet des réductions substantielles de coûts tant au niveau de la définition des tests que des coûts de correction des erreurs qui sont identifiées au plus et bien avant le codage.

Ces outils des 2 cycles des vies industrielle et d'exploitation des systèmes sont utile à chacun des 5 niveaux du CMMI. Une fois le processus en place, son automatisation rendra la maintenance et la réutilisation des scénarios de test plus facile, amplifiant encore les gains de cette approche Xcarecrows.

Un deuxième bénéfice réside dans la confiance accrue des utilisateurs.

Les produits de test inclus dans l'offre IBM Rational permettent de compléter l'automatisation du processus. (Voir annexe 6)


Les produits de test inclus dans l'offre IBM Rational permettent de compléter l'automatisation du processus. La gestion collaborative des exigences et des cas d'utilisation est supportée par IBM Rational RequisitePro®. La gestion centralisée des cas de test, le pilotage de leur exécution et la génération de rapports est automatisée par les produits inclus dans l'ensemble IBM Rational Team Unifying PlatformTM. Enfin, les technologies à l'état de l'art proposées par les produits IBM Rational Functional Tester et IBM Rational Performance Tester permettent l'automatisation des tests fonctionnels et de non régression ainsi que des tests de performance.
voir en grand