# 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 software a été utilisé dès 1953 pour distinguer la partie modifiable de l'ordinateur, par opposition au hardware 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 12 janvier 1974 et confirmé par l'arrêté du 17 janvier 1982.

## Introduction

Un ordinateur est composé de matériel et de logiciels. Par analogie avec un orchestre, on peut dire que le matériel représente 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 software (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.

## Histoire
### Années 1950

Dans les années 1950 les logiciels sont écrits par les fabricants de matériel informatique et vendus avec. Parfois des sociétés d'ingénierie créaient sur demande des logiciels applicatifs sur mesure pour un utilisateur ou un autre, mais les systèmes d'exploitation étaient exclusivement le fait de fabricants de matériel.

### Années 1960
#### Le séisme du brevet demandé en avril 1965 par ADR

Les sociétés de logiciel se multiplient dans la seconde moitié des années 1960 grâce à la percée énergique de trois pionniers qui n'hésitent pas à défier les constructeurs informatiques en proposant les premiers logiciels universels, vendus séparément, à des tarifs plus transparents, et souvent centrés sur la gestion et la simplification d'une quantité de données en croissance exponentielle en raison succès des circuits intégrés et des nouvelles applications, et en se faisant connaitre grâce à Wall Street.
Cinq ans après Computer Usage Company, première entreprise de logiciel de l'histoire à réaliser une entrée en Bourse en 1960, trois autres la suivent en 1965-1967. D'abord Applied Data Research (ADR) en 1965, puis Informatics General en mai 1966 et enfin en 1967 Advanced Computer Techniques (ACT), fondé à New York en avril 1962 par Charles P. Lecht et introduite grâce à une petite banque spécialisée dans la technologie, Faulkner, Dawkins & Sullivan. Selon le The New York Times l'action ACT triple de valeur au premier jour, alors que ses revenus resteront pourtant entre 2 et 3 millions de dollars entre 1968-1970, l'enougement boursier témoignant d'un énorme intérêt des investisseurs pour la technologie$^,$.
Informatics General qui avait en mai 1966 levé 3,5 millions de dollars à 7,50 dollars par action$^,$, sur le marché OTC avait elle 300 salariés et un chiffre d’affaires de 4,5 millions de dollars, soit 3 à 4 % du marché total des logiciels personnalisés. Son action ne pâtit pas de l'arrivée d'ACT en 1967: son multiple de capitalisation des bénéfices monte de 25 à 200 à la mi-1968 puis 600 au début de 1969 malgré une rentabilité insignifiante, grâce à son logiciel Mark IV, embryon de dictionnaire logiciel de la galaxie des produits IBM.
C'est la deuxième entrée en Bourse, celle d'ADR en 1965, qui fut la plus importante car couplée avec la première demande d'un brevet pour un logiciel, effectuée en avril 1965 pour Autoflow, afin de se protéger d'IBM, qui espérait copier et proposer gratuitement ce ce logiciel à ses clients$^,$. Au cours des trois années qui suivent, la valeur de l'action ADR est multipliée par cinq car ce logiciel génère des revenus significatifs dès 1966. La société est alors suivie de très près par la presse et les analystes financiers et leur consacre du temps.
Une seconde accélération est apportée par la réponse positive au printemps 1968: le brevet est accordé à ADR. Son logiciel Autoflow permet de créer un diagramme de flux pour d'autres programmes informatiques et ainsi mesurer leur occupation de la machine et leur degré de priorité. Son succès a permis aux ventes d'ADR de grimper à 10 ou 12 millions de dollars par an à la fin de la décennie des 1960 dont 40% à 50% en services mais la tension est à son comble avec le concurrent IBM. Le printemps 1968 voit aussi une bulle spéculative générale, notamment sur les petites valeurs, l'afflux d'achat obligeant à un vaste projet d'informatisation qui donne naissance en 1971 au NASDAQ, première bourse électronique à distance.

#### Floraison d'éditeurs et pénurie de développeurs

Dans une newsletter mensuelle publiée depuis le milieu des années 1960 par IDC, Pat McGovern, du journal Computerworld donne en 1967 un liste des sociétés spécialisées dans le logiciel qui sont déjà 10 à 15 et dont le nombre et les initiatives vont augmenter quand IBM en décembre 1968 annonce comme prévu qu'il va facturer ses logiciels séparément, sous la pression du gouvernement qui début janvier lance une action antitrust contre lui. Dans la seconde partie de la décennie, il y avait déjà 40 à 50 éditeurs de logiciels américains mais souvent petits, sans capacité à organiser la formation et la promotion de leurs personnels et près de 300 cabinets spécialisés encore plus petits, avec souvent seulement 2 à 3 consultants ce qui créé une forte pénurie d'ingénieurs qualifiés pour les écrire, qui culmine fin 1969, d'autant que ce travail revenait auparavant à des techniciens.
Malgré transaction obtenue avec IBM en 1970, l'action Applied Data Research est divisée par dix en seulement un an ou deux après avoir valu 40 dollars au début en 1969, puis en 1973 ne vaut plus qu'un dollar, après le premier choc pétrolier et la désaffection des analystes à partir de 1972. Les actions des autres éditeurs de logiciels chutent aussi et beaucoup font faillite.

#### Les premières formations

Le plan calcul français, lancé fin 1966 après de larges consultations en 1964-1965, pour pallier le "manque de capacité des ordinateurs et de moyens humains de développement interrompait de nombreux projets avant qu’ils soient effectivement appliqués", selon Marion Créhange, pionnière de l'informatique à l'université de Nancy lance les premiers IUT et maîtrises d'informatique pour accompagner un gros effort de recherche et nouvelles formations, avec les premiers diplômés en 1968 et une extension à huit universités seulement en 1970. L'Institut de programmation de Paris, créé en novembre 1963 pour la mécanographie et des non bacheliers formés sur un mois, voit ses effectifs exploser entre 1967 et 1969 quand il passe réellement à la programmation.

### Années 1980

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.

### Années 1990

En 1990, il existe aux États-Unis, premier consommateur et premier producteur mondial plusieurs milliers d'éditeurs de logiciels. Les premiers sont IBM, Microsoft, Computer Associates, Digital et Oracle. Ils sont concurrencé principalement par l'Europe et le Japon (SAP, Dassault Systèmes et Sony).
Editeur de systèmes pour entreprise, Novell est alors numéro2 mondial du logiciel derrière Microsoft, et très actif sur le marchés des réseaux d'ordinateurs internes aux entreprises. Il prend aussi à l'époque 15% du capital de la société française Chorus Systèmes, fondée en 1986 sur le marchés des OS Unix par Hubert Zimmermann, après avoir racheté Unix Systems Labs à ATT en 1993, pour le décliner en micro-noyaux Chorus, en prévision d'une élargissement d'Internet à des applications embarquées et au téléphone mobile.

## 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.
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.
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.
Les lois du droit d’auteur et du secret industriel permettent de protéger les intérêts des producteurs de logiciel. Les producteurs du logiciel considèrent que ces lois permettent de les motiver à investir le temps et l'argent nécessaire pour produire et distribuer de nouveaux produits. Selon eux, la distribution de copies illégales de logiciels a pour effet direct de diminuer la rentabilité de la production de logiciel par une baisse des ventes, et comme effet indirect de diminuer leur motivation. 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 « le dernier survivant de la culture Hacker ». 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.
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.

## 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 risquée. Les principales causes d'échec sont soit que la construction prend plus de temps que prévu, ce qui peut augmenter considérablement le coût de construction, soit que 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 recherche scientifique, 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 open source Linux et fetchmail — le bazar — avec la démarche traditionnelle des éditeurs de logiciels — la construction de cathédrales :
Dans la démarche open source, 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 open source, 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é par le 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 6 octobre 2009 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é.