L'informatique : domaine d'activité industriel ?

À de nombreux égards, l'informatique s'inspire de l'industrie : mise en place de processus standardisés, structuration des équipes, notion de produit livré, etc. Il convient d'aller au bout de la démarche, et de considérer, aussi, les problématiques de qualité.

Qu'est-ce qu'un programme qui marche, au juste ?

Un programme qui « marche » est un programme qui produit les résultats attendus en fonction des données qui lui sont fournies en entrée. Mais comment le vérifier, sachant qu'un programme est en fait constitué de plusieurs programmes, eux-mêmes constitués d'autres programmes, etc. : que doit-on tester, le programme principal ou les sous-programmes ? La réponse à cette question fait débat depuis très longtemps, mais des éléments de réponse se situent dans l'étude des procédés industriels !

Si les ouvriers construisaient les bâtiments comme les développeurs écrivent leurs programmes, le premier pivert venu aurait détruit toute civilisation.

Gerald Weinberg, Software Test Professionals Luminary Award 2010

Industriel et industrialisation…

Au delà du fait d'écrire des lignes de code et d'automatiser des traitements, les principaux acteurs du domaine de l'informatique ont œuvré, depuis des décennies, à en faire un domaine d'activité industriel.

  • Ils en ont repris les objectifs : fournir des produits, à des clients, dans le but de conquérir des marchés.
  • Ils en ont repris les (ou plutôt certaines des) méthodes : MOE/MOA, qualité, architecture, gestion de projets, etc.
Pont de l'île de Ré, testé et approuvé !
Le pont de l'île de Ré, testé et approuvé (avant de faire monter des gens dessus…)

Pensez-vous que les industriels qui ont conçu et réalisé le pont de l'île de Ré, deuxième plus long pont de France reliant l'île au continent près de La Rochelle, ont construit l'ensemble des pièces, les ont assemblées, et ont ensuite décidé de tester l'ensemble en y faisant circuler des engins ?

Bien entendu, non (heureusement pour les usagers du pont).

De la qualité intrinsèque des composants d'un produit industriel…

Très important Pour réaliser le pont de l'île de Ré, chaque pièce importante a été mise à l'épreuve individuellement pour garantir qu'elle remplisse sa propre fonction au sein de l'ouvrage final, sans défaillance. Puis, des tests ont été réalisés sur des parties assemblées de plus grande taille, et enfin sur le pont terminé.

Le bâtiment c'est le bâtiment, l'informatique, c'est l'informatique. Mais le parallèle est simple : si vous avez compris et admis de qui est mentionné au paragraphe précédent, vous avez déjà intégré la notion de test unitaire, de test d'intégration, de recette

Plus qu'une science de laboratoire ou un bac à sable pour bidouilleurs

L'informatique n'est plus (seulement) une science de laboratoire où des chercheurs mettent au point des algorithmes expérimentaux et heuristiques destinés à traiter des problèmes obscurs et complexes…

Cependant pour en faire un domaine d'activité industriel, il faut se fixer les mêmes objectifs de qualité que les autres domaines. Pour construire un produit fiable (pont, voiture, logiciel…), les ingénieurs doivent d'abord s'assurer que chaque composant du produit est, individuellement, fiable. Ensuite, on teste l'assemblage (bien entendu : d'excellents parpaings très résistants assemblés avec un excellent ciment par de mauvais maçons en état d'ébriété aboutit, aussi, à la construction d'une maison qui s'écroulera peu de temps après…).

À retenir – Un composant fiable fournit, en fonction d'une sollicitation connue (pression, alimentation en carburant, alimentation en données…), un résultat connu (torsion, production d'énergie, création d'un fichier…) via un comportement connu.

Testez vos connaissances

Que signifie « industrialiser » ?
  • Industrialiser consiste à employer des méthodes industrielles pour produire et maintenir un produit : en informatique, cela passe notamment par l'instauration de processus clairement établis et normés, l'utilisation de solutions éprouvées comme des frameworks de développement, et le suivi d'un plan qualité.
  • Industrialiser signifie produire plus vite.
  • L'informatique n'a rien à voir avec l'industrie.

Beaucoup de pratiques IT sont aujourd'hui inspirées de l'expérience accumulée par l'industrie au fil des siècles. Il est par exemple aujourd'hui courant de structurer les équipes en divisions MOA/MOE, d'utiliser des normes de qualité, de mettre en œuvre des solutions de gestion de production comme Lean, etc.

Pourquoi est-il nécessaire de tester individuellement les différentes composants d'un produit ?
  • Car si un composant est défaillant, il peut entraîner la défaillance générale du produit tout entier.
  • Tester individuellement suffit à assurer la conformité d'ensemble d'un produit.
  • Tester les composants un à un avant de tester des parties plus grosses permet d'isoler les problèmes tôt, et avec plus de simplicité.

Tester individuellement les différents composant d'un produit est important, mais pas suffisant. Il est tout aussi important de tester les composant que de tester le produit dans son ensemble.

Les tests individuels (que nous appellerons tests unitaires plus tard dans ce cours) permettent de cerner les défauts très tôt, au moment du développement du produit. Ils permettent également, quand ils sont joués régulièrement, de s'assurer que le produit est toujours conforme après une évolution.