Definition

Logiciel

Un logiciel est un ensemble d'instructions, de données ou de programmes utilisés pour faire fonctionner les ordinateurs et exécuter des tâches spécifiques. Il s'oppose au matériel, qui décrit les aspects physiques d'un ordinateur. Le logiciel est un terme générique utilisé pour désigner les applications, les scripts et les programmes qui s'exécutent sur un appareil. Il peut être considéré comme la partie variable d'un ordinateur, tandis que le matériel est la partie invariable.

Les deux principales catégories de logiciels sont les logiciels d'application et les logiciels système. Une application est un logiciel qui répond à un besoin spécifique ou qui exécute des tâches. Le logiciel système est conçu pour faire fonctionner le matériel d'un ordinateur et fournit une plate-forme sur laquelle les applications peuvent s'exécuter.

Les autres types de logiciels comprennent les logiciels de programmation, qui fournissent les outils de programmation dont les développeurs de logiciels ont besoin ; les logiciels intermédiaires, qui se situent entre les logiciels système et les applications ; et les logiciels pilotes, qui font fonctionner les appareils informatiques et les périphériques.

Les premiers logiciels étaient écrits pour des ordinateurs spécifiques et vendus avec le matériel sur lequel ils fonctionnaient. Dans les années 1980, les logiciels ont commencé à être vendus sur disquettes, puis sur CD et DVD. Aujourd'hui, la plupart des logiciels sont achetés et directement téléchargés sur Internet. Les logiciels peuvent être trouvés sur les sites web des vendeurs ou des fournisseurs de services d'application.

Exemples et types de logiciels

Parmi les différentes catégories de logiciels, les plus courantes sont les suivantes :

  • Logiciel d'application. Type de logiciel le plus courant, le logiciel d'application est un progiciel qui remplit une fonction spécifique pour un utilisateur ou, dans certains cas, pour une autre application. Une application peut être autonome ou se présenter sous la forme d'un groupe de programmes qui exécutent l'application pour l'utilisateur. Parmi les exemples d'applications modernes, on peut citer les suites bureautiques, les logiciels graphiques, les bases de données et les programmes de gestion de bases de données, les navigateurs web, les traitements de texte, les outils de développement de logiciels, les éditeurs d'images et les plates-formes de communication.
  • Logiciel système. Ces logiciels sont conçus pour faire fonctionner les programmes d'application et le matériel d'un ordinateur. Les logiciels système coordonnent les activités et les fonctions du matériel et des logiciels. En outre, il contrôle les opérations du matériel informatique et fournit un environnement ou une plateforme dans laquelle tous les autres types de logiciels peuvent travailler. Le système d'exploitation est le meilleur exemple de logiciel système ; il gère tous les autres programmes informatiques. Parmi les autres exemples de logiciels système figurent les microprogrammes, les traducteurs de langage informatique et les utilitaires système.
  • Logiciel pilote. Également connus sous le nom de pilotes de périphériques, ces logiciels sont souvent considérés comme un type de logiciel système. Les pilotes de périphériques contrôlent les périphériques connectés à un ordinateur, leur permettant d'effectuer leurs tâches spécifiques. Chaque périphérique connecté à un ordinateur a besoin d'au moins un pilote de périphérique pour fonctionner. Les exemples incluent les logiciels fournis avec tout matériel non standard, y compris les contrôleurs de jeux spéciaux, ainsi que les logiciels qui activent le matériel standard, comme les périphériques de stockage USB, les claviers, les casques et les imprimantes.
  • Logiciel intermédiaire (middleware). Le terme "intergiciel" décrit un logiciel qui sert de médiateur entre un logiciel d'application et un logiciel système ou entre deux types différents de logiciels d'application. Par exemple, l'intergiciel permet à Microsoft Windows de communiquer avec Excel et Word. Il est également utilisé pour envoyer une demande de travail à distance d'une application sur un ordinateur doté d'un certain type de système d'exploitation à une application sur un ordinateur doté d'un système d'exploitation différent. Il permet également aux nouvelles applications de fonctionner avec les anciennes.
  • Logiciel de programmation. Les programmeurs informatiques utilisent des logiciels de programmation pour écrire du code. Les logiciels de programmation et les outils de programmation permettent aux développeurs de développer, d'écrire, de tester et de déboguer d'autres programmes logiciels. Les exemples de logiciels de programmation comprennent les assembleurs, les compilateurs, les débogueurs et les interprètes.
Diagramme de la pile logicielle
Voici un aperçu complet de la pile logicielle.

Comment fonctionne un logiciel ?

Tous les logiciels fournissent les instructions et les données dont les ordinateurs ont besoin pour fonctionner et répondre aux besoins des utilisateurs. Cependant, les deux types de logiciels - les logiciels d'application et les logiciels système - fonctionnent de manière très différente.

