En informatique, un logiciel est un
ensemble composé d'un ou plusieurs programmes, ainsi que les fichiers nécessaires pour les rendre
opérationnels. Le logiciel détermine les tâches qu'un appareil
informatique peut
effectuer et donne à l'ordinateur sa valeur ajoutée.
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 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 alors ils sont
créés 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 également
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 est protégé par
la convention de Berne concernant les œuvres
littéraires.
Dérivé du
mot logique. Créé par l'Académie française en 1972 comme traduction du terme anglais Software1. Cette traduction est officialisée
par un arrêté publié au Journal Officielle 17 janvier 19822.
Un
ordinateur est composé de matériel et de logiciel. Le matériel sont les
musiciens et les instruments, tandis que le logiciel est la partition3. Sans logiciel l'ordinateur ne fait
rien parce qu'il n'a pas reçu les instructions lui indiquant ce qu'il doit
faire3. Les logiciels sont composés de programmes
informatique,
qui indiquent à l'ordinateur comment effectuer les tâches4. Le logiciel détermine les tâches
qu'un appareil informatique peut effectuer4.
Alors que
lors de 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ée3. 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
photos4...
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 automatiques5. les programmes sont sous forme
de code
binaire ainsi
que parfois sous forme de code source6.
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 informatique4.
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'utilisateur3. Les logiciels disponibles dans le
commerce sont toujours destinés à être utilisés avec un ou plusieurs systèmes
d'exploitation donnés3.
Les
logiciels sont couramment classifiés en fonction de7:
- 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 informatique4.
Les autres
types de logiciel 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 informatique3.
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êmes7:
- 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éponds 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 consommateurs7.
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.
- Gratuiciel (freeware en
anglais), pour un logiciel qui peut être distribué, copié et utilisé
gratuitement, sans frais de licence8.
- Partagiciel (shareware en
anglais), lorsque l'auteur autorise autrui à diffuser le logiciel,
- Logiciel open source (ou code
source ouvert) ou Logiciel libre,
pour un logiciel pour lequel il est permis de l’exécuter, accéder au code
source pour l'étudier ou l'adapter à ses
besoins, redistribuer des copies, modifier et redistribuer le logiciel.
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 particuliers7.
- 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 cout 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 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
consommation9. 50 % des logiciels standards mis
sur le marché sont des logiciels applicatifs10.
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é7.
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 logiciels11.
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-Unis9.
Pour les
produits numériques tels que les logiciels, la création de la première copie
coute 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ès7. 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,
souvent illégalement, des logiciels, comme ça se fait dans le marché de la
musique. Les logiciels couramment copiés sont ceux qui peuvent être utilisés
tels quels par les particuliers - logiciels de bureautique ou jeux vidéo. Ces
copies entrainent des manques à gagner pour les producteurs et ceux-ci incluent
dans leurs produits des mécanismes de protection7.
Les lois
de la propriété intellectuelle et du secret industriel sont destinées à protéger les
intérêts des producteurs de logiciel, et les motiver à investir le temps et
l'argent nécessaire pour produire et distribuer de nouveaux produits. La
distribution de copies illégales de logiciels (piratage) a pour effet direct de diminuer la
rentabilité de la production de logiciel par une baisse des ventes, et comme
effet indirect de diminuer la motivation des producteurs. 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 tout les éditeurs de logiciel9.
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é7. 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 monopole7. 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'utilisateur7.
Le logiciel libre est un mouvement social basée
sur la philosophie formulée par Richard Stallman dans les années 1980. Open Source est une manière de créer et de
distribuer des logiciels selon cette philosophie11.
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 198011. Dans cet institut de jeunes
hobbyistes passent leur temps à étudier les ordinateurs et explorer les
possibilités qu'offrent 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élioration11. 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é11.
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 garantis 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
redistribue11.
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 vendre11.
La GPL est
la licence la plus fréquemment appliquée aux logiciels libre. En 2002 plus de
50% des projets de sourceforge sont
sous licence GPL, et c'est également la licence appliquée à la plupart
des distribution
Linux11.
Certains
comme Eric
S. Raymond considèrent
que la supériorité des logiciels libre est avant tout technique. Pour
promouvoir cet aspect du logiciel libre ils ont créé l'Open
Source Initiative en 1998.
Article
connexe : licence
de logiciel.
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
logiciel9.
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 logiciel9.
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éflexion9.
La licence GNU General Public License (abr. GPL) a été créée en 1984 comme
outil de soutien de la philosophie libre. En opposition avec les
licences commercialisées par les propriétaires des droits d'auteur sur le
logiciel, celle-ci 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
redistribue11.
Article
détaillé : distribution de logiciels.
Les
logiciels peuvent être distribués dans le commerce de détail, téléchargés en
self-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 additionnel12.
Le déploiement est
effectué en plusieurs étapes qui visent à placer le logiciel dans son environnement
cible de manière à ce 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 inverse de l'installation, en vue de retirer le
logiciel13.
La
procédure d'installation est typiquement automatisée par des logiciels - qui
sont essentiellement des outils de décompression13. Un logiciel évolue durant toute sa
vie, et est typiquement distribué plusieurs fois, à plusieurs stades de son
évolution, appelés versions ou release6.
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)14.
Il faut
aussi tenir compte des évolutions en cours dans les modèles de distribution des
logiciels avec la montée en puissance du cloud computing, 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 marginale15, 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éseau16.
Article
détaillé : Développement de logiciel.
Créer un
logiciel est une activité intellectuelle et prend du temps17. 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 maintenance17. 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 seule17. 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 équipe17.
L'étude de
faisabilité permet de déterminer si le logiciel peut être réalisé: si 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 conceptionconsiste
à choisir les technologies et les outils qui devront être utilisés, tandis que
la programmation consiste à créer des programmes exécutable 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 sont des travaux de modification effectués à posteriori, après la
distribution du logiciel17.
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énierie17. 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'échec17. Les principales causes d'échec sont:
la construction prends 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 panne17.
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-ci17. 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é17.
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 failles 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édrales18:
Dans la
démarche open source les usagers sont codéveloppeurs du logiciel et ont un
intérêt personnel pour le produit, le code source est public et accessible à
tout le monde; il est assumé que plus il y a d'yeux et plus les bugs sont
faciles à voir. Une nouvelle version du logiciel est publiée chaque jour, voir
plus, ce qui permet aux utilisateurs de constater une évolution constante18.
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é18.
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é au produit,
qu'il ait pris le temps de l'étudier, qu'il ai réussi à en comprendre
suffisamment pour arriver à y apporter des modification 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 logiciel18.
Article
détaillé : Qualité
logicielle.
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 revue de code ou des travaux de maintenance 19.
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).
Article
détaillé : Bug informatique.
Les bogues (en
anglais 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.
0 التعليقات:
إرسال تعليق