Logiciel

En informatique, un logiciel est un ensemble de séquences d’instructions interprétables par une machine et d’un jeu de données nécessaires à ces opérations. Le logiciel détermine donc les tâches qui peuvent être effectuées par la machine, ordonne son fonctionnement et lui procure ainsi son utilité fonctionnelle. Les séquences d’instructions appelées programmes ainsi que les données du logiciel sont ordinairement structurées en fichiers. La mise en œuvre des instructions du logiciel est appelée exécution et la machine chargée de cette mise en œuvre est appelée ordinateur ou calculateur.

Un logiciel peut être classé comme système, applicatif, standard, spécifique, ou libre, selon la manière dont il interagit avec le matériel, selon la stratégie commerciale et selon les droits sur le code source des programmes. Le terme logiciel propriétaire est aussi employé.

Les logiciels sont créés et livrés à la demande d'un client ou sur l'initiative du producteur, et mis sur le marché, parfois gratuitement. En 1980, 60 % de la production et 52 % de la consommation mondiale de logiciels est aux États-Unis. Les logiciels sont aussi distribués illégalement et la valeur marchande des produits ainsi distribués est parfois supérieure au chiffre d'affaires des producteurs. Les logiciels libres sont créés et distribués comme des commodités produites par coopération entre les utilisateurs et les auteurs.

Créer un logiciel est un travail intellectuel qui prend du temps. La création de logiciels est souvent le fait d'une équipe, qui suit une démarche logique et planifiée en vue d'obtenir un produit de bonne qualité dans les meilleurs délais. Le code source et le code objet des logiciels sont protégés par la convention de Berne concernant les œuvres littéraires.

Étymologie 
Le terme anglais  a été utilisé dès 1953 pour distinguer la partie modifiable de l'ordinateur, par opposition au  qui est la partie matérielle permanente. Il est apparu dans la littérature pendant les années 1960.

En français, le mot « logiciel » est formé en 1969 en France à partir des mots « logique » et « matériel » comme traduction par la Délégation à l’informatique chargée du Plan Calcul.

Ce terme a été adopté par l'Académie française en 1972. Cette traduction est officialisée par un arrêté publié au Journal officiel de la République française le  et confirmé par l'arrêté du .

Introduction 
Un ordinateur est composé de matériel et de logiciels. Le matériel est constitué des musiciens et des instruments, tandis que le logiciel est la partition. Sans logiciel l'ordinateur ne fait rien parce qu'il n'a pas reçu les instructions lui indiquant ce qu'il doit faire. Les logiciels sont composés de programmes informatiques, qui indiquent à l'ordinateur comment effectuer les tâches. Le logiciel détermine les tâches qu'un appareil informatique peut effectuer.

Alors qu'à la vente d'un appareil informatique, l'accent est souvent mis sur le matériel informatique, c'est avant tout le logiciel qui donne à l'ordinateur sa valeur ajoutée. Le mot anglais  (en français : logiciel) était à l'origine utilisé pour désigner tout ce qui est immatériel dans un ordinateur : des programmes, des données, des documents, des photos…

Logiciel n'est pas synonyme de programme informatique. Un logiciel est un ensemble typiquement composé de plusieurs programmes, ainsi que tout le nécessaire pour les rendre opérationnels : fichiers de configuration, images bitmaps, procédures automatiques. Les programmes sont sous forme de code binaire ainsi que parfois sous forme de code source.

Les deux principales catégories de logiciels sont les logiciels applicatifs et les logiciels de système. Le logiciel applicatif est destiné à aider les usagers à effectuer une certaine tâche, et le logiciel de système est destiné à effectuer des opérations en rapport avec l'appareil informatique.

La plus importante pièce de logiciel est le système d'exploitation. Il sert à manipuler le matériel informatique, diriger le logiciel, organiser les fichiers, et faire l'interface avec l'utilisateur. Les logiciels disponibles dans le commerce sont toujours destinés à être utilisés avec un ou plusieurs systèmes d'exploitation donnés.

