Eisenfaust et l'informatique - L'analyse

Introduction :

    L'analyse est un outils pour créer des logiciels (dans le sens large du terme : Base de données, applications, etc...) évolutifs et surtout les plus efficaces possible. En effet l'être humain à une vision de son environnement que l'ordinateur n'a pas, de plus comme l'ordinateur est bete il faut tt lui expliquer, mais notre approche humaine du monde n'a souvent rien de très logique et c'est pour ça qu'en créant des logiciels "à l'instinct" on se retrouve très vite coincé et dans des impasses logique (en logique informatique ou mathématique, puisque l'être humain lui sera persuadé d'avoir suivi la plus pure logique : la sienne :-) ) qui obligent alors à refaire tt le programme. Alors si le programme ne fait que qq lignes et que c'est pour soi ce n'est pas bien grave, mais qd c'est une application composées de plusieurs programmes de plusieurs milliers de lignes chacun et que c'est pour le boulot ou que d'autres personnes dépendent, même indirectement, de votre travail, il est clair qu'on ne peut pas se permettre de tout recommencer du début. Surtout quand on parle d'un projet de plusieurs mois (ou plusieurs années..). Mais heureusement l'analyse est là pour nous permettre d'avancer à pas sur : ce qui est posé est posé définitivement et si on a besoin de rajouté qqch il suffira de rajouter mais on sera sur que l'on aura jamais besoin de tt reprendre du début parskon à négligé l'aspect logique/rationnel qui au moment du développement nous était apparu comme "un détail" dans notre logique humaine... L'analyse nous permet de passer au crible de la logique absolue tous les éléments qui composera notre logiciel et de vérifier les liens logiques entre ces éléments.

 

I ] La Méthode MERISE : la méthode française

    A] Historique :

        La méthode MERISE date de 1978 et est le fruit d'une consultation nationale lancée en 1977 par le ministère de l'industrie dans le but de choisir des sociétés de conseil en informatique afin de définir une méthode de conception de systèmes d'information. Les 2 principales sociétés ayant mis au point cette méthode sont le CTI (Centre Technique d'Information) chargé de gérer le projet et le CETE (Centre d'Etudes Techniques et d'Equipement) implanté à Aix-en-Provence.

    B] Concept :

        La méthode MERISE à pour but d'examiner la réalité, par le biais des informations à traiter et de les ordonner les unes par rapport aux autres selon une logique pure et de là pouvoir en tirer des algorithmes de traitement (là aussi dans le sens large du terme : calculs, consultation, modification, ajout, suppression, etc...), des structures de base de données, etc. Mais il est clair que MERISE n'est pas là pour générer un programme, mais juste des algorithmes ! Je veux mettre là le doigt sur la différence entre l'analyse et la programmation : l'analyse s'arrête où la programmation commence ! Pour faire simple, une fois que l'analyste à conçu le projet il refile ses algorithmes au(x) programmeur(s) qui lui traduira ces algorithmes en tel ou tel langage(s), mais l'analyse c'est la conception et la programmation la réalisation d'un projet informatique.

    C] MERISE de A à Z :

        1) L'étude de l'existant :

            Bien sur, cette étape n'est possible que si un système (manuel, oral ou autre..) existe déjà. Mais même si c'est pour implanter qqch de totalement nouveau dans l'entreprise il faut en passer par là. Dans les deux cas cette étude préliminaire à pour but de recenser toutes les informations dont on aura besoin pour le projet et tous les traitements nécessaires pour obtenir les résultats dont auront besoin les utilisateurs finaux. 

            Selon les cas, cette étape peut revêtir un aspect différent : récolte de formulaire, interviews d'utilisateur sur leur façon de faire et leur procédés, compulsage d'archives, etc. Le but de cette étape est de récolter tt les élément nécessaires au projet et de maîtriser "la problématique" (dans le sens mathématique du terme...) de A à Z, c'est-à-dire pas seulement dans son ensemble mais aussi par rapport à son environnement. Bref l'analyste est d'abord un enquêteur.

            Après avoir rassemblé toutes les informations, on formalise les règles de gestion. Par exemple avec un exemple de gestion des demandes de congés on obtient ceci :


A chaque demande de congés :

1 : Demande de congés

2 : Transmission à la direction

3 : Acceptation de la demande

            ou

3 bis : Refus de la demande (rare)

4 : (uniquement si 3 est vrai) mise à jour du tableau de présence

5 : Information de l’employé (soit par retour du document, soit par autre voie de communication)

RG1 : Toute demande de congé implique une réponse

