Qu'est-ce qu'un logiciel (et son code source) ?

Article

Tech

Savez-vous ce qu’est un logiciel ?

Quel que soit votre âge et la manière dont vous êtes entré en contact avec le monde de l’informatique, vous avez dû entendre ce terme. Vous l’associez sûrement à un certain nombre de procédés et techniques qui définissent ce qu’est un logiciel. Si nous nous sommes attelés à la rédaction de cet article, c’est qu’il existe une grande disparité des points de vue sur ce que constitue, ou non, un logiciel aujourd’hui. 

En prenant position sur le sujet, nous n’avons pas la prétention d’établir de manière unilatérale la “bonne” définition de ce que serait un logiciel ! Mais simplement de donner notre point de vue de passionnés ! 

Tout d’abord, les ordinateurs ont connu une démocratisation croissante à partir des années quatre-vingt en Occident. D’abord outil de travail à disposition d’une minorité de cadres en entreprise, il est devenu disponible pour des foyers privilégiés. Puis une nouvelle source de distraction avec l’émergence des jeux vidéo.

Il est ensuite devenu classique d’avoir un ordinateur à la maison, puis d’en avoir un dans sa poche en permanence. Désormais, il s’en porte même au poignet avec la démocratisation des montres connectées.  

Ces dernières années, cette tendance s'est encore amplifiée avec l'intégration des logiciels dans des objets du quotidien, allant des voitures intelligentes aux appareils électroménagers, formant ainsi un écosystème d'objets connectés toujours plus vaste.

Et pourtant, si la finalité  d’un logiciel semble comprise par tous, ce qu’il représente ne semble pas encore explicite pour le grand public.

Cette incompréhension, souvent partielle, est parfois totale ! Un logiciel ne doit pas être confondu avec un programme informatique, qui est une simple chaîne d’instructions exécutées telles quelles par une machine informatique. Il y a bien sûr une dimension technique au logiciel. Mais il y a également une dimension économique, structurelle, et même psychologique !

Un peu d’étymologie…

Dès les années cinquante, les anglo-saxons apprennent à faire la distinction entre le « hardware », la partie matérielle permanente de l’ordinateur, et le « software » qui est la partie aisément modifiable de l’ordinateur.
Pour l'anecdote : en France le Plan Calcul amènera à la création du néologisme “logiciel” sur la base des mots « logique » et « matériel »

Si le terme français semble davantage insister sur l’aspect « logique formalisée », elle est en décalage avec l’idée que s’en font les anglo-saxons. Pire, des évolutions techniques comme la machine virtuelle ont permis de séparer encore plus fortement la conception logicielle de l’aspect matériel. Comment ? En permettant à des logiciels de simuler virtuellement des composants physiques !

Aujourd'hui, avec l'essor des technologies de cloud computing, la séparation entre matériel et logiciel est encore plus marquée. Les logiciels sont désormais déployés sur des serveurs distants, permettant une flexibilité et une scalabilité sans précédent, tout en réduisant la dépendance à l'infrastructure matérielle locale.


Mais l’étymologie seule ne nous permet pas de comprendre pleinement ce que représente un logiciel en 2021.

Cependant elle nous permet de nous rappeler qu'un logiciel n’est pas une entité fixe, difficile à changer, qui doit peser de tout son poids sur une organisation.

Au contraire, c'est quelque chose de malléable, qui doit suivre fidèlement, au jour le jour, l'évolution de métier et ses intentions.

La dimension économique du logiciel

Avec le temps, s’est installé un nouvel usage du mot logiciel. Il ne faut pas confondre un programme, qui désigne une chaîne d’instructions à destination de l’ordinateur, et le logiciel qui regroupe un ensemble de programmes et sous-programmes, ainsi que toutes les persistances de données et les configurations associées.

Mais qu’est-ce qu’apporte réellement un logiciel ? Sans le logiciel, que devrions nous faire ? À quoi sert, finalement, l’informatique ?

La même réponse s’applique aux 3 questions : accélérer !

