Pourquoi l’ergonomie web est importante ?

Introduction

Travailler sur un écran prend de plus en plus d’importance dans notre vie personnelle et professionnelle et nous utilisons continuellement des interfaces pour afficher différents types d’informations. Très souvent, ces interfaces sont mal conçus et il est alors difficile pour l’utilisateur d’atteindre ses objectifs. De plus, la quantité croissante d’informations rendent les interfaces de plus en plus complexes à utiliser.

Concevoir une interface appropriée est devenue important pour améliorer l’expérience utilisateur et faire en sorte de générer du trafic sur son site. Cette conception est obtenue en utilisant un processus, des règles et des méthodes créés à cet effet : c’est l’ergonomie, qui place les utilisateurs au centre de l’analyse. En effet, l’ergonomie concerne la conception pour les personnes qui interagissent avec un produit, un système ou un processus. Les utilisateurs ne remarquent généralement pas une bonne interface, mais ils remarquent une ergonomie médiocre qui n’attire plus aucun utilisateur de nos jours.

L’objectif de l’ergonomie web est de s’assurer que le design d’un site est adaptée à ses utilisateurs. Pour atteindre cet objectif, il est nécessaire de prendre en considération la diversité des utilisateurs en matière d’âge, d’handicaps, de capacités cognitives, d’expériences antérieures, d’attentes culturelles ou encore de besoins.

L’univers du web

Tout d’abord, il est important de définir le périmètre que nous allons étudier avec l’ergonomie : le web.

Le web est devenu l’une des technologies les plus significatives du 21ieme siècle. La nature, la structure, l’utilisation des sites web est en constant changement. L’évolution du web est tellement rapide que nous annotons des numéros de versions : le Web 1.0 qui est le web traditionnel, le Web 2.0, le Web 3.0 etc… Cette évolution vise à exploiter le potentiel du web de manière plus interactive et collaborative en mettant l’accent sur les interactions sociales.

Pour identifier les différentes versions du web, il faut analyser ce qu’ils permettent de faire et qui ou quoi est au cœur de l’action. Le Web 1.0 concerne la connexion à l’information, le Web 2.0 concerne la connexion entre individus et enfin le Web 3.0 consiste à intégrer des données, des connaissances et des applications sur le web en faisant en sorte qu’elles fonctionnent de manière à rendre le Web plus significatif et à devenir une plate-forme collaborative.

Les 3 versions du Web

Les interactions homme-machine

L’évolution du web s’accompagne de systèmes de plus en plus puissants et invasifs. Les utilisateurs ont de plus en plus de mal à comprendre clairement le système et à atteindre efficacement leurs objectifs. En effet, les développeurs mettent de plus en plus de fonctions et d’informations, ils oublient l’objectif fondamental du système : répondre aux besoins de l’utilisateur. En effet, qui n’a jamais été « frustré » par la difficulté ou l’incapacité de trouver l’information qu’il cherchait ? Qui n’a pas perdu de temps en raison d’une mauvaise organisation des sites, de noms de liens trompeurs ou de pages trop longues à charger ?

Quel que soit le but du site, le contenu de l’information est l’élément le plus important d’un site web. Plus le site web aidera les visiteurs à trouver facilement et rapidement les informations qu’ils cherchent, plus le site web sera utile et utilisable.

Afin d’atteindre ces objectifs, de nombreuses recherches ont été menées pour trouver des solutions en tant que «lois» ou «principes» de la recherche en psychologie cognitive. C’est ainsi que l’ergonomie des sites web a été créée et est devenue un élément essentiel de l’interface web.

4 chiffres montrant l’importance d’une bonne ergonomie

L’ergonomie Web

Du grec « ergon » qui signifie travail et « nomos » loi, l’ergonomie cherche à comprendre comment adapter le travail, les outils et l’environnement à l’être humain. Il se réfère simultanément à un certain nombre de disciplines scientifiques sur le fonctionnement humain telles que la psychologie sociale, la physiologie ou la psychologie cognitive et utilise diverses techniques telles que l’ingénierie, l’informatique ou l’architecture, en fonction du contexte de travail.

L’ergonomie porte sur le développement de systèmes Homme-Machine ou plus largement sur les conditions de travail permettant aux humains de travailler dans des conditions optimales de sécurité, de confort, de santé, de satisfaction et d’efficacité.

