AVANTAGES DE LA PROGRAMMATION SUR MESURE
En informatique il n'y a pas de recette magique, l'efficacité d'un système ne dépend que très peu de la qualité des équipements, mais plutôt de la qualité des logiciels que l'on utilise. Et il est toujours préférable d'avoir le moins de logiciels possibles pour éviter le dédoublement d'informations.
La conception dans un logiciel fait sur mesure se fait toujours par étapes, il n'y a jamais de grosse facture, une petite à tous les 1, 2 ou 3 mois, et au fil du temps on parvient à avoir un logiciel qui répond PARFAITEMENT à nos besoins et rien d'autres que ça... Les logiciels qui visent un segment de marché, que vous puissiez vous procurer pour quelques milliers ou centaines de dollars, font toujours plusieurs choses dont vous n'aurez pas besoin, et il y a toujours quelques petites choses dont vous avez un besoin important, et qu'ils ne font pas, alors la compagnie qui le vend vous offrira de modifier le programme à l'heure et avec un langage de programmation comme Clipper, qui prend 5 fois plus de temps pour accomplir le résultat...
Même si les conditions peuvent sembler dispendieuses, il faut cependant considérer que le langage que j'utilise (coût 4,500$ US, comparativement à Visual Basic, Clipper, Access ou autres quelques centaines de dollars) me permet de développer en 1 journée ce qui prendrait normalement 1 semaine et plus avec ces autres langages.
De plus un investissement en informatique se calcule plus par le travail accompli et la facilité d'utilisation d'un programme. Un programme qui ne sauve pas de temps comparativement à le faire à la main, même s'il ne coûte que 39$, n'est définitivement pas une économie. Par contre un système qui permet de faire en 5 minutes ce qui prenait 1 journée avant, même s'il coûte 999$ s'amortira rapidement avec le temps. Sinon comment expliquer que des gestionnaires de multinationale et de PME acceptent d'investir des dizaines de milliers de dollars en informatique, je ne parle pas ici de l'équipement car il ne faut jamais oublier que même le meilleur matériel, sans les logiciels adéquats, ne fera jamais le travail...
A titre d'exemple, voici 2 cas similaires en apparences. Deux associations qui gèrent des membres, des cotisations annuelles et des événements annuels tels que (congrès, tournoi de golf). Ces 2 entreprises ont des investissements informatiques, en dollars, très similaires.
635 membres, 7 à 10 employés, location d'équipement additionnel pour les inscriptions congrès coût annuel 6000$.
Équipement régulier, 5 ordinateurs, réseaux Novell, WordPerfect, Bedford, Dbase. WordPerfect pour faire les lettres et étiquettes, Bedford pour faire la comptabilité et la facturation des cotisations annuelles des membres (1 membre à la fois), Programme Dbase pour gérer les inscriptions au tournoi de golf.
Dédoublement d'information, Liste des clients dans Dbase, dans Bedford et dans WordPerfect pour les étiquettes. Trois listes de clients à mettre à jour.
Lors de ma visite pour offrir mon programme, la personne responsable a sauté son heure de dîner et est allée chercher dans la cafétéria (vers 12.30h) la personne qui faisait la facturation des cotisations annuelle, au moment où je démontrais la routine de facturation automatique des cotisations annuelles (Environ 5 minutes pour créer 635 factures, il restait seulement qu'à les imprimer). Je suis sorti de cette entreprise à 13.30h et j'étais entré à 11.00h, ce qui démontre clairement l'intérêt porté à mon programme.
350 membres, 2 employés réguliers et 1 temps partiel. Aucune location d'équipement.
Équipement régulier, 2 ordinateurs, réseaux Lantastic, Winword 2.0 pour faire les lettres et étiquettes, et mon programme pour gérer les inscriptions congrès, golf et partie d'huître annuelle (avec facturation automatique), facturation des cotisations automatiques (2 touches environ 1 à 11/2h pour la création et l'impression de 350 factures, tâches qui prenait avant, plusieurs jours. La réceptionniste m'a mentionné 3 semaines à temps perdu.). Impression des insignes de convention pour le congrès directement liés à l'inscription (Coût avant 450$/an). Coût pour l'autre association 6000$ en location d'équipement pour l'impression de ces étiquettes et la facturation pour ce congrès. Gestion des publipostages et étiquettes avec 2 touches seulement. Impression de la liste de membres pour le livre de l'année (Coût avant 1000$/an). Impressions d'une multitude de rapports tels que, Liste des Foursomes pour le tournoi de golf (par parcours, 5 possibles), Listes des gens inscrits au congrès, Listes des commanditaires pour le golf et une autre pour le congrès, pour les recontacter pour l'année en cours. Etc. Etc. Etc.
Ceci ne constitue qu'une partie de tout ce que fait le système et, pour ne pas vous ennuyer, j'arrête ici de vous donner les fonctions du programme. Considérez cependant que ce logiciel est le seul qu'il utilise et que tout ce qui était fait manuellement est maintenant traité par ce système, incluant comptabilité, dépenses, facturations, etc.. Bien sûr ce système leur a coûté environ 30,000$, réparti sur 4 1/2 ans et est maintenant complètement terminé, je prévoie l'offrir à toutes les associations cet automne. Bien sûr ils pourront me demander un nouveau rapport mais ceci ne coûtera que quelques heures additionnelles.
D'après vous laquelle de ces 2 associations a le mieux investi en informatique... La première qui a plutôt investi en équipement ou la deuxième qui a plutôt investi dans un logiciel...
Une base de données relationnelles, est aujourd'hui la méthode la plus performante et efficace pour gérer les différentes données nécessaires à un système de gestion. L'information n'est pas entreposée dans un seul fichier, mais est plutôt répartie à l'intérieur de plusieurs fichiers différents. Je m'explique, prenons par exemple un système de facturation, dans un système conventionnel on inscrirait dans le fichier facture, le nom du client, la date, l'adresse, ainsi que les numéros d'items commandés, la description, le prix etc. etc., et ceci pour chaque item sur la facture.
Dans un système relationnel, nous aurions plutôt 2 fichiers qui se serviraient de l'information contenue dans 2 autres pour faire la facture. Dans le fichier facture, j'inscris le numéro de client qui pointe au fichier client et qui va chercher le nom, l'adresse, l'escompte etc. du client, mais dans ma facture je n'ai inscrit qu'un tout petit numéro de client. J'ajoute ensuite les items sur la facture qui eux se servent du numéro de produit pour aller chercher la description, le prix, le statut de l'inventaire etc. dans le fichier des produits, alors je n'ai toujours que le numéro de produit, le numéro de facture (pour lier les items à la facture correspondante), dans chaque ligne d'items.
Les liens entre les différents fichiers, servent à empêcher le dédoublement d'informations, ex : Dans le fichier items sur facture aucune descriptions de produits ne sont inscrites, il n'y a que le numéro de produit qui sert à aller chercher la description de ce produit, lorsque l'affichage ou l'impression de cette description est nécessaire. Ainsi nous atteingnons une économie importante d'espace sur disque dur, ainsi qu'une performance améliorée surtout dans un environnement réseau, car au lieu de brasser un fichier d'items monstrueusement gros parce que toutes les descriptions des produits sont à l'intérieur, nous brasserons un fichier d'items relativement petit et nous irons chercher la description directement dans le fichier produits.
De plus ces liens vous permettront d'ajouter un produit à une facture, et le prix, la description, etc. s'inscriront automatiquement, bien sûr vous pourrez modifier ces options une fois l'inscription terminée pour répondre aux besoins spécifiques de ce client, car vous modifierez alors le fichier d'items, qui est mis à jour avec les valeurs de base contenues dans le fichier produit, et entrer une seule et unique fois lors de la création de ce produit.
Ceci consiste à en deux choses, la protection de l'intégrité des données et la protection contre les transactions non terminées, donc incomplètes. Prenons notre exemple de facturation, il est possible qu'un employé un jour décide de faire le ménage dans le fichier clients. Il est alors très important de ne pas permettre d'effacer un client qui a des factures en suspend. Ou qu'un client qui a plusieurs factures existantes ne puisse être enlevé car nous aurions des factures dites orphelines (sans client), alors 2 possibilités s'offrent à nous ou bien nous empêchons l'effacement du client, ou nous effaçons le client et toutes les factures qui s'y rattachent (Après avoir vérifié au préalable si la balance du compte est à zéro). Complexe n'est ce pas, imaginez programmer ceci étapes par étapes, fastidieux et aussi très dispendieux. Le langage que j'utilise me permet cependant de contrôler tous ces aspects avec quelques minutes de programmation (un charme, quelques petits boutons à activer et le tour est joué).
Une transaction se compose de toutes les inscriptions, dans tous les fichiers nécessaires à cette transaction. Dans le cas de la facture précédente, création de l'en-tête de facture (Date, client, adresse de livraison etc.), ajout de tous les items sur cette facture (numéro de produit, quantité etc.). La transaction est complète que si l'usager la termine de façon normale en appuyant sur le bouton terminé.
Les transactions non terminées sont une chose importante, car on ne veut surtout pas avoir une facture dont le client aurait été choisi, la date remplie, mais aucun item sur la facture. Ceci peut arriver parce qu'un usager est sorti de la facturation avant d'avoir complété la commande, ou qu'il se produise une panne, (panne d'électricité etc.) . Et surtout si cela se produit nous voulons défaire ce qui a été inscrit partiellement, pour que le système revienne au statut initial (avant la création de la transaction non terminée). Complexe n'est ce pas, imaginez programmer ceci étapes par étapes, fastidieux et aussi très dispendieux. Le langage que j'utilise me permet cependant de contrôler tous ces aspects avec quelques minutes de programmation (un charme, quelques petits boutons à activer et le tour est joué).
Voici une autre facette très dangereuse dans l'emploi de base de données. Supposons qu'un usager soit en train de modifier l'adresse d'un client, et qu'un autre usager soit en train de consulter ce même client et de modifier les commentaires sur ce client. Lorsque le premier sauvera sa correction d'adresse, elle s'inscrira sur le disque. Par contre lorsque le deuxième sauvera ces commentaires, vu qu'il avait la vieille adresse lorsqu'il a chargé le client, qu'adviendra-t-il, la vieille adresse écrasera la nouvelle et nous ne voulons certainement pas cela, n'est ce pas. Encore une protection très complexe à mettre en place avec des langages conventionnels. Mais avec le mien un seul petit bouton à sélectionner et le tour est joué. Voilà pourquoi il coûte plusieurs milliers de dollars US.
Vous me direz que le nouveau Access permet tout cela et c'est vrai, cependant pour pouvoir rouler un système de 10,000 entrées, vous aurez besoin de beaucoup beaucoup de patience et ce même avec les Pentium les plus performants, alors qu'un système créé avec mon langage roulera de façon similaire en performance, SUR UN 286 au moins 25 fois moins performant.
Cet exposé était bien très abrégé et simplifié le plus possible, n'hésitez pas
à me contacter pour de plus amples informations.
Serge Chalifour
Serge Chalifour Consultants Inc.
(514) 923-1218
Votre première 1/2 heure de consultation GRATUITE.