RG2 : Toute acceptation de congés implique une mise à jour du tableau de présence

            Nota Bene : Si le bloc note est impératif dans l'étude de l'existant, un dictaphone peut aussi être très utile en complément lors d'interviews des utilisateurs par exemple. Mais toujours penser à noter au moins le numéro de téléphone de chaque intervenant pour, si besoin, pouvoir lui redemander des précisions sur ce qu'il fait et comment, car parfois une façon de faire peut apporter bcp d'informations pour les traitements.

        2) Les dictionnaires de données :

    Et oui : LES dictionnaires de données, car même si dans la pratique on en utilise qu'un, selon la méthode MERISE ils sont au nombre de 3.

    Les dictionnaires de données sont des tableaux où on fait le bilan de toutes les informations dont on aura besoin dans le projet, leur "importance" dans le sens informatique du terme (clé, source d'info, élément de calcul, résultat de calcul, donnée à imprimer, etc), leur nature, leur taille, etc. 

    a) Le premier dictionnaire des données :

        Comme un schéma vaut mieux qu'un longs discours je vais d'abord vous montrer à quoi il ressemble et à partir de là je vous expliquerez comment il fonctionne.

Rubriques Documents Catégories Dictionnaire
D1 D2 Dn Pn An Ln
               
               
               

Rubrique : On y met tous les noms de données. Par exemple : "adresse du client", "numéro de tel fournisseur", "numéro de facture", "produit", "quantités", etc. Donc votre dictionnaire sera aussi long que vous avez de données à traiter, il est donc fréquent que le dictionnaires face plusieurs pages, alors prévoyez de vous faire un modèle de document Excel par exemple, dont vous utiliserez un exemplaire pour chaque projet. Au moins vous n'aurez pas les tracer à faire à chaque fois. ;-)

Documents : Ici on réparti les données cités dans rubriques par documents. Par exemple si notre application doit générer des facture clients, des bordereaux d'achat, etc on fera autant de subdivisions à cette colonne qu'il y aura de documents à générer. Alors si on dit que D1 par exemple sera la facture client, D2 le bordereau d'achat, etc on mettra une croix en face de chaque rubrique sous la case du document où il apparaîtra.

Catégories : là on détermine de quel catégorie est la donnée. On fera une croix dans Pn si la donnée est un Paramètre (donnée utilisée qu'une fois, constante, par ex : date d'entête, numéro de document, etc), dans An si c'est une donnée Arithmétique (calculée à partir d'autres rubriques) et dans Ln si c'est une donnée Logique (résulte de l'application d'une règle, d'un traitement)

Dictionnaire : On y inscrit le nom de la donnée qu'on utilisera en sortie, c'est une donnée de base.

    Et pour imager tt ça on va se faire un petit exemple bidon, pour mieux fixer comment ça fonctionne :

(si on considère que D1 est la facture, D2 le fichier client, D3 le catalogue des produits on aura :)

 

Rubriques Documents Catégories Dictionnaire
D1 D2 D3 Pn An Ln
numéro de facture X       A1   fac_num
nom client X X   X     cli_nom
numéro client X X     A2   cli_num
adresse client X X   X     cli_adr
numéro de tel client   X   X     cli_numtel
nom produit X   X X     prod_design
référence produit X   X X     prod_ref
quantité produit X     X     fac_qte
prix unitaire produit     X X     prod_pu
prix total produit X       A3   fac_pt
total général X       A4   fac_total
date de facture X     X     fac_date
validation de paiement          

L1

fac_valid

 

    b) Le deuxième dictionnaire des données : le dictionnaire effectif des données

        Celui-ci ressemble à ça :

Rubriques Domaines Natures Longueurs Types
         

Rubriques : Ici on remet, les noms des rubriques du tableau précédent. (un bon vieux copié collé est tjs sympathique :-) ). ou on peut déjà utiliser les noms définis dans la colonne (Dictionnaire).

Domaines : Rappel le domaine d'intervention de la donnée.

Natures : Défini si ce sera une donnée, numérique, alphabétique ou alphanumérique.

Longueurs : Ici on indique la taille maximale de la donnée.

Types : Si cette donnée est signalétique ou de situation.

Rubriques Domaines Natures Longueurs Types
fac_num Facture numérique 6 signalétique
cli_nom Fich. Client alphabétique 25 signalétique
cli_num Fich. Client numérique 6 signalétique
cli_adr Fich. Client alphanumérique 150 signalétique
cli_numtel Fich. Client alphanumérique 14 signalétique
prod_design Catalogue alphanumérique 255 signalétique
prod_ref Catalogue alphanumérique 10 signalétique
fac_qte Facture numérique 2 situation
prod_pu Catalogue numérique 5 signalétique
fac_pt Facture numérique 7 situation
fac_total Facture numérique 7 situation
fac_date Facture alphanumérique 10 signalétique
fac_valid - numérique 1 situation

