Bienvenue sur LaserSite

Ce site contient:                                                                                                                
- quelques poèmes ou madrigaux (catégorie 'Poèmes')                                                    
- une aventure de bio fiction, (catégorie 'Aventures d'Olibiobus')                                 
- ma réaction aux événements (catégories 'Chroniques' ou 'Consommation')                                           
- quelques idées métier (catégorie 'Informatique')                                                       
- des idées de réalisations par soi même (catégorie 'Bricolage'),
Je réponds à toutes questions, un peu comme un SVP en réduction,
n' hésitez pas à me solliciter. (catégorie 'Posez votre question')                                                 
Pour surfer intelligemment, choisissez une catégorie !                               
Et pensez à cliquer sur les différentes pages numérotées en haut et en bas pour voir toutes les pages de chaque catégorie.                                           
Le site comprend environ 200 pages de texte et quelques photos ou images.               
Bonne visite...
et commentez... si vous le voulez bien ;-)    

Informatique

Lundi 20 mars 2006
Applications informatiques

Il existe déjà un très grand nombre d'applications informatiques adaptées aux divers domaines d'activité des hommes. La plupart de ces applications sont rodées et rendent parfaitement service à leurs utilisateurs. Et pourtant, nombre de directions informatiques sont encore confrontées au choix d'un progiciel existant ou d'un logiciel sur mesure à développer. Compte tenu de la richesse des environnements proposés (et qui se valent tous !), la décision du directeur informatique est pour le moins délicate.
Il y a le choix 'politique': le directeur financier et/ou le PDG se sont laissés impressionnés par une belle démonstration et ne pensent plus que par le logiciel X; si le DI ne veut pas prendre de risques et s'attirer les faveurs de la direction générale, il n'a plus qu'à suivre.
Il y a le choix 'mouton de Panurge': le ténor dans le domaine concerné met à disposition le logiciel y; il y a tellement d'utilisateurs qui semblent satisfaits de celui-ci qu'on ne risque rien à faire ce choix. Si la mise en place réussit, chacun s'accordera à dire que le DI a fait le bon choix; si le démarrage patine ou bien s'il y a de graves difficultés de fonctionnement, le DI pourra arguer qu'il a fait le choix le plus sûr.
Il y a le choix 'véritable': une étude sérieure a été faite qui dégage 2 ou 3 logiciels adaptés aux besoins. A ce niveau on voit généralement apparaitre 3 grandes possibilités: la solution du développement nouveau ou de la refonte d'un logiciel existant, la solution de l'adaptation d'un ancien logiciel et la solution du progiciel tout fait qu'il 'suffit' de paramétrer.
Dans les 2 premiers cas, le DI peut espérer utiliser les compétences disponibles dans son équipe quitte à renforcer celles-ci si nécessaire; parfois il peut décider un renouveau de technologie de développement obligeant à former, à licencier et à embaucher (pour exemple schématique: passage de Cobol à Java); dans le dernier cas la formation, le licenciement et l'embauche de profils nouveaux seront obligatoires. Cette dernière possibilité est plus lourde et plus chère mais le DI n'est plus le seul responsable du projet: il partage cette responsabilité avec le fournisseur du progiciel. Ce choix est donc quelque peu confortable et politique. C'est d'ailleurs un choix fait très souvent par les entreprises importantes et riches (ou dispendieuses?).
Dans les 2 autres possibilités le DI prend un risque réel qui peut conduire à un échec et à son éjection. Mais quel est donc ce risque ?
Les risques d'échec dans la mise en place d'une application informatique nouvelle résident d'abord:
1) dans une incompréhension entre les concepteurs et les utilisateurs
2) dans une sous évaluation des couts et des charges de réalisation.
Or ces 2 points durs peuvent être considérablement amollis par l'utilisation de 'canevas' d'application du domaine concerné. Pour chacun des domaines d'application, comptabilité, gestion commerciale, gestion des stocks, etc ... on peut établir un modèle de données générique et un modèle des traitements générique. Ainsi, même si le concepteur est novice, il trouvera dans le canevas du domaine, les éléments indispensables à l'application envisagée. Il ne pourra pas oublier les points essentiels, il sera informé des difficultés techniques ou fonctionnelles essentielles et pourra envisager la démarche de développement sereinement.
En effet tout se passe alors comme si il avait un assistant performant à son service. Par ailleurs, ce canevas peut aider efficacement le concepteur à filtrer des désirs utilisateurs hors norme; à l'inverse le concepteur peut suggérer des fonctionnalités importantes aux utilisateurs.
Enfin le canevas d'application d'un domaine ou d'un sous domaine peut comporter des 'vues' adaptées à chacun des intervenants, utilisateurs, développeurs et exploitants de la future application.

Je pense que cette approche est de nature à rasséréner nombre de DI et à leur permettre d'effectuer de véritables choix dans de bien meilleures conditions.
Dans les pages à venir je montrerai quelques exemples simplifiés de cette démarche 'canevas'.


Par Christian de Lille
Ecrire un commentaire - Voir les 0 commentaires - Recommander
Mardi 28 mars 2006
Canevas simplifié de la prise de commande

Le modèle de données et/ou le diagramme de classes:
Une analyse rapide du domaine fait apparaitre les objets suivants:
Le CLIENT qui passe la commande, L'ARTICLE commandé, La COMMANDE, La LIGNE de commande.
Par ailleurs la commande est facturée par défaut au client qui passe la commande mais
peut, le cas échéant être facturée à un PAYEUR tiers.
De même la commande sera livrée à l'adresse du client par défaut mais peut, le cas échéant
être livrée à un DESTINATAIRE tiers.
Le client communique avec une PERSONNE d'un SITE pour effectuer sa prise de commande.