Le traitement automatique de l’information (c’est-à-dire l’informatique) est la réponse technologique à apporter aux organisations qui ont besoin, notamment, de coordonner rapidement un grand nombre d’acteurs. Comme des bureaux d’ingénieurs qui veulent rapidement simuler des phénomènes physiques complexes. Ou encore d’autres acteurs voulant accroître le rendement de leur chaîne de production. Tous ne rêvent que d’une chose : accélérer leurs procédés. 

Mais les solutions informatiques apportées n’ont de sens que si elles sont préalablement pensées pour être alignées avec le business. 

Alors, quelles sont les incitations économiques de l’entreprise ? Ou encore, quels sont les freins potentiels des collaborateurs ? Mais aussi les attentes des utilisateurs finaux ? 

Ces discussions doivent être au centre des échanges avec les développeurs afin qu’ils puissent s’approprier la problématique métier de chaque client. 

Dans ce cas, quel est l’objectif final d’une telle approche ? 

Finalement, les fonctionnalités livrées correspondent exactement au besoin et permettent un retour sur investissement le plus rapide possible. Fini les négociations internes pour organiser un amortissement budgétaire, les fonctionnalités économisent ou rapportent de l’argent plus rapidement. Cet avantage est l’un des principaux qui animent les logiques de transformation numérique. 

De plus, la montée en puissance de l'intelligence artificielle (IA) et du machine learning dans les logiciels permet aujourd'hui de repousser encore plus loin les possibilités de l'automatisation. Les entreprises peuvent désormais non seulement accélérer leurs processus, mais aussi les optimiser de manière proactive grâce à l'analyse prédictive et à la prise de décision automatisée.

La dimension structurelle du logiciel

Les logiciels permettent d’accélérer une organisation, lui donnant un avantage compétitif certain face à ses concurrents. Une organisation capable d’aller vite est une organisation qui peut s’adapter rapidement aux demandes du marché.

Un logiciel est donc là pour accompagner les choix d’organisation et accélérer la circulation de l’information entre ses différentes composantes. Cela sera de toute manière une tendance naturelle, car comme l’énonce la loi de Conway : « les organisations qui conçoivent des systèmes […] tendent inévitablement à produire des designs qui sont des copies de la structure de communication de leur organisation. »

Cela revient à dire que par exemple, si une petite start-up se structure autour de 4 services, le logiciel pour gérer cette entreprise sera constitué de 4 composants successifs. Un logiciel sera quasi systématiquement adapté à la structure qui le crée. 

​D’où l’importance de la compréhension du métier et des utilisateurs finaux lorsque vous faites appel à un tiers ! Retrouvez nos approches de la transformation numérique avec notre Livre Blanc sur l’Externalisation !

Mais il existe aussi un principe nommé loi de Conway inverse. Cette loi inverse suggère que si un nouveau système entre en conflit avec l’organisation existante, les équipes changeront d’organisation, car elles seront contraintes par le nouveau système. Sauf que dans une organisation, l’informel peut très vite prendre le dessus sur le formel.

Un exemple ?

Combien d’entreprises ont déployé un logiciel de gestion intégré (ERP), pour finalement réaliser que leurs équipes avaient mis en place une solution parallèle sous Excel, et n'ouvraient l’ERP que pour remplir les champs obligatoires ?

Aujourd'hui, cette situation s'aggrave avec la prolifération des outils SaaS (Software as a Service) disponibles sur le marché. Les équipes peuvent facilement adopter des solutions externes sans consultation, ce qui peut entraîner une fragmentation des données et des processus au sein de l'organisation. Pour éviter cela, une gouvernance stricte des logiciels et une sensibilisation des collaborateurs sont essentielles.

Toute organisation doit penser sa propre transformation, en s’assurant d’obtenir l’adhésion de ses membres. Dans le cas contraire, elle risque de perdre les bienfaits développés précédemment.

Une dimension psychologique