Selon une définition de l’International Ergonomics Association d’août 2000, « l’ergonomie (ou facteurs humains) est la discipline scientifique concernée par la compréhension des interactions entre les humains et les autres éléments d’un système, ainsi que par la profession qui applique la théorie, les principes, les données et d’autres méthodes à concevoir pour optimiser le bien-être humain et la performance globale du système ».

Utilité vs Utilisabilité

Sur un site web, l’ergonomie est liée à la facilité d’utilisation pour atteindre ou non une information nécessaire. Cela se caractérise par deux éléments fondamentaux :

  • L’utilité, c’est la capacité du site Web à répondre aux «vrais» besoins des utilisateurs (recherche d’informations, achat d’objets en ligne, communication, etc.). Il représente toutes les caractéristiques techniques et fonctionnelles du site Web lorsque vous analysez le futur utilisateur.
  • La facilité d’utilisation, c’est permettre à l’utilisateur d’effectuer une action rapidement et efficacement en fonction du contexte et de l’utilisateur. La norme ISO 9241 définit la convivialité comme « la mesure dans laquelle un produit peut être utilisé par des utilisateurs spécifiés pour atteindre des objectifs spécifiés avec efficacité, efficience et satisfaction ».
Différence entre utilité et utilisabilité

Pour créer un site web efficace respectant ces principes, vous devez comprendre exactement qui seront les utilisateurs de votre site Web et comprendre comment ils vont interagir avec votre interface avant même de commencer à développer votre site.

Comprendre l’être humain

Lorsque l’on parle d’ergonomie web, il est important de souligner que dans cet environnement totalement virtuel, à l’image d’une interface de site web, l’être humain n’est affecté que sur les plans mental et psychologique. En effet, tout le traitement de données est un champ abstrait et l’interface de site Web est le seul canal de communication entre l’utilisateur et le besoin de l’utilisateur. Afin de créer une interface de site Web pour l’être humain, des études de psychologie ont permis de mieux comprendre le comportement et les caractéristiques de l’homme et indiquent que l’être humain est confronté à une interface dans :

  • Recueillir des informations à partir de voies perceptuelles (vision, audition, toucher …). La perception visuelle peut représenter près de 50% de l’activité cérébrale, il s’agit de la forme de transmission la plus importante pour les interfaces utilisateur.
  • Réaliser des processus cognitifs pour comprendre cette information. Cela nécessite prise de décision, résolution de problèmes, mémoire, attention et jugement.
  • Répondre au système en engageant des actions motrices (gestes, commandes vocales ou actions sur un outil tel qu’une souris, un écran tactile, un clavier, etc.).
  • Il convient également de souligner qu’un environnement qui stimule fortement les sens (musique, vidéo, environnement agréable) facilite l’apprentissage à court terme, ce qui permet de garder à l’esprit une petite quantité d’informations de manière active.

C’est notamment la raison pour laquelle « apprendre en faisant » est très efficace. Par exemple, les environnements multimédias permettent aux enfants de s’adapter très rapidement à une interface et d’apprendre « sans s’en rendre compte ».

Comprendre l’utilisateur

Après avoir compris le comportement de l’être humain sur un site web, nous pouvons maintenant définir le comportement d’un utilisateur sur un site web particulier. Pour cela, il faut :

  1. Définir qui sont les utilisateurs en regroupant leurs compétences, leur niveau de connaissances, leur âge, leur localisation, leur sexe et tous les autres attributs possibles permettant de comprendre et d’adapter le site Web en fonction des utilisateurs finaux.
  2. Anticiper les tâches que l’utilisateur aura l’intention d’accomplir, ce sont les attentes de l’utilisateur. Tous les visiteurs du site web ne recherchent pas nécessairement la même information ou n’ont pas nécessairement les mêmes exigences en termes de fonctionnalités ou de design.
  3. Et enfin, prendre en compte les contraintes environnementales de l’utilisateur. Cela signifie que tous les environnements physiques d’utilisateur possibles pour utiliser le site Web, car l’affichage du site Web peut varier d’un environnement spécifique à un autre.

Cet analyse plus communément appelé «analyse du contexte d’utilisation» peut être réalisé à l’aide d’interviews, d’ateliers, d’enquêtes, de visites de sites, d’analyses d’artefacts, de groupes de discussion ou d’études d’observation et d’une enquête contextuelle (type spécifique d’interview permettant de collecter des données de terrain auprès d’utilisateurs). Une fois cette analyse effectuée, les prototypes de sites Web et leurs démonstrations de test doivent être des étapes obligatoires à franchir pour éviter toutes les erreurs possibles et vous assurer d’atteindre les exigences que vous avez définies dans la pré-analyse de votre projet.