Typologie 
Les logiciels sont couramment classifiés en fonction de :
 la manière dont ils interagissent avec le matériel, directement pour les logiciels système, ou indirectement pour les logiciels applicatifs et les middleware ;
 l'utilisation cible : les entreprises ou les particuliers ;
 leur niveau de standardisation. Les deux extrêmes étant le logiciel standard et le logiciel spécifique.

Les deux principales catégories de logiciels sont le logiciel applicatif et le logiciel de système :
 le logiciel applicatif est destiné à aider les usagers à effectuer une certaine tâche ;
 le logiciel de système est destiné à effectuer des opérations en rapport avec l'appareil informatique.

Les autres types de logiciels sont les applications, les utilitaires, les programmes et les pilotes (anglais driver) :
 les applications sont utilisées pour effectuer une tâche ;
 les utilitaires sont utilisés pour manipuler l'ordinateur ou à des fins de diagnostic ;
 un pilote est un logiciel qui permet d'utiliser un matériel informatique.

Il n'y a pas de distinction claire entre un logiciel standard et un logiciel spécifique, et il existe un continuum entre ces deux extrêmes :
 un logiciel spécifique est construit dans le but de répondre à la demande d'un client en particulier, ce type de logiciel peut être créé par le département informatique de l'entreprise qui s'en sert, ou alors celle-ci fait appel à un éditeur de logiciel ;
 un logiciel standard est créé dans le but d'être vendu en grande distribution, et répond au plus petit dénominateur commun des besoins de différents utilisateurs. Un logiciel standard s'adresse à un marché anonyme, parfois à la suite d'une expérience pilote répondant aux besoins spécifiques de certains consommateurs.

Selon les droits accordés par le contrat de licence, on parle de :
 logiciel propriétaire lorsque l'auteur se réserve le droit de diffuser et de modifier le logiciel ;
 logiciel libre ou logiciel open source lorsqu'il est permis de l'exécuter, d'accéder au code source pour l'étudier ou l'adapter à ses besoins, redistribuer des copies, modifier et redistribuer le logiciel ;
 logiciel gratuit ou gratuiciel, ou (freeware en anglais), pour un logiciel propriétaire qui peut être distribué, copié et utilisé gratuitement, sans frais de licence ;
 partagiciel (shareware en anglais), lorsque l'auteur autorise autrui à diffuser le logiciel.

Secteur industriel 

Les principaux procédés de commercialisation des logiciels sont la production sur mesure de logiciels spécifiques pour les entreprises, la vente de logiciels standard destinés aux entreprises et la vente de ces derniers aux particuliers.
 Les logiciels vendus aux particuliers sont distribués dans la grande distribution, ou pré-installés dans le matériel informatique, le consommateur paye les frais uniques d'une licence d'utilisation. Ce procédé est apparu dans les années 1980.
 Pour les logiciels standards vendus aux entreprises, celles-ci contactent généralement directement des producteurs, les coûts des licences sont négociés, et sont souvent accompagnés de contrats de service en rapport avec la mise en place et l'utilisation du logiciel qui sont payés de manière régulière.
 Pour les logiciels spécifiques, le client contacte directement le producteur, et paie le coût de fabrication du produit. Les services additionnels sont souvent demandés par le client et font partie du contrat conclu avec le fournisseur. Ce procédé existe depuis 1960.

En 1990 les plus grands éditeurs de logiciels aux États-Unis sont IBM, Microsoft, Computer Associates, Digital et Oracle. Les États-Unis sont à la fois le premier consommateur et le premier producteur mondial de logiciels, concurrencé principalement par l'Europe et le Japon (SAP, Dassault Systèmes et Sony) : dans les années 1980, la production / consommation des États-Unis représente 60 % de la production mondiale de logiciels, et 52 % de la consommation. 50 % des logiciels standards mis sur le marché sont des logiciels applicatifs.

Les activités des entreprises du secteur du logiciel sont, outre de créer des logiciels, d'assurer l'installation du logiciel chez le client ainsi que son exploitation. Pour une entreprise comme SAP (numéro un du logiciel en Europe) l'installation de leurs logiciels et la formation des utilisateurs est une part non négligeable de leur activité.

