Logiciel

Un article de Wikipédia, l'encyclopédie libre
Aller à la navigation Aller à la recherche

Un diagramme montrant comment l' utilisateur interagit avec le logiciel d'application sur un ordinateur de bureau typique . La couche logicielle d'application s'interface avec le système d'exploitation , qui à son tour communique avec le matériel . Les flèches indiquent le flux d'informations.

Un logiciel est un ensemble d' instructions qui indiquent à un ordinateur comment fonctionner. [1] [2] Cela contraste avec le matériel , à partir duquel le système est construit et exécute réellement le travail.

Au niveau de programmation le plus bas , le code exécutable est constitué d' instructions en langage machine prises en charge par un processeur individuel, généralement une unité centrale de traitement (CPU) ou une unité de traitement graphique (GPU). Le langage machine se compose de groupes de valeurs binaires signifiant des instructions de processeur qui modifient l'état de l'ordinateur par rapport à son état précédent. Par exemple, une instruction peut modifier la valeur stockée dans un emplacement de stockage particulier de l'ordinateur, un effet qui n'est pas directement observable par l'utilisateur. Une instruction peut également invoquer l'une des nombreuses opérations d'entrée ou de sortie, par exemple afficher du texte sur un écran d'ordinateur ; provoquant des changements d'état qui doivent être visibles pour l' utilisateur . Le processeur exécute les instructions dans l'ordre dans lequel elles sont fournies, à moins qu'il ne reçoive l'instruction de "sauter" vers une autre instruction ou qu'il soit interrompu par le système d'exploitation. Depuis 2015 , la plupart des ordinateurs personnels , des smartphones et des serveurs ont des processeurs avec plusieurs unités d'exécution ou plusieurs processeurs effectuant des calculs ensemble, et l'informatique est devenue une activité beaucoup plus simultanée que par le passé.

La majorité des logiciels sont écrits dans des langages de programmation de haut niveau . Ils sont plus faciles et plus efficaces pour les programmeurs car ils sont plus proches des langages naturels que des langages machine. [3] Les langages de haut niveau sont traduits en langage machine à l'aide d'un compilateur ou d'un interpréteur ou d'une combinaison des deux. Les logiciels peuvent également être écrits dans un langage d'assemblage de bas niveau , qui a une forte correspondance avec les instructions du langage machine de l'ordinateur et est traduit en langage machine à l'aide d'un assembleur .

Histoire

Un algorithme pour ce qui aurait été le premier logiciel a été écrit par Ada Lovelace au 19ème siècle, pour le moteur analytique prévu . [4] Elle a créé des preuves pour montrer comment le moteur calculerait les nombres de Bernoulli . [4] À cause des preuves et de l'algorithme, elle est considérée comme la première programmeuse informatique. [5] [6]

La première théorie sur les logiciels, antérieure à la création des ordinateurs tels que nous les connaissons aujourd'hui, a été proposée par Alan Turing dans son essai de 1935, On Computable Numbers, with an Application to the Entscheidungsproblem (problème de décision). [ citation nécessaire ] Cela a finalement conduit à la création des domaines académiques de l'informatique et du génie logiciel; à la fois le logiciel d'étude des domaines et sa création. L' informatique est l'étude théorique de l'ordinateur et des logiciels ( l'essai de Turing est un exemple d'informatique), tandis que le génie logiciel est l'application de principes d'ingénierie au développement de logiciels . [ citation nécessaire ]Avant 1946, les logiciels n'étaient pas encore les programmes stockés dans la mémoire des ordinateurs numériques à programmes stockés, comme nous le comprenons maintenant ; les premiers appareils informatiques électroniques ont plutôt été recâblés afin de les "reprogrammer". [ citation nécessaire ]

