Expériences sur la mise en place d'une application de suivi de clientèle dans une chaîne de magasins d'optique.

ArticleCategory

Applications

AuthorImage

L'auteur transformé depuis sa rencontre avec Linux

TranslationInfo

Original in es Juan Pablo Rosas Duran

es to fr Georges Tarbouriech

AboutTheAuthor

Il est actuellement Responsable des systèmes dans la société Óptica LUX à Mexico. Il est tombé dans l'informatique dès l'âge de 3 ans, quand il farfouillait dans les cartes perforées du bureau de son père et utilisait les manuels d'un Gamma10 comme cahier à dessin. Sa vie professionnelle a été transformée le jour où il a découvert Linux, et depuis, il essaie d'appliquer la philosophie de l'Open source (avec un certain succés) à tous les problèmes liés aux ordinateurs.
Il est en train de promouvoir la formation d'un groupe pour le développement d'applications professionnelles sous licence GPL: http://www.pochtecah.org.mx .
Il remercie chaleureusement LF de lui avoir donné l'opportunité de partager ses expériences concernant Linux et les logiciels Open source.

Abstract

Dans cet article, vous découvrirez l'histoire d'une entreprise de taille moyenne spécialisée dans la commercialisation et la fabrication de lunettes qui a utilisé Linux et le logiciel libre pour mieux servir ses clients.

ArticleIllustration

Tux avec des lunettes

ArticleBody

Au sujet d'Óptica LUX.

Óptica LUX est une entreprise spécialisée dans la fabrication et la commercialisation de lunettes de soleil et de lunettes de vue. En mars 2000, elle fêtera ses 58 ans de présence sur le marché, et sur les derniers huit ans, elle a multiplié le nombre de ses succursales jusqu'à atteindre 40.

Depuis sa création Óptica LUX a développé une philosophie de travail basée sur la pleine satisfaction des clients, ce qui exige un maximum de connaissances sur les goûts et les besoins optiques de chacun d'entre eux.

On estime que fin 1999 il fallait gérer plusieurs centaines de clients, leurs données générales et optométriques étant conservées sur des fiches cartonnées (Avec les limitations dues au traitement manuel).

Le problème était de trouver une solution viable qui permettrait d'automatiser le suivi des clients sans diminuer la souplesse ou la qualité de service, mais plutôt le contraire, et qui donnerait plus de valeur ajoutée à chaque paire de lunettes fournie.


Activités d'un opticien.

Pour commencer, rappelons brièvement le principe général de suivi de clientèle à Óptica LUX, afin de comprendre la portée de l'application qui sera décrite plus loin. Quand un client arrive dans l'un des magasins d'Óptica LUX, il est pris en charge selon les étapes suivantes:

  1. Les données générales du client sont enregistrées, en particulier, ses noms, adresse et courrier électronique.

  2. Le client est dirigé vers un cabinet dans lequel seront effectués différents types de mesures et d'examens parmi lesquels on trouve la contactologie, la réfraction, la kératométrie, la mesure de l'acuité visuelle, etc.

  3. En relation avec les test effectués le client est conseillé sur les technologies optiques qui peuvent améliorer son problème de vision.

  4. Le client choisit aussi bien le type de verre que le modèle de monture qui lui conviennent le mieux.

  5. Le client paye une avance ou la totalité de la commande, qui est envoyée à l'usine pour fabrication et remise rapides.

De l'étude du processus du suivi de clientèle, certaines considérations sont apparues, qui sont cruciales pour la mise en oeuvre d'une application capable de le gérer, à savoir:

De tout ce qui précède, nous pouvons voir que l'application de suivi de clientèle est assez spécialisée et innovatrice.


Recherches infructueuses.

Depuis 1990, de nombreux systèmes propriétaires spécialisés dans les points de vente d'optique ont été étudiés, mais aucun ne correspondait complètement au suivi de clientèle et à la fabrication de lunettes d'Óptica LUX. Les adopter aurait impliqué un changement d'organisation ou un coût doublé du logiciel pour sa mise en adéquation et ses modifications, sans parler du coût implicite de la dépendance envers une société de développement logiciel.