Lorsqu’un ingénieur est amené à concevoir un outil, comme par exemple une paire de ciseaux, il est amené à se poser des questions d’ergonomie. Il va étudier la forme de la main humaine, puis adapter son outil afin que la prise soit facile et sécurisée. Il va peut-être même proposer son produit en version gaucher et droitier. S’il ne le fait pas, il prend un risque considérable avec sa clientèle. 

Un individu qui interagit avec le monde, et en particulier ses outils, ressent des émotions, qu’elles soient positives ou négatives.. Si son usage est inconfortable ou absolument pas pratique, l’individu va renoncer à l’usage de cet outil. Surement au profit d’une autre solution. 

Ce problème d’acceptabilité se pose également dans le domaine du logiciel. Pour que les utilisateurs finaux puissent se l’approprier, il faut que leurs besoins mais aussi leurs processus cognitifs soient pris en compte.

C’est tout l’apport de l’UX/UI Design ! “User Experience/ User interface Design” de son nom complet, se concentre sur les émotions suscitées par l’usage ainsi que sur l’ergonomie attendue par ceux qui utiliserons le produit ou logiciel. 

Avec l'évolution récente des technologies, l'UX/UI Design intègre de plus en plus de méthodologies avancées, comme le design inclusif, qui prend en compte une diversité d'utilisateurs, notamment les personnes en situation de handicap. Cela permet de créer des interfaces accessibles et agréables pour tous, indépendamment des limitations physiques ou cognitives.

Ce sujet attise votre curiosité ?

Découvrez tous les tips de la profession dans notre Livre Blanc sur l’UX Design ! Et pour toujours plus de contenu, consultez notre page UX/UI Design ou notre article sur l’expérience utilisateur.

De la même manière qu’un outil est pensé pour être ergonomique pour l’utilisateur, l’interface homme-machine qui va être utilisée se doit être cohérente avec la finalité poursuivie, et ne pas trahir les intentions de l’utilisateur en le dispersant. Sauf que, là où il faut se soucier de la forme de la main de l’utilisateur pour concevoir une paire de ciseaux, il faut ici se soucier de la manière de penser de l’utilisateur.

Aujourd'hui, les outils d'analyse comportementale permettent d'aller encore plus loin dans la compréhension des utilisateurs. Des technologies comme le tracking des mouvements oculaires ou l'analyse des interactions avec les interfaces permettent de recueillir des données précieuses sur la façon dont les utilisateurs naviguent et interagissent avec un logiciel, afin d'optimiser l'ergonomie et l'efficacité de l'interface.

Si un logiciel énerve son utilisateur, il est évident que celui-ci mettra en place toutes les stratégies possibles pour ne pas être confronté à cette frustration. Si un utilisateur trouve compliqué d’arriver à ses fins avec un logiciel, celui-ci ne sera pas ou très peu utilisé.

Ainsi chaque interface est conçue, puis testée en condition réelle, avec un recueil du retour d’expérience, afin de l’ajuster au plus près des attentes des utilisateurs finaux. Leur adhésion au logiciel en dépend.

L'importance de la dimension psychologique dans le logiciel s'étend désormais aux applications de réalité virtuelle et augmentée, où l'immersion et l'interaction doivent être particulièrement fluides et intuitives pour éviter toute dissonance cognitive ou inconfort.

La dimension technique du logiciel

Partons du postulat que le logiciel est l’expression de l’intention d’accélérer. Le tout adapté et contextualisé selon le métier du bénéficiaire, également grâce à des spécifications détaillées et propres à chaque besoin. 

Un des principaux problèmes pouvant apparaître est une conception verticale de ces spécifications, qui n’impliquera pas toutes les parties prenantes ! 

En mettant en concertation le rédacteur initial de la spécification et la personne chargée de son application il est possible de gagner un temps précieux ! Votre solution sera stable et pérenne plus rapidement.

Dans beaucoup d’industries, le schéma classique de la production de valeur est vue comme sur le schéma suivant :


Schéma de création de la valeur par le logiciel pour les industriels classiques