Une personne de la société cliente passe sa commande auprès d'une personne de la société
fournisseur, en vue de livraison suivie par une personne de la société destinatrice à l'adresse
de destination, sachant que la facture sera adressée à une personne de la société facturée.

On admet que toute commande est passée par un client et un seul.
La commande référence le client qui a passé la commande ainsi que le payeur de cette
commande et le destinaire de cette commande.
La commande est identifiée par un n° d'ordre unique (Attention: si sites de prise de commande
multiples et non interconnectés en temps réel, ce n° d'ordre se compose d'un identifiant du site
et d'un numéro unique au sein du site).

La commande indique la date (voire l'heure de prise de commande), le site de prise de commande, la personne qui a pris la commande, la date de livraison prévue (voire l'heure), le montant total hors taxes, la remise globale éventuelle, le montant total de la TVA, le montant TTC à payer.

Ensuite la commande détaille pour chaque ligne de commande:
La référence article, la désignation article, la quantité fournie, le prix unitaire HT, la remise
spécifique article s'il y a lieu, le taux de TVA applicable à cet article (par défaut taux de
TVA commun), le montant TVA ligne, le montant TTC ligne.

Quelques formules:
taux TVA est exprimé en %
prix ligne net = (prix unitaire HT * quantité fournie) - remise spécifique
montant TVA ligne = (prix ligne net) * taux TVA
montant TTC ligne = (prix ligne net) * (1 + taux TVA)

montant total HT = somme des prix ligne net
montant total HT net = montant total HT - remise globale
montant total net = montant total HT - remise globale
montant total TVA = somme des montants TVA ligne * montant total HT net / montant total HT
montant TTC à payer = montant total HT net + montant total TVA

Le client, le payeur et le destinataire sont considérées comme héritant d'une super classe appelée
TIERS. La personne d'un site qui prend la commande peut être vue comme une sous classe de TIERS au même titre que le client, le payeur ou le destinataire. Cette analyse des choses permet
à la personne de prendre des commandes à son compte si nécessaire et surtout d'éviter un doublon lorsque la personne devient client, etc ...
On distingue donc la SOCIETE ou site, le TIERS et l'ADRESSE
Une société peut avoir un à plusieurs tiers et un même tiers peut appartenir à plusieurs sociétés.
Une société peut avoir une à plusieurs adresses et une même adresse appartenir à plusieurs sociétés.
Un tiers peut avoir une à plusieurs adresses et une même adresse être commune à plusieurs tiers.
Un client particulier est assimilé à une société d'une personne ayant une ou plusieurs adresses.
Une société mère peut avoir de 0 à plusieurs filiales; une filiale a une maison mère et une seule.

Les attributs de SOCIETE sont:
identifiant unique, identifiant de maison mère, nom ou raison sociale, date création, date modification

Les attributs de TIERS sont:
identifiant unique, nom, prénom, date création, date modification, téléphone portable, email

Les attributs de ADRESSE sont:
identifiant unique, code postal, lieu postal, détail adresse, remarques d'accès, téléphone fixe,
adresse bancaire,

La relation n-n entre SOCIETE et TIERS a pour attributs:
identifiant unique, identifiant de société, identifiant de tiers, type interne ou client ou payeur ou destinataire.

La relation n-n entre TIERS et ADRESSE a pour attributs:
identifiant unique, identifiant du tiers, identifiant d'adresse, type interne ou client ou payeur ou destnataire

La relation n-n entre SOCIETE et ADRESSE a pour attributs:
identifiant unique, identifiant de la société, identifiant d'adresse, type interne ou client ou payeur ou destnataire

Les attributs de COMMANDE sont:
identifiant unique, numéro de commande, identifiant du client, identifiant du payeur, identifiant de la personne livrée, identifiant de l'adresse de livraison, identifiant du preneur de commande, date de la commande, date de livraison prévue, remise globale donnée

Les attributs de ARTICLE sont:
identifiant unique, référence article, désignation article, prix unitaire, code TVA (détermine le taux applicable à cet article), conditions remise ou promotion, qté minimum livrable, qté en stock (disponible), qté maximum livrable à un seul client

Les attributs de LIGNE de commande sont:
identifiant unique, n° d'ordre ligne, identifiant commande, identifiant article, qté commandée, prix unitaire (reporté en LIGNE pour éviter qu'un changement de prix dans ARTICLE aie une incidence
sur une commande déjà enregistrée), remise ligne accordée, taux de tva applicable (reporté en
LIGNE sous forme taux pour éviter qu'une modification de la correspondance code tva, taux tva
n'ai une incidence sur une commande déjà enregistrée)

Il y a une relation 1-n entre COMMANDE et LIGNE (clé étrangère = identification commande)
et entre ARTICLE et LIGNE (clé étrangère = identification article),
et entre TIERS(de type client) et COMMANDE (clé étrangère = identification client).

Voir le dessin du modèle de données ou le dessin du diagramme de classes correspondant.

Le modèle des traitements et/ou le diagramme de composants:

Les traitements à effectuer sont:
La saisie et mise à jour des code tva et taux associés (non étudié dans ce canevas)
La saisie et mise à jour des entités/classes SOCIETE, TIERS, ADRESSE ainsi que les entités de
relation ou les associations associées.
La saisie et mise à jour de l'entité/classe ARTICLE
La saisie et mise à jour des conditions de remise ou promotion (laissé de coté dans ce canevas)
La prise de commande initiale
    La vérification des disponibilités et l'ajustement avec le client si possible
    Le calcul de la date de livraison
La modification d'une commande déjà enregistrée
L'annulation d'une commande
La diffusion de la commande (vers le client et en interne pout traitement)

On étudie d'abord la prise de commande initiale qui est au coeur du sujet.
Scénario: un client est mis en relation avec une personne qui effectue la prise de commande appelée ici le preneur.
Le preneur s'est connecté au système depuis longtemps; son identification et son appartenance à
un site de la société fournisseur est connue.
Le preneur obtient du client son nom
Il consulte la liste des clients
    -Il n'en trouve aucun (après dialogue et affinage de l'orthographe du nom); c'est donc un
    nouveau client. Il faut alors saisir les données Société cliente, Tiers client, Adresse client, Société payeur, Tiers payeur, Adresse payeur, Société destinataire, Tiers destinataire, Adresse destinataire (par défaut client=payeur=destinataire). Et enregistrer ce nouveau client.
    -Il en trouve plusieurs. Il faut alors identifier le bon en fonctions des infos en liste et des infos fournies par le client.
    -Il en trouve un seul