En 1995, on a considéré la possibilité de développer en local le logiciel en fonction des besoins de Óptica LUX. Pourtant, en estimant les coûts de la plate-forme et des outils utilisés à l'époque (SCO Unix et Informix), on s'est rendu-compte qu'il fallait investir un montant équivalent à l'ouverture d'un nouveau magasin!!!, incluant installation, équipement de mesure optométrique et marchandise.

C'est alors qu'il a été décidé de chercher des solutions viables n'impliquant pas d'investissement de plusieurs millions en licences. Celles qui ont le plus retenu l'attention, se nommaient Coherent, Qnx et Linux.

Nous avons essayé de contacter coherent, mais ils ont cessé leurs activités à cette époque-là.

Qnx comptait sur un représentant au Mexique (dans la ville de Monterrey N.L.). Son travail s'est limité à nous envoyer des prospectus, et le temps de réponse et son intérêt pour nous laissaient à désirer.


Découverte de Linux.

Nous avons découvert Linux par l'intermédiaire d'un article intitulé "Linux, une proposition indécente", écrit par Fernando Magariños (plus connu dans les groupes de discussions comme la mythique ``Tache de la courge qui aboie''). Ndt: vous aurez compris qu'il s'agit d'un pseudo! Nous lui avons envoyé un courrier auquel il fut répondu par Miguel de Icaza lui-même (je doute qu'il s'en souvienne). Il nous a donné son point de vue, ce qui a encore renforcé l'intérêt envers Linux.

Dans un premier temps Linux a été perçu comme une plate-forme "gratuite". Toutefois les principes sur lesquels il se base ainsi que le dynamisme et l'esprit des communautés qui l'entourent ont été marquants et séduisants.

Le support électronique obtenu grâce aux listes de courrier est plus effectif que celui de la majorité de ses contreparties commerciales. Linux est une plate-forme stable en constante évolution et possède une grande quantité d'applications largement disponibles.

De plus, l'information sur Linux et le logiciel libre est plus accessible que celle de ses homologues propriétaires, rendant envisageable une auto-formation sur ces outils.

Actuellement Linux est utilisé à Óptica LUX, non seulement dans les succursales mais aussi dans les bureaux administratifs, surtout côté serveur, afin de partager sauvegardes et imprimantes, stocker des bases de données et exécuter des applications développées pour d'autres Unix.

Il est également utilisé comme base d'infrastructure de communications, en tant que serveur ppp, serveur web, courrier électronique et ftp (notre petit intranet) ainsi que pour le contrôle et la répartition du trafic du réseau.

Dernièrement, Linux est devenue une plate-forme bureautique pour les utilisateurs, mais c'est une autre histoire. :-)


Erreurs sur le choix de Linux.

Tout début est difficile, et le facteur critique d'Óptica LUX a été de convaincre les dirigeants, pas tellement sur les qualités techniques de la plate-forme, mais plutôt sur la prise de conscience du fait que le coût de développement de nouveaux systèmes, surtout très spécialisés, n'est ni bon marché ni rapide.

Sept entreprises ou groupes ont fait des devis de développement du système sous Linux, mais leurs propositions dépassaient le coût des solutions propriétaires déjà mentionnées.

Il a été envisagé de recruter des programmeurs pour un développement en local. Toutefois, le peu de personnes qui programment réellement sur cette plate-forme et qui sont disponibles demandent (à juste titre) des salaires beaucoup plus élevés que la moyenne du marché.

Aujourd'hui, on reconnaît que le développement basé sur l'open source pourrait être plus cher que celui qui dépend d'outils propriétaires, mais les résultats sont bien meilleurs. De toute manière, les économies réalisées sur les licences peuvent être utilisées pour le développement de ce type d'applications.


Développement de l'application.

A la mi 1999, un contrat a été passé avec un groupe de consultants pour développer l'application de suivi de clientèle sous Linux et avec des outils GNU.

Le développement a été abordé par une mise au point incrémentale de prototypes. D'abord, une analyse a été élaborée fournissant:

  1. L'architecture de la base de données.

  2. Les types d'utilisation de l'application.

  3. Les interfaces utilisateur.

