html
css
JavaScript
JSON
ajax
PhP
MySQL
openSSL
https
apache
cors
unix
ftp
serveurs
XML
PAO
Illustrator
Photoshop
InDesign
pdf
postscript
cmjn
marquage à chaud
offset
vernis relief
pelliculage
développement
ERP
Interfaces web
class
instances
objet
flashage
scan films
conception graphique
impression
préparation fichiers impression
packaging
étiquettes
plaquettes
dépliants
catalogues
brochures
papeterie
compte-fils gradués
Logiciels
SirenData
SignTheDoc
Password
Lord Of The Screen
Mail
Portail
WebMaster
Devis
Check site
En quoi un logiciel web est-il différent d'un site web ?
Initialement, un logiciel est une suite d'instructions informatiques consécutives traduites dans le langage natif du système d'exploitation (on dit "compilé") sur lequel il va fonctionner pour se présenter au final sous la forme d'un simple fichier dit "exécutable".
Présenté comme cela, on est très loin d'un site web constitué de multiples fichiers de script qui se complètent, rédigés dans différents langages non compilés (qui restent donc lisibles par l'être humain) interprétés de façon plus ou moins homogène et constante par des logiciels plus ou moins fiables (navigateurs ou assimilés) et qui importent eux-mêmes des fichiers tiers (autres scripts, images, vidéos...) ! Mais peu à peu, les logiciels et le monde du web ont évolué, tant et si bien qu'ils finissent par se ressembler, malgré des divergences fondamentales.
Du côté des logiciels, on a commencé à comprendre qu'au final, il était possible de constituer une application d'éléments fixes et d'éléments modifiables. Le problème était qu'une fois compilé (traduit en langage binaire), il n'y a plus que des '0' et des '1'. Pour effectuer des modifications, il faut obligatoirement repartir du code source et RE-compiler.
Pourtant, en imaginant un logiciel multi-langues, il est pratique d'avoir des fichiers contenant tous les textes affichés qui soient séparés, non compilés. De cette façon, il devient simple de traduire un logiciel, sans faire appel aux développeurs. De la même façon, si les éléments de l'interface graphique sont séparés, il est également possible de les modifier, de les améliorer ou les rendre plus ergonomiques, sans rien recompiler. Sur ce point, là où le monde du web marque un point, c'est que le logiciel d'affichage, le navigateur, peut adapter la présentation à la taille du contenu. C'est même aujourd'hui une de ses prérogatives initiales (aspect 'responsive').
En allant plus loin, imaginons que même le code compilé soit séparé en petits morceaux, chacun ayant en charge une des fonctions du logiciel par exemple, et que ces petits morceaux soient pris en charge au lancement du logiciel. Dans ce cas, il pourrait n'exister qu'un seul morceau de code initial basique, qui n'aurait pour tâche que de charger les autres (on appelle cela un 'kernel'), et des morceaux séparés qui déclarent les actions qu'ils peuvent réaliser et les fonctions qu'ils mettent à disposition des autres morceaux (on appelle cela les 'API' - Application Programming Interface).
L'avantage est évident. Des graphistes s'occupent de l'interface, des rédacteurs et des traducteurs s'occupent des textes (menus, dialogues et autres...) et des développeurs plus ou moins séparés ou indépendants s'occupent chacun d'une partie du code : la partie dédiée à un type de calcul, celle dédiée à l'impression, celle dédiée à l'enregistrement, celle dédiée à l'exportation en PDF, etc.
Partant de là, il devient possible et simple de faire évoluer n'importe qu'elle partie du logiciel séparément, d'ajouter des fonctionnalités, simplement en remplaçant ou en ajoutant une parties des éléments que l'on appelle des ressources. En fait, c'est comme cela que fonctionne le web, lorsque c'est bien fait. Il suffit de remplacer une image dans un dossier et l'affichage change. On modifie une ligne de code dans un script et le logiciel change, pour des millions d'utilisateurs, immédiatement. Il n'y a rien à re-compiler, rien à ré-installer.
Dans un logiciel, certaines ressources sont compilées, comme le code, d'autres non, comme les textes et les images. C'est MacOS qui a lancé cette méthode de travail en intégrant des ressources aux logiciels. Elles étaient modifiables séparément depuis un utilitaire nommé "Resedit". Depuis, beaucoup de logiciels ont adoptés cette méthode et chacun à nommé les ressources de code à sa guise, que ce soit 'plug-ins', 'add-ons', 'add-ins', 'greffons' ou autre.
Par contre, cela pose quand même des problèmes, notamment de sécurité. Même si un logiciel se présente sous la forme d'un fichier unique, pour simplifier l'interface, en réalité, c'est un dossier qu'il est possible d'ouvrir (sur MacOS à l'aide d'un clic droit), pour accéder à son contenu et le modifier. Ce à quoi on aura directement accès ne sera pas fondamental. On pourra remplacer les textes des menus par d'autres mots de son choix, ou l'écran d'ouverture (splash screen) par la photo de son chien. Non seulement le code sensible reste compilé, mais il peut également vérifier que certaines images font bien la taille prévue, ont bien un pixel de telle couleur à tel endroit, juste par sécurité.
De toute façon, les hackers compétents savent depuis longtemps "décompiler" un logiciel (on dit "désassembler", ou transformer en langage "d'assemblage") pour le modifier. Les '0' et les '1' du fichier final peuvent être lus et transformés dans un langage que l'on appelle "assembleur" et qui les affiche sous forme de "mnémoniques" (des mots en clair qui remplacent les chiffres). L'assembleur est sans limite quant aux modifications et aux possibilités car il s'adresse directement au processeur et peut court-circuiter le système d'exploitation. C'est comme cela que l'on "crack" un code ou crée un virus. C'est très puissant mais ne laisse place à aucune marge d'erreur.
A noter que lorsqu'on "compile" le code, on le transforme en langage "machine" compréhensible par le processeur de la machine hôte. Ce n'est pas par sécurité, mais parce que c'est nettement plus rapide a exécuter. Donc, le code d'un logiciel s'exécute plus rapidement que celui d'un site web, mais il ne fonctionne que sur un seul type de plateforme à la fois.
En conclusion, les logiciels d'aujourd'hui sont des "dossiers" remplis de "ressources" de différents types, qui fonctionnent et communiquent entre elles. Mais une des sécurités de l'ensemble est que l'intégralité de l'application (ou logiciel, ou software, c'est la même choses) réside sur l'ordinateur de celui qui l'a installé, et nulle part ailleurs. De plus, pour l'installer, il faut en avoir le droit (saisir un code administrateur). Et pour utiliser le même logiciel sur plusieurs ordinateurs, il faut généralement plusieurs licences (donc payer plusieurs fois).
Et internet ?
En fait, aujourd'hui, c'est presque la même chose. Mais internet s'est construit dans l'autre sens. Au lieu d'avoir un logiciel spécifique compilé que l'on a payé et autorisé à s'installer quelque part, on partage tout depuis un serveur. Un logiciel gratuit (aujourd'hui, ça n'a pas toujours été le cas) le navigateur fait office d'interface graphique. L'ossature générale se trouve obligatoirement dans un fichier en langage HTML. A la racine du serveur, ce fichier s'appelle 'index.htm', 'index.html' ou 'index.php'. En fait, il pourrait prendre d'autre nom, c'est paramétrable. Lorsque vous saisissez 'mon_super_site.com', en fait vous saisissez 'mon_super_site.com/index.htm'. C'est le navigateur qui complètera sans rien dire ni rien afficher. Pourquoi '.htm' ou '.html' ? Parce qu'il existe des systèmes serveurs qui n'autorisent que 3 lettres d'extension aux fichiers. Donc, '.htm' sera reconnu partout, et '.html' presque partout.
L'apparence graphique du logiciel sera gérée par le navigateur en langage css. Les actions sur le navigateurs se feront au travers du langage JavaScript, à l'exception des liens (et encore). Les actions sur le serveur par des scripts CGI (comme ceux écrits en langage PhP). La connexion et la communication entre les deux étant assurée par l'extension Ajax du langage JavaScript. Quant aux données, elles seront stockées dans des logiciels de base de donnée (SGDB) dédiés. Donc, on se retrouve avec un kernel qui est un fichier '.htm', et des fichiers séparés, chargés à la volée, qu'ils contiennent des images, des vidéos, du code ou autre.
Alors demain, qui aura l'avantage ?
Internet évidemment.
Parce que c'est multiplateforme. Programmé une fois, diffusé n'importe où, sur n'importe quel ordinateur muni d'un navigateur ou équivalent.
Quelle sont les limites actuelle d'internet dans le domaine des logiciels ?
Un peu la sécurité. N'importe qui peut se connecter à un site, à moins d'avoir mis en place des moyens pour l'en empêcher (des confirmations web, sms, ou bientôt, l'adresse IP-v6 de la machine, la reconnaissance faciale, vocale, palmaire...). Sur votre PC, il faut vous voler votre ordinateur et connaître votre code pour y accéder. Mais la sécurité va continuer à progresser.
Un peu la vitesse. Le fait que le code soit interprété et non compilé, ralenti son exécution. Il est difficilement envisageable, même aujourd'hui, d'avoir la même efficacité pour un logiciel de création 3D ou vidéo, donc gourmand en activité processeur, à partir d'un site web plutôt que sur un logiciel, ne serait-ce que parce que le processeur d'un téléphone grand public et celui d'une station de travail professionnelle dédiée ne seront sans doute jamais aussi efficace l'un et l'autre.
Un peu la compatibilité. L'interface est limitée par les possibilités du navigateur, sa compatibilité avec les dernières normes et son efficacité. Mais cela s'est grandement normalisé.
Un peu le réseau. Le réseau est fondamental, car sans réseau, plus de logiciel, mais la tendance tend à contourner cela en intégrant du code à l'intérieur du navigateur pour pouvoir fonctionner sans réseau. De plus, la vitesse des réseaux et leur disponibilité ne cesse de s'accroître.
Un peu les possibilités. Les navigateurs web ne donnent pas accès à toutes les ressources de l'ordinateur hôte, pour des raisons de sécurité. Mais cela change néanmoins. Un site peut désormais, après accord de l'utilisateur, accéder à son micro, sa caméra, sa géolocalisation... Bientôt, le carnet d'adresse ou les fichiers.
Quand au fait qu'il faille un navigateur, l'interface des systèmes d'exploitation est aujourd'hui en fait un navigateur web particulier, qui peut afficher un site web comme un logiciel à part entière à partir de certaines de ses informations (cela s'appelle "Application Manifest").
Il faut surtout ajouter à tout cela le fait que les normes du web évoluent très vite, les interfaces changent et s'améliorent, par le fait de l'expérience de milliards d'utilisateurs de par le monde.
Les nouvelles possibilités sont intégrées au langage de présentation "css" qui dépasse très largement et avec succès ce pour quoi il a été conçu initialement. En résumé, un développeur d'application web n'a qu'à attendre qu'une nouvelle possibilité apparaisse pour l'intégrer, c'est tout.
Au niveau du code, il est possible de le répartir sur plusieurs serveurs, pour que si l'un ne répond pas assez rapidement, la requête bascule automatiquement sur un autre (c'est pour cela que "google" répond si vite).
Avantage également pour le web, les données sont stockées dans des logiciels de gestion de bases de données spécifiquement adaptés et optimisés pour ce travail, au travers de langages très rapides et performants (comme le "SQL"). Dans un logiciel "standard" compilé, c'est au développeur de gérer cela.
Autre avantage pour le web, on peut accéder à son logiciel de n'importe où dans le monde, et depuis n'importe quel ordinateur. On ne peut accéder au logiciel de son ordinateur personnel que depuis chez soi.
Les "ressources" de codes stockées sur les serveurs peuvent être protégées, c'est à dire accessibles uniquement après saisie d'un code. Donc, c'est relativement sécurisé.
Et surtout, il est possible de faire évoluer un logiciel web sans rien installer chez l'utilisateur. Il suffit de modifier le code hébergé. Il est même simple de laisser tourner plusieurs versions simultanées pour les comparer ou les tester.
Alors que manque-t-il encore vraiment au web ?
Vitesse de transmission réseau encore plus rapide, navigateurs encore plus performants, outils d'interface standardisés (bien que l'on puisse déjà les créer), sécurisation maximale (on s'en approche, mais la sécurité totale n'existera jamais).
Il reste toutefois une particularité au monde du web. Pour mener à bien un projet seul, l'apprentissage est très long car cela implique la maîtrise et le mélange adéquat entre de multiples technologies sans cesse en évolution : HTML, CSS, JavaScript, Ajax, PhP, mySQL.
Toutes ces technologie s'imbriquent et se complètent, elles possèdent toutes leurs avantages et leurs limites. Le succès du logiciel est de savoir les utiliser à bon escient. Lorsque plusieurs technologies permettent de faire la même choses, il faut opter pour la plus performante OU la plus évolutive et flexible par rapport au projet final. Ce n'est pas simple à déterminer.
Si l'avantage est au web, la compétence nécessaire du développeur s'est grandement complexifiée. On peut parfois alors se demander si il ne faut pas s'adresser à de grosses structures plutôt qu'à des indépendants. En fait, c'est une fausse bonne idée. Il semble évident qu'une personne seule peut vous rendre dépendante d'elle où concevoir un lourd projet qu'elle sera seule à pouvoir gérer, avec les risques que cela implique. Inversement, c'est souvent le contraire qui se produit. Une structure plus importante conçoit des outils qui lui appartiennent et sur lesquels reposent le site. Si vous êtes propriétaire du site, vous ne l'êtes pas des ressources de code tiers utilisées sous sa licence. Alors qu'un indépendant va utiliser des librairies de codes libres de droit, souvent plus performantes, car utilisées et améliorées par des milliers d'autres développeurs et très documentées de ce fait. Transférer un site d'une grosse structure sous-traitante à une autre peut s'avérer très difficile, voire impossible. D'un indépendant à un autre, c'est nettement plus simple. Il suffit d'exiger l'intégralité des codes sources et la capacité de ré-installation. Bien entendu, en cas de défaillance du prestataire, il faudra en trouver un autre ayant les mêmes compétences, mais ne rêvez pas, les grosses structures s'appuient généralement sur des indépendants. De cette façon, quand elles n'ont pas de contrats, elles n'ont pas de charges... Et quand elles en ont un, elles mettent les indépendants en concurrence. Une fois choisi, elles lui font simplement établir des cartes de visite et une adresse e-mail à leur enseigne.
Un autre aspect à prendre en considération !
Un logiciel n'est pas qu'un site, et inversement. Un site est d'abord conçu pour communiquer, pour informer, éventuellement pour vendre, discuter, afficher des promotions ou envoyer du courier. Un logiciel est un programme utilitaire, notamment dans la mesure où il concerne la vie d'une entreprise spécifique.
Un site-logiciel web dédié peut permettre de gérer ses approvisionnements, ses achats, ses ventes, ses devis, ses factures... et également son site ! On parle alors d'ERP ou au minimum de WebApp. Le logiciel web peut interagir avec le site de communication. Il peut paramétrer l'affichage de celui-ci, la mise en avant de produit ou d'informations. On parle alors de back-office, ou console de gestion web. Mais il peut aussi afficher et gérer des stocks, envoyer des e-mails de confirmations de vente, de proposition, de commande, générer des factures en PDF voire même, des bulletins de paie. Dans ce cas, c'est un ERP (Entreprise Ressource Planning). Mais tout cela est nettement plus complexe et dépasse le cadre de la conception graphique d'un site standard.
Un exemple simple : si vous disposez d'un produit à vendre en un seul exemplaire et que deux clients simultanément le consultent sur votre site de vente, si l'un d'eux le commande, il est logique que l'autre soit informé qu'il n'est subitement plus disponible. Cela peut même être un argument de vente que de savoir que d'autres personnes simultanément consultent le même produit. C'est parfaitement réalisable, mais un site classique n'est pas pensé pour cela. Il faut un développeur spécialisé.
Si votre site gère des factures en ligne, il faut qu'il leur attribue un numéro. Légalement, ce numéro doit être conçu de telle sorte qu'il ne puisse être possible d'en intercaler d'autres plus tard. Dans ce cas, il faut que votre site soit informé du dernier numéro en cours de votre logiciel de gestion et puisse communiquer avec lui pour insérer ses propres factures dans votre système.
Plus complexe encore, si votre base de données décrit un produit et que celui-ci est référencé par un identifiant, les factures et bordereaux de livraison ne vont mémoriser que cet identifiant. Lorsque vous les afficherez, ils iront récupérer les informations stockées correspondantes. Mais que se passe-t-il si le produit change ? Brusquement, l'affichage du bordereau de livraison ou de la facture change, ce qui n'est pas acceptable. Les bordereaux de livraison signés et les factures émises doivent être figées. Le logiciel doit donc prendre en charge une méthode de duplication des enregistrements des produits si ceux-ci sont référencés par une facture ou un bordereau. Ceci non plus n'est pas du ressort d'un créateur de site web.
Il est même possible d'aller beaucoup plus loin. On peut utiliser un mini-ordinateur dédié pour qu'il affiche en plein écran sur un écran tactile une interface graphique web constituée de simple boutons de choix. L'utilisateur ne peut alors plus sortir de cette interface. Il est possible d'en masquer la souris et de faire en sorte que le site agisse directement sur le système d'exploitation qui l'héberge. Ainsi, on transforme un mini-PC en console domotique ou logiciel de gestion, de l'automate à la machine à café. Le tout peut rester accessible de l'extérieur et informer de toute panne éventuelle. Il n'y a pratiquement aujourd'hui plus aucune limite en terme de logiciel à ce qu'un site web hébergé peut permettre de faire. Le tableau de bord de votre voiture peut parfaitement n'être plus qu'un site web spécifique. Votre réfrigérateur peut posséder une tablette graphique incorporée qui vous informe des dates de péremption de son contenu, voire même vous envoyer un e-mail d'alerte. Il est possible de coupler un lecteur de codes barre ou QRCode à un mini-PC et de le relier à une base de données...
En résumé, le logiciel est devenu Web-App, c'est-à-dire une application web, incontournable et qui a de longs et beaux jours devant elle. Quant aux développeurs, c'est un peu comme les ressources de code, soit on trouve celui qui sait tout faire ('full-stack'), soit celui qui ne gère que le côté client ('front-end'), soit celui qui ne gère que l'aspect serveur ('back-end'), mais en tout cas, ce sont des éléments qui s'imbriquent et évoluent à leur rythme.



mentions légales
powered by fewkeys