Le preneur communique les infos sélectionnées et demande confirmation au client.
Le preneur prend en compte chaque article commandé par le client:
Il vérifie son existence en liste des articles
    -Il ne trouve pas (après affinage et dialogue avec le client). Article inexistant. Rien à faire. Le client poursuit ou bien abandonne la commande ici.
    -Il trouve. Il vérifie alors sa disponibilité, son prix, les remises ou promotions possibles, la tva applicable et communique toutes infos au client pour lui demander confirmation, en particulier au cas de qté partiellement disponible. Il peut alors rechercher un article semblable, etc ... Le client poursuit ou bien abandonne la commande ici.

Si le client n'a pas abandonné et qu'il y a au moins une ligne article commandée, la commande est
enregistrée ce qui implique le calcul de toutes les données des entités COMMANDE et ARTICLE, et la détermination d'une date de livraison, la rectif éventuelle de l'adresse de livraison, en accord
avec le client puis la diffusion de la commande validée en interne et la diffusion pour compte rendu vers le client via courrier ou email.


Par Christian de Lille
Ecrire un commentaire - Voir les 0 commentaires - Recommander
Dimanche 26 novembre 2006
L'ordinateur personnel a beaucoup évolué. Il est devenu réellement portable, ses fonctionalités sont nombreuses et souvent merveilleuses, de plus il est très agréable à regarder. Il est devenu un objet esthétique, presqu'artistique par certains cotés.
Techniquement cet objet est l'aboutissement de prouesses de fabrication; pensez à la technologie qui permet d'écrire et de lire des informations en très grande quantité et rapidement sur un disque magnétique, sur un DVD, sur le réseau; pensez aussi à la qualité des images affichées sur l'écran de votre ordinateur.
J'oserais dire que cet objet est parfait si je ne savais pas qu'il sera encore perfectionné demain ! J'oserais dire que cet objet est un outil merveilleux si je ne savais pas qu'il peut être un moyen trop puissant d'asservissement de l'homme par l'homme; J'oserais dire qu'il est un moyen de communication formidable (à travers le réseau Internet) si je ne savais pas que la communication virtuelle nuit parfois gravement à la communication physique entre personnes.
N'empêche que j'apprécie hautement ce produit que j'ai utilisé depuis plus de 30 années.

Juste un petit regret, la complexité croissante du matériel et du logiciel embarqué dans un ordinateur personnel.
Aussi je voudrais vous dire que je rêve d'un ordinateur simple. Qu'est-ce à dire ? Je pense que la commande des périphériques disque, et écran de l'ordinateur sont sans doute les plus complexes, surtout du point de vue du système d'exploitation. Windows X, Linux Y, Mac OS Z, ... sont des systèmes d'exploitations relativement complexes parce qu'ils doivent gérer intelligemment un disque magnétique qui est la mémoire non volatile des données. Or ce périphérique comporte une mécanique qui l'entraine à plusieurs milliers de tours par minute, une structuration du disque en secteurs, pistes et cylindres, toutes sortes de choses qu'il faut piloter avec intelligence pour que tout semble aller de soi pour l'utilisateur lambda.

Pour moi un ordinateur simple ne devrait pas comporter de disque ! A la place une énorme mémoire centrale statique non volatile de préférence si cela reste techniquement et financièrement possible; A priori, ce type de mémoire existe déjà puisque l'on dispose aujourdhui de clés USB taillant plusieurs Giga octets de mémoire. Supposons que l'on parvienne dans un avenir proche à stocker des centaines de Giga octets sur clé USB. A quoi bon dans ce cas continuer à utiliser des disques magnétiques ! Et donc à quoi bon faire des systèmes d'exploitation gérant ce périphérique devenu obsolète ?
Du coup le système d'exploitation réside entièrement en mémoire et ne gère plus que de la mémoire adressable directement. Le chargement des programmes en mémoire volatile n'a plus beaucoup de sens, quoique ce type de mémoire étant beaucoup plus rapide que la mémoire USB, il y a lieu d'en douter. N'empêche ! Notre système d'exploitation gérera alors une simple hiérarchie de mémoires adressables et sera donc bien plus simple et bien plus rapide !