Les logiciels libres sont distribués comme des commodités produites en coopération entre les utilisateurs et les entreprises du secteur. Les entreprises qui les distribuent vendent parfois des contrats d'assistance dans l'utilisation et la modification de ces logiciels.

Dans les années 1950 les logiciels étaient souvent créés par les fabricants de matériel informatique et vendus avec le matériel, parfois des sociétés d'ingénierie créaient sur demande des logiciels applicatifs selon les besoins de l'utilisateur, cependant les systèmes d'exploitation étaient exclusivement le fait de fabricants de matériel. Les éditeurs de logiciels - sociétés spécialisées dans le logiciel - sont devenus courants dès les années 1960. Trente ans plus tard il existe plusieurs milliers d'éditeurs de logiciels aux États-Unis.

Pour les produits numériques tels que les logiciels, la création de la première copie coûte très cher, tandis que les copies subséquentes coûtent très peu. Pour un logiciel, la création du code source demande un investissement important, sans aucune garantie de succès. Une fois créé, un logiciel peut être copié sans perte de qualité, la copie étant strictement identique à l'original. Des outils de partage de fichiers en pair-à-pair sont utilisés pour copier, parfois illégalement, des logiciels, comme ça se fait dans le marché de la musique. Les logiciels couramment copiés illégalement sont ceux qui peuvent être utilisés tels quels par les particuliers - logiciels de bureautique ou jeux vidéo. Les éditeurs de ces logiciels disent que ces copies illégales entraînent des manques à gagner et ceux-ci incluent dans leurs produits des mécanismes de protection.

 La valeur marchande des copies vendues illégalement est souvent supérieure au chiffre d'affaires des ventes des producteurs et cette vente illégale est une des principales préoccupations de tous les éditeurs de logiciel.

Les situations de monopole sont caractéristiques du secteur du logiciel : il arrive souvent qu'une seule technologie ou un seul vendeur contrôle un pan du marché. Le marché du logiciel est sujet à l'effet réseau : la popularité élevée d'un logiciel le rend d'autant plus intéressant pour l'acheteur. Ce phénomène renforce les fortes et grandes entreprises et fragilise les fragiles petites entreprises. Ce qui explique que les petites entreprises peu populaires doivent se battre pour survivre, et explique les situations de monopole. L'adhésion des logiciels aux standards technologiques permet aux producteurs de profiter de l'effet réseau : le fait que plusieurs produits adhèrent au même standard facilite les échanges d'informations ce qui les rend plus intéressants pour l'utilisateur.

Philosophie libre 
Le logiciel libre est un mouvement social basée sur la philosophie formulée par Richard Stallman dans les années 1980.

Richard Stallman, à l'origine de cette mouvance, se décrit lui-même comme étant . Selon le livre de Steven Levy, les hackers sont une communauté et une culture née en 1960 à l'institut de recherche en intelligence artificielle du MIT et presque disparue dans les années 1980. Dans cet institut de jeunes hobbyistes passent leur temps à étudier les ordinateurs et explorer les possibilités qu'offre la programmation de ces machines. Dans ce milieu les programmes informatiques sont traités de la même manière que n'importe quelle information scientifique : mis à la disposition de tout un chacun pour étude, exploitation et amélioration. Il y règne un fort esprit de coopération et de partage, le code source des programmes est utilisé comme moyen de communication, et le fait de restreindre l'accès au code source limite les interactions de la communauté.

En 1984 Richard Stallman, selon sa philosophie libre - héritée du milieu hacker, lance la création d'un système d'exploitation (GNU) et fait appel à un conseiller juridique de la Free Software Foundation pour créer une nouvelle licence de distribution, la GNU General Public License (abr. GPL), qui garantit que le code source d'un logiciel, initialement publié par son auteur, ne sera jamais mis sous secret industriel en application des lois de copyright par quiconque le récupère et le redistribue.

Dans son ouvrage GNU Manifesto, Richard Stallman suggère aux producteurs de logiciels de changer leur manière de travailler, et, au lieu d'acheter et vendre du logiciel, de le considérer comme une commodité produite en coopération entre les utilisateurs et les entreprises du secteur. Il suggère que même si le logiciel est libre, les utilisateurs auront besoin d'assistance dans l'utilisation et la modification du logiciel, services que les entreprises peuvent vendre.

