SlideShare une entreprise Scribd logo
1  sur  41
Il n’y a pas de “bon”
    Modèle Métier
      Grégory Weinbach
        @gweinbach
       http://mdblog.fr




                          1
En quelques mots…



                    2
Grégory Weinbach
                            http://mdblog.fr - @gweinbach


                     hanoi(X) :-
                       move(X,left,right,center).

                     move(1,X,Y,_) :-
                      write('Move top disk from '),
                      write(X),
                      write(' to '),
                      write(Y),
                      nl.

                     move(N,X,Y,Z) :-
#include "stdio.h"    M is N-1,
                      move(M,X,Z,Y),
                      move(1,X,Y,_),
                      move(M,Z,Y,X).




                                                            3
4
Il faut concevoir pour l’utilisateur




                                       5
Il faut concevoir avec l’utilisateur




                                       6
7
Modéliser le Métier de
    l’utilisateur




                         8
Présentation


 Services


  Entités


 Données

               9
10
Réponse :

Une Entité doit représenter
 un Concept du métier


                              11
Tuyau
                  Ev acuation

                                         1       Siphon
                    1




  Ev ier
                                         1..*
                                                   Tuyau PVC



                             1   Raccordement                  Tuyau de cuiv re
                                                     1..*

           Arrivée d'eau




Arriv ée d'eau          Arriv ée d'eau
    chaude                   froide          1
           1




                                                                                  12
13
14
Liv re

titre
auteur
éditeur




              15
16
17
18
19
20
21
22
Liv re

titre
auteur
éditeur
ISBN
copyright
nombre de pages
hauteur
largeur
épaisseur
/volume
illustration couverture
texte quatrième de couverture
stock
date de disponibilité
date de réimpression
dépôt légal
type de papier
type de reliure
texte brut
texte mis en forme
collection
tome numéro
allée numéro
position
photo de l'auteur
présentation de l'auteur
opérations spéciales
prix de vente public
note des lecteurs
note des critiques
autres choix des lecteurs       23
24
Pas un mais des « Livres »
Pas un mais des Modèles




                             25
Un Modèle Métier = Un Contexte




        = Un Domaine
                                 26
Choisissons un Contexte :

 La Vente aux Librairies



                            27
Coordonnées                                                                  Client
                                                                 0..*




                                                      Coordonnées de contact                            Entreprise                                 Personne                     parle
            Pays                                                                                                                                                                                    Langue
                                                  -     type                                     -   nom commercial                            -   civilité          0..*                0..*
    -   code ISO                                  -     téléphone [0..1]                         -   dénomination sociale                      -   nom                                          -   nom
    -   libellé                                   -     téléphone mobile [0..1]                  -   n° TVA [0..1]                             -   prénom
                                                  -     fax [0..1]
                                                  -     e-mail [0..1]
             1



                                                                                                                                                                     Forme j uridique
                           Adresse postale                                                                     Entreprise            Entreprise
                                                                                                                                                                   -        code
                                                                                                               étrangère              française               0..1 -        libellé
                                                                                                                                 -   numéro SIREN
                                     1
                                                                                                                                 -   n° TVA

                 1                                                                                                                                                       Activ ité NAF
                                                                                                                                                              0..1
                                         1                                                                                                                           -      code NAF
    Code postal
                                                                                                                                                                     -      libellé
-    code                            Commune
                                                                                          0..1
                                 -   nom
             1..*
                          1..*                                                       Adresse Entreprise                                 Adresse personne
                                                                                                                                                                                0..1
                                                                        -   identité du destinataire et/ou service [0..1]   -   n° - Etape - Couloir - Escalier [0..1]
                                                                        -   entrée - Bât. - Immeuble - Résid. [0..1]        -   entrée - Bât. - Immeuble - Résid. [0..1]
                                                                        -   numéro et libellé de la voie                    -   numéro et libellé de la voie
                                                                        -   mention spéciale - Commune géo. [0..1]          -   sce particulier de distrib. - lieu dit [0..1]
                     Commune                   Commune
                     française                 étrangère

              -      code INSEE

                                                                                                                                                                                                             28
Coordonnées                                                                  Client
                                                                 0..*




                                                      Coordonnées de contact                            Entreprise                                 Personne                     parle
            Pays                                                                                                                                                                                    Langue
                                                  -     type                                     -   nom commercial                            -   civilité          0..*                0..*
    -   code ISO                                  -     téléphone [0..1]                         -   dénomination sociale                      -   nom                                          -   nom
    -   libellé                                   -     téléphone mobile [0..1]                  -   n° TVA [0..1]                             -   prénom
                                                  -     fax [0..1]
                                                  -     e-mail [0..1]
             1



                                                                                                                                                                     Forme j uridique
                           Adresse postale                                                                     Entreprise            Entreprise
                                                                                                                                                                   -        code
                                                                                                               étrangère              française
                                                                                                                                                              0..1 -        libellé
                                                                                                                                 -   numéro SIREN
                                     1
                                                                                                                                 -   n° TVA

                 1                                                                                                                                                       Activ ité NAF
                                                                                                                                                              0..1
                                         1                                                                                                                           -      code NAF
    Code postal
                                                                                                                                                                     -      libellé
-    code                            Commune
                                                                                          0..1
                                 -   nom
             1..*
                          1..*                                                       Adresse Entreprise                                 Adresse personne
                                                                                                                                                                                0..1
                                                                        -   identité du destinataire et/ou service [0..1]   -   n° - Etape - Couloir - Escalier [0..1]
                                                                        -   entrée - Bât. - Immeuble - Résid. [0..1]        -   entrée - Bât. - Immeuble - Résid. [0..1]
                                                                        -   numéro et libellé de la voie                    -   numéro et libellé de la voie
                                                                        -   mention spéciale - Commune géo. [0..1]          -   sce particulier de distrib. - lieu dit [0..1]
                     Commune                   Commune
                     française                 étrangère

              -      code INSEE




                                                                                                                                                                                                             29