Logiciel d'application

Les logiciels d'application se composent de nombreux programmes qui exécutent des fonctions spécifiques pour les utilisateurs finaux, telles que la rédaction de rapports et la navigation sur des sites web. Les applications peuvent également exécuter des tâches pour d'autres applications. Les applications d'un ordinateur ne peuvent pas fonctionner seules ; elles ont besoin du système d'exploitation de l'ordinateur, ainsi que d'autres logiciels de soutien, pour fonctionner.

Ces applications de bureau sont installées sur l'ordinateur de l'utilisateur et utilisent la mémoire de l'ordinateur pour effectuer des tâches. Elles occupent de l'espace sur le disque dur de l'ordinateur et n'ont pas besoin d'une connexion internet pour fonctionner. Toutefois, les applications de bureau doivent respecter les exigences des dispositifs matériels sur lesquels elles s'exécutent.

Les applications web, quant à elles, ne nécessitent qu'un accès à l'internet pour fonctionner ; elles ne dépendent pas du matériel et du logiciel système pour fonctionner. Par conséquent, les utilisateurs peuvent lancer les applications web à partir d'appareils dotés d'un navigateur web. Comme les composants responsables de la fonctionnalité de l'application se trouvent sur le serveur, les utilisateurs peuvent lancer l'application à partir de Windows, Mac, Linux ou tout autre système d'exploitation.

Logiciel système

Le logiciel système se situe entre le matériel informatique et le logiciel d'application. Les utilisateurs n'interagissent pas directement avec le logiciel système, qui fonctionne en arrière-plan et gère les fonctions de base de l'ordinateur. Ce logiciel coordonne le matériel et les logiciels d'un système afin que les utilisateurs puissent exécuter des logiciels d'application de haut niveau pour réaliser des actions spécifiques. Le logiciel système s'exécute lorsqu'un système informatique démarre et continue à fonctionner tant que le système est en marche.

Tableau comparant le système et le logiciel d'application
Voici les principales différences entre les logiciels de système et les logiciels d'application.

Conception et mise en œuvre

Le cycle de vie du développement logiciel est un cadre que les chefs de projet utilisent pour décrire les étapes et les tâches associées à la conception d'un logiciel. Les premières étapes du cycle de vie de la conception consistent à planifier l'effort, puis à analyser les besoins des personnes qui utiliseront le logiciel et à créer des exigences détaillées. Après l'analyse initiale des besoins, la phase de conception vise à spécifier comment répondre aux besoins des utilisateurs.

L'étape suivante est la mise en œuvre, au cours de laquelle le travail de développement est achevé, puis le logiciel est testé. La phase de maintenance comprend toutes les tâches nécessaires au bon fonctionnement du système.

La conception du logiciel comprend une description de la structure du logiciel qui sera mis en œuvre, des modèles de données, des interfaces entre les composants du système et éventuellement des algorithmes que l'ingénieur logiciel utilisera.

Le processus de conception du logiciel transforme les exigences des utilisateurs en une forme que les programmeurs peuvent utiliser pour coder et mettre en œuvre le logiciel. Les ingénieurs logiciels développent la conception du logiciel de manière itérative, en ajoutant des détails et en corrigeant la conception au fur et à mesure qu'ils la développent.

Les différents types de conception de logiciels sont les suivants :

  • Conception architecturale. Il s'agit de la conception fondamentale, qui identifie la structure globale du système, ses principaux composants et leurs relations mutuelles à l'aide d'outils de conception architecturale.
  • Conception de haut niveau. Il s'agit de la deuxième couche de conception qui se concentre sur la manière dont le système, avec tous ses composants, peut être mis en œuvre sous forme de modules soutenus par une pile logicielle. Une conception de haut niveau décrit les relations entre le flux de données et les différents modules et fonctions du système.
  • Conception détaillée. Ce troisième niveau de conception se concentre sur tous les détails de mise en œuvre nécessaires à l'architecture spécifiée.
Diagramme du cycle de développement d'un logiciel
Découvrez les six principales étapes du développement d'un logiciel.

Comment maintenir la qualité des logiciels

La qualité d'un logiciel permet de déterminer s'il répond aux exigences fonctionnelles et non fonctionnelles.

Les exigences fonctionnelles identifient ce que le logiciel doit faire. Elles comprennent les détails techniques, la manipulation et le traitement des données, les calculs ou toute autre fonction spécifique qui spécifie ce qu'une application vise à accomplir.

Les exigences non fonctionnelles - également connues sous le nom d'attributs de qualité - déterminent la manière dont le système doit fonctionner. Les exigences non fonctionnelles comprennent la portabilité, la reprise après sinistre, la sécurité, la protection de la vie privée et la facilité d'utilisation.