En 2000, Fred Shapiro, un bibliothécaire à la Yale Law School, a publié une lettre révélant que l'article de 1958 de John Wilder Tukey "L'enseignement des mathématiques concrètes" [7] [8] contenait la première utilisation connue du terme "logiciel" trouvée lors d'une recherche dans les archives électroniques de JSTOR , antérieure de deux ans à la citation de l' OED . [9] Cela a conduit beaucoup à créditer Tukey d'avoir inventé le terme, en particulier dans les nécrologies publiées la même année, [10] bien que Tukey n'ait jamais revendiqué le mérite d'une telle monnaie. En 1995, Paul Niquette a affirmé qu'il avait initialement inventé le terme en octobre 1953, bien qu'il n'ait trouvé aucun document à l'appui de sa demande. [11]La première publication connue du terme «logiciel» dans un contexte d'ingénierie remonte à août 1953 par Richard R. Carhart, dans un mémorandum de recherche de la Rand Corporation . [12]

Les types

Blender , un logiciel gratuit

Sur pratiquement toutes les plates-formes informatiques, les logiciels peuvent être regroupés en quelques grandes catégories.

Objectif ou domaine d'utilisation

En fonction de l'objectif, les logiciels informatiques peuvent être divisés en :

  • Le logiciel d'application utilise le système informatique pour exécuter des fonctions spéciales au-delà du fonctionnement de base de l'ordinateur lui-même. Il existe de nombreux types de logiciels d'application, car l'éventail des tâches pouvant être effectuées avec un ordinateur moderne est très vaste - voir la liste des logiciels .
  • Le logiciel système gère le comportement du matériel, afin de fournir les fonctionnalités de base requises par les utilisateurs, ou pour que d'autres logiciels fonctionnent correctement, le cas échéant. Le logiciel système est également conçu pour fournir une plate-forme pour l'exécution du logiciel d'application, [13] et il comprend les éléments suivants :
    • Les systèmes d'exploitation sont des ensembles essentiels de logiciels qui gèrent les ressources et fournissent des services communs pour d'autres logiciels qui s'exécutent "au-dessus" d'eux. Les programmes de supervision , les chargeurs de démarrage , les shells et les systèmes de fenêtres sont des éléments essentiels des systèmes d'exploitation. En pratique, un système d'exploitation est livré avec des logiciels supplémentaires (y compris des logiciels d'application) afin qu'un utilisateur puisse potentiellement effectuer certaines tâches avec un ordinateur qui n'a qu'un seul système d'exploitation.
    • Les pilotes de périphérique exploitent ou contrôlent un type particulier de périphérique connecté à un ordinateur. Chaque périphérique a besoin d'au moins un pilote de périphérique correspondant ; étant donné qu'un ordinateur possède généralement au moins un périphérique d'entrée et au moins un périphérique de sortie, un ordinateur a généralement besoin de plusieurs pilotes de périphérique.
    • Les utilitaires sont des programmes informatiques conçus pour aider les utilisateurs dans la maintenance et l'entretien de leurs ordinateurs.
  • Un logiciel malveillant , ou malware , est un logiciel développé pour endommager ou perturber les ordinateurs. Les logiciels malveillants sont étroitement associés aux délits informatiques, même si certains programmes malveillants peuvent avoir été conçus comme des farces .

Nature ou domaine d'exécution

Outils de programmation

Les outils de programmation sont également des logiciels sous la forme de programmes ou d'applications que les développeurs utilisent pour créer, déboguer , maintenir ou prendre en charge des logiciels. [16]

Le logiciel est écrit dans un ou plusieurs langages de programmation ; il existe de nombreux langages de programmation et chacun a au moins une implémentation, chacune comprenant son propre ensemble d'outils de programmation. Ces outils peuvent être des programmes relativement autonomes tels que des compilateurs , des débogueurs , des interpréteurs , des éditeurs de liens et des éditeurs de texte , qui peuvent être combinés pour accomplir une tâche ; ou ils peuvent former un environnement de développement intégré (IDE), qui combine une grande partie ou la totalité des fonctionnalités de ces outils autonomes. [ citation nécessaire ]Les IDE peuvent le faire soit en invoquant les outils individuels pertinents, soit en réimplémentant leurs fonctionnalités d'une nouvelle manière. [ citation nécessaire ] Un IDE peut faciliter l'exécution de tâches spécifiques, telles que la recherche de fichiers dans un projet particulier. [ citation nécessaire ] De nombreuses implémentations de langage de programmation offrent la possibilité d'utiliser à la fois des outils individuels ou un IDE. [ citation nécessaire ]

Les sujets

Architecture

Les personnes qui utilisent des ordinateurs modernes à usage général (par opposition aux systèmes embarqués , aux ordinateurs analogiques et aux superordinateurs ) voient généralement trois couches de logiciels effectuer diverses tâches : plate-forme, application et logiciel utilisateur. [ citation nécessaire ]

  • Logiciel de
    plate-forme La plate -forme comprend le micrologiciel , les pilotes de périphériques , un système d'exploitation et généralement une interface utilisateur graphique qui, au total, permettent à un utilisateur d'interagir avec l'ordinateur et ses périphériques (équipements associés). Le logiciel de plate-forme est souvent fourni avec l'ordinateur. Sur un PC , on aura généralement la possibilité de changer le logiciel de la plate-forme.
  • Logiciel d'application Le logiciel d'
    application est ce à quoi la plupart des gens pensent lorsqu'ils pensent à un logiciel. [ citation nécessaire ] Les exemples typiques incluent les suites bureautiques et les jeux vidéo. Les logiciels d'application sont souvent achetés séparément du matériel informatique. Parfois, les applications sont regroupées avec l'ordinateur, mais cela ne change rien au fait qu'elles s'exécutent en tant qu'applications indépendantes. Les applications sont généralement des programmes indépendants du système d'exploitation, bien qu'elles soient souvent adaptées à des plates-formes spécifiques. La plupart des utilisateurs considèrent les compilateurs, bases de données et autres "logiciels système" comme des applications. [ citation nécessaire ]
  • Logiciel écrit par l'
    utilisateur Le développement de l'utilisateur final adapte les systèmes pour répondre aux besoins spécifiques des utilisateurs. Le logiciel utilisateur comprend des modèles de feuille de calcul et des modèles de traitement de texte . [ citation nécessaire ] Même les filtres de messagerie sont une sorte de logiciel utilisateur. Les utilisateurs créent eux-mêmes ce logiciel et oublient souvent à quel point il est important. [ citation nécessaire ] Selon la compétence avec laquelle le logiciel écrit par l'utilisateur a été intégré dans les packages d'application par défaut, de nombreux utilisateurs peuvent ne pas être conscients de la distinction entre les packages d'origine et ce qui a été ajouté par des collègues. [ citation nécessaire ]

Exécutionpammi

Les logiciels informatiques doivent être "chargés" dans le stockage de l'ordinateur (comme le disque dur ou la mémoire ). Une fois le logiciel chargé, l'ordinateur est capable d' exécuter le logiciel. Cela implique de transmettre des instructions du logiciel d'application, via le logiciel système, au matériel qui reçoit finalement l'instruction sous forme de code machine. Chaque instruction amène l'ordinateur à effectuer une opération - déplacer des données, effectuer un calcul ou modifier le flux de contrôle des instructions. [ citation nécessaire ]

Le déplacement des données se fait généralement d'un endroit de la mémoire à un autre. Parfois, cela implique de déplacer des données entre la mémoire et les registres, ce qui permet un accès rapide aux données dans le CPU. Le déplacement de données, en particulier de grandes quantités, peut être coûteux ; ceci est parfois évité en utilisant des "pointeurs" vers des données à la place. [ citation nécessaire ] Les calculs comprennent des opérations simples telles que l'incrémentation de la valeur d'un élément de données variable. Des calculs plus complexes peuvent impliquer de nombreuses opérations et éléments de données ensemble. [ citation nécessaire ]

Qualité et fiabilité

La qualité des logiciels est très importante, en particulier pour les logiciels commerciaux et système. Si le logiciel est défectueux, il peut supprimer le travail d'une personne, planter l'ordinateur et faire d'autres choses inattendues. Les défauts et les erreurs sont appelés « bogues » qui sont souvent découverts lors des tests alpha et bêta. [ citation nécessaire ] Le logiciel est souvent aussi victime de ce que l'on appelle le vieillissement du logiciel , la dégradation progressive des performances résultant d'une combinaison de bogues invisibles. [ citation nécessaire ]

De nombreux bogues sont découverts et corrigés grâce aux tests logiciels . Cependant, les tests de logiciels éliminent rarement, voire jamais, tous les bogues ; certains programmeurs disent que "chaque programme a au moins un bogue de plus" (loi de Lubarsky). [17] Dans la méthode de développement logiciel en cascade , des équipes de test distinctes sont généralement employées, mais dans les approches plus récentes, appelées collectivement développement logiciel agile , les développeurs effectuent souvent tous leurs propres tests et présentent régulièrement le logiciel aux utilisateurs/clients pour obtenir des commentaires. [ citation nécessaire ] Le logiciel peut être testé via des tests unitaires , des tests de régressionet d'autres méthodes, qui sont effectuées manuellement, ou le plus souvent, automatiquement, car la quantité de code à tester peut être importante. [ citation nécessaire ] Les programmes contenant un logiciel de commande permettent à l'ingénierie matérielle et aux opérations système de fonctionner beaucoup plus facilement ensemble. [ citation nécessaire ]

Licence

La licence du logiciel donne à l'utilisateur le droit d'utiliser le logiciel dans l'environnement sous licence et, dans le cas des licences de logiciels libres , accorde également d'autres droits tels que le droit de faire des copies. [ citation nécessaire ]

Les logiciels propriétaires peuvent être divisés en deux types :

  • freeware , qui comprend la catégorie des logiciels "d'essai gratuit" ou des logiciels " freemium " (par le passé, le terme shareware était souvent utilisé pour les logiciels d'essai gratuit/freemium). Comme son nom l'indique, les logiciels gratuits peuvent être utilisés gratuitement, bien que dans le cas d'essais gratuits ou de logiciels freemium, cela ne soit parfois vrai que pour une période de temps limitée ou avec des fonctionnalités limitées. [18]
  • logiciel disponible moyennant des frais, qui ne peut être utilisé légalement qu'à l'achat d'une licence. [ citation nécessaire ]

Les logiciels open source sont livrés avec une licence de logiciel libre, accordant au destinataire le droit de modifier et de redistribuer le logiciel. [19]

Brevets

Les brevets logiciels, comme les autres types de brevets, sont théoriquement censés donner à un inventeur une licence exclusive et limitée dans le temps pour une idée détaillée (par exemple un algorithme) sur la façon de mettre en œuvre un logiciel ou un composant d'un logiciel. Idées de choses utiles que le logiciel pourrait faire et besoins des utilisateurs, ne sont pas censés être brevetables, et les implémentations concrètes (c'est-à-dire les progiciels réels mettant en œuvre le brevet) ne sont pas non plus censées être brevetables - ces dernières sont déjà couvertes par le droit d'auteur, généralement automatiquement. Ainsi, les brevets logiciels sont censés couvrir la zone médiane, entre les exigences et la mise en œuvre concrète. Dans certains pays, l'exigence que l'invention revendiquée ait un effet sur le monde physique peut également faire partie des exigences pour qu'un brevet logiciel soit considéré comme valide, bien que puisque tout logiciel utile a des effets sur le monde physique, cette exigence peut être ouvert au débat. Pendant ce temps, la loi américaine sur le droit d'auteur a été appliquée à divers aspects de l'écriture du code logiciel. [20]

Les brevets logiciels sont controversés dans l'industrie du logiciel, de nombreuses personnes ayant des points de vue différents à leur sujet. L'une des sources de controverse est que la séparation susmentionnée entre les idées initiales et le brevet ne semble pas être respectée dans la pratique par les avocats en brevets - par exemple le brevet pour la programmation orientée aspect (AOP), qui prétendait revendiquer des droits sur n'importe quel outil de programmation. mettre en œuvre l'idée de l'AOP, quelle que soit sa mise en œuvre. [ citation nécessaire ] Une autre source de controverse est l'effet sur l'innovation, de nombreux experts et entreprises distingués affirmant que le logiciel est un domaine qui évolue si rapidement que les brevets logiciels ne font que créer d'énormes coûts et risques de litige supplémentaires, et retardent en fait l'innovation. [citation nécessaire ]Dans le cas des débats sur les brevets logiciels en dehors des États-Unis, l'argument a été avancé que les grandes sociétés américaines et les avocats en brevets sont susceptibles d'être les principaux bénéficiaires de l'autorisation ou du maintien des brevets logiciels. [ citation nécessaire ]

Conception et mise en œuvre

La conception et la mise en œuvre des logiciels varient en fonction de la complexité du logiciel. Par exemple, la conception et la création de Microsoft Word ont pris beaucoup plus de temps que la conception et le développement de Microsoft Notepad car ce dernier a des fonctionnalités beaucoup plus basiques. [ citation nécessaire ]

Les logiciels sont généralement développés dans des environnements de développement intégrés (IDE) comme Eclipse , IntelliJ et Microsoft Visual Studio qui peuvent simplifier le processus et compiler le logiciel. [ citation nécessaire ] Comme indiqué dans une autre section, le logiciel est généralement créé au-dessus du logiciel existant et de l' interface de programmation d'application (API) fournie par le logiciel sous-jacent, comme GTK+ , JavaBeans ou Swing . [ citation nécessaire ] Les bibliothèques (API) peuvent être classées en fonction de leur objectif. Par exemple, le Spring Frameworkest utilisé pour implémenter des applications d'entreprise , la bibliothèque Windows Forms est utilisée pour concevoir des applications d'interface utilisateur graphique (GUI) telles que Microsoft Word, et Windows Communication Foundation est utilisé pour concevoir des services Web . [ citation nécessaire ] Lorsqu'un programme est conçu, il s'appuie sur l'API. Par exemple, une application de bureau Microsoft Windows peut appeler des fonctions API dans la bibliothèque .NET Windows Forms comme Form1.Close() et Form1.Show() [21]pour fermer ou ouvrir l'application. Sans ces API, le programmeur doit écrire ces fonctionnalités entièrement lui-même. Des entreprises comme Oracle et Microsoft fournissent leurs propres API afin que de nombreuses applications soient écrites à l'aide de leurs bibliothèques de logiciels qui contiennent généralement de nombreuses API. [ citation nécessaire ]

Les structures de données telles que les tables de hachage , les tableaux et les arbres binaires , ainsi que les algorithmes tels que le tri rapide , peuvent être utiles pour créer des logiciels.

Les logiciels informatiques ont des caractéristiques économiques particulières qui rendent leur conception, leur création et leur distribution différentes de la plupart des autres biens économiques. [ préciser ] [22] [23]

Une personne qui crée un logiciel est appelée programmeur , ingénieur logiciel ou développeur de logiciel, termes qui ont tous une signification similaire. Des termes plus informels pour programmeur existent également, tels que "codeur" et "hacker" - bien que l'utilisation de ce dernier mot puisse prêter à confusion, car il est plus souvent utilisé pour désigner quelqu'un qui s'introduit illégalement dans les systèmes informatiques .


Voir également

Les références

  1. ^ IBM. "Qu'est-ce que le développement logiciel" . IBM . IBM . Récupéré le 4 octobre 2021 .
  2. ^ Johnson, David. "Qu'est-ce qu'un logiciel" . Initié d'affaires . Initié d'affaires . Récupéré le 4 octobre 2021 .
  3. ^ "Construction du compilateur" . Archivé de l'original le 2 novembre 2013.
  4. ^ un b Evans 2018 , p. 21.
  5. ^ Fuegi, J.; En ligneFrancis, J. (2003). "Lovelace & Babbage et la création des 'notes' de 1843" (PDF) . Annals of the History of Computing . 25 (4): 16–26. doi : 10.1109/MAHC.2003.1253887 . S2CID  40077111 . Archivé de l'original (PDF) le 15 février 2020.
  6. ^ "Ada Lovelace honorée par Google doodle" . Le Gardien . 10 décembre 2012 . Récupéré le 25 novembre 2018 .
  7. ^ Tukey, John Wilder (janvier 1958). "L'enseignement des mathématiques concrètes". Mensuel mathématique américain . Taylor & Francis, Ltd. / Association mathématique d'Amérique . 65 (1) : 1–9, 2. doi : 10.2307/2310294 . ISSN 0002-9890 . JSTOR 2310294 . CODEN AMMYAE . […] Aujourd'hui, le "logiciel" comprenant les routines d'interprétation soigneusement planifiées, les compilateurs et d'autres aspects de la programmation automatique sont au moins aussi importants pour la calculatrice électronique moderne que son "matériel" de tubes, transistors, fils, bandes, etc. . […]   
  8. ^ Beebe, Nelson HF (22 août 2017). "Chapitre I - Arithmétique des nombres entiers". Le manuel de calcul des fonctions mathématiques - Programmation à l'aide de la bibliothèque de logiciels portables MathCW (1 éd.). Salt Lake City, UT, États-Unis : Springer International Publishing AG . pages 969, 1035. doi : 10.1007/978-3-319-64110-2 . ISBN 978-3-319-64109-6. RCAC 2017947446  . S2CID 30244721 . 
  9. ^ Shapiro, Fred (2000). "Origine du terme logiciel : preuves des archives de journaux électroniques JSTOR" (PDF) . Annales IEEE de l'histoire de l'informatique . 22 (2): 69–71. doi : 10.1109/mahc.2000.887997 . Archivé de l'original (PDF) le 5 juin 2003 . Récupéré le 25 juin 2013 .
  10. ^ Leonhardt, David (28 juillet 2000). "John Tukey, 85 ans, statisticien ; a inventé le mot "logiciel"" . Le New York Times . Récupéré le 24 septembre 2012 .
  11. ^ Niquette, R. Paul (2006), Softword: Provenance for the Word 'Software , ISBN 1-58922-233-4, archivé de l'original le 8 août 2019 , récupéré le 18 août 2019
  12. ^ Carhart, Richard (1953). Une enquête sur l'état actuel du problème de fiabilité électronique (PDF) . Santa Monica, Californie : Rand Corporation . p. 69. […] Il sera rappelé de la Sec. 1.6 que le terme personnel a été défini pour inclure les personnes qui entrent en contact direct avec le matériel, de la production à l'utilisation sur le terrain, c'est-à-dire les personnes qui assemblent, inspectent, emballent, expédient, manipulent, installent, exploitent et entretiennent l'équipement électronique. Dans chacune de ces phases, les défaillances du personnel peuvent entraîner un équipement non opérationnel. Comme pour les facteurs matériels, il n'y a presque pas de données quantitatives concernant ces facteurs logiciels ou humains de fiabilité : combien de pannes sont causées par le personnel, pourquoi elles se produisent et ce qui peut être fait pour supprimer les erreurs. […]
  13. ^ "Logiciel système" . L'Université du Mississippi. Archivé de l'original le 30 mai 2001.
  14. ^ "Qu'est-ce qu'un plugin ?" . www.computerhope.com . Récupéré le 26 janvier 2022 .
  15. ^ "Logiciel embarqué - Technologies et tendances" . Société informatique IEEE. Mai-juin 2009. Archivé de l'original le 28 octobre 2013 . Récupéré le 6 novembre 2013 .
  16. ^ "Qu'est-ce qu'un outil de programmation ? - Définition de Techopedia" . Techopedia.com . Récupéré le 26 janvier 2022 .
  17. ^ "exemples de livre d'intelligence de script" . GitHub . 9 mai 2018. Archivé de l'original le 6 novembre 2015.
  18. ^ "Freeware vs Shareware - Différence et Comparaison | Diffen" . www.diffen.com . Récupéré le 26 janvier 2022 .
  19. ^ "Logiciel open source expliqué" . Guide numérique IONOS . Récupéré le 26 janvier 2022 .
  20. ^ Gerardo Con Díaz, "Le texte dans la machine: loi américaine sur le droit d'auteur et les nombreuses natures des logiciels, 1974-1978", Technologie et culture 57 (octobre 2016), 753–79.
  21. ^ "Bibliothèque MSDN" . Archivé de l'original le 11 juin 2010 . Récupéré le 14 juin 2010 .
  22. ^ v.Engelhardt, Sebastian (2008). "Les propriétés économiques du logiciel" . Documents de recherche économique d'Iéna . 2 (2008–045). Archivé de l'original le 5 janvier 2016.
  23. ^ Kaminsky, Dan (1999). "Pourquoi l'open source est le paradigme économique optimal pour les logiciels" . Archivé de l'original le 22 mai 2012.

Sources

Liens externes