JoinCommuneToCode                                                                          Commune étrangère
                                                                                                                                                                                                                                                                                                                                                                                                                                                   postal                              appartient à
                                                                                                                                                                                                                                                                                Client                                                                                                                                                                                                                                      «column»
                                                                                                                                                                                                                                                                                                                                                                                                                                            «column»                                «column»                                *pfK commune étrangèreID :Integer
                                                                                                                                                                                                                                                                          «column»                                                                                                                                                          FK code postalID :Integer               FK communeID :Integer
                                                                                                                                                                                                                                                                          *PK clientID :Integer                                                                                                                                             FK communeID :Integer
                                                                                                                                                                                                                                                                                                      +PK_Client                                                                                                                                                                                                    «PK»
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 «FK»                               +    PK_Commune étrangère(Integer)
                                                                                                                                                                                                                                                                          «PK»                  1                                                                                                                                           «FK»                                 +    Commune(Integer)              «FK»
                                                                                                                                                                                                                                                                          +  PK_Client(Integer)                                                                                                                                             +   Code postal(Integer)   +Commune                                     +    FK_Commune étrangère_Commune(Integer)
                                                                                                                                                                                                                                                                                                                                                                                                                                            +   Commune(Integer)                  +Commune     0..*
                                                                                                                                                                                                                                                               +PK_Client
                                                                                                                                                                                                                                                                        +PK_Client         1                                                                                                                                                                           1..*
                                                                                                                                                                                                                                                              (clientID = clientID)                                                                                                                                                         +Code postal    1..*                        +FK_Commune étrangère_Commune
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (communeID = communeID)                   0..1
                                                                                                                                                                                                                                                                      «FK»                                                                                                                                                                  (code postalID = code postalID) = communeID)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                 (communeID                         (commune étrangèreID = communeID)
                                                                                                                                                                                                                                              +FK_Coordonnées_Client 0..*                                                                                                                                                                                                   «FK»            «FK»
                                                                                                                                                                                                                                                                                                                                                                                                                                                         «FK»                                                     «FK»
                                                                                                                                                                                                                                                                                                                                                                                                                                          +PK_Code postal            +PK_Commune
                                                                                                                                                                                                                                                                                                                                                                                                                                                                               +PK_Commune   +PK_Commune       1
                                                                                                                                                                                                                                                     Coordonnées
                                                                                                                                                                                                                                                                                                                                                                            Pays
                                                                                                                                                                                                                                                                                                                                                                                                                                                      Code postal                            Commune
                                                                                                                                                                                                                                           «column»
                                                                                                                                                                                                                                           *PK coordonnéesID :Integer                                                                                                «column»
                                                                                                                                                                                                                                                                                                                                                                         code ISO                                                               «column»                        «column»
                                                                                                                                                                                                                                            FK clientID :Integer                                                                                                                                                                                    code                            nom
                                                                                                                                                                                                                                                                                                                                                                         libellé
                                                                                                                                                                                                                                                                                                                                                                                                                                                *PK code postalID :Integer      *PK communeID :Integer
                                                                                                                                                                                                                                                                                                                                                                     *PK paysID :Integer                                                                            +PK_Commune
                                                                                                                                                                                                                                           «PK»
                                                                                                                                                                                                                                           +  PK_Coordonnées(Integer)           +PK_Coordonnées                                                                                                                              +PK_Code postal «PK»
                                                                                                                                                                                                                                                                                                                                                                     «PK»                                                                                                            1 «PK»
                                                                                                                                                                                                                                           «FK»                               1                                                                                      +  PK_Pays(Integer)                                                     +  PK_Code postal(Integer)                +  PK_Commune(Integer)
                                                                                                                                                                                                                                                                                                                                                                                                                                           1
                                                                                                                                                                                                                                           +   FK_Coordonnées_Client(Integer)
                                                                                                                                                                                                                                                                                                                                                                    +PK_Pays      1                                                                                                             +PK_Commune françaiseID = communeID)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (commune      1
                                                                                                                                                                                                                                     +PK_Coordonnées      1                                                                                                            (paysID = paysID)
                                                                                                                                                                                                                                 (coordonnées de contactID = coordonnéesID)                                                                                                                                     (code postalID = code postalID) = communeID)
                                                                                                                                                                                                                                                                                                                                                                                                                                    (communeID                                                                    «FK»
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          +FK_Commune française_Commune 0..1
                                                                                                                                                                                                                                                                                                  (adresse postaleID = coordonnéesID)                                        «FK»
                                                                                                                                                                                                                                                   «FK»                                                                                               +FK_Adresse postale_Pays                                               «FK»              «FK»
                                                                                                                                                                                                             +FK_Coordonnées de contact_Coordonnées 0..1                                                          «FK»                                                                                                                                                                                                                Commune française
                                                                                                                                                                                                                                                                                                                                                                      Adresse postale
                                                                                                                                                                                                                                   Coordonnées de contact                                                                                                                                                   +FK_Adresse postale_Code postal
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            «column»
                                               Coordonnées                                                                  Client                                                                                     «column»                                                                                    +FK_Adresse postale_Coordonnées «column»                                                 +FK_Adresse postale_Commune                                                                                          code INSEE
                                                                 0..*                                                                                                                                                                                                                                                                               *pfK adresse postaleID :Integer                                                                                                                                         *pfK commune françaiseID :Integer
                                                                                                                                                                                                                            type
                                                                                                                                                                                                                            téléphone [0..1]                                                                                                   0..1 FK code postalID :Integer                               1
                                                                                                                                                                                                                                                                                                                                                    *FK communeID :Integer
                                                                                                                                                                                                                            téléphone mobile [0..1]                                                                                                  FK paysID :Integer                                                                                                                                                     «PK»
                                                                                                                                                                                                                            fax [0..1]                                                                                                                                                                                                                                                                                      +  PK_Commune française(Integer)
                                                                                                                                                                                                                            e-mail [0..1]                                                                                                                                                                                                                                                                                   «FK»
                                                                                                                                                                                                                       *pfK coordonnées de contactID :Integer                                                                                            «PK»
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            +   FK_Commune française_Commune(Integer)
                                                                                                                                                                                                                                                                                                                                                         +  PK_Adresse postale(Integer)
                                                                                                                                                                                                                       «PK»                                                                                                                              «FK»                                                                                                                                                          +PK_Commune française
                                                      Coordonnées de contact                            Entreprise                                 Personne                                                            +  PK_Coordonnées de contact(Integer)                                                                                             +   FK_Adresse   postale_Coordonnées(Integer)
            Pays                                                                                                                                                                parle
                                                                                                                                                                                                    Langue                                                                                                                                               +   FK_Adresse   postale_Code postal(Integer)
                                                                                                                                                                                                                       «FK»                                   (personne physiqueID = clientID)
                                                  -     type                                     -   nom commercial                            -   civilité          0..*                0..*                          +   FK_Coordonnées de contact_Coordonnées(Integer) «FK»
                                                                                                                                                                                                                                                                                                                                                         +   FK_Adresse   postale_Commune(Integer)                                                                                                                          (commune françaiseID = commune françaiseID)
    -   code ISO                                  -     téléphone [0..1]                         -   dénomination sociale                      -   nom                                          -   nom                                                                                                                                                  +   FK_Adresse   postale_Pays(Integer)
    -   libellé                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                «FK»
                                                  -     téléphone mobile [0..1]                  -   n° TVA [0..1]                             -   prénom
                                                                                                                                                                                                                                                                                                                                                                                                                           (personne moraleID = clientID)
                                                  -     fax [0..1]                                                                                                                                                                                                                                                 (adresse+PK_Adresse postale = adresse(adresse personne moraleID = adresse postaleID)
                                                                                                                                                                                                                                                                                                                            personne physiqueID   1     +PK_Adresse postale
                                                                                                                                                                                                                                                                                                                                                         postaleID)             1
                                                  -     e-mail [0..1]                                                                                                                                                                                                                                                                                                                                                                 «FK»
                                                                                                                                                                                                                                                                                                                                         «FK»
                                                                                                                                                                                                                                                                                        +FK_Adresse personne physique_Adresse postale 0..1                                  «FK»
                                                                                                                                                                                                                                                                                                                                   +FK_Adresse personne morale_Adresse postale 0..1                                                                                                                                           +Commune française 1..*
             1
                                                                                                                                                                                                                                                                                                      Adresse personne physique                                                    Adresse personne morale                                                                                                                                appartient à

                                                                                                                                                                                                                                                                                       «column»                                                                     «column»                                                                                                                                                      «column»
                                                                                                                                                                     Forme j uridique                                                                                                       n° - Etape - Couloir - Escalier [0..1]                                       identité du destinataire et/ou service [0..1]                                                                                                            FK commune françaiseID :Integer
                           Adresse postale                                                                     Entreprise            Entreprise                                                                                                                                             entrée - Bât. - Immeuble - Résid. [0..1]                                     entrée - Bât. - Immeuble - Résid. [0..1]
                                                                                                                                                                   -        code                                                                                                            numéro et libellé de la voie                                                 numéro et libellé de la voie
                                                                                                               étrangère              française                                                                                                                                                                                                                                                                                                                                                                                   «FK»
                                                                                                                                                              0..1 -        libellé                                                                                                         sce particulier de distrib. - lieu dit [0..1]                                mention spéciale - Commune géo. [0..1]                                                                                                                   +   Commune française(Integer)
                                                                                                                                 -   numéro SIREN                                                                                                                                      *pfK adresse personne physiqueID :Integer                                    *pfK adresse personne moraleID :Integer
                                     1
                                                                                                                                 -   n° TVA
                                                                                                                                                                                                                                                                                       «PK»                                                                         «PK»
                 1                                                                                                                                                       Activ ité NAF                                                                                                 +  PK_Adresse personne physique(Integer)                                     +  PK_Adresse personne morale(Integer)
                                                                                                                                                              0..1
                                                                                                                                                                                                                                                                                       «FK»                                                                         «FK»
                                         1                                                                                                                           -      code NAF                                                                                                   +   FK_Adresse personne physique_Adresse postale(Integer)                    +   FK_Adresse personne morale_Adresse postale(Integer)
    Code postal
                                                                                                                                                                     -      libellé
-    code                            Commune                                                                                                                                                                                                                     +PK_Adresse personne physique       0..1                                                           +PK_Adresse personne morale      0..1
                                                                                          0..1                                                                                                                                              +FK_Personne physique_Client personne physiqueID = adresse personne physiqueID)
                                                                                                                                                                                                                                                                (adresse                                                                                                (adresse personne moraleID = adresse personne moraleID)
                                 -   nom                                                                                                                                                                                                                                                   «FK»                                                                                                  «FK»
             1..*                                                                                                                                                                                                                        +FK_Personne physique_Adresse personne physique
                                                                                                                                                                                                                                                                            0..1                                                                        +FK_Personne morale_Adresse personne morale morale_Client 0..1
                                                                                                                                                                                                                                                                                                                                                                                       +FK_Personne
                          1..*                                                       Adresse Entreprise                                 Adresse personne
                                                                                                                                                                                0..1                                                                               Personne physique                                                                                                                 Personne morale
                                                                        -   identité du destinataire et/ou service [0..1]   -   n° - Etape - Couloir - Escalier [0..1]
                                                                        -   entrée - Bât. - Immeuble - Résid. [0..1]        -   entrée - Bât. - Immeuble - Résid. [0..1]                                                                       «column»                                                                                                                         «column»
                                                                        -   numéro et libellé de la voie                    -   numéro et libellé de la voie                                                                                                                                                                                                                                                                                                  Activ ité NAF                              Forme j uridique
                                                                                                                                                                                                                                                    civilité                                                                          Langue                                         nom commercial
                                                                        -   mention spéciale - Commune géo. [0..1]          -   sce particulier de distrib. - lieu dit [0..1]                                                                       nom                                                                                                                              dénomination sociale
                                                                                                                                                                                                                                                    prénom                                                                                                                           n° TVA [0..1]                                                      «column»                                «column»
                                                                                                                                                                                                                                                                                                                              «column»
                     Commune                   Commune                                                                                                                                                                                         *pfK personne physiqueID :Integer                                                                                                *pfK personne moraleID :Integer                                             code NAF                                code
                                                                                                                                                                                                                                                                                                                                  nom                                                                                                                       libellé                                 libellé
                     française                 étrangère                                                                                                                                                                                        FK adresse personne physiqueID :Integer                                       *PK langueID :Integer                              FK adresse personne moraleID :Integer
                                                                                                                                                                                                                                                                                                                                                                                                                                                        *PK activité NAFID :Integer             *PK forme juridiqueID :Integer
              -      code INSEE
                                                                                                                                                                                                                                               «PK»                                                               «PK»                                                          «PK»
                                                                                                                                                                                                                                               +  PK_Personne physique(Integer)                                                                                                 +  PK_Personne morale(Integer)                                          «PK»                                    «PK»
                                                                                                                                                                                                                                                                                                                 +    PK_Langue(Integer)                                                                                                                +  PK_Activité NAF(Integer)             +  PK_Forme juridique(Integer)
                                                                                                                                                                                                                                               «FK»                                                        +PK_Langue                                                           «FK»
                                                                                                                                                                                                                                               +   FK_Personne physique_Adresse personne physique(Integer)                                                                      +   FK_Personne morale_Adresse personne morale(Integer)              +PK_Activité NAF         0..1 +PK_Forme juridique      0..1
                                                                                                                                                                                                                                               +   FK_Personne physique_Client(Integer)                                                                                         +   FK_Personne morale_Client(Integer)
                                                                                                                                                                                                                                                                                                                                                                                                                                               (activité NAFID = activité NAFID)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                     (forme juridiqueID = forme juridiqueID)
                                                                                                                                                                                                                                                                +PK_Personne physique                      (langueID = langueID)                                                   +PK_Personne morale1 +PK_Personne morale françaiseID = personne moraleID)«FK»
                                                                                                                                                                                                                                                                                                                                                                                                            (personne morale     1                                                    «FK»
                                                                                                                                                                                                                                                                        (personne physiqueID = personne physiqueID) «FK»                                                  (personne morale étrangèreID = morale française_Personne«FK» française_Activité NAF
                                                                                                                                                                                                                                                                                                                                                                                          +FK_Personne personne moraleID)
                                                                                                                                                                                                                                                                                                                                                                                                                     +FK_Personne+FK_Personne morale française_Forme juridique
                                                                                                                                                                                                                                                                                                                                                                                                                                   morale 0..1
                                                                                                                                                                                                                                                                                                                                                                                                                                   morale
                                                                                                                                                                                                                                                                                           «FK»                                                                                                 «FK»
                                                                                                                                                                                                                                                                                                                                                                                                                                                    Personne morale française
                                                                                                                                                                                                                                                                              +Personne physique 0..* +Langue 0..*                                +FK_Personne morale étrangère_Personne morale 0..1
                                                                                                                                                                                                                                                                                                                                                                                                                                       «column»
                                                                                                                                                                                                                                                                                                          parle                                                                 Personne morale étrangère                                  numéro SIREN
                                                                                                                                                                                                                                                                                                                                                                                                                                           n° TVA
                                                                                                                                                                                                                                                                                            «column»                                                             «column»                                                             *pfK personne morale françaiseID :Integer
                                                                                                                                                                                                                                                                                            FK langueID :Integer                                                 *pfK personne morale étrangèreID :Integer                             FK activité NAFID :Integer
                                                                                                                                                                                                                                                                                            FK personne physiqueID :Integer                                                                                                            FK forme juridiqueID :Integer
                                                                                                                                                                                                                                                                                                                                                                      «PK»
                                                                                                                                                                                                                                                                                            «FK»                                                                      +  PK_Personne morale étrangère(Integer)                                   «PK»
                                                                                                                                                                                                                                                                                            +   Langue(Integer)                                                       «FK»                                                                       +  PK_Personne morale française(Integer)
                                                                                                                                                                                                                                                                                            +   Personne physique(Integer)                                            +   FK_Personne morale étrangère_Personne morale(Integer)                  «FK»
                                                                                                                                                                                                                                                                                                                                                                                                                                                 +   FK_Personne morale française_Activité NAF(Integer)
                                                                                                                                                                                                                                                                                                                                                                                                                                                 +   FK_Personne morale française_Forme juridique(Integer)
                                                                                                                                                                                                                                                                                                                                                                                                                                                 +   FK_Personne morale française_Personne morale(Integer)




                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          30
Pourquoi ?




             31
« ceci n’est pas un livre »
                              32
33
Contact Librairie

                   -       nom
                   -       tél
                   -       e-mail




                           Commande

                       +    fac turer()



                                          0..1
                   1

    Destinataire                                   Facture

-   nom                                   -   c lient
-   adresse 1                             -   adresse 1
-   adresse 2                             -   adresse 2
-   c ode postal                          -   c ode postal
-   ville                                 -   ville
-   pays                                  -   n° TVA
                                          -   montant HT

                                          +   c alc uler MontantTTC()




                                                                        34
Présentation


 Services


  Entités


 Données

               35
Présentation


 Services


  Entités


 Données

               36
Réponse :

Une Entité n’existe que si au moins
     un Service la manipule

Un Service n’existe que si au moins
une IHM (ou un Client) en a besoin
                                      37
« Ubiquitous Language » ?




                            38
39
In Dictionnaire Philosophique - Didier-Pierre Chicaneau de Neuville (1762)
(merci à Christophe Thiry http://urba-si.blogspot.com)
                                                                             40
Merci



        41

Contenu connexe

En vedette

Garder la santé pendant vos déplacements
Garder la santé pendant vos déplacementsGarder la santé pendant vos déplacements
Garder la santé pendant vos déplacementsnovushealth
 
Sacate un diez leccion 8
Sacate un diez leccion 8Sacate un diez leccion 8
Sacate un diez leccion 8Miguel Rivera
 
Angel ron junto a banco popular ganan 325,3 millones € en 2013
Angel ron junto a banco popular ganan 325,3 millones € en 2013Angel ron junto a banco popular ganan 325,3 millones € en 2013
Angel ron junto a banco popular ganan 325,3 millones € en 2013Banco Popular
 
Prototype Flipty outil collaboratif de classe inversée - Design Metadata 2014
Prototype Flipty outil collaboratif de classe inversée - Design Metadata 2014Prototype Flipty outil collaboratif de classe inversée - Design Metadata 2014
Prototype Flipty outil collaboratif de classe inversée - Design Metadata 2014IRI
 
Gramatica de frances
Gramatica de francesGramatica de frances
Gramatica de francesAna Ribeiro
 
Varela_Zambrano_presentacionfinal
Varela_Zambrano_presentacionfinalVarela_Zambrano_presentacionfinal
Varela_Zambrano_presentacionfinalYriana
 
Etilen glicol alexis lema
Etilen glicol  alexis lemaEtilen glicol  alexis lema
Etilen glicol alexis lemaAlexis Lema
 
Spiritualite indienne
Spiritualite indienne Spiritualite indienne
Spiritualite indienne Josee Andree
 
Étanchéité des toits plats - Commercial, Industriel, Municipal - Solutions To...
Étanchéité des toits plats - Commercial, Industriel, Municipal - Solutions To...Étanchéité des toits plats - Commercial, Industriel, Municipal - Solutions To...
Étanchéité des toits plats - Commercial, Industriel, Municipal - Solutions To...SolutionsToiture
 
Panorama Nouveautés Parfums
Panorama Nouveautés ParfumsPanorama Nouveautés Parfums
Panorama Nouveautés ParfumsCinquième Sens
 
Les sept péchés capitaux
Les sept péchés capitauxLes sept péchés capitaux
Les sept péchés capitauxbaazevedo
 
Le monde en fêtes ddp
Le monde en fêtes ddpLe monde en fêtes ddp
Le monde en fêtes ddpryloune
 
Rebondir à l'ouest diaporama analyse forum
Rebondir à l'ouest diaporama analyse forumRebondir à l'ouest diaporama analyse forum
Rebondir à l'ouest diaporama analyse forumFrederic DANSETTE
 
Vaesolis Corporate 365 n°6
Vaesolis Corporate 365 n°6Vaesolis Corporate 365 n°6
Vaesolis Corporate 365 n°6vaesoliscorp
 
Presentacion tabaco julio 2912
Presentacion tabaco julio 2912Presentacion tabaco julio 2912
Presentacion tabaco julio 2912Miguel Rivera
 

En vedette (19)

Garder la santé pendant vos déplacements
Garder la santé pendant vos déplacementsGarder la santé pendant vos déplacements
Garder la santé pendant vos déplacements
 
Sacate un diez leccion 8
Sacate un diez leccion 8Sacate un diez leccion 8
Sacate un diez leccion 8
 
Angel ron junto a banco popular ganan 325,3 millones € en 2013
Angel ron junto a banco popular ganan 325,3 millones € en 2013Angel ron junto a banco popular ganan 325,3 millones € en 2013
Angel ron junto a banco popular ganan 325,3 millones € en 2013
 
Memoria anual 2010 - Asociación Española de Coolhunting
Memoria anual 2010 - Asociación Española de CoolhuntingMemoria anual 2010 - Asociación Española de Coolhunting
Memoria anual 2010 - Asociación Española de Coolhunting
 
E-LUXURY MARKET - 1
E-LUXURY MARKET - 1E-LUXURY MARKET - 1
E-LUXURY MARKET - 1
 
Prototype Flipty outil collaboratif de classe inversée - Design Metadata 2014
Prototype Flipty outil collaboratif de classe inversée - Design Metadata 2014Prototype Flipty outil collaboratif de classe inversée - Design Metadata 2014
Prototype Flipty outil collaboratif de classe inversée - Design Metadata 2014
 
Gramatica de frances
Gramatica de francesGramatica de frances
Gramatica de frances
 
Varela_Zambrano_presentacionfinal
Varela_Zambrano_presentacionfinalVarela_Zambrano_presentacionfinal
Varela_Zambrano_presentacionfinal
 
Etilen glicol alexis lema
Etilen glicol  alexis lemaEtilen glicol  alexis lema
Etilen glicol alexis lema
 
Spiritualite indienne
Spiritualite indienne Spiritualite indienne
Spiritualite indienne
 
Moustiers sainte-marie
Moustiers sainte-marieMoustiers sainte-marie
Moustiers sainte-marie
 
Étanchéité des toits plats - Commercial, Industriel, Municipal - Solutions To...
Étanchéité des toits plats - Commercial, Industriel, Municipal - Solutions To...Étanchéité des toits plats - Commercial, Industriel, Municipal - Solutions To...
Étanchéité des toits plats - Commercial, Industriel, Municipal - Solutions To...
 
Panorama Nouveautés Parfums
Panorama Nouveautés ParfumsPanorama Nouveautés Parfums
Panorama Nouveautés Parfums
 
Quarizate
QuarizateQuarizate
Quarizate
 
Les sept péchés capitaux
Les sept péchés capitauxLes sept péchés capitaux
Les sept péchés capitaux
 
Le monde en fêtes ddp
Le monde en fêtes ddpLe monde en fêtes ddp
Le monde en fêtes ddp
 
Rebondir à l'ouest diaporama analyse forum
Rebondir à l'ouest diaporama analyse forumRebondir à l'ouest diaporama analyse forum
Rebondir à l'ouest diaporama analyse forum
 
Vaesolis Corporate 365 n°6
Vaesolis Corporate 365 n°6Vaesolis Corporate 365 n°6
Vaesolis Corporate 365 n°6
 
Presentacion tabaco julio 2912
Presentacion tabaco julio 2912Presentacion tabaco julio 2912
Presentacion tabaco julio 2912
 

Plus de VISEO

Tendances Mobile 2018
Tendances Mobile 2018Tendances Mobile 2018
Tendances Mobile 2018VISEO
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
What’s new in Microsoft ALM 2013, hosted in Windows Azure, VISUAL STUDIO ONLI...
What’s new in Microsoft ALM 2013, hosted in Windows Azure, VISUAL STUDIO ONLI...What’s new in Microsoft ALM 2013, hosted in Windows Azure, VISUAL STUDIO ONLI...
What’s new in Microsoft ALM 2013, hosted in Windows Azure, VISUAL STUDIO ONLI...VISEO
 
Devoxx France 2013: CSS, more or Less - http://www.devoxx.com/display/FR13/CS...
Devoxx France 2013: CSS, more or Less - http://www.devoxx.com/display/FR13/CS...Devoxx France 2013: CSS, more or Less - http://www.devoxx.com/display/FR13/CS...
Devoxx France 2013: CSS, more or Less - http://www.devoxx.com/display/FR13/CS...VISEO
 
Css.more.or.less
Css.more.or.lessCss.more.or.less
Css.more.or.lessVISEO
 
Phonegap
PhonegapPhonegap
PhonegapVISEO
 
Aperçu de RequireJS
Aperçu de RequireJSAperçu de RequireJS
Aperçu de RequireJSVISEO
 
Faire du-code-centre-sur-l-humain devoxx
Faire du-code-centre-sur-l-humain devoxxFaire du-code-centre-sur-l-humain devoxx
Faire du-code-centre-sur-l-humain devoxxVISEO
 
Sexy.le.developpement.web.mobile
Sexy.le.developpement.web.mobileSexy.le.developpement.web.mobile
Sexy.le.developpement.web.mobileVISEO
 

Plus de VISEO (9)

Tendances Mobile 2018
Tendances Mobile 2018Tendances Mobile 2018
Tendances Mobile 2018
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
What’s new in Microsoft ALM 2013, hosted in Windows Azure, VISUAL STUDIO ONLI...
What’s new in Microsoft ALM 2013, hosted in Windows Azure, VISUAL STUDIO ONLI...What’s new in Microsoft ALM 2013, hosted in Windows Azure, VISUAL STUDIO ONLI...
What’s new in Microsoft ALM 2013, hosted in Windows Azure, VISUAL STUDIO ONLI...
 
Devoxx France 2013: CSS, more or Less - http://www.devoxx.com/display/FR13/CS...
Devoxx France 2013: CSS, more or Less - http://www.devoxx.com/display/FR13/CS...Devoxx France 2013: CSS, more or Less - http://www.devoxx.com/display/FR13/CS...
Devoxx France 2013: CSS, more or Less - http://www.devoxx.com/display/FR13/CS...
 
Css.more.or.less
Css.more.or.lessCss.more.or.less
Css.more.or.less
 
Phonegap
PhonegapPhonegap
Phonegap
 
Aperçu de RequireJS
Aperçu de RequireJSAperçu de RequireJS
Aperçu de RequireJS
 
Faire du-code-centre-sur-l-humain devoxx
Faire du-code-centre-sur-l-humain devoxxFaire du-code-centre-sur-l-humain devoxx
Faire du-code-centre-sur-l-humain devoxx
 
Sexy.le.developpement.web.mobile
Sexy.le.developpement.web.mobileSexy.le.developpement.web.mobile
Sexy.le.developpement.web.mobile
 

Devoxx 2012 Gregory Weinbach - il n y a pas de bon modele metier

  • 1. Il n’y a pas de “bon” Modèle Métier Grégory Weinbach @gweinbach http://mdblog.fr 1
  • 3. Grégory Weinbach http://mdblog.fr - @gweinbach hanoi(X) :- move(X,left,right,center). move(1,X,Y,_) :- write('Move top disk from '), write(X), write(' to '), write(Y), nl. move(N,X,Y,Z) :- #include "stdio.h" M is N-1, move(M,X,Z,Y), move(1,X,Y,_), move(M,Z,Y,X). 3
  • 4. 4
  • 5. Il faut concevoir pour l’utilisateur 5
  • 6. Il faut concevoir avec l’utilisateur 6
  • 7. 7
  • 8. Modéliser le Métier de l’utilisateur 8
  • 9. Présentation Services Entités Données 9
  • 10. 10
  • 11. Réponse : Une Entité doit représenter un Concept du métier 11
  • 12. Tuyau Ev acuation 1 Siphon 1 Ev ier 1..* Tuyau PVC 1 Raccordement Tuyau de cuiv re 1..* Arrivée d'eau Arriv ée d'eau Arriv ée d'eau chaude froide 1 1 12
  • 13. 13
  • 14. 14
  • 16. 16
  • 17. 17
  • 18. 18
  • 19. 19
  • 20. 20
  • 21. 21
  • 22. 22
  • 23. Liv re titre auteur éditeur ISBN copyright nombre de pages hauteur largeur épaisseur /volume illustration couverture texte quatrième de couverture stock date de disponibilité date de réimpression dépôt légal type de papier type de reliure texte brut texte mis en forme collection tome numéro allée numéro position photo de l'auteur présentation de l'auteur opérations spéciales prix de vente public note des lecteurs note des critiques autres choix des lecteurs 23
  • 24. 24
  • 25. Pas un mais des « Livres » Pas un mais des Modèles 25
  • 26. Un Modèle Métier = Un Contexte = Un Domaine 26
  • 27. Choisissons un Contexte : La Vente aux Librairies 27
  • 28. Coordonnées Client 0..* Coordonnées de contact Entreprise Personne parle Pays Langue - type - nom commercial - civilité 0..* 0..* - code ISO - téléphone [0..1] - dénomination sociale - nom - nom - libellé - téléphone mobile [0..1] - n° TVA [0..1] - prénom - fax [0..1] - e-mail [0..1] 1 Forme j uridique Adresse postale Entreprise Entreprise - code étrangère française 0..1 - libellé - numéro SIREN 1 - n° TVA 1 Activ ité NAF 0..1 1 - code NAF Code postal - libellé - code Commune 0..1 - nom 1..* 1..* Adresse Entreprise Adresse personne 0..1 - identité du destinataire et/ou service [0..1] - n° - Etape - Couloir - Escalier [0..1] - entrée - Bât. - Immeuble - Résid. [0..1] - entrée - Bât. - Immeuble - Résid. [0..1] - numéro et libellé de la voie - numéro et libellé de la voie - mention spéciale - Commune géo. [0..1] - sce particulier de distrib. - lieu dit [0..1] Commune Commune française étrangère - code INSEE 28
  • 29. Coordonnées Client 0..* Coordonnées de contact Entreprise Personne parle Pays Langue - type - nom commercial - civilité 0..* 0..* - code ISO - téléphone [0..1] - dénomination sociale - nom - nom - libellé - téléphone mobile [0..1] - n° TVA [0..1] - prénom - fax [0..1] - e-mail [0..1] 1 Forme j uridique Adresse postale Entreprise Entreprise - code étrangère française 0..1 - libellé - numéro SIREN 1 - n° TVA 1 Activ ité NAF 0..1 1 - code NAF Code postal - libellé - code Commune 0..1 - nom 1..* 1..* Adresse Entreprise Adresse personne 0..1 - identité du destinataire et/ou service [0..1] - n° - Etape - Couloir - Escalier [0..1] - entrée - Bât. - Immeuble - Résid. [0..1] - entrée - Bât. - Immeuble - Résid. [0..1] - numéro et libellé de la voie - numéro et libellé de la voie - mention spéciale - Commune géo. [0..1] - sce particulier de distrib. - lieu dit [0..1] Commune Commune française étrangère - code INSEE 29
  • 30. JoinCommuneToCode Commune étrangère postal appartient à Client «column» «column» «column» *pfK commune étrangèreID :Integer «column» FK code postalID :Integer FK communeID :Integer *PK clientID :Integer FK communeID :Integer +PK_Client «PK» «FK» + PK_Commune étrangère(Integer) «PK» 1 «FK» + Commune(Integer) «FK» + PK_Client(Integer) + Code postal(Integer) +Commune + FK_Commune étrangère_Commune(Integer) + Commune(Integer) +Commune 0..* +PK_Client +PK_Client 1 1..* (clientID = clientID) +Code postal 1..* +FK_Commune étrangère_Commune (communeID = communeID) 0..1 «FK» (code postalID = code postalID) = communeID) (communeID (commune étrangèreID = communeID) +FK_Coordonnées_Client 0..* «FK» «FK» «FK» «FK» +PK_Code postal +PK_Commune +PK_Commune +PK_Commune 1 Coordonnées Pays Code postal Commune «column» *PK coordonnéesID :Integer «column» code ISO «column» «column» FK clientID :Integer code nom libellé *PK code postalID :Integer *PK communeID :Integer *PK paysID :Integer +PK_Commune «PK» + PK_Coordonnées(Integer) +PK_Coordonnées +PK_Code postal «PK» «PK» 1 «PK» «FK» 1 + PK_Pays(Integer) + PK_Code postal(Integer) + PK_Commune(Integer) 1 + FK_Coordonnées_Client(Integer) +PK_Pays 1 +PK_Commune françaiseID = communeID) (commune 1 +PK_Coordonnées 1 (paysID = paysID) (coordonnées de contactID = coordonnéesID) (code postalID = code postalID) = communeID) (communeID «FK» +FK_Commune française_Commune 0..1 (adresse postaleID = coordonnéesID) «FK» «FK» +FK_Adresse postale_Pays «FK» «FK» +FK_Coordonnées de contact_Coordonnées 0..1 «FK» Commune française Adresse postale Coordonnées de contact +FK_Adresse postale_Code postal «column» Coordonnées Client «column» +FK_Adresse postale_Coordonnées «column» +FK_Adresse postale_Commune code INSEE 0..* *pfK adresse postaleID :Integer *pfK commune françaiseID :Integer type téléphone [0..1] 0..1 FK code postalID :Integer 1 *FK communeID :Integer téléphone mobile [0..1] FK paysID :Integer «PK» fax [0..1] + PK_Commune française(Integer) e-mail [0..1] «FK» *pfK coordonnées de contactID :Integer «PK» + FK_Commune française_Commune(Integer) + PK_Adresse postale(Integer) «PK» «FK» +PK_Commune française Coordonnées de contact Entreprise Personne + PK_Coordonnées de contact(Integer) + FK_Adresse postale_Coordonnées(Integer) Pays parle Langue + FK_Adresse postale_Code postal(Integer) «FK» (personne physiqueID = clientID) - type - nom commercial - civilité 0..* 0..* + FK_Coordonnées de contact_Coordonnées(Integer) «FK» + FK_Adresse postale_Commune(Integer) (commune françaiseID = commune françaiseID) - code ISO - téléphone [0..1] - dénomination sociale - nom - nom + FK_Adresse postale_Pays(Integer) - libellé «FK» - téléphone mobile [0..1] - n° TVA [0..1] - prénom (personne moraleID = clientID) - fax [0..1] (adresse+PK_Adresse postale = adresse(adresse personne moraleID = adresse postaleID) personne physiqueID 1 +PK_Adresse postale postaleID) 1 - e-mail [0..1] «FK» «FK» +FK_Adresse personne physique_Adresse postale 0..1 «FK» +FK_Adresse personne morale_Adresse postale 0..1 +Commune française 1..* 1 Adresse personne physique Adresse personne morale appartient à «column» «column» «column» Forme j uridique n° - Etape - Couloir - Escalier [0..1] identité du destinataire et/ou service [0..1] FK commune françaiseID :Integer Adresse postale Entreprise Entreprise entrée - Bât. - Immeuble - Résid. [0..1] entrée - Bât. - Immeuble - Résid. [0..1] - code numéro et libellé de la voie numéro et libellé de la voie étrangère française «FK» 0..1 - libellé sce particulier de distrib. - lieu dit [0..1] mention spéciale - Commune géo. [0..1] + Commune française(Integer) - numéro SIREN *pfK adresse personne physiqueID :Integer *pfK adresse personne moraleID :Integer 1 - n° TVA «PK» «PK» 1 Activ ité NAF + PK_Adresse personne physique(Integer) + PK_Adresse personne morale(Integer) 0..1 «FK» «FK» 1 - code NAF + FK_Adresse personne physique_Adresse postale(Integer) + FK_Adresse personne morale_Adresse postale(Integer) Code postal - libellé - code Commune +PK_Adresse personne physique 0..1 +PK_Adresse personne morale 0..1 0..1 +FK_Personne physique_Client personne physiqueID = adresse personne physiqueID) (adresse (adresse personne moraleID = adresse personne moraleID) - nom «FK» «FK» 1..* +FK_Personne physique_Adresse personne physique 0..1 +FK_Personne morale_Adresse personne morale morale_Client 0..1 +FK_Personne 1..* Adresse Entreprise Adresse personne 0..1 Personne physique Personne morale - identité du destinataire et/ou service [0..1] - n° - Etape - Couloir - Escalier [0..1] - entrée - Bât. - Immeuble - Résid. [0..1] - entrée - Bât. - Immeuble - Résid. [0..1] «column» «column» - numéro et libellé de la voie - numéro et libellé de la voie Activ ité NAF Forme j uridique civilité Langue nom commercial - mention spéciale - Commune géo. [0..1] - sce particulier de distrib. - lieu dit [0..1] nom dénomination sociale prénom n° TVA [0..1] «column» «column» «column» Commune Commune *pfK personne physiqueID :Integer *pfK personne moraleID :Integer code NAF code nom libellé libellé française étrangère FK adresse personne physiqueID :Integer *PK langueID :Integer FK adresse personne moraleID :Integer *PK activité NAFID :Integer *PK forme juridiqueID :Integer - code INSEE «PK» «PK» «PK» + PK_Personne physique(Integer) + PK_Personne morale(Integer) «PK» «PK» + PK_Langue(Integer) + PK_Activité NAF(Integer) + PK_Forme juridique(Integer) «FK» +PK_Langue «FK» + FK_Personne physique_Adresse personne physique(Integer) + FK_Personne morale_Adresse personne morale(Integer) +PK_Activité NAF 0..1 +PK_Forme juridique 0..1 + FK_Personne physique_Client(Integer) + FK_Personne morale_Client(Integer) (activité NAFID = activité NAFID) (forme juridiqueID = forme juridiqueID) +PK_Personne physique (langueID = langueID) +PK_Personne morale1 +PK_Personne morale françaiseID = personne moraleID)«FK» (personne morale 1 «FK» (personne physiqueID = personne physiqueID) «FK» (personne morale étrangèreID = morale française_Personne«FK» française_Activité NAF +FK_Personne personne moraleID) +FK_Personne+FK_Personne morale française_Forme juridique morale 0..1 morale «FK» «FK» Personne morale française +Personne physique 0..* +Langue 0..* +FK_Personne morale étrangère_Personne morale 0..1 «column» parle Personne morale étrangère numéro SIREN n° TVA «column» «column» *pfK personne morale françaiseID :Integer FK langueID :Integer *pfK personne morale étrangèreID :Integer FK activité NAFID :Integer FK personne physiqueID :Integer FK forme juridiqueID :Integer «PK» «FK» + PK_Personne morale étrangère(Integer) «PK» + Langue(Integer) «FK» + PK_Personne morale française(Integer) + Personne physique(Integer) + FK_Personne morale étrangère_Personne morale(Integer) «FK» + FK_Personne morale française_Activité NAF(Integer) + FK_Personne morale française_Forme juridique(Integer) + FK_Personne morale française_Personne morale(Integer) 30
  • 32. « ceci n’est pas un livre » 32
  • 33. 33
  • 34. Contact Librairie - nom - tél - e-mail Commande + fac turer() 0..1 1 Destinataire Facture - nom - c lient - adresse 1 - adresse 1 - adresse 2 - adresse 2 - c ode postal - c ode postal - ville - ville - pays - n° TVA - montant HT + c alc uler MontantTTC() 34
  • 35. Présentation Services Entités Données 35
  • 36. Présentation Services Entités Données 36
  • 37. Réponse : Une Entité n’existe que si au moins un Service la manipule Un Service n’existe que si au moins une IHM (ou un Client) en a besoin 37
  • 39. 39
  • 40. In Dictionnaire Philosophique - Didier-Pierre Chicaneau de Neuville (1762) (merci à Christophe Thiry http://urba-si.blogspot.com) 40
  • 41. Merci 41