Les tests de logiciels détectent et résolvent les problèmes techniques dans le code source du logiciel et évaluent la facilité d'utilisation, les performances, la sécurité et la compatibilité du produit pour s'assurer qu'il répond aux exigences.

Les dimensions de la qualité des logiciels comprennent les caractéristiques suivantes :

  • Accessibilité. La mesure dans laquelle un groupe diversifié de personnes, y compris celles qui ont besoin de technologies d'adaptation telles que la reconnaissance vocale et les loupes d'écran, peut utiliser confortablement le logiciel.
  • Compatibilité. L'aptitude du logiciel à être utilisé dans divers environnements, par exemple avec différents systèmes d'exploitation, appareils et navigateurs.
  • Efficacité. Capacité du logiciel à fonctionner correctement sans gaspiller d'énergie, de ressources, d'efforts, de temps ou d'argent.
  • Fonctionnalité. Capacité du logiciel à exécuter les fonctions spécifiées.
  • Installabilité. Capacité du logiciel à être installé dans un environnement spécifique.
  • Localisation. Les différentes langues, fuseaux horaires et autres caractéristiques de ce type dans lesquels un logiciel peut fonctionner.
  • La maintenabilité. La facilité avec laquelle le logiciel peut être modifié pour ajouter et améliorer des fonctionnalités, corriger des bogues, etc.
  • Performance. La vitesse à laquelle le logiciel fonctionne sous une charge spécifique.
  • Portabilité. Capacité du logiciel à être facilement transféré d'un endroit à un autre.
  • Fiabilité. Capacité du logiciel à exécuter une fonction requise dans des conditions spécifiques pendant une période de temps définie sans aucune erreur.
  • Évolutivité. Mesure de la capacité du logiciel à augmenter ou à diminuer ses performances en réponse à des changements dans ses exigences de traitement.
  • Sécurité. Capacité du logiciel à protéger contre les accès non autorisés, les atteintes à la vie privée, le vol, la perte de données, les logiciels malveillants, etc.
  • Testabilité. Facilité avec laquelle le logiciel peut être testé.
  • Facilité d'utilisation. Facilité d'utilisation du logiciel.

Pour maintenir la qualité des logiciels une fois qu'ils sont déployés, les développeurs doivent constamment les adapter pour répondre aux nouvelles exigences des clients et résoudre les problèmes qu'ils identifient. Il s'agit notamment d'améliorer les fonctionnalités, de corriger les bogues et d'ajuster le code du logiciel pour éviter les problèmes. La durée de vie d'un produit sur le marché dépend de la capacité des développeurs à répondre à ces exigences de maintenance.

En ce qui concerne la maintenance, il existe quatre types de changements que les développeurs peuvent effectuer :

  1. Correctif. Les utilisateurs identifient et signalent souvent des bogues que les développeurs doivent corriger, notamment des erreurs de codage et d'autres problèmes qui empêchent le logiciel de répondre à ses exigences.
  2. Adaptatif. Les développeurs doivent régulièrement apporter des modifications à leurs logiciels pour s'assurer qu'ils sont compatibles avec les environnements matériels et logiciels changeants, par exemple lorsqu'une nouvelle version du système d'exploitation est disponible.
  3. Perfectif. Il s'agit de changements qui améliorent la fonctionnalité du système, comme l'amélioration de l'interface utilisateur ou l'ajustement du code logiciel pour améliorer les performances.
  4. Préventif. Ces changements sont effectués pour empêcher le logiciel de tomber en panne et comprennent des tâches telles que la restructuration et l'optimisation du code.

Développement de logiciels modernes

DevOps est une approche organisationnelle qui réunit les équipes de développement de logiciels et d'opérations informatiques. Elle favorise la communication et la collaboration entre ces deux groupes. Le terme décrit également l'utilisation de pratiques itératives de développement de logiciels qui utilisent l'automatisation et l'infrastructure programmable. Pour en savoir plus, consultez notre guide ultime du DevOps.

Licences de logiciels et brevets

Une licence de logiciel est un document juridiquement contraignant qui limite l'utilisation et la distribution d'un logiciel.

En règle générale, les licences de logiciels donnent aux utilisateurs le droit d'effectuer une ou plusieurs copies du logiciel sans violer les droits d'auteur. La licence décrit les responsabilités des parties qui concluent l'accord et peut imposer des restrictions sur la manière dont le logiciel peut être utilisé.

Les conditions de licence des logiciels comprennent généralement l'utilisation équitable du logiciel, les limitations de responsabilité, les garanties, les clauses de non-responsabilité et les protections si le logiciel ou son utilisation enfreint les droits de propriété intellectuelle d'autrui.