La GPL est la licence la plus fréquemment appliquée aux logiciels libres. En 2002 plus de 50 % des projets de SourceForge.net sont sous licence GPL, et c'est également la licence appliquée à la plupart des distributions GNU/Linux.

Certains comme Eric S. Raymond considèrent que la supériorité des logiciels libres est avant tout technique. Pour promouvoir cet aspect du logiciel libre ils ont créé l'Open Source Initiative en 1998.

Licence et droits 

En Europe de l'Ouest les logiciels sont protégés par la loi en tant qu’œuvres littéraires auxquelles s'applique la convention de Berne. Convention qui prévoit qu'un accord explicite de l'auteur est obligatoire avant de retoucher, de modifier, de publier le logiciel, ou de s'en servir comme base pour réaliser un autre logiciel.

Un contrat de licence fixe les droits et les obligations du fournisseur et de l'utilisateur du logiciel. Ce contrat formalise également les biens et les services qui devront être offerts par le fournisseur. Lorsque les logiciels ont commencé à être vendus en grande distribution, ce contrat - auparavant signé par l'acheteur - a été remplacé par une licence sous emballage (anglais shrink wrap), qui lie automatiquement et tacitement le fournisseur avec l'utilisateur du moment que ce dernier ouvre l'emballage du logiciel.

Les logiciels sont également protégés par les lois du secret industriel, destinées à empêcher la concurrence de se servir des caractéristiques techniques du logiciel dans ses produits. Pour les logiciels vendus en grande distribution sous licence sous emballage, cette protection est assurée en gardant secret le code source du logiciel et en commercialisant uniquement le code objet : la découverte des caractéristiques techniques à partir du code objet nécessite des outils spécialisés et un gros effort de réflexion.

La licence GNU General Public License (abr. GPL) a été créée en 1984 comme outil de soutien de la philosophie libre. Cette licence garantit à quiconque recevant une copie du logiciel d’obtenir les mêmes droits, c’est-à-dire le droit d’exécuter le logiciel dans n’importe quel but, de le copier, de l’étudier, de le modifier et d’en distribuer des copies exactes ainsi que des copies modifiées.

Distribution 

Les logiciels peuvent être distribués dans le commerce de détail, téléchargés en libre-service, incorporés dans un appareil informatique, ou mis en ligne sur un ordinateur du fournisseur. La distribution peut être gratuite, peut faire l'objet de commerce et peut être complétée par des contrats de service concernant par exemple de la maintenance ou de l'assistance technique. En plus de la distribution publique, des techniques permettent la distribution automatisée de logiciels aux employés d'une entreprise. La majorité des logiciels continuent d'appartenir à leur producteur après avoir été distribués.

Les logiciels sont « emballés » sous une forme qui facilite le transport avant d'être distribués aux utilisateurs. Pour un logiciel vendu en grande distribution, le colis (anglais package) est conçu pour permettre l'utilisation immédiate du logiciel sans l'intervention d'un informaticien. Il contient généralement le code objet des programmes, le nécessaire pour les installer et la documentation. Le colis est rarement vendu, et généralement mis à disposition assorti d'une licence d'utilisation. Le fournisseur peut y ajouter des services de formation, de maintenance, de mise à jour et de garantie, souvent sur paiement additionnel.

Le déploiement est effectué en plusieurs étapes qui visent à placer le logiciel dans son environnement cible de manière qu'il soit prêt à être utilisé. La première étape consiste à emballer (anglais package) un logiciel en vue de faciliter son envoi vers l'environnement cible. Puis une étape dite d´installation consiste à effectuer les opérations nécessaires pour placer le logiciel dans son environnement cible, ceci peut nécessiter une modification de la configuration des logiciels déjà en place. L'opération de désinstallation consiste à effectuer les opérations inverses de l'installation, en vue de retirer le logiciel.