Nota Bene : pour la date de facture on peut aussi la considérer comme numérique de longueur 8 (si un format date permet de conserver correctement cette date en tant que tel). Mais en tt cas le bug de l'an 2000, nous aura appris qu'il ne faut jamais plus stocker/traiter les dates dans un format moins long (tronquant les 2 premiers chiffres de l'année...). Pareil pour le numéro de téléphone : on pourra parfois aussi le stocker en numérique au format numéro de téléphone et d'une longueur de 10. Et idem pour différents type de données tel que les codes postaux, numéro de sécurité sociale, etc mais tt dépend de ce que l'on veut en faire. Mais de base il faut répartir les données selon si elles sont numériques, alphabétique et alphanumériques. Le fac_valid peut aussi être défini en tant que booléen, mais là aussi tt dépend de comment on doit traiter le projet.

    c) Le troisième dictionnaire des données : le dictionnaire des fonctions

        Le troisième reprend une partie du premiers, c'est à dire, qu'il reprend les données classées comme étant An (Arithmétiques) ou Ln (Logiques) pour en définir clairement les REGLES DE GESTION. Une règle de gestion est un traitement pour générer l'information en question. Ainsi pour notre exemple nous aurons :

CODES REGLES DE GESTION
A1 fac_num = dernier fac_num+1
A2 cli_num = dernier cli_num+1
A3 fac_pt = fac_qte x prod_pu
A4 fac_total =  Σ (fac_pt)
L1 si montant payé = fac_total

   alors fac_valid <- "vrai" (ou 1)

   sinon fac_valid <- "non" (ou 0)

finsi

   

        3) La Matrice :

            Là il s'agit d'organiser les données les unes par rapport aux autres et ainsi comment on va les regrouper par tables. En gros on va trouver les clés de chaque document qui donnera accès à l'ensemble des données d'un élément. Par exemple, le numéro de client donnera accès à son nom, son adresse, son numéro de tel etc. Si on reprend notre exemple nous aurons :

ZONES 1 2 3 4 5 6 7 8 9 10 11 12 13 Commentaires
1 fac_num                            
2 fac_qte x                          
3 fac_pt x                          
4 fac_total x                          
5 fac_date x                          
6 fac_valid x                          
7 cli_nom               x            
8 cli_num x                          
9 cli_adr               x            
10 cli_numtel               x            
11 prod_design                       x    
12 prod_ref x                          
13 prod_pu                       x    
  clé N°_ + clé N° _                           qd on a besoin de traitement entre plusieurs table on rajoute des clés comme ceci et on coche pareil les cases des données auquelles cette combinaison donne accès

on peut donc lire par exemple : qd on à le numéro de client (8) on accède au nom du client, à son adresse et à son téléphone.

        4) La Structure d'Accès Théoriques : le SAT

            Ici il s'agit de visualiser graphiquement ce qui a été déterminé dans la matrice précédente : 

        5) Le Modèle Conceptuel des Données : le MCD

            Là on est au coeur du projet. En effet, le MCD permet d'avoir une vue d'ensemble sur le projet. On voit les entités et les mécanismes qui les lient. Le formalisme du MCD est très précis, mais je le détaillerai plutard. Voici déjà notre exemple ou plutot son MCD :

 

        6) Le Modèle Logique des Données : le MLD

        7) Le Modèle Conceptuel des Traitements : le MCT

        8) Les Algorithmes :

 

II ] La Méthode  : la méthode américaine

    La programmation est une langue vivante... Il faut la pratiquer pour la maîtriser, alors bien sur je peux faire un inventaire des langages que j'ai appris, utilisés, etc Mais je veux mettre en avant le fait qu'un langage de programmation est avant tout un instrument de création. Ben oui, au jour d'aujourd'hui la réalité de la programmation n'a plus rien à voir avec ma perception de l'époque, maintenant ce n'est plus qu'un outil pour faire ce que l'on a a faire sur un ordinateur, un site web, etc... Cette outils de création était vraiment au top avec les langages basics, c'était comme si je parlait à l'ordinateur et me répondait une fois que j'ai validé mon "run". Aujourd'hui la programmation se fait sur des "plateau de programmation" dans des buildings d'Asie, où les programmeurs sont légion et ne sont plus que de simple exécutant, des outils de production et non plus de créations. Ils transcrivent toute la journée, dans le ou les langages dans lesquels ils se sont spécialisés, des algorythmes fournis par un analyste. Déprimant ! Bien sur il reste encore par ci par là qq programmeurs qui créent, mais il est clair que ce sont des situations sans aucun avenir :-( Le temps de l'épanouissement dans la programmation n'est plus et le sera de moins en moins. Peu importe, j'ai pu vivre de grands plaisirs par la programmation (mais non j'uis pas bizarre ! ;oD ), si c'est du passé aujourd'hui, ce n'est pas grave je vous parlerai de ces plaisirs passés alors.

 

III ] La MOCA : Modélisation Optimisation et Complexité Algorithmique

    -------. 

    --------.

 

IV ] M : 

 

V ] M : 

 

-  ....

 

EN CONSTRUCTION !