Le développement informatique a connu d’importantes évolutions ces dernières années.
Pour être toujours plus proche des besoins — accélérer la prise de décision dans les entreprises et les institutions publiques, optimiser les temps de calcul et de de déploiement de nouvelles solutions — l’industrie de l’informatique multiplie les moyens techniques et les approches, faisant évoluer le métier de développeur informatique et le rendant de plus en plus complexe.
Photo by Abraham Barrera on Unsplash
Parmi les différentes tendances qui déterminent l’évolution du métier de développeur informatique, on peut distinguer :
La multiplication des périphériques d’acquisition, de traitement et de restitution de la donnée. Ces périphériques ou accessoires sont des ordinateurs à part entière — car dotés de processeurs et programmables. De par leur petite taille et leur omniprésence dans l’espace vital des utilisateurs, ces objets permettent de diversifier l’offre de services informatiques.
Le développement des technologies de mise en réseau. Internet a complètement changé le rapport à l’ordinateur pour un développeur informatique. L’ordinateur ne peut plus être vu comme une ressource de calcul isolée et les réseaux informatiques sont devenus la norme. La possibilité de monter plusieurs centaines de milliers d’ordinateurs en réseau et tirer ainsi profit de la somme des ressources de calcul pour l’exécution des programmes informatiques incite à repenser la manière de les concevoir.
L’évolution de la complexité des solutions informatiques. Pour des raisons à la fois économiques et techniques, il devient de plus en plus difficile de penser une application sans l’intégrer dans un système d’interactions avec des serveurs de base de données ou d’applications tierces. En effet, plusieurs fournisseurs d’applications se spécialisent dans des tâches bien précises accessibles via des interfaces d’utilisation rendues publiques. Par ailleurs, il n’est pas toujours possible matériellement, de mettre en place des ressources informatiques réunissant toutes les caractéristiques nécessaires au bon fonctionnement d’une application (capacité de stockage, vitesse d’exécution, communication réseau, etc.), d’où le besoin de les spécialiser.
Le besoin d’automatisation du traitement de l’information et la robotisation massive du travail manuel. L’informatique fait de plus en plus de choses pour nous, et ce, sans notre intervention. Des applications M2M (Machine to Machine) se développent de plus en plus, promues par les besoins des utilisateurs et la transformation digitale dans les entreprises et les espaces publiques. Les solutions informatiques se veulent plus pro-actives et embarquées.
Le facteur humain. L’évolution des approches de la programmation et des attentes des utilisateurs est en grande partie due à une relation de plus en plus étroite entre la machine et l’homme. En effet, les utilisateurs ont tendance à transposer leurs facultés intellectuelles et émotives sur la machine et s’attendent à ce qu’elle parle le même langage qu’eux. Les approches du développement deviennent par conséquent de plus en plus abstraites — haut niveau — quand il s’agit de créer des outils informatiques capable d’interagir avec les utilisateurs dans leurs tâches quotidiennes.
Aujourd’hui
Le croisement de ces différentes tendances entraîne un changement de perspectives important pour le métier de développeur informatique.
L’automatisation, la robotisation et l’évolution de la complexité des solutions informatiques impliquent de savoir mettre en œuvre des programmes informatiques capables de s’exécuter de manière autonome et d’interagir avec d’autres programmes en tenant compte des intérêts des utilisateurs objectivement exprimés.
Les réseaux informatiques et la distribution des ressources, étant devenus la norme, la décomposition de l’exécution d’une application en sous programmes et la mise en œuvre des interactions entre ces différents programmes sont des prérequis incontournables pour le déploiement réussi d’une application.
Prendre les intérêts d’un utilisateur ne signifie plus simplement réaliser des programmes qui produisent un résultat, mais implique dorénavant la mise en place de formes de coopération entre programmes, de compétition ou de négociation — c’est donc une ère très sociale du développement où la distribution, les interactions et leur complexité se confondent avec les fonctionnalités des solutions informatiques !
Pourquoi les systèmes multi-agents ?
L’ingénieur informatique doit dont penser système et pas n’importe quel système! L’ingénieur doit penser systèmes multi-agents (SMA), c’est-à-dire, des programmes situés dans des machines et interagissant entre eux pour réaliser une tâche. Il pourra profiter d’une abondante littérature sur les actes de langages, les architectures de décision des agents rationnels, des agents réactifs, ou encore, des modèles d’action inspirés de la robotique et adaptés à un environnement dynamique.
Les SMA offrent au modélisateur informatique une plus grande liberté de conception pour penser les solutions aux problèmes qui lui sont posés et une manière naturelle d’intégrer les ressources de calculs et de stockage dès la conception.
Un autre avantage, et non des moindres, est le parallèle extrêmement enrichissant que l’on peut faire entre les ecosystèmes naturels et l’architecture de solutions informatiques. La dimension réseau étant devenue la norme, comme mentionné plus haut, il est possible de s’inspirer de la nature (fourmis, araignées, bactéries, plantes, etc. rechercher nature-inspired algorithms) pour imaginer des modèles d’interactions efficaces entre les programmes.
Conclusion
Voilà en quelques mots ce qui me motive à mettre en avant l’approche multi-agent pour les développeurs informatique. Bien entendu, il faudra apporter des preuves par la pratique. C’est pourquoi, très prochainement, je reviendrai en détails et plus concrètement sur l’intérêt du paradigme SMA pour :
- le développement web
- l’apprentissage automatique et l’optimisation
- la simulation comportementale
D’ici-là, merci de vos retours.