Sur ces bases, un premier prototype a été réalisé, et évalué par des spécialistes en optométrie; il en est ressorti une demande plus précise sur les caractéristiques et le comportement du système, concrétisée par un nouveau prototype un peu plus perfectionné, entamant ainsi des cycles successifs d'amélioration.

La puissance des outils utilisés a permis d'accélérer le processus de programmation, en réutilisant et en perfectionnant les composants de l'application.

Les outils choisis peuvent être rangés en deux catégories: ceux employés pendant l'analyse, la création et la documentation, et ceux utilisés dans la construction de l'application.


Outils utilisés pour l'analyse, la création et la documentation.

Xfig  http://www.xfig.org:
Outil utilisé pour dessiner les diagrammes généraux.
Dia  http://www.lysator.liu.se/~alla/dia:
Outil utilisé pour dessiner les diagrammes en notation UML.
VisualTCL  http://www.neuron.com/stewart/vtcl:
Instrument employé pour élaborer les prototypes de l'interface utilisateur.
LYX  http://www.lyx.org:
Processeur de documents avec lequel les spécifications de l'application ont été écrites.
StarOffice  http://www.sun.com/staroffice:
Traitement de texte avec lequel a été écrit le manuel utilisateur.

Outils utilisés pour la construction.

PostgreSQL  http://www.postgresql.org:
Gestionnaire de bases de données choisi pour sa souplesse, sa puissance, et sa capacité à gérer de gros volumes de données.
Perl  http://www.perl.com:
Langage de base pour toute la programmation, sélectionné pour sa grande convivialité et sa puissance, en plus d'être considéré comme facile à maîtriser pour quelqu'un possédant une certaine expérience de la programmation.
Module Tk  http://www.cpan.org/modules/by_module/Tk/tk_modlist.html:
Fonctions de perl pour l'interface utilisateur. pTk est facile à programmer et offre une grande quantité de widgets.
Module DBI  http://www.fugue.com/dbi:
Fonctions de perl pour l'utilisation de bases de données SQL. De très haut niveau, elles ont permis d'économiser beaucoup de temps de programmation.
Module DBD::Pg  http://www.bawue.de/~mergl/mergl_DBD_Pg.html:
Gestionnaire DBI spécifique à postgreSQL.
Emacs  http://www.emacs.org:
Environnement intégré pour la programmation, le test et le débogage d'applications.
CVS  http://www.gnu.org/software/cvs/cvs.html:
Instrument utilisé pour la synchronisation du code des prototypes et sous-prototypes; une grande partie du travail de suivi de propositions et de révisions aurait été irréalisable sans un tel outil.

L'application proprement dite.

Il est difficile de décrire brièvement une application si spécialisée et si dense. Le schéma ou script pour la création de la base de données contient plus de 1000 lignes SQL et l'application plus de 15000 lignes Perl. Nous ne mentionnerons donc que les aspects les plus marquants.


L' interface utilisateur.

Le point le plus important de cette application est l'interface utilisateur. Pour faciliter le travail de l'utilisateur, le choix s'est porté sur une approche la plus horizontale et simple possible, dans laquelle l'expert en optométrie se sente à l'aise et puisse identifier les éléments d'information en fonction de ses connaissances en optique et non par rapport à son expérience en informatique.

Les éléments de l'interface utilisateur sont regroupés en onglets comme pour un cahier (voir figure suivante). Bien qu'elle soit développée dans un environnement graphique, l'application n'a pas besoin de la souris pour son fonctionnement. Par combinaisons de touches il est possible d'accèder à n'importe quel onglet ou bouton.

Les onglets qui constituent l'application sont les suivants:

Données générales
contient le nom du client, son adresse et son adresse électronique
Lunettes initiales
concerne l'information sur les lunettes que le client portait lorsqu'il s'est présenté au magasin pour la première fois
Antécédents
consigne des données sur les problèmes optiques, l'état de santé, les activités du client, et tout ce qu'il est nécessaire de connaître pour résoudre son problème de vision.
Examens
où sont enregistrés les résultats des corrections et des mesures optiques des clients.
Verres de contact
ceci constitue un module entier au sein de l'application, dans lequel une série de calculs est réalisée dans des sous-onglets afin de déterminer la meilleure lentille pour chaque personne.
Ordonnances
contient la spécification finale du verre, ou le bon de commande qui doit être envoyé à l'usine pour sa fabrication.
Historique
où sont consultés les examens et ventes antérieurs effectués pour le client
Ventes
connexion au module de ventes dans lequel est élaborée la facture et où s'effectue l'encaissement des avances et des soldes des commandes de chaque client.

Nous allons voir ensuite les aspects les plus importants relatifs à ces groupes d'information.


Données générales.

Ce qui ressort de cet onglet est la facilité avec laquelle on peut chercher et trouver des données. Par exemple, il est possible d'entrer une partie du nom de la ville, choisir un état dans la liste et l'application propose immédiatement une liste des codes postaux correspondants à ces deux conditions.

t_dat_grales.png

Au lieu de choisir une ville, nous aurions pu sélectionner une région/un département, ou les deux auquel cas le système aurait proposé une liste plus spécifique.

Dans la base de données, sont enregistrés tous les codes postaux, villes, régions, départements du pays dans une table de plus de 60000 lignes. Dans les recherches plus élaborées, l'application met moins de 3 secondes à établir et présenter une liste des codes postaux.

De telles facilités de recherche se retrouvent dans toute l'application. Si l'utilisateur veut trouver une personne prénommée "Juan" mais ne se rappelle pas si le nom est "Perez" ou "Penas", il écrira "Pe" dans le champ nom et "Juan" pour le prénom et pressera le bouton "Rechercher" (ou encore mieux le raccourci Ctrl-B). Le système lui fournira une liste contenant tous les clients de la base de données correspondants aux critères demandés.


Clients en cours.

Partout dans l'application, il est possible d'accèder à la combinaison de touches Ctrl-A qui ouvre une fenêtre informant sur les clients dont on s'occupe à ce moment précis, permettant de les identifier par leur nom et d'accèder immédiatement à leurs données.

t_clientes_proceso.png


Antécédents.

C'est l'un des onglets ayant causé le plus de travail aux programmeurs, parce qu'il impliquait des modifications du code source des widgets de PTk, en particulier le tableau des "Vérifications des moyens externes et transparents".

t_antecedentes.png

Dans ce tableau, l'utilisateur peur sélectionner toutes les corrections disponibles, et une autre liste apparaît sur le côté droit contenant les anomalies pouvant être rencontrées sur l'oeil gauche ou l'oeil droit, pour une correction donnée.

t_antece2.png

Quand l'optométriste active le ``check button'' une croix apparaît automatiquement à droite de l'étiquette de la correction sélectionnée précédemment. (Quelqu'un sait si une telle chose peut être programmée facilement, disons en VB?).


Examens.

Dans l'onglet Examens, une série de validations un peu complexes est réalisée. Quand l'optométriste note les indications affichées par chacun des instruments et prend la décision de la correction qu'il doit prescrire au client, le système valide les liens entre toutes les données et informe l'utilisateur sur les erreurs éventuelles.

t_examen.png


Verres de contact.

C'est le joyau de l'application! C'est la partie de code qui a valu le plus de discussions et d'efforts à l'équipe de développement. Quand une personne porte des lentilles, elle n'imagine pas la merveille technologique qu'elle a sur les yeux.

Les lentilles, c'est comme les chaussures. S'il n'y a pas deux paires de pieds semblables au monde, il n'y a pas non plus deux paires d'yeux possédant les mêmes anomalies visuelles.

L'application est prévue pour aider l'optométriste à déterminer le type de verres de contact le plus adapté à chaque client. Il est impossible que l'application détermine (ou "prescrive") une correction de manière automatique, puisque certaines considérations à prendre en compte ne sont pas "mesurables" (comme celles figurant dans l'onglet "Antécédents"). Toutefois, elle peut servir d'outil permettant d'évaluer l'impact des valeurs déterminées sur l'acuité visuelle de chaque oeil.