Les critères ergonomiques

Il existe des critères ergonomiques permettant de rendre les besoins de l’utilisateur plus faciles à réaliser sur une interface web.

1. La lisibilité

La lisibilité d’un texte affecte la façon dont les utilisateurs traitent l’information. Une mauvaise lisibilité effraie les utilisateurs, par contre si elle est correctement réalisée, la lisibilité permet aux utilisateurs de comprendre efficacement les informations. Voici quelques conseils pour améliorer la lisibilité de votre site :

  • Simplicité: un site Web épuré renforcera la crédibilité d’une organisation.
  • Pages Web non surchargées: les images animées ne sont pas recommandées. Les images animées doivent être réservées aux messages forts, car elles attirent l’œil de l’utilisateur.
  • Clarté: il convient de prendre en compte le fait que les informations écrites sont plus difficiles à lire à l’écran que sur papier (25% de temps de lecture en plus). Ainsi, le texte doit être suffisamment espacé.
  • Structure: le texte devrait être structuré avec des paragraphes et des titres à différents niveaux afin de faciliter la lecture.
  • Organisation : les informations doivent être classées par ordre d’importance. L’élément le plus important à afficher doit être placé en haut.
Transformation d’un texte pour améliorer la lisibilité
2. La facilité d’utilisation

C’est un attribut de qualité qui évalue la facilité d’utilisation des interfaces utilisateur. Il fait référence aux méthodes permettant d’améliorer la facilité d’utilisation pendant le processus de conception.

  • Facilité de navigation: la « règle des trois clics » doit être prise en compte sur le site Web. Il indique que toutes les informations doivent être disponibles en 3 clics;
  • Repérage: le visiteur doit pouvoir localiser le site à tout moment. De plus, le logo et les éléments de navigation doivent être présents sur toutes les pages au même endroit et une charte graphique uniforme doit être appliquée à toutes les pages pour permettre à l’utilisateur de savoir qu’il se trouve toujours sur le même site Web.
  • Liberté de navigation: le site doit permettre à l’utilisateur de revenir à la page d’accueil et aux rubriques principales en un seul clic, quelle que soit la page sur laquelle il se trouve;
  • Visibilité de l’adresse: l’URL de chaque page de site Web doit être constamment visible et explicite pour permettre à l’utilisateur de se retrouver sur le site Web.
3. La rapidité

La durée d’affichage des pages de sites Web doit être aussi courte que possible, car des études ont montré que les utilisateurs quittaient un site s’il ne s’était pas chargé en 4 secondes.

  • Pour minimiser le nombre de requêtes HTTP: minimisez le nombre de requêtes HTTP en utilisant le moins de fichiers possible pour afficher le site Web. Moins il y a de fichiers à charger, plus le site Web sera affiché rapidement;
  • Pour réduire les fichiers: supprimez tous les espaces du code lorsque cela est possible avant de le servir aux visiteurs et combinez tous les fichiers d’une langue spécifique dans un fichier unique. Les scripts JS doivent être réduits et placés au bas du code de la page;
  • L’optimisation des images: doit être optimisée à la taille maximale de l’image, en choisissant un format et un nombre de couleurs aussi réduit que possible (il est recommandé de ne pas excéder 30 à 40 ko maximum par image).
4. L’interactivité

En informatique, l’interactivité est le dialogue qui se produit entre un être humain et un programme informatique.

  • Les hyperliens: l’interactivité caractérise l’interaction entre l’utilisateur et le site Web. Les liens hypertextes offrent de grandes opportunités dans ce domaine et permettent de proposer aux visiteurs de multiples chemins, en fonction de ses envies. Il est conseillé de mettre suffisamment de liens entre les pages. Inversement, trop de liens peuvent rendre la lecture difficile.
  • Les informations de la division: afin de permettre une meilleure assimilation des informations des visiteurs et dans certains cas de générer de la curiosité, il est recommandé de couper les informations. La division de l’information peut donner lieu à un texte spécifique et à un hyperlien menant au reste de l’article.
  • La facilitation des échanges: il est souhaitable de tout mettre en place pour faciliter les échanges avec les visiteurs, notamment pour recueillir leurs impressions et leurs demandes afin de faire évoluer le site. Au moins, le visiteur devrait pouvoir trouver facilement un moyen de contacter une personne par courrier électronique ou via un formulaire de contact.