Les licences concernent généralement les logiciels propriétaires, qui restent la propriété de l'organisation, du groupe ou de l'individu qui les a créés, ou les logiciels libres, que les utilisateurs peuvent exécuter, étudier, modifier et distribuer. Le logiciel libre est un type de logiciel développé en collaboration et dont le code source est librement accessible. Avec les licences de logiciels libres, les utilisateurs peuvent exécuter, copier, partager et modifier le logiciel, comme dans le cas des logiciels gratuits.

Au cours des deux dernières décennies, les éditeurs de logiciels ont abandonné la vente de licences logicielles à l'unité au profit d'un modèle d'abonnement au logiciel en tant que service. Les fournisseurs de logiciels hébergent les logiciels dans le cloud et les mettent à la disposition des clients, qui paient un abonnement et accèdent au logiciel via l'internet.

Bien que le droit d'auteur puisse empêcher d'autres personnes de copier le code d'un développeur, il ne peut pas les empêcher de développer le même logiciel de manière indépendante sans le copier. Un brevet, en revanche, permet à un développeur d'empêcher une autre personne d'utiliser les aspects fonctionnels du logiciel qu'il revendique dans un brevet, même si cette autre personne a développé le logiciel de manière indépendante.

En général, plus un logiciel est technique, plus il a de chances d'être breveté. Par exemple, un logiciel peut être breveté s'il crée un nouveau type de structure de base de données ou s'il améliore les performances et les fonctions générales d'un ordinateur.

Histoire du logiciel

Le terme "logiciel" n'a pas été utilisé avant la fin des années 1950. À cette époque, bien que différents types de logiciels de programmation aient été créés, ils n'étaient généralement pas disponibles dans le commerce. Par conséquent, les utilisateurs - principalement les scientifiques et les grandes entreprises - devaient souvent écrire leur propre logiciel.

Voici une brève chronologie de l'histoire des logiciels :

  • 21 juin 1948. Tom Kilburn, informaticien, écrit le premier logiciel au monde pour l'ordinateur Manchester Baby à l'université de Manchester en Angleterre.
  • Début des années 1950. General Motors crée le premier système d'exploitation pour la machine de traitement électronique des données IBM 701. Il s'agit du système d'exploitation General Motors, ou GM OS.
  • 1958. Le statisticien John Tukey invente le mot "logiciel" dans un article sur la programmation informatique.
  • Fin des années 1960. Les disquettes sont introduites et utilisées dans les années 1980 et 1990 pour distribuer des logiciels.
  • 3 novembre 1971. AT&T publie la première édition du système d'exploitation Unix.
  • 1977. Apple sort l'Apple II et les logiciels grand public décollent.
  • 1979. VisiCorp lance VisiCalc pour l'Apple II, le premier tableur pour ordinateurs personnels.
  • 1981. Microsoft lance MS-DOS, le système d'exploitation sur lequel fonctionnaient un grand nombre des premiers ordinateurs IBM. IBM commence à vendre des logiciels et les logiciels commerciaux deviennent accessibles au consommateur moyen.
  • 1980s. Les disques durs deviennent la norme sur les PC et les fabricants commencent à intégrer des logiciels dans les ordinateurs.
  • 1983. Le mouvement du logiciel libre est lancé avec le projet GNU (GNU n'est pas Unix) Linux de Richard Stallman, qui vise à créer un système d'exploitation de type Unix dont le code source peut être librement copié, modifié et distribué.
  • 1984. Mac OS est lancé pour faire fonctionner la gamme Macintosh d'Apple.
  • Milieu des années 1980. Des applications logicielles clés, dont AutoDesk AutoCAD, Microsoft Word et Microsoft Excel, sont lancées.
  • 1985. Sortie de Microsoft Windows 1.0.
  • 1989. Les CD-ROM deviennent la norme et contiennent beaucoup plus de données que les disquettes. Les grands logiciels peuvent être distribués rapidement, facilement et à un coût relativement faible.
  • 1991. Le noyau Linux, base du système d'exploitation open source Linux, est publié.
  • 1997. Les DVD sont introduits et peuvent contenir plus de données que les CD, ce qui permet de regrouper des programmes, tels que la suite Microsoft Office, sur un seul disque.
  • 1999. Salesforce.com utilise son cloud pour ouvrir la voie à la fourniture de logiciels sur l'internet.
  • 2000. Le terme "logiciel en tant que service" (SaaS) est en vogue.
  • 2007. L'IPhone est lancé et les applications mobiles commencent à s'imposer.
  • De 2010 à aujourd'hui. Les DVD deviennent obsolètes car les utilisateurs achètent et téléchargent des logiciels sur Internet et dans le cloud. Les fournisseurs adoptent des modèles basés sur l'abonnement et le SaaS est devenu courant.
Cette définition a été mise à jour en avril 2024

Pour approfondir sur Architectures logicielles et SOA