ID
15127
Auteurs
Benoit Baudry
Introduction
Si au lieu de distribuer des millions de copies identiques, les fabricants de logiciels avaient la possibilité de distribuer des variantes, et que ces variantes avaient la possibilité de s’adapter à leur environnement, ces « écosystèmes logiciels » ne pourraient-ils pas renforcer la résistance de tous les services qui nous accompagnent au quotidien ?
Image
Domaines applicatifs

Quand l'écologie inspire de nouvelles manières de fabriquer des logiciels

Contenu
Regarder un film, rester en contact avec mes amis, consulter mon compte en banque ou connaître l’état du trafic routier, tout ça quand je veux et où je veux. Rien de plus banal. Notre vie quotidienne a parfaitement intégré ces services et leur disponibilité permanente nous apparaît parfaitement évidente. Cette évidence pourrait presque nous faire oublier que les logiciels qui fournissent ces services en continu sont tout sauf ordinaires. Tout d’abord, ces objets massivement utilisés à travers le monde sont complexes. Prenons par exemple une application aussi banale qu’un navigateur Web : le navigateur Firefox inclut plus de 13 millions de lignes de code écrites dans 35 langages différents (un volume de texte comparable à celui d’une encyclopédie dont les articles seraient écrits dans différents dialectes en fonction du sujet). Ces produits logiciels sont sollicités de manière massive : par exemple, Firefox est téléchargé plus d’un million de fois chaque jour, le moteur de recherche Google répond à des millions de requêtes chaque seconde et Netflix diffuse 10 milliards d’heures de vidéo chaque mois. Ces logiciels sont tous issus d’un intense travail collectif et de constantes évolutions : plus de 3000 personnes contribuent à Firefox, l’effort cumulé depuis la création du navigateur en 2002 est estimé à 4200 années de travail et une centaine de changements sont introduits chaque jour. Ces logiciels ont des capacités d’adaptation et de résistance exceptionnelles : ils doivent pouvoir tolérer de nombreux usages différents, s’exécuter sur de nombreux types d’appareils et doivent faire face aux constantes perturbations auxquelles ils sont soumis (panne matériel, réseau saturé, attaques, etc.). Ces dimensions hors du commun doivent être prises en compte dans la fabrication et l’évolution permanente de ces logiciels. En particulier, les développeurs de ces systèmes ne peuvent pas et ne doivent pas chercher à construire un logiciel parfait. Tout d’abord, la validité d’un logiciel ne peut être vérifiée que sous certaines conditions (par exemple une connexion Internet est disponible), mais il est impossible de prévoir toutes les conditions dans lesquelles ces systèmes s’exécutent. Plus généralement, le souhait d’éliminer le plus d’erreurs possibles distrait le processus de développement logiciel, gaspille des ressources d’ingénierie et produit du logiciel fragile, puisqu’il sera incapable de faire face aux défauts qui seront inévitablement présents dans son environnement. Enfin, pour ces logiciels, la notion de perfection ne recouvre pas celle de qualité, elle contient une part de subjectivité et peut varier considérablement d’un usager à l’autre (par exemple, qui peut dire quelle est la réponse parfaite quand on saisit une requête dans un moteur de recherche ?).
Contenu
Regarder un film, rester en contact avec mes amis, consulter mon compte en banque ou connaître l’état du trafic routier, tout ça quand je veux et où je veux. Rien de plus banal. Notre vie quotidienne a parfaitement intégré ces services et leur disponibilité permanente nous apparaît parfaitement évidente. Cette évidence pourrait presque nous faire oublier que les logiciels qui fournissent ces services en continu sont tout sauf ordinaires. Tout d’abord, ces objets massivement utilisés à travers le monde sont complexes. Prenons par exemple une application aussi banale qu’un navigateur Web : le navigateur Firefox inclut plus de 13 millions de lignes de code écrites dans 35 langages différents (un volume de texte comparable à celui d’une encyclopédie dont les articles seraient écrits dans différents dialectes en fonction du sujet). Ces produits logiciels sont sollicités de manière massive : par exemple, Firefox est téléchargé plus d’un million de fois chaque jour, le moteur de recherche Google répond à des millions de requêtes chaque seconde et Netflix diffuse 10 milliards d’heures de vidéo chaque mois. Ces logiciels sont tous issus d’un intense travail collectif et de constantes évolutions : plus de 3000 personnes contribuent à Firefox, l’effort cumulé depuis la création du navigateur en 2002 est estimé à 4200 années de travail et une centaine de changements sont introduits chaque jour. Ces logiciels ont des capacités d’adaptation et de résistance exceptionnelles : ils doivent pouvoir tolérer de nombreux usages différents, s’exécuter sur de nombreux types d’appareils et doivent faire face aux constantes perturbations auxquelles ils sont soumis (panne matériel, réseau saturé, attaques, etc.). Ces dimensions hors du commun doivent être prises en compte dans la fabrication et l’évolution permanente de ces logiciels. En particulier, les développeurs de ces systèmes ne peuvent pas et ne doivent pas chercher à construire un logiciel parfait. Tout d’abord, la validité d’un logiciel ne peut être vérifiée que sous certaines conditions (par exemple une connexion Internet est disponible), mais il est impossible de prévoir toutes les conditions dans lesquelles ces systèmes s’exécutent. Plus généralement, le souhait d’éliminer le plus d’erreurs possibles distrait le processus de développement logiciel, gaspille des ressources d’ingénierie et produit du logiciel fragile, puisqu’il sera incapable de faire face aux défauts qui seront inévitablement présents dans son environnement. Enfin, pour ces logiciels, la notion de perfection ne recouvre pas celle de qualité, elle contient une part de subjectivité et peut varier considérablement d’un usager à l’autre (par exemple, qui peut dire quelle est la réponse parfaite quand on saisit une requête dans un moteur de recherche ?).
Thèmes scientifiques
ID
15127
Auteurs
Benoit Baudry
Introduction
Si au lieu de distribuer des millions de copies identiques, les fabricants de logiciels avaient la possibilité de distribuer des variantes, et que ces variantes avaient la possibilité de s’adapter à leur environnement, ces « écosystèmes logiciels » ne pourraient-ils pas renforcer la résistance de tous les services qui nous accompagnent au quotidien ?
Contenu
Regarder un film, rester en contact avec mes amis, consulter mon compte en banque ou connaître l’état du trafic routier, tout ça quand je veux et où je veux. Rien de plus banal. Notre vie quotidienne a parfaitement intégré ces services et leur disponibilité permanente nous apparaît parfaitement évidente. Cette évidence pourrait presque nous faire oublier que les logiciels qui fournissent ces services en continu sont tout sauf ordinaires. Tout d’abord, ces objets massivement utilisés à travers le monde sont complexes. Prenons par exemple une application aussi banale qu’un navigateur Web : le navigateur Firefox inclut plus de 13 millions de lignes de code écrites dans 35 langages différents (un volume de texte comparable à celui d’une encyclopédie dont les articles seraient écrits dans différents dialectes en fonction du sujet). Ces produits logiciels sont sollicités de manière massive : par exemple, Firefox est téléchargé plus d’un million de fois chaque jour, le moteur de recherche Google répond à des millions de requêtes chaque seconde et Netflix diffuse 10 milliards d’heures de vidéo chaque mois. Ces logiciels sont tous issus d’un intense travail collectif et de constantes évolutions : plus de 3000 personnes contribuent à Firefox, l’effort cumulé depuis la création du navigateur en 2002 est estimé à 4200 années de travail et une centaine de changements sont introduits chaque jour. Ces logiciels ont des capacités d’adaptation et de résistance exceptionnelles : ils doivent pouvoir tolérer de nombreux usages différents, s’exécuter sur de nombreux types d’appareils et doivent faire face aux constantes perturbations auxquelles ils sont soumis (panne matériel, réseau saturé, attaques, etc.). Ces dimensions hors du commun doivent être prises en compte dans la fabrication et l’évolution permanente de ces logiciels. En particulier, les développeurs de ces systèmes ne peuvent pas et ne doivent pas chercher à construire un logiciel parfait. Tout d’abord, la validité d’un logiciel ne peut être vérifiée que sous certaines conditions (par exemple une connexion Internet est disponible), mais il est impossible de prévoir toutes les conditions dans lesquelles ces systèmes s’exécutent. Plus généralement, le souhait d’éliminer le plus d’erreurs possibles distrait le processus de développement logiciel, gaspille des ressources d’ingénierie et produit du logiciel fragile, puisqu’il sera incapable de faire face aux défauts qui seront inévitablement présents dans son environnement. Enfin, pour ces logiciels, la notion de perfection ne recouvre pas celle de qualité, elle contient une part de subjectivité et peut varier considérablement d’un usager à l’autre (par exemple, qui peut dire quelle est la réponse parfaite quand on saisit une requête dans un moteur de recherche ?).
Image
Domaines applicatifs
Thèmes scientifiques