Sources

C’est quoi un Hub Ethernet ?

Un Hub Ethernet (concentrateur ou répéteur Ethernet) est un appareil informatique permettant de concentrer les transmissions Ethernet de plusieurs équipements sur un même supports dans un réseau informatique local. Chaque équipement attaché au Hub partage le même domaine de diffusion ainsi le même domaine de collision.

Dans tout segment de réseau Ethernet, une seule des machines connectée peut transmettre à la fois. Dans le cas contraire, il y a des collisions, les machines concernées doivent retransmettre leurs trames après avoir attendu un temps calculé pour chaque émetteur.

Le Hub transmet les trames à toutes les machines connectées contrairement au switch qui dirige les données uniquement vers une machine destinataire du réseau.

C’est quoi le protocole ARP ?

Le protocole ARP (Address Resolution Protocol) est un protocole de résolution d’une adresse IP (réseau) en une adresse MAC (liaison). Il permet à un système hôte de trouver l’adresse MAC d’un hôte cible situé sur le même réseau physique mais pour lequel seule l’adresse IP est connue. Sous ARP, les cartes de réseau contiennent une table qui assigne les adresses IP aux adresses matérielles des objets appartenant au réseau.

Pour créer des entrées, le protocole ARP diffuse une requête contenant l’adresse IP de l’hôte cible, qui répond en indiquant son adresse physique. La carte de réseau ajoute alors cette adresse à sa table ARP et peut ensuite envoyer des paquets à l’hôte cible.

C’est quoi le protocole ICMP ?

Le protocole ICMP (Internet Control Message Protocol) est un protocol d’Internet qui permet la génération de messages d’erreurs, de tests et d’informations relatifs au condition de transmission sur le réseau.

Il permet de vérifier par exemple qu’une machine est accessible (envoi d’un paquet ICMP echo request suivi de la réception d’un paquet ICMP echo reply).

C’est quoi une adresse IP ?

L’adresse d’une carte réseau correspond à l’adresse d’un poste et d’un seul. Or les postes sont généralement regroupés en réseau.

Comment identifier le réseau auquel appartient le poste ?

Il faut une adresse logique qui soit indépendante de l’adresse physique (MAC). C’est ce que propose le protocole IP et le protocole IPX.

Pourquoi identifier le réseau ?

Pour permettre à 2 postes qui ne sont pas connectés au même réseau de communiquer. Cela est impossible avec une adresse MAC, il faut une adresse de niveau supérieur, comme nous le verrons un peu plus loin et surtout avec le routage IP.

Le message véhiculé par la trame va contenir une autre adresse destinataire dont un des objectifs sera de définir le réseau destinataire du message. On appelle le message contenu dans une trame un paquet. Ce qu’il nous faut savoir à ce stade, c’est qu’une machine sait que le paquet n’est pas destiné au réseau si l’adresse réseau de destination est différente de la sienne, dans ce cas elle envoie le paquet à une machine spéciale (passerelle ou routeur) dont le rôle est d’acheminer les paquets qui sortent du réseau.

Cette adresse dite logique du noeud (car elle est attribuée par logiciel à un hôte, plus précisément à une carte réseau) contenue dans le paquet est l’adresse IP. Elle est définie indépendamment de toute topologie d’ordinateur ou de réseau. Son format reste identique quel que soit le support utilisé.

Les machines hôtes d’un réseau TCP/IP sont identifiées par leur adresse IP.

Résolution d’adresses logiques en adresses physiques

Toute machine sur un réseau IP a donc 2 adresses : une adresse MAC et une adresse IP.

Les processus de niveaux supérieurs utilisent toujours l’adresse IP et donc lorsqu’un processus communique avec un autre processus, il lui envoie un message dont l’adresse destinataire est une adresse IP, mais pour pouvoir atteindre la carte réseau du destinataire, il faut connaître son adresse MAC. Le rôle du protocole ARP (Adress Resolution Protocol) est d’assurer la correspondance entre l’adresse IP et l’adresse MAC.

Attribution d’une adresse IP Internet