La procédure d'installation est typiquement automatisée par des logiciels - qui sont essentiellement des outils de décompression. Un logiciel évolue durant toute sa vie, et est typiquement distribué plusieurs fois, à plusieurs stades de son évolution, appelés versions ou release.

Le secteur public a été l’un des secteurs d’activité le plus moteur dans la diffusion et appropriation de l’open source et des logiciels libres. À titre d’exemple, en 2011, près de 19 % du budget informatique de l’administration française est affecté à des projets à composantes open source ou incluant des logiciels libres, générant ainsi un marché de plus de 1,2 milliard d’euros en 2011 (logiciels et services).

Il faut aussi tenir compte des évolutions en cours dans les modèles de distribution des logiciels avec la montée en puissance de l’informatique en nuage, et notamment du mode SaaS (Software as a Service). Celui-ci change les modes de rémunérations associés et la facturation en regard. Même si en 2011, la part du mode SaaS dans l’ensemble du marché des logiciels est encore marginale, sa progression est rapide et devrait devenir un mode à ne pas négliger parmi les différentes formes couramment acceptées. Plusieurs indicateurs confortent l’évolution progressive vers des services applicatifs à la demande via le réseau.

Construction 

Créer un logiciel est une activité intellectuelle et prend du temps. La construction d'un logiciel comporte généralement différentes activités telles que l'étude de faisabilité, l'analyse des besoins, la conception, la programmation, les tests, le déploiement et la maintenance. La construction d'un logiciel modérément complexe dans un délai raisonnable n'est généralement pas réalisable par une personne seule. La construction nécessite alors d'être découpée en tâches qui seront réparties entre plusieurs personnes d'une entreprise ou d'une équipe.

L'étude de faisabilité permet de déterminer si le logiciel peut être réalisé : s'il est possible d'apporter une solution technique au problème posé, en tenant compte du système informatique à disposition. L'analyse des besoins permet de produire la spécification fonctionnelle qui servira de référence pour la conception et la programmation. La conception consiste à choisir les technologies et les outils qui devront être utilisés, tandis que la programmation consiste à créer des programmes exécutables en se servant des langages de programmation. Les tests consistent à simuler des scénarios d'utilisation en vue de vérifier le fonctionnement correct du programme. La maintenance est des travaux de modification effectués a posteriori, après la distribution du logiciel.

La construction doit suivre une démarche logique et réfléchie en vue d'éviter des produits de piètre qualité, qui donnent des résultats incorrects et tombent en panne. L'utilisation systématique d'une démarche réfléchie fait du travail de programmation une discipline d'ingénierie. Si créer un logiciel simple, répondant à un problème simple, peut être effectué de manière informelle par une personne seule, plus le logiciel est complexe plus sa construction est complexe, coûteuse en temps et vouée à l'échec. Les principales causes d'échec sont : la construction prend plus de temps que prévu, ce qui peut augmenter considérablement le coût de construction. Le logiciel ne donne pas les résultats attendus ou est abandonné par l'utilisateur parce qu'il tombe trop souvent en panne.

L'évolution du matériel informatique, les nouveaux domaines d'utilisation des ordinateurs tels que la science, l'image et le son, l'industrie ou la communication ont augmenté l'importance du logiciel et la complexité moyenne de celui-ci. Les logiciels simples ne sont alors plus que des exercices ou des résolutions théoriques de problèmes, tandis que la résolution de problèmes concrets nécessite des logiciels complexes où le travail discipliné de construction est une nécessité.

Un logiciel en version bêta (ou bêta-test) est un logiciel non finalisé, pour lequel on effectue une série de tests jusqu'à ce qu'une stabilité relative soit atteinte. Les personnes qui cherchent les dernières erreurs de ces versions de logiciels sont appelés des bêta-testeurs.

Un logiciel qui est opérationnel sera maintenu. La maintenance du logiciel désigne les modifications apportées à un logiciel, après sa mise en œuvre, pour en corriger les fautes, en améliorer l'efficacité ou autres caractéristiques, ou encore adapter celui-ci à un environnement modifié (ISO/IEC 14764).

