← Back to blogEmbedded computing · 6 min

Qu’est ce que le software ?

Le software, ou logiciel, désigne l'ensemble des programmes informatiques, des données et de la documentation associée qui permettent à un ordinateur ou à un système informatique d'exécuter des tâches précises. C'est la partie non matérielle du système : les programmes, les applications et les instructions qui font fonctionner le matériel et lui permettent d'accomplir quelque chose d'utile. Sans lui, un processeur, une mémoire et des périphériques ne sont qu'un assemblage de composants inertes.

Des cartes perforées au logiciel en tant que service

L'histoire du logiciel commence avec les premiers ordinateurs mécaniques et électroniques. Dans les années 1940 et 1950, les machines étaient très spécialisées et dédiées à des tâches précises. Les programmes s'écrivaient directement en langage machine, sous forme de séquences de chiffres binaires, et se chargeaient en mémoire à l'aide de commutateurs manuels ou de cartes perforées.

Les années 1950 et 1960 ont vu arriver les langages de programmation de haut niveau comme Fortran et COBOL. Les développeurs pouvaient enfin écrire des instructions plus abstraites, plus lisibles pour un humain, que les premiers compilateurs et interpréteurs se chargeaient de traduire en langage machine. Dans la décennie suivante, les systèmes d'exploitation ont pris leur place : Unix ou IBM OS/360 servaient d'interface entre les programmes et le matériel, en prenant en charge la gestion des fichiers, la planification des tâches, la gestion de la mémoire et d'autres services communs.

L'arrivée des microprocesseurs et des ordinateurs personnels, dans les années 1970 et 1980, a démocratisé l'informatique. Des systèmes comme MS-DOS et Apple DOS offraient les fonctions de base pour exécuter des programmes et gérer des fichiers. L'industrie du logiciel a ensuite connu une croissance rapide, avec la multiplication des logiciels d'application : suites bureautiques, logiciels de conception assistée par ordinateur (CAO), logiciels de gestion d'entreprise. Le langage C s'est imposé, puis le C++, qui a popularisé la programmation orientée objet.

Depuis les années 1990, Internet et le Web ont ouvert un nouveau terrain. Des langages côté serveur comme Java et PHP ont servi à développer des applications web dynamiques, et l'informatique en nuage a conduit à distribuer de plus en plus de logiciels sous forme de services, le modèle SaaS (Software as a Service).

Ce qu'apporte le logiciel

Le premier rôle du logiciel est de fournir au matériel les instructions nécessaires pour exécuter une tâche, qu'il s'agisse de gérer des données, de traiter des informations, d'automatiser un processus ou de créer un document. Il sert aussi d'interface entre l'utilisateur et la machine : c'est par lui que l'on communique avec un ordinateur et ses périphériques, que l'on manipule des données, que l'on affiche des informations ou que l'on pilote un dispositif.

Les systèmes d'exploitation et les logiciels de base assurent en outre la gestion des ressources matérielles, c'est-à-dire la mémoire, le processeur, le stockage et les entrées/sorties. Ils veillent à ce que ces ressources soient utilisées efficacement et partagées de façon coordonnée entre les différentes applications. Sur cette base, le logiciel permet d'automatiser des activités répétitives, des calculs complexes, des traitements de données, des flux de travail ou des opérations de contrôle, ce qui gagne du temps et réduit les erreurs humaines.

Le logiciel facilite également la communication et l'échange d'informations entre utilisateurs, systèmes et applications : transmission de données, messagerie, collaboration en temps réel, connexion aux réseaux et à Internet. Il favorise l'interopérabilité entre technologies différentes. Enfin, il s'adapte : une application se configure, on y ajoute ou retire des fonctions, on la modifie pour répondre à des exigences particulières. C'est cette souplesse qui en fait un moteur d'innovation, puisque de nouveaux produits et services naissent souvent d'abord sous forme logicielle.

De quoi se compose un logiciel