Les réseaux connectés au réseau Internet mondial doivent obtenir un identificateur de réseau officiel auprès du bureau de l’Icann de l’Inter-NIC (Network Information Center) afin que soit garantie l’unicité des identificateurs de réseau IP sur toute la planète. Une adresse est attribuée au réseau privé dont l’administrateur en fait la demande auprès du NIC (http://www.nic.fr).

Après réception de l’identificateur de réseau, l’administrateur de réseau local doit attribuer des identificateurs d’hôte uniques aux ordinateurs connectés au réseau local. Les réseaux privés qui ne sont pas connectés à Internet peuvent parfaitement utiliser leur propre identificateur de réseau. Toutefois, l’obtention d’un identificateur de réseau valide de la part du centre InterNIC leur permet de se connecter ultérieurement à Internet sans avoir à changer les adresses des équipements en place.

Chaque noeud (interface réseau) relié à Internet doit posséder une adresse IP unique.

Structure des adresses IP

Les adresses IP sont des nombres de 32 bits qui contiennent 2 champs :

  • Un identificateur de réseau (NET-ID) : tous les systèmes du même réseau physique doivent posséder le même identificateur de réseau, lequel doit être unique sur l’ensemble des réseaux gérés.
  • Un identificateur d’hôte (HOST-ID) : un noeud sur un réseau TCP/IP est appelé hôte, il identifie une station de travail, un serveur ou tout autre périphérique TCP/IP au sein du réseau.

La concaténation de ces deux champs constitue une adresse IP unique sur le réseau.

Pour éviter d’avoir à manipuler des nombres binaires trop longs, les adresses 32 bits sont divisés en 4 octets. Ce format est appelé la notation décimale pointée, cette notation consiste à découper une adresse en quatre blocs de huit bits. Chaque bloc est ensuite converti en un nombre décimal.

Chacun des octets peut être représenté par un nombre de 0 à 255. Prenons par exemple l’adresse IP 10010110110010000000101000000001. Elle peut être découpée en quatre blocs : 10010110.11001000.00001010.00000001. Ensuite, chaque bloc est converti en un nombre décimal pour obtenir finalement 150.200.10.1. Cette écriture est une convention, le codage en machine est binaire.

Classes d’adresses

La communauté Internet a défini trois classes d’adresses appropriées à des réseaux de différentes tailles. Il y a, a priori, peu de réseaux de grande taille (classe A), il y a plus de réseaux de taille moyenne (classe B) et beaucoup de réseaux de petite taille (classe C). La taille du réseau est exprimée en nombre d’hôtes potentiellement connectés.

La premier octet d’une adresse IP permet de déterminer la classe de cette adresse. Les adresses disponibles (de 0.0.0.0 à 255.255.255.255) ont donc été découpées en plages réservées à plusieurs catégories de réseaux.

Pour éviter d’avoir recours aux organismes NIC à chaque connexion d’un nouveau poste, chaque société se voit attribuer une plage d’adresse pour son réseau. Le nombre d’adresses disponibles dans chaque plage dépend de la taille du réseau de la société. Les grands réseaux sont dits de classe A (IBM, Xerox , DEC, Hewlett-Packard), les réseaux de taille moyenne sont de classe B (Microsoft en fait partie !), et les autres sont de classe C.

ClasseDébut en binaireValeursIdentificateur de réseauIdentificateur d’hôtePartie réseau de l’IP
A0…1 à 127ab, c, d255.0.0.0
B10…128 à 191a, b c, d255.255.0.0
C110…192 à 223a, b, cd255.255.255.0
D1110…224 à 239multicasta, b, c, d
E1111…240 à 255réservéesexpérimental

Par exemple, l’adresse d’un poste appartenant à un réseau de classe A est donc de la forme : 0AAAAAAA.xxxxxxxx.xxxxxxxx.xxxxxxxx, avec A fixé par le NIC et x quelconque.

Exemple : IBM a obtenu l’adresse 9 (en fait, on devrait dire 9.X.X.X, mais il est plus rapide de n’utiliser que la valeur du premier octet). 9 est bien de classe A car 9d=00001001b. Cela signifie que chaque adresse IP du type 00001001.xxxxxxxx.xxxxxxxx.xxxxxxxx, avec x prenant la valeur 0 ou 1, fait partie du réseau d’IBM.

Malgré ces possibilités d’adressage, la capacité initialement prévue est insuffisante et sera mise à défaut d’ici quelques années. L’IPNG (Internet Protocol Next Generation) ou Ipv6 devrait permettre de résoudre ces difficultés en utilisant un adressage sur 16 octets noté en héxadécimal.

Identification du réseau

L’adresse IP se décompose, comme vu précédemment, en un numéro de réseau et un numéro de noeud au sein du réseau. Afin de s’adapter aux différents besoins des utilisateurs, la taille de ces 2 champs peut varier.

On définit ainsi les 5 classes d’adresses notées A à E :

Classes d'adresses

Exemple : Soit l’adresse IP suivante : 142.62.149.4. 142 en décimal = 10001110 en binaire. Le mot binaire commence par les bits 10 donc il s’agit d’une adresse de classe B. Ou, plus simple : 142 est compris entre 128 et 191. S’agissant d’une adresse de classe B, les deux premiers octets (a et b) identifient le réseau. Le numéro de réseau est donc : 142.62.0.0. Les deux derniers octets (c et d) identifient l’équipement hôte sur le réseau. Finalement, cette adresse désigne l’équipement numéro 149.4 sur le réseau 142.62.

Exercices

Exercice 1

Afin de disposer de sous réseaux, on utilise le masque 255.255.240.0 avec une adresse de réseau de classe B.
Combien d’hôtes pourra-t-il y avoir par sous réseau ?
=> L’écriture décimale 240 correspond à 1111.0000 en binaire. Il y a donc les 4 bits de droite qui font partie du numéro de l’hôte. Il y a donc les 8 bits du décimal 0 et les 4 du décimal 240. Ce qui fait donc 2^12 – 2 = 4094 hôtes possibles par sous réseau.
Quel est le nombre de sous réseaux disponibles ?
=> Classe B : /16 ici /20 : 4 bit donc 16 sous réseau

Exercice 2

Une entreprise veut utiliser l’adresse réseau 192.168.90.0 pour 4 sous réseaux. Le nombre maximum d’hôtes par sous réseau étant de 25, quel masque de sous réseau utiliseriez vous pour résoudre ce problème ?
=> C’est une classe C donc masque en /24, pour 4 sous réseaux il faut 2 bits donc masque en /26 ce qui laisse 6 bits pour les machines : 2^6 – 2 = 62 hôtes maximum par sous sous réseau. Remarque : une partie hôte de 5 bits suffit pour 25 machines. On pourrait faire 8 sous réseaux.

Exercice 3

Quelles sont les adresses IP couvertes par l’adresse CIDR 192.168.10.0 /20 ?
=> 192.168.0.1 à 192.168.15.254

x.x.x.x /20 signifie masque avec les 20 bits de gauche à 1 ainsi :
– masque standard de classe A : /8
– masque standard de classe B : /16
– masque standard de classe C : /24

Sources

C’est quoi une adresse MAC ?

Notion d’adresse physiques et de trames

Deux cartes réseaux qui communiquent s’échangent des messages (suite de bits) appelés trames (frame). Tous les postes connectés au même câble reçoivent le message, mais seul celui à qui il est destiné le lit.

Comment sait-il que cette trame lui est adressée ?

La machine reconnaît l’adresse de destination contenue dans la trame comme étant la sienne.

Comment sait il qui lui a envoyé la trame ?

La trame contient aussi l’adresse de l’émetteur. Au niveau de la couche liaison, les nœuds utilisent une adresse dite « physique » pour communiquer. L’adresse correspond à l’adresse de la carte réseau. On parle d’adresse physique, d’adresse MAC (Medium Access Control) ou d’adresse de couche 2 (référence au modèle OSI). Cette adresse est identique pour réseaux Ethernet, Token Ring et FDDI. Sa longueur est de 48 bits soit six octets (par exemple : 08-00-14-57-69-69) définie par le constructeur de la carte. Une adresse universelle sur 3 octets est attribuée par l’IEEE à chaque constructeur de matériel réseau. L’adresse MAC identifie de manière unique un noeud dans le monde. Elle est physiquement liée au matériel, c’est à dire à la carte réseau.

Sources

C’est quoi le modèle OSI ?

Le modèle OSI (de l’anglais Open Systems Interconnection) est une norme de communication, en réseau, de tous les systèmes informatiques. C’est un modèle de communications entre ordinateurs proposé par l’ISO (International Organization for Standardization en français Organisation Internationale de Normalisation) qui décrit les fonctionnalités nécessaires à la communication et l’organisation de ces fonctions.

La caractérisation données ici est tirée du chapitre 7 de ISO 7498-1. La description originelle donne en plus pour chaque couche les fonctions de manipulation de commandes ou de données significatives parmi celles décrites par la suite.

La couche physique

Elle est chargée de la transmission effective des signaux entre les interlocuteurs. Son service est limité à l’émission et à la réception d’un bit ou d’un train de bit continu (notamment pour les supports synchrones).

La couche liaison de données

Elle gère les communications entre deux machines adjacentes, directement reliées entre elles par un support physique.

La couche réseau

Elle gère les communications de proche en proche, généralement entre machines : routage et adressage des paquets.

La couche transport

Elle gère les communications de bout en bout entre processus (programmes en cours d’exécution).

La couche session

Elle gère la synchronisation des échanges et les transactions et permet l’ouverture et la fermeture de session.

La couche présentation

Elle est chargée du codage des données applicatives, précisément de la conversion entre données manipulées au niveau applicatif et chaîne d’octets effectivement transmises.

La couche application

C’est le point d’accès aux services réseaux, elle n’a pas de service propre spécifique et entrant dans la portée de la norme.

ICMPCouche réseau Paquet / Datagramme Détermine le parcours des données et l’adresse logique
Adresse IP Couche réseau Paquet / DatagrammeDétermine le parcours des données et l’adresse logique
ARP Couche réseau Paquet / Datagramme Détermine le parcours des données et l’adresse logique
Adresse MACCouche liaison Trame Adressage physique
10BaseTCouche physiqueBitTransmission des signaux sous forme binaire

Sources

  • Wikipédia

C’est quoi Spring Boot ?

Présentation

Spring Boot est un framework développé par Pivotal en 2012 qui connaît depuis environ 4 ans, une explosion du nombre d’utilisateurs. C’est un point d’entrée unique vers tous les projets de la IO Foundation (batch, ligne de commande, web..) que vous pourrez donc utiliser dans votre application.

Grâce à une configuration par défaut, une application Spring Boot permet de développer plus rapidement en se focalisant essentiellement sur le code métier. On dira que Spring Boot a une « opinion ». Bien entendu, ces fonctionnalités par défaut peuvent être modifiées pour correspondre aux besoins. Cela implique de respecter les conventions et règles imposées par Spring afin d’éviter de perdre trop de temps sur de la configuration applicative. Cela nous permet notamment d’éviter d’écrire de multiples fichiers de configuration en XML.

Annotations

Spring Boot propose différentes annotations afin d’appliquer rapidement des rôles et des comportements à des classes de votre application. Voici les principales :

Nom de l’annotationDescription
@SpringBootApplicationPrincipale annotation de l’application de démarrage de Spring Boot. Utilisé une seule fois dans l’application pour déclencher automatiquement l’ensemble des configurations de votre application lors de son exécution.
@AutowiredInjecte des @Component dans votre classe pour que vous puissiez les utiliser.
@ComponentAnnotation générique pour des composants gérés par Spring (bean). Vous pouvez utiliser cette annotation pour des classes qui ne correspondent pas à une couche du modèle MVCS.
@ServiceUn @Component situé dans la couche service de l’application. Par exemple, une classe qui réalise des traitements métiers sur des données.
@RepositoryUn @Component situé dans la couche persistence de l’application. Par exemple, une classe qui manipule des données d’une base MongoDB.
@Controller Un @Component situé dans la couche présentation de l’application. Par exemple, une classe exposant une API REST.
@RequestMapping L’URI de base d’accès à votre API REST. Exemple : @RequestMapping(« /api »)
@RestControllerUne annotation de commodité qui est elle-même annotée avec @Controller et @ResponseBody. Permet d’exposer une API REST.

Starter

Toujours dans un objectif de simplicité, un large choix de dépendances Maven préconçus (starters) sont proposées par Spring et permettent d’ajouter des fonctionnalités à votre application. Un starter est en réalité un pom.xml ou un gradle build file qui définis et gère un ensemble de dépendances avec leurs versions compatibles. Par exemple, le starter « data-jpa » inclus les dépendances « spring-data-jpa », « JSR-303 » et « hibernate ». Notez qu’il est possible de développer son propre starter. Voice la liste des principaux starters disponibles :

Nom du starterDescription
Starter Core Starter d’initialisation incluant l’auto-configuration et le logging de l’application.
Starter Web Pour faire une application Spring MVC Web
Starter Test Pour tester votre application avec JUnit, Hamcrest ou Mockito
Starter Data JPA Pour faire du Spring Data avec JPA
Starter Data REST Pour exposer des services REST
Starter Security Pour sécuriser son application Spring Boot
Starter Actuator Pour monitorer votre application via des endpoints REST disponibles ici.

La liste des starters est disponible ici

Déploiement

Le déploiement de votre projet est facilité notamment par l’intégration d’un serveur embarqué directement dans votre projet Spring Boot. Au lancement de votre projet, Spring Boot lance un exécutable contenant le serveur embarqué qui va à son tour lancer votre projet.

Comment créer un projet Spring Boot ?

Voici une brève présentation de Spring Boot avec une explication des concepts fondamentaux et un exemple concret d’application pour bien débuter sur Spring Boot. Cet article s’appuie en grande partie sur la présentation Devoxx 2015 réalisée par Stéphane Nicoll et Brian Clozel, tous deux membres de l’équipe Spring Framework de Pivotal. Cette vidéo de présentation est disponible ici. Bonne lecture.

Prérequis

Création d’un projet

Pour créer un nouveau projet Spring Boot :

  • Vous pouvez générer un projet Spring Boot facilement et rapidement à l’aide d’un formulaire via une interface web ergonomique sur http://start.spring.io.
  • Vous pouvez également vous rendre sur Eclipse STS, faire un « New », « Spring Starter Project ».

Dans les 2 cas, vous devrez configurez les informations de l’artifact, donnez un nom à votre projet et choisir les starters correspondant aux fonctionnalités que vous voulez mettre en place dans votre projet. Les autres paramètres peuvent être laissez par défaut.

Architecture d’un projet

- /src
  - /main
    - /java : contenant tous les fichiers java de votre projet
    - /ressources
      - /static : contenant les fichiers web statiques (css, js...)
      - /templates : contenant les vues (html, php, jsp...)
      - application.properties : fichier de configuration de votre application 
  - /test
    - /java : contenant vos classes de tests (unitaire, intégration...)
- /target : contenant les différents fichiers générés après un build maven 
- pom.xml : fichier de configuration Maven de votre projet 

Lancement d’un projet

Pour tester votre application, il suffit de lancer un simple « Run as Java Application » sur le fichier contenant la méthode main de votre projet.

Exemple d’application Spring Boot

L’application que nous allons développer présentera les caractéristiques suivantes :

  • ce sera une application web
  • elle exposera une API REST
  • elle stockera les données dans une base de données H2
  • elle persistera les données stockées
  • elle proposera un accès sécurisé aux opérations REST
  • elle sera testée avec des tests d’intégration
  • elle proposera des fonctionnalités d’administration
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.test.devoxx</groupId>
    <artifactId>devoxx</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <start-class>demo.DemoApplication</start-class>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <!-- pour faire une application web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- pour faire des tests d'intégration -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- pour faire de la persistance de données -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <!-- une base de données H2 pour le stockage des données -->
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!-- pour exposer une API REST -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-rest</artifactId>
        </dependency>
        <!-- pour sécuriser l'accès à l'application -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <!-- pour accéder aux features administratives de l'application -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

Sources

Comment créer un repository Git ?

Par ligne de commande :

  • Supposons que vous avez déjà créé votre projet à l’aide de votre IDE favoris et que ce projet se trouve dans C:\git
  • Ouvrez GIT Bash
  • Déplacez vous dans le répertoire de votre projet C:\git\NomProjet à l’aide des commandes cd / ls
  • Entrez la commande « git init » pour initialiser un repository Git vide. Cela aura pour conséquence de créer un dossier cacher .git
  • Vérifiez l’état de votre repository avec la commande « git status ». Cela vous indiquera la branche courante, les commits en cours… A ce stade, votre repository Git est créé mais aucun fichier n’est traqués (configuration par défaut)
  • Dans le cadre de ce tutoriel, nous allons demander à Git de traquer tous les fichiers de notre projet mais cela peut s’adapter en fonction de votre besoin. Pour traquer tous les fichiers, exécutez la commande « git add . »
  • Réalisez votre premier commit avec la commande suivante : git commit -m « Initial commit »
  • Si vous souhaitez pousser votre projet local en remote, il vous faudra utiliser la commande suivant : « git remote add NomBrancheDistante URLDépotGITDistant »