Je rêve depuis près de 15 ans de cet ordinateur simple. Croyez vous comme moi que ce rêve deviendra réalité dans moins de 5 années ?
Par Christian de Lille
Ecrire un commentaire - Voir les 1 commentaires - Recommander
Vendredi 20 avril 2007
J'en ai rêvé depuis 15 ans environ: L'ordinateur sans mécanique est né m'a t on dit:
Plus de disque dur qui tourne à plus de 5000 tours par minute et sur lequel flotte miraculeusement à quelques microns une tête de lecture magnétique, plus de disquettes ou même de LS120, la mémoire de masse devient statique !
Il fallait bien que ça arrive, car les mémoires USB ou encore celles des appareils photos numériques deviennent de plus en plus importantes.
Certes il y a encore des progrès à faire dans la rapidité d'accès à ces nouvelles mémoires de masse, mais quel progrès déjà !
En effet, le système d'exploitation, vous savez, ce programme qui donne sa vie à la machine inerte qu'est un ordinateur, eh bien, ce système sera considérablement simplifié car il ne devra plus gérer tous les incidents pouvant survenir à cause des disques. Plus de données inaccessibles, plus de programmes cassés par un incident sur un seul secteur disque.
Toutes les données et programmes sont rapidement et directement accessibles dans une immense mémoire à plat non volatile.
La seule difficulté, mais non la moindre, restera à organiser cette mémoire à plat pour y retrouver le plus efficacement possible les informations qui nous intéressent. A priori, les sauvegardes ne seront plus nécessaires dans la mesure ou le crash disque n'est plus à craindre.
Soyons sérieux, il faudra tout de même, pour des raisons de sécurité, ne pas laisser ses oeufs informatiques dans le même panier ! Sinon, en cas de perte de l'ordinateur pour toute raison, on perdra aussi de nombreuses données utiles.
Avec la technique du peer to peer ou avec les services rendus par certains fournisseurs d'accès, il sera possible, moyennant quelques précautions, comme le cryptage, de sauvegarder les données sensibles sur d'autres ordinateurs distants.
Les sauvegardes seront de préférence très régulières mais partielles (incrémentales par exemple) de façon à limiter le volume transféré.

Le clavier et la souris qui sont encore un peu mécaniques, pourraient être remplacés par l'interprétation par l'ordinateur même de nos gestes. On a vu émerger une console de jeux, la WII, si je ne me trompe basée sur ce principe. On peut tabler sans être un grand visionnaire que clavier et souris n'ont plus beaucoup d'avenir.
J'imagine volontiers un clavier dessiné avec aucune touche réellement enfonçable. Les mouvements de nos doigts sur ce dessin sont interprétés par la machine et le caractère approché voire touché, s'affiche alors sur l'écran. On peut même penser que le dessin du clavier disparaisse et qu'un dessin sur l'écran, de celui-ci suffise à nous guider dans l'apprentissage d'une nouvelle façon de saisir du texte.
N'oublions pas au passage la saisie dictée.
Quant à la souris, ce sont les mouvements dans l'espace de notre main qui détermineront l'équivalent des clics, des drag ... et autres clacs.
Le design de l'ordinateur, portable, bien sûr, sera alors du type tablette, légèrement inclinée tant pour notre vision que pour mieux apréhender les gestes que nous effecturons au dessus d'elle.

Même l'écran pourrait disparaitre puisque certaines expériences montrent qu'il est possible de visualiser directement dans nos yeux !
Aujourdhui, on voit (et on entend) des gens converser tout seuls semble-t-il, grâce à leur téléphone cellulaire. Demain, on verra des gens gesticuler, discourir, s'exclamer peut être, tout seuls, grâce à leur ordinateur portable WiFi !

Vous pensez que je suis un doux rêveur ? Comme vous voudrez !
Rendez vous dans dix ans, ok ?
Par Christian de Lille
Ecrire un commentaire - Voir les 0 commentaires - Recommander
Vendredi 9 mai 2008
Le Modèle qui convient à de très nombreux usages
Il y a quelques années j'ai été confronté au problème suivant: caractériser la plupart des outils de développement logiciels existants sur le marché, de façon à disposer d'une base de comparaison suffisamment solide. L'idée commerciale sous jacente étant évidemment de sortir les meilleurs arguments pour promouvoir tel outil.
Il m'est apparu que l'on peu caractériser un outil logiciel par les systèmes d'exploitation qui le supportent, par les systèmes de gestion de fichiers et les bases de données compatibles, par les interfaces graphiques ou caractère suppportés, par les langages utilisables, etc ...
On peut considérer chacun de ces points comme autant de caractéristiques élémentaires de l'outil de développement logiciel.
Si la liste de ces caractéristiques est finie et stable, mon problème est bien résolu. En effet cela revient à créer un modèle (version 1) de données ou sont définies les entités CARACTERISTIQUE1 à CARACTERISTIQUEn et l'entité OUTILOGICIEL.
Entre CARACTERISTIQUEn et OUTILOGICIEL, il ya une relation 1-n qui décrit le fait que l'OUTILOGICIEL a cette caractéristique.
Avec ce modèle, je peux spécifier une ou plusieurs caractéristiques et obtenir en retour le ou les outils logiciels qui ont ces caractéristiques. C'est simple... et ça marche !

Oui, mais la liste de ces caractéristiques est en constante évolution; toute apparition d'une nouvelle caractéristique entrainerait l'obligation de créer une nouvelle entité CARACTERISTIQUEi, c'est à dire de retoucher au modèle.
De plus il existe des interactions possibles entre ces caractéristiques qui ne sont plus si indépendantes les unes des autres; par exemple, on peut faire apparaitre sur certaines caractéristiques, une filiation. Par exemple, parmi la famille des systèmes d'exploitation on distingue toutes les versions de WINDOWS, toutes celles d'UNIX ou de LINUX, etc ... Il est important de pouvoir spécifier dans une recherche, le critère système de la famille LINUX et/ou implémentation UBUNTU de linux.
Notre modèle (version 1) a trop de défauts par rapport à la réalité; il faut le jeter et trouver mieux.