t_calculo1_lc.png

Ainsi, par exemple, pour certains types de lentilles nommés toriques, l'application met à disposition de l'optométriste un moyen de tester et de corriger la déviation de l'axe de la lentille (coin inférieur droit de la figure précédente). Comme nous l'avons dit, il n'y a pas deux yeux pareils au monde, et lorsqu'on y pose des lentilles ils souffrent de problèmes d'adaptation dus à la courbure de la cornée, ce qui affecte la correction finale pour l'oeil en question.


Duplication de la base de données via courrier électronique crypté.

L'application possède d'autres aspects dignes d'être mentionnés en raison de leur singularité; l'un d'entre eux est un mécanisme de duplication de base de données via l'Internet, dont le but est la transmission sécurisée des données de tous les magasins pour les regrouper dans une énorme base située sur les ordinateurs des bureaux administratifs.

Ce mécanisme est implémenté dans une série de modules qui peuvent être obtenus sur n'importe quel miroir de CPAN, au même titre que le code écrit pour le gestionnaire de la base de données PostgreSQL, comme on peut s'en rendre compte dans la figure suivante.

t_duplicacion.png

En fait cette implémentation possède tellement de détails intéressants, que nous espérons pouvoir les exposer dans un futur article sur LF, si bien sûr, les éditeurs nous en donnent l'opportunité.


Ordinateurs légers.

Le dernier aspect important qu'il faut mentionner est l'utilisation de clients légers. Comme mentionné au début de cet article, il fallait que les machines utilisées par l'application prennent le moins d'espace physique possible. Pour cette raison, nous avons entrepris une recherche sur la meilleure option entre de vieux 486, des clients fins et des network computers (NC).

Les alternatives retenues comme les plus viables ont été:

Ordinateurs ultra-slim
Dans lesquels une distribution Linux fut installée sur disquette (image minimale et compressée du noyau), avec une configuration réseau basique et un client vnc basé sur la svgalib. Ce disque de démarrage permet à des ordinateurs 486 d'être utilisés comme unités de déploiement graphique, sans disque dur et fonctionnant avec à peine 8Mo de RAM.
Network computers
Sans disque ni disquette, avec démarrage à distance via DHCP et basés sur des processeurs PowerPC. Bien que le modèle spécifique du processeur soit en cours de test sous Linux au moment de prendre la décision, il existe une image du noyau disponible par ftp (comme mentionné dans le HOWTO des NetStation).

Le facteur critique étant l'espace physique, le choix s'est porté sur les Network Computers avec des moniteurs SVGA de 9 pouces, puisque leurs dimensions (19.05 x 26.67 x 3.18 cm) permettent de les ranger dans un tiroir des meubles d'exposition.

L'expérience en relation aux clients légers est pleine de détails intéressants, c'est pourquoi nous proposons de la décrire dans un futur article sur LF, si les éditeurs acceptent, bien sûr.


Honneur à ceux qui le méritent.

Il reste à reconnaître le travail de tous ceux qui ont rendu possible, grâce à leur créativité et leurs efforts, le développement de l'application de suivi de clientèle entièrement sous Linux:

Citlali Calderón de Anda: citlali@galois.fciencias.unam.mx

Liliana Araceli Cabello: liliana@galois.fciencias.unam.mx

Juan José Alba

Edgar Raúl Acosta Villaseñor: edgar@galois.fciencias.unam.mx

Gunnar Wolf: gwolf@chmd.edu.mx

Roberto Andrade Fonseca: randrade@abl.com.mx

Des parties de code existent dont nous pensons qu'elles sont d'intérêt général pour la communauté, telles que les modifications des widgets de pTk, l'implémentation pour l'envoi de mails cryptés depuis perl, les programmes pour la synchronisation et la duplication des bases de données PostgreSQL, ainsi que les images de la disquette de démarrage pour déploiement graphique. Tout cela pourra se trouver à l'adresse suivante: http://www.pochtecah.org.mx/ABL_GNU.html . .