Portabilité du logiciel
Un programme informatique est dit portable s’il nécessite très peu d’efforts pour le faire fonctionner sur différentes plates -formes . La condition préalable à la portabilité est l’ abstraction généralisée entre la logique d’application et les interfaces système . Lorsque des logiciels avec les mêmes fonctionnalités sont produits pour plusieurs plates-formes informatiques , la portabilité est l’enjeu clé pour la réduction des coûts de développement.
Jeu vidéo fonctionnant sur différentes plates-formes matérielles.
Stratégies de portabilité
La portabilité du logiciel peut impliquer :
- Transférer les fichiers de programme installés vers un autre ordinateur ayant essentiellement la même architecture.
- Réinstaller un programme à partir de fichiers de distribution sur un autre ordinateur ayant essentiellement la même architecture.
- Construire des programmes exécutables pour différentes plateformes à partir du code source ; c’est ce qu’on entend généralement par « portage ».
Systèmes similaires
Lorsque des systèmes d’exploitation de la même famille sont installés sur deux ordinateurs avec des processeurs avec des jeux d’instructions similaires, il est souvent possible de transférer les fichiers implémentant les fichiers de programme entre eux.
Dans le cas le plus simple, le ou les fichiers peuvent simplement être copiés d’une machine à l’autre. Cependant, dans de nombreux cas, le logiciel est installé sur un ordinateur d’une manière qui dépend de son matériel, de ses logiciels et de sa configuration détaillés, avec des pilotes de périphérique pour des périphériques particuliers, en utilisant le système d’exploitation installé et les composants logiciels de prise en charge, et en utilisant différents lecteurs ou répertoires . .
Dans certains cas, les logiciels, généralement qualifiés de « logiciels portables », sont spécifiquement conçus pour fonctionner sur différents ordinateurs dotés de systèmes d’exploitation et de processeurs compatibles, sans aucune installation dépendante de la machine. Le portage n’est rien de plus que le transfert de répertoires spécifiés et de leur contenu. Les logiciels installés sur des périphériques de stockage de masse portables tels que des clés USB peuvent être utilisés sur n’importe quel ordinateur compatible en branchant simplement le périphérique de stockage et stockent toutes les informations de configuration sur le périphérique amovible. Les informations spécifiques au matériel et aux logiciels sont souvent stockées dans des fichiers de configuration à des emplacements spécifiés (par exemple, le registre sur des machines exécutant Microsoft Windows ).
Les logiciels qui ne sont pas portables dans ce sens devront être transférés avec des modifications pour prendre en charge l’environnement sur la machine de destination.
Différents processeurs
En 2011 [mettre à jour], la majorité des ordinateurs de bureau et portables utilisaient des microprocesseurs compatibles avec les jeux d’ instructions x86 32 et 64 bits . Les appareils portables plus petits utilisent des processeurs avec des jeux d’instructions différents et incompatibles, tels que ARM . La différence entre les appareils plus grands et plus petits est telle que le fonctionnement détaillé du logiciel est différent ; une application conçue pour s’afficher convenablement sur un grand écran ne peut pas simplement être portée sur un smartphone de poche avec un petit écran même si la fonctionnalité est similaire.
Les applications Web doivent être indépendantes du processeur, de sorte que la portabilité peut être obtenue en utilisant des techniques de programmation Web, en écrivant en JavaScript . Un tel programme peut s’exécuter dans un navigateur Web courant. De telles applications web doivent, pour des raisons de sécurité, avoir un contrôle limité sur l’ordinateur hôte, notamment en ce qui concerne la lecture et l’écriture des fichiers. Les programmes non Web, installés sur un ordinateur de manière normale, peuvent avoir plus de contrôle, tout en réalisant la portabilité du système en se connectant à des bibliothèques portables fournissant la même interface sur différents systèmes.
Portabilité du code source
Les logiciels peuvent être compilés et liés à partir du code source pour différents systèmes d’exploitation et processeurs s’ils sont écrits dans un langage de programmation prenant en charge la compilation pour les plates-formes. Il s’agit généralement d’une tâche pour les développeurs de programmes ; les utilisateurs typiques n’ont ni accès au code source ni les compétences requises.
Dans les environnements open source tels que Linux, le code source est accessible à tous. Auparavant, le code source était souvent distribué dans un format standardisé et pouvait être intégré dans du code exécutable avec un outil Make standard pour n’importe quel système particulier par des utilisateurs modérément avertis si aucune erreur ne se produisait pendant la construction. Certaines distributions Linux distribuent des logiciels aux utilisateurs sous forme source. Dans ces cas, il n’est généralement pas nécessaire d’adapter en détail le logiciel pour le système ; il est distribué d’une manière qui modifie le processus de compilation pour correspondre au système .
Effort pour porter le code source
Même avec des langages apparemment portables comme C et C++ , l’effort de portage du code source peut varier considérablement. Les auteurs d’ UNIX / 32V (1979) ont rapporté que “[l] e shell (Bourne) […] nécessitait de loin le plus grand effort de conversion de tout programme soi-disant portable, pour la simple raison qu’il n’est pas portable. ” [1]
Parfois, l’effort consiste à recompiler le code source, mais parfois il est nécessaire de réécrire des parties majeures du logiciel. De nombreuses spécifications de langage décrivent un comportement défini par l’implémentation (par exemple, le décalage vers la droite d’un entier signé en C peut effectuer un décalage logique ou arithmétique ). Les fonctions du système d’exploitation ou les bibliothèques tierces peuvent ne pas être disponibles sur le système cible. Certaines fonctions peuvent être disponibles sur un système cible, mais présentent un comportement légèrement différent (Ex : utime() échoue sous Windows avec EACCES, lorsqu’il est appelé pour un répertoire). Le code du programme lui-même peut également contenir des éléments non portables, comme les chemins des fichiers inclus. Les lettres de lecteur et la barre oblique inverse comme délimiteur de chemin ne sont pas acceptées sur tous les systèmes d’exploitation. La mise en œuvre a défini des choses commeL’ ordre des octets et la taille d’un int peuvent également augmenter l’effort de portage. En pratique, la prétention des langages, comme C et C++ , à avoir le WOCA ( écrire une fois, compiler n’importe où ) est discutable.
Voir également
- Interopérabilité
- Logiciel multiplateforme
- Logiciel dépendant du matériel
- C (langage de programmation)
- Interopérabilité linguistique
- Test de portabilité
- Compilateur source à source
- Portabilité des données
Références
- ^ Thomas B. Londres et John F. Reiser (1978). Un système d’exploitation Unix pour l’ordinateur DEC VAX-11/780 . Note interne des Bell Labs 78-1353-4.
Sources
- Mooney (1997). “Apporter la portabilité au processus logiciel” (PDF) . Université de Virginie-Occidentale. Département de statistique et d’informatique. Archivé de l’original (PDF) le 2008-07-25 . Récupéré le 17/03/2008 . {{cite journal}}:Cite journal requires |journal= (help)
- Garen (2007). “Portabilité du logiciel : peser les options, faire des choix” . La revue CPA . 77 (11): 3.
- Lehey (1995). “Portage du logiciel UNIX : du téléchargement au débogage” (PDF) . Récupéré le 27/05/2010 . {{cite journal}}: Cite journal requires |journal= (help)