Eric S. Raymond, dans son livre La Cathédrale et le Bazar, compare la démarche de construction utilisée pour les logiciels  Linux et fetchmail — le bazar — avec la démarche traditionnelle des éditeurs de logiciels — la construction de cathédrales :

Dans la démarche , les usagers sont co-développeurs du logiciel et ont un intérêt personnel pour le produit. Le code source est public et accessible à tout le monde. On considère que plus il y a d'yeux et plus les bugs sont aisés à repérer. Une nouvelle version du logiciel est publiée chaque jour, voire plus, ce qui permet aux utilisateurs de constater une évolution constante.

Dans la démarche classique des éditeurs de logiciels, les développeurs sont des employés qui, la plupart du temps, ne vont jamais utiliser le logiciel qu'ils ont construit. C'est une petite équipe très spécialisée qui s'occupe également de trouver et corriger des bogues éventuels, ce qui peut exiger des mois de travail. Les périodes entre chaque version de logiciel sont relativement longues. D'où de fréquentes déceptions quant aux imperfections du produit publié.

Dans la démarche dite , les développeurs ne sont pas choisis, mais sont le résultat d'une sélection naturelle : pour que le développeur participe il faut qu'il soit intéressé au produit, qu'il ait pris le temps de l'étudier, qu'il ait réussi à en comprendre suffisamment pour arriver à y apporter des modifications au code source. Un individu qui a réussi à aller si loin a forcément le profil adéquat pour devenir co-développeur du logiciel.

Qualité des logiciels 

L'évaluation de la qualité d'un logiciel tient compte de :
 la complétude des fonctionnalités
 la précision des résultats
 la fiabilité
 la tolérance de pannes
 la facilité et la flexibilité de son utilisation
 la simplicité
 l'extensibilité
 la compatibilité et la portabilité
 la facilité de correction et de transformation
 la performance
 la consistance et l'intégrité des informations qu'il contient.

Un logiciel est un produit qui ne se détériore pas. Les facteurs de qualité peuvent être directement observables par l'utilisateur, ou alors constatable par les ingénieurs lors des revues de code ou des travaux de maintenance.

Un consortium s'est créé le  aux États-Unis pour établir un standard mondial de la qualité des logiciels. Ce consortium s'appelle le Consortium for IT Software Quality (CISQ).

Bogues 

Les bogues, ou bugs, sont des erreurs de conception ou de programmation dans les logiciels, qui peuvent causer des comportements incorrects. La gravité du dysfonctionnement peut aller de très mineure (apparence légèrement incorrecte d'un élément d'interface graphique), à des événements catastrophiques (explosion de la fusée Ariane lors du vol 501, irradiation incorrecte de patients par une machine de traitement…) en passant par des pertes plus ou moins grandes de données, et, rarement, par une détérioration du matériel.

Il est difficile, pour des raisons fondamentales, de produire des logiciels sans bogue. Cependant, il existe des mécanismes par lesquels on peut limiter la quantité de bogues, voire les supprimer. Citons d'une part des préceptes d'organisation des équipes de programmation et leur méthodologie, d'autre part les techniques de recherche de bogues dans les logiciels. La recherche en informatique a développé un domaine d'étude, la vérification formelle, dont l'objectif est de certifier la qualité des logiciels et de garantir leur fiabilité. Dans l'ensemble, l'obtention de logiciels complexes peu bogués est coûteuse en temps et en main d'œuvre. Plus les anomalies sont détectées tôt au long du développement du logiciel, moins leur correction est difficile.

Logiciels critiques 

Pour la sécurité globale des systèmes d'information d'une entité, il peut être nécessaire de définir des profils d'application, afin d'identifier les logiciels critiques sur lesquels il est nécessaire de porter une attention particulière du point de vue de la sécurité.

Notes et références

Voir aussi

Articles connexes 
 Logiciel en tant que service
 :Catégorie:Logiciel applicatif
 Programme informatique
 Agent logiciel
 Micrologiciel ou firmware
 Génie logiciel
 Brevetabilité du logiciel
 Progiciel
 Éditeur de logiciel
 Industrie du logiciel
 Machine à gouverner
 Logiciel malveillant

Méthodes informatiques