Tout logiciel part d'un code source, la représentation textuelle des instructions et des algorithmes écrits dans un langage de programmation donné. C'est le texte que lisent et modifient les développeurs, la base qui permet de créer, faire évoluer et comprendre le programme. Ce code est ensuite compilé ou interprété pour devenir exécutable par la machine. La compilation le transforme à l'avance en code machine directement exécutable, alors que l'interprétation le traduit au fil de l'exécution. On obtient selon le cas un fichier exécutable ou un script interprété.

Rares sont les logiciels écrits entièrement à partir de zéro. Ils s'appuient sur des bibliothèques et des modules, des collections de fonctions, de classes et de routines réutilisables, fournies par des tiers ou développées en interne. Ils utilisent aussi des données et des fichiers de configuration (bases de données, fichiers de ressources, paramètres) qui contiennent les informations structurées ou non dont le programme a besoin pour prendre ses décisions ou fournir ses fonctions.

Vient ensuite l'interface utilisateur, faite de fenêtres, de menus, de boutons, de formulaires ou de graphiques, qui permet de saisir des données, d'afficher des informations et de déclencher des actions. Un logiciel sérieux s'accompagne enfin d'une documentation (descriptions, guides d'utilisation, manuels, tutoriels, exemples de code, spécifications techniques) qui aide développeurs, utilisateurs et mainteneurs à comprendre son fonctionnement et ses exigences, ainsi que de suites de tests et d'outils de débogage. Les tests vérifient la qualité et la fiabilité en détectant erreurs et comportements indésirables, les outils de débogage aident à localiser et corriger les défauts pendant le développement et le déploiement.

Le logiciel dans l'électronique et l'embarqué

Dans le domaine de l'électronique, le logiciel prend des formes bien particulières. Les systèmes d'exploitation embarqués, comme Linux embarqué, FreeRTOS, VxWorks ou Windows Embedded, fournissent l'environnement d'exécution des systèmes embarqués, avec la gestion des ressources, la planification des tâches, la gestion de la mémoire et des fichiers. Pour produire le code qui tourne dessus, on utilise des compilateurs et des environnements de développement tels que GCC (GNU Compiler Collection), Keil, IAR Embedded Workbench ou MPLAB XC, qui convertissent le code source en code machine et offrent des fonctions de débogage, de profilage et d'optimisation adaptées à chaque plateforme matérielle.

En amont, les logiciels de conception électronique (EDA), comme Altium Designer, Cadence Allegro ou Mentor Graphics PADS, servent à concevoir les circuits et les PCB (Printed Circuit Boards) : saisie de schémas, simulation, analyses de conception et génération des fichiers de fabrication. Au plus près du matériel, le firmware, ou micrologiciel, est intégré dans les microcontrôleurs, les cartes de développement, les appareils mobiles ou les périphériques de stockage, où il assure le contrôle des périphériques, la gestion de l'énergie et la communication.

D'autres outils interviennent pour la validation : les logiciels de test et de débogage, qu'ils s'appuient sur l'interface JTAG, sur la technique du boundary scan ou sur des outils propres à un matériel, vérifient le bon fonctionnement des composants, testent les connexions, détectent défauts et pannes et facilitent la mise au point des systèmes embarqués. Côté utilisateur, des logiciels dédiés permettent de créer des interfaces graphiques pour écrans tactiles, interfaces web ou applications mobiles. Enfin, les logiciels de contrôle et d'automatisation pilotent des systèmes complexes, comme les installations industrielles, la domotique, les robots ou les drones, avec des fonctions de programmation, de planification des tâches, de communication et de supervision.

Le choix d'une plateforme matérielle embarquée conditionne largement la pile logicielle disponible, du système d'exploitation aux outils de développement. Nos équipes peuvent vous aider à vérifier qu'un module ou une carte correspond à l'environnement logiciel que vous visez.

Sources

Qu’est ce que le software ? | Tokhatec