De façon générale, on peut dire qu'il existe une relation n-n entre l'OUTILOGICIEL et la CARACTERISTIQUE. En réalisation pratique sur une base de données, cela signifie que notre modèle (version 2) comprend les entités OUTILOGICIEL, CARACTERISTIQUE et LIEN. Il existe une relation 1-n entre OUTILOGICIEL et LIEN et une relation entre CARACTERISTIQUE et LIEN.
Mais la CARACTERISTIQUE est-elle si différente de l'OUTILOGICIEL ? Certes non; par exemple, toute base de données est un outil logiciel. Il faut encore faire un effort de généralisation pour aboutir au modèle (version 3).
Dans ce modèle on a une entité OBJET (un outil logiciel et/ou une caractéristique selon notre point de vue), et une entité LIEN. L'entité OBJET se compose de 2 sous types correspondant à notre point de vue, un sous type origine ou composant que l'on appellera ORIGINE et un sous type destination ou composé que l'on appellera DESTINATION. Il existe alors une relation 1-n entre
ORIGINE et LIEN et une relation 1-n entre DESTINATION et LIEN. En fait, ce modèle est très connu et utilisé pour gérer des nomenclatures.
Nous avons dit que la caractéristique, soit l'objet dans ce modèle (version3), peut avoir une filiation. Exemple: le système UBUNTU est un système de la famille LINUX. Et la famille de systèmes LINUX est un membre de la super famille et/ou du critère SYSTEME_EXPLOITATION. Pour modéliser ce fait on peut dire que l'entité OBJET a un sous type PERE_OBJET et définir une relation 1-n entre ce PERE_OBJET et ses fils OBJET. On obtient ainsi le modèle (version 4).

On remarque facilement que l'entité LIEN définit des relations entre OBJETs. Il peut être utile de caractériser le type de relation correspondante. D'où la nécessité de prévoir une relation 1-n entre OBJET et LIEN qui a pour effet de caractériser les types de relations possibles entre les objets. On obtient alors le modèle final (version 5).

Ce modèle convient très bien pour représenter toutes les données du problème initial et leurs interactions possibles mais qui plus est, il permet de représenter un peu n'importe quoi !


Le symbole fléche représente les sous types;
Objet_Pere est un sous type de Objet
Origine et Destination sont des sous types de Objet.

Le point représente une relation 1-n;
R1: Un Objet a un père Objet_Pere et un seul. Un Objet_Pere a de 0 à n fils Objet.
Seul l'objet racine de tous les autres objets n'a pas de père.
R2 et R3: Définit la relation n-n existant entre 2 objets ou plus exactement entre un objet Origine et un objet Destination;
R2: Un Lien a un objet Origine et un seul. Un objet Origine a de 0 à n Lien, c'est à dire de 0 à n relations avec un objet Destination.
R3: Un Lien a un objet Destination et un seul. Un objet Destination a de 0 à n Lien, c'est à dire de 0 à n relations avec un objet Origine.
R4: Définit le type de la relation n-n entre objet Origine et objet Destination. Un Lien a un Objet type de lien et un seul. Un Objet type de lien a 0 à n Lien.