Les ingénieurs et les ouvriers ont des domaines d’expertise différents. Les premiers ont la responsabilité de rédiger une spécification suffisamment détaillée pour les seconds. Les ouvriers livrerons ce qu’ils auront compris des spécifications.  Seulement dans le développement logiciel, l’ouvrier est ce qu’on appelle un compilateur. C’est-à-dire que nous avons un logiciel qui produit du logiciel. Et donc le code source du logiciel est la spécification détaillée à destination du compilateur.

C’est pour cette raison que l’organisation que l’on retrouve souvent dans notre secteur d’activité correspond au schéma suivant :


Schéma de création de la valeur dans l’informatique

Cela s’avère contre productif voire dangereux pour le succès du logiciel !

Aujourd'hui, avec l'essor des méthodologies agiles et DevOps, la collaboration entre les équipes de développement et les autres parties prenantes est facilitée, permettant une livraison continue de valeur et une meilleure adaptation aux changements de spécifications. De plus, l'utilisation croissante des conteneurs et des microservices dans les architectures logicielles permet une modularité accrue, réduisant les risques associés à des conceptions trop verticales et monolithiques.

Envie d'en savoir plus ?

Pour en savoir plus sur l’art de la rédaction de spécifications et plus largement sur le concept de Code as Design, nous vous conseillons la lecture de cet essai, certes ancien mais toujours très pertinent : Code as Design: Three Essays by Jack W. Reeves.


Les développeurs sont des ingénieurs qui rédigent une spécification détaillée.

Ce qui partira en production sera ce que les développeurs en auront compris. Ils doivent pouvoir exercer leur activité en étant en lien direct avec leur client. Et donc tendre vers le schéma suivant :


Schéma de la création de valeur chez Amiltone

Ce changement de vision vis-à-vis des équipes de développement est souvent un bouleversement pour les organisations. Celles-ci comprennent qu’externaliser un logiciel ne veut plus dire “faire faire” mais “coconstruire”. C’est-à-dire, composer une équipe de partenaires qui vont écrire ces spécifications détaillées en fonction du besoin.

Pour résumer le logiciel

  • Un logiciel est la solution technique permettant d’accélérer une entreprise, afin de la rendre plus compétitive que ses concurrents. De plus, il permet d’améliorer les conditions de travail des employés, qui peuvent alors se concentrer sur ce qui apporte véritablement de la valeur.

  • Un logiciel suit les structures de communication de l’entreprise, mais aussi les processus de réflexion de tous les utilisateurs. Tout ceci a pour but de rendre l’usage du logiciel naturel et fluide pour toute l’organisation et ses acteurs. Garantissant ainsi l’adhésion de tous.

Aujourd'hui, l'intégration de l'intelligence artificielle (IA) dans les logiciels permet également d'automatiser des tâches complexes et d'améliorer la prise de décision, rendant les entreprises encore plus agiles et réactives. Les logiciels intelligents peuvent analyser des données en temps réel, prédire des tendances, et proposer des actions proactives, augmentant ainsi leur impact sur la compétitivité de l'entreprise.

  • Le code source d’un logiciel est sa spécification détaillée, elle est fréquemment écrite en collaboration avec l’équipe de développement, et plus rarement en amont de celle-ci. Autrement cela revient à faire le même travail plus d’une fois, tout en perdant de l’information en route.

  • Le code source n’est pas un édifice inamovible tel un pont ou un bâtiment ! Il suit l’évolution de l’entreprise au jour le jour, afin de l’aider à pivoter le plus rapidement possible sur un marché en constante évolution. Il permet d’apporter une série d’amélioration incrémentale permettant de continuer à accélérer l’organisation.

Les pratiques de développement continu (CI/CD) sont désormais essentielles pour maintenir ce flux constant d'améliorations. Elles permettent de déployer des mises à jour plus fréquemment, avec moins de risques, grâce à des tests automatisés et une intégration continue du code.

  • Bien pensées en amont, les futures mises à jour et améliorations seront moins coûteuses et moins risquées financièrement. Avec une gouvernance adaptée, la valeur apportée par une solution logicielle se manifeste quasiment immédiatement.

Partager cet article

Partager cet article

Partager cet article

Nos derniers articles et livres blancs