Nous verrons, la prochaine fois, que ce modèle convient parfaitement pour notre problème initial.
Ensuite, nous verrons en quoi ce modèle est quasi universel sur divers exemples.
Ensuite, nous détaillerons les méthodes de navigation dans ce modèle en vue de répondre à diverses questions, puis les méthodes d'enrichissement de données.
Nous analyserons encore, les techniques d'éclatement ou de regroupement utiles avec toutes leurs conséquenses.
Enfin, nous réaliserons une maquette opérationnelle sur ces bases.
Par Christian de Lille
Ecrire un commentaire - Voir les 0 commentaires - Recommander
Samedi 10 mai 2008
Assurons nous que notre modèle de données convient pour le problème initial posé, à savoir la comparaison de divers outils logiciels.
J'ai pratiqué pendant de longues années un outil puissant appelé Uniface.
Cet outil de développement supportait alors l'affichage en mode caractère, mais aussi en mode graphique sous Unix (OpenLook, Motif) sous Windows (l'interface graphique propriétaire), sous Mac (l'interface graphique propriétaire), sous VMS. Grâce à ce qu'on appelait des drivers homme machine, l'outil Uniface permettait à l'utilisateur (et au développeur) d(utiliser au mieux le clavier, la souris (à 1,2 ou 3 boutons) et l'écran. Par ailleurs l'outil Uniface permettait d'enregistrer et de lire les données sous dbase3, sur des fichiers séquentiels(guère pratique pour de gros volumes), sur les principales bases du marché (Oracle, Sybase, Informix, Rdb, ... Solid) et ceci dans diverses versions de ces bases de données. Uniface tournait sous la plupart des systèmes d'exploitation dans leurs multiples versions. Enfin, cet outil autorisait des architectures Client serveur élaborées, ou multiposte ou encore monoposte.
Les réseaux possibles étaient Novell, le réseau propriétaire de Digital, TCP/IP qui est le seul a avoir survécu.
Le langage utilisé par Uniface était essentiellement propriétaire et interprété ce qui explique son large portage.
Uniface a évolué et propose aujourd'hui encore des architectures de ce type plus les architectures avec serveur web. De plus Uniface s'est enrichi d'une large palette d'interfaces avec les langages ou interfaces langages du marché les plus répandus (C, VB, Cobol (mais oui!), Corba, SOAP, ...)

On voit donc apparaitre les familles: Système d'exploitation, Interface Homme machine, Système de stockage avec les sous familles Système de fichiers et Base de données, Architectures, Système réseau, Langages
dans la famille Système d'exploitation on trouvera les sous familles Unix, Windows, Mac, VMS; pour chaque sous famille, les différentes versions telles que Windows3, Windows95, 98, NT, XP, ... Facile d'en déduire la même construction pour chacune des familles répertoriées.
Bien remarquer que l'ensemble des familles et leurs descendants constituent un arbre.
Ces données seront évidemment enregistrées dans l'entité OBJET avec utilisation de son sous type OBJET_PERE.
Pour illustrer un peu mieux cet enregistrement, imaginons que l'entité OBJET possède 4 champs:
ID champ clé primaire (unique),
ID_PERE champ clé de l'objet père s'il existe,
LIB champ désignation,
PARAM champ liste de paramètres attachés à l'objet.
Soit le tableau/
ID    ID_PERE        LIB        PARAM            Commentaires
1            Racine                    Racine de tous les objets
11    1        Racine des objets
12    1        Racine des relations entre objets
15    12        Relation Outil -> Système d'exploitation   
16    12        Relation Système d'exploitation -> Outil
...
111    11        Système d'exploitation
112    11        Interface Homme machine
...
119    11        Outil logiciel
...
121    111        Système Unix/Linux
122    121        Aix
123    121        Ubuntu
...
131    111        Système Windows
132    131        Windows3
...

177    119        Uniface
178    177        Uniface 5
179    177        Uniface 6
180    177        Uniface 7
181    177        Uniface 8
182    177        Uniface 9
...

On voit bien qu'il est très facile d'enregistrer dans notre structure de données toutes les caractéristiques de tous les outils logiciels possibles ainsi que ces outils eux mêmes. Reste maintenant à dire quelles sont les caractéristiques effectivement supportées par tel ou tel outil logiciel.
Nous allons pour cela, nous servir de la partie du modèle analogue à une nomenclature.
Par exemple supposons qu'Uniface 5 ne supportait que les systèmes Aix et Windows3.
Supposons également que l'entité LIEN se compose des champs suivants
ID champ clé primaire (unique)
ID_ORIGINE champ contenant la clé de l'objet Origine
ID_DESTINATION champ contenant la clé de l'objet Destination
ID_RELATION champ contenant la clé d'un type de relation

Pour dire qu'Uniface 5 supporte les système Aix et Windows3 on a les lignes de tableau suivantes:
ID    ID_ORIGINE    ID_DESTINATION        ID_RELATION
123    178        122            15
124    178        132            15

A l'inverse pour dire que le système Aix sait faire tourner Uniface 5, 6, 7, 8 on a:
ID    ID_ORIGINE    ID_DESTINATION        ID_RELATION
234    122        178            16
235    122        179            16
237    122        180            16
321    122        181            16

Bien sûr on peut très facilement extrapoler ce court exemple sur toutes les autres caractéristiques.

Notre enregistrement des données permet il de faire des recherches en tous sens ? Oui, bien sûr, en voici la preuve.
Question: Quels sont les systèmes d'exploitations supportés par Uniface 5 ?
1. On recherche dans l'entité OBJET l'occurrence dont LIB=Uniface 5 
2. On récupère la clé de cet objet ID=178
3. On recherche dans l'entité LIEN les occurrences telles que ID_ORIGINE=178
4. On trouve les clés lien 123 et 124 et surtout les ID_DESTINATION 122 et 132
5. On recherche dans OBJET la clé 122 qui nous donne le LIB: Aix et la clé père ID_PERE = 121
6. On recherche dans OBJET la clé 132 qui nous donne le LIB: Windows3 et la clé père ID_PERE = 131

Il est aisé d'extrapoler à toutes sortes de questions. Remarquer néanmoins que le raisonnement ci-dessus est quelque peu simplifié car la désignation Uniface 5 pourrait correspondre à tout autre chose qu'un outil logiciel (tout comme Aix peut être le système Unix vendu par IBM ou bien la ville de provence).
En fait pour éviter toute ambiguïté et être sûr de faire la bonne recherche, on peut remonter la filiation des objets de clé 122 et 132 pour s'assurer qu'ils sont bien des descendants du type Sytème d'exploitation.
5.a On recherche un OBJET dont ID = 121 (Système Unix/Linux). On trouve que son ID_PERE est 111
5.b On recherche un OBJET dont ID = 111 (Système d'exploitation), ce qui correspond bien à la question posée.
6.a On recherche un OBJET dont ID = 131 (Système Windows). On trouve que son ID_PERE est 111. On sait grâce au point 5.b que ça correspond bien à la question posée.
Une autre piste plus intéressante est d'utiliser le type de relation: en effet au point 4. on trouve également que ID_RELATION vaut 15.
Un accès dans OBJET avec ID=15 donne LIB=Relation Système d'exploitation -> Outil , ce qui correspond bien à la question posée.

Notez aussi que quelques champs supplémentaires seraient bien utiles pour gérer la perennité des données; par exemple un champ date de début de création d'une version de système d'exploitation à ajouter dans l'entité OBJET. De même un champ date de début et date de fin de validité de la relation entre 2 objets pourrait être ajouté utilement à l'entité LIEN.

A travers cet exemple un peu hard, je reconnais, j'espère vous avoir convaincu que le modèle de données à 2 entités seulement (OBJET et LIEN)
convient parfaitement pour solutionner le problème initialement posé. Vous remarquerez qu'il est possible d'ajouter de nouvelles caractéristiques sans remettre en cause ce modèle.

Dans le prochain article, nous verrons que ce modèle a quelque chose d'universel !
Par Christian de Lille
Ecrire un commentaire - Voir les 0 commentaires - Recommander
Dimanche 11 mai 2008
Chose promise, chose due.
J'ai dit que le modèle de données à 2 entités est universel; je le prouverai sur quelques exemples.
Exemple 1. Je veux réaliser un agenda personnel sur mesure. Les caractéristiques élémentaires de cet agenda sont:
Nom,
Prénom,
N° de téléphone fixe domicile (plusieurs possibles)
N° de mobile (plusieurs possibles, mais est-ce utile)
Email (plusieurs possibles)
Ville domicile
Adresse domicile
Ville travail
Adresse travail
Société travail

Je veux pouvoir retrouver un contact:
Par son nom,
Par son prénom,
Par son n° de téléphone (mais c'est qui ce N° ?)
Par sa ville

De plus je veux mettre en oeuvre une relation de proximité entre Villes, de façon, par exemple à savoir quels sont mes contacts proches de Toulouse.

Il est assez évident de dire que l'entité OBJET comprend les types:
Nom de contact, Prénom de contact, ... Société de travail
Il est clair que chaque occurrence de Nom a pour objet père le type Nom de contact.
Idem pour les Prénoms, les N° de tel,... les Sociétés de travail.
On voit bien comment ranger ces données élémentaires dans l'entité OBJET; par exemple:
ID    ID_PERE        LIB        PARAMETRE
1                            Racine
2        1                  Racine des objets
3        1        Racine des noms de relations entre objets
11       2        Nom de contact
12       2        Prénom de contact
13        2        Ville de contact
...
101    11        DUPONT
102    12        CHRISTIAN
...

Il faut maintenant mettre en place toutes les relations utiles entre ces données élémentaires. D'abord définir la notion de contact, c'est à dire expliquer

que DUPONT est le nom d'un contact, CHRISTIAN, le prénom de CE contact, ... Pour cela il faut créer un nouveau type d'objet (classe) que nous   appellerons Fiche contact
ID   ID_PERE   LIB
21    2        Fiche contact
100    21        -vide-            (la fiche contact a un identifiant mais pas de désignation commune)

Pour dire que DUPONT est le nom de la fiche contact de ID=100 , il faut:
Créer la relation correspondante dans OBJET, faire la liaison adhoc dans LIEN; idem pour dire que CHRISTIAN est le prénom de la fiche 100, etc ...
ID    ID_PERE        LIB        PARAMETRE
500    3        Nom du contact
501    3        Prénom du contact
502    3        Ville du contact

ID    ID_ORIGINE    ID_DESTINATION        ID_RELATION
123    100        101            500
234    100        102            501
...
C'est l'ensemble des relations dont ID_ORIGINE est égal à 100 qui définit quelles sont les données élémentaires de la fiche contact 100.
Si on souhaite à l'inverse savoir quelle est la fiche contact correspondant à tel nom, on peut rechercher dans OBJET le type Nom de contact par son LIB. Par exemple: rechercher les OBJET tels que LIB=DUPONT et type=Nom de contact, soit ID_PERE=11. On trouve alors ID=101.
rechercher alors les LIEN tels que ID_DESTINATION=101 et ID_RELATION=500 (cad correspondant à une relation Nom du contact).

Une autre possibilité est de créer la relation inverse:
ID    ID_PERE        LIB        PARAMETRE
505    3        Contact du Nom

ID    ID_ORIGINE    ID_DESTINATION        ID_RELATION
456    101        100            505
L'intérêt de la relation inverse, réside dans la normalisation de la navigation en base d'une part et de l'accélération des accès d'autre part puisque la relation inverse est une sorte d'index de recherche optimal. De plus les relations inverses précisent les chemins de recherche qui sont fonctionnellement utiles.
Rappel: Retrouver un contact Par son nom,Par son prénom,Par son n° de téléphone (mais c'est qui ce N° ?),Par sa ville
De plus je veux mettre en oeuvre une relation de proximité entre Villes, de façon, par exemple à savoir quels sont mes contacts proches de Toulouse.

On ajoutera donc les noms de relations inverses:
ID    ID_PERE        LIB
506    3        Contact du Prénom
507    3        Contact ayant ce téléphone
508    507        Contact ayant ce fixe
509    507        Contact ayant ce mobile
510    3        Contact dans cette ville
511    510        Contact habitant cette ville
512    510        Contact travaillant dans cette ville
513    3        Ville proche de cette ville

Et on créera tous les objets et toutes les relations inverses utiles:
ID    ID_PERE        LIB
113    13        TOULOUSE
103    13        LABEGE

ID    ID_ORIGINE    ID_DESTINATION        ID_RELATION
567        100                103                502
678        103                100                511
679        113                103                513
...

Notre agenda commence à prendre tournure; il peut apparaître très compliqué par rapport à un tableau de lignes de contacts. Mais il faut remarquer que par rapport à un tableau de contacts simple nous avons de nombreuses possibilités supplémentaires.
Tout se passe comme si on pouvait :
-ajouter dynamiquement de nouvelles colonnes au tableau de contacts,
-parcourir ce tableau plus rapidement qu'un balayage séquentiel grâce aux relations inverses,
-éclater une colonne existante en plusieurs nouvelles colonnes (Ville en phase 1 du projet puis Ville de résidence et Ville de travail en phase 2)
De plus nous montrerons dans l'article suivant, que l'on peut ajouter des colonnes correspondant à un autre projet que l'Agenda, sans jamais remettre en cause le modèle universel.

Un petit exemple de navigation pour finir:
Je suis arrivé à TOULOUSE. Quels sont mes contacts dans cette ville ou proches de cette ville ?
1. Recherche de la ville TOULOUSE dans OBJET donne ID=113
2. Recherche dans LIEN de ID_ORIGINE=113 et ID_RELATION=511; ne donne rien: je ne connais personne à TOULOUSE
3. Recherche dans LIEN de ID_ORIGINE=113 et ID_RELATION=513 (villes proches); donne ID_DESTINATION=103
4. Recherche dans LIEN de ID_ORIGINE=103 et ID_RELATION=511 (contact dans cette ville); donne ID_DESTINATION=100
5. Recherche dans LIEN de ID_ORIGINE=100 et ID_RELATION=500; donne ID_DESTINATION=101
6. Recherche dans OBJET de ID=101; donne Nom=LIB=DUPONT
7 Recherche dans LIEN de ID_ORIGINE=100 et ID_RELATION=501; donne ID_DESTINATION=102
8. Recherche dans OBJET de ID=102; donne Préom=LIB=CHRISTIAN
...

Au final je connais CHRISTIAN DUPONT qui habite à LABEGE, qui a tel N° de téléphone fixe, tel N° de mobile, et telle Adresse précise.
Bien sûr cet exemple est volontairement simplifié pour qu'il soit facile à chacun de nous de comprendre le fonctionnement. Avec une machine, le déroulement de cet algorithme de recherche est extrêmement rapide et autorise des choses plus sophistiquées.

Par exemple, je peux demander à un système largement enrichi, ce qu'il sait de ROSE. Les réponses possibles seront:
La couleur ROSE, la fleur ROSE, la chanteuse ROSE, les noms de contacts ROSE Françoise, ROSE Louis, ...
Si je veux des précisions sur la chanteuse ROSE, le système pourra me donner le titre des chansons, le nom de l'éditeur, ses derniers concerts, ...
Convaincu par les possibilités de ce modèle universel ?
Par Christian de Lille
Ecrire un commentaire - Voir les 0 commentaires - Recommander
Vendredi 4 juillet 2008
Mon fils m'a offert une clé Usb. C'est fou ce qu'on peut faire avec une simple clé Usb, de 8 go quand même !
Sur cette clé vous disposez de logiciels pré installés, tout à fait opérationnels, à savoir:
 Mozilla Firefox pour naviguer sur le web
 La suite Open Office (Tableur, Traitement de texte, Présenteur de diapos, Conversion Pdf et xml, ...)
 Mozilla Thunderbird pour gérer au mieux les messages
 Vlc pour visualiser nombre de formats vidéo, image et son
 Un agenda local
 Un comprsseur zip
 Un explorateur d'images
 Un antivirus
 Un outil de cryptage
 ... et un interface d'accès à tout cela agréable.

Et tout cela pour la modique somme de 40€
La place occupée par tous ces logiciels embarqués sur la clé est de 520 Mo environ.
Reste donc plus de 7 Go pour ranger nos données personnelles. Extraordinaire non ?

Y a qu'un défaut, il faut trouver un ordinateur sur lequel brancher sa clé;
Certes, les cybercafés sont là, on peut aussi squatter l'ordi de la copine, mais tout ceci n'est sûrement pas gratuit !
Les cyber font payer leurs services, et il faut faire plaisir à la copine pour réutiliser son ordi fréquemment !

Eh oui, la clé Usb avec logiciels pré installés n'est guère plus intéressante que les outils en ligne de Google !
Le plus de la clé ? C'est que j'ai mes données intéressantes sur moi, dans ma poche; en quelque sorte c'est l'instinct
du propriétaire qui revient. Faut dire à la défense de cet instinct grégaire, qu'il n'est quand même pas très rassurant de confier ses données personnelles voire intimes au réseau et à Google en particulier !

Et puis, cette clé bien gérée est une mini sauvegarde permanente et rapide.
Bref, je la garde précieusement !
Par Christian de Lille
Ecrire un commentaire - Voir les 0 commentaires - Recommander
Lundi 11 août 2008
J'ai réalisé un petit générateur de sites web qui sert entre autres à l'affichage de ce blog.
Il obéit aux standards les plus récents du web. Css valide W3C, Html valide W3C.
La génération de page est rapide.Ce site est très léger. Il est écrit en php et comporte très peu de composants:
un programme index.php de 24ko qui s'appuie sur une librairie de fonctions lib.util de 8ko pour l'essentiel. On trouve aussi un fichier index.css, un script index.js, quelques composants rss.
Enfin les composants les plus nombreux, de mise à jour en ligne sont regroupés dans un répertoire maj. Le total tient dans moins de 200 ko.
Le site n'utilise pas de base de données; un choix personnel qui m'a semblé pertinent tant pour la rapidité de réponse du site que pour les faibles volumes de données manipulées; actuellement les données représentent environ 32 Mo.
Si vous êtes intéressés par ce petit générateur, n'hésitez pas à me contacter; je livre le tout gracieusement ... et j'espère en retour des suggestions et des contributions pour amélioration.
Par Christian de Lille
Ecrire un commentaire - Voir les 0 commentaires - Recommander

Rechercher

 
Créer un blog sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus - Articles les plus commentés