Une “classe association”, qu’est-ce que c’est ?

Tentative de définition d’une classe association

Exemple de classe association

Une “classe association”, qu’est-ce que c’est ?

Si vous avez été amené à modéliser des concepts métier (un diagramme de classe au sens UML) ou plus simplement à devoir lire un diagramme de classe, alors la représentation ci-dessus ne vous est peut-être pas inconnue.

Mais que signifie-t-elle réellement ? Comment la lire et quand l’utiliser à bon escient ? Tel est l’objet de cet article qui, je l’espère, vous aidera à mieux comprendre la technique de la classe association.

En modélisation UML des données, une “classe association” est une classe à la jonction de deux autres classes. Elle porte des informations, que l’on appelle “attributs”, qui sont en dépendance directe des deux autres classes et qui ne pourraient se mettre ni dans l’une, ni dans l’autre.

Bon, vous me direz qu’avec cela, on n’est pas beaucoup plus avancé. Je vais donc illustrer par des exemples. Je préciserais quand même que cet article s’adresse plutôt à des gens qui savent déjà un peu modéliser. A la fin, je vous donnerai une astuce pour vous passer de l’utilisation d’une classe association. Cela permettra aux plus néophytes de se sortir des situations complexes.

Quand peut-il y avoir une classe association ?

Exemple de classe association

Il ne peut y avoir une classe association que si l’association entre les deux autres classes a de part et d’autre une multiplicité maximum égale à “plusieurs”, représentée par le symbole “*”.

Dans l’exemple ci-dessus, il y a bien “*” du côté du concept A et du concept B, il est donc possible de mettre une classe association. Dans tous les autres cas, cela constituerait une erreur de modélisation. Pour information, la valeur de la multiplicité minimum (0 ou 1) n’entre pas en ligne de compte.

En synthèse, voici la liste des cas envisageables :

  • Concept A 0 ou 1..1 —————- 0 ou 1..* Concept B : pas de classe association possible
  • Concept A 0 ou 1..* —————– 0 ou 1..1 Concept B : pas de classe association possible
  • Concept A 0 ou 1..* —————– 0 ou 1..* Concept B : classe association possible

Y a-t-il toujours une classe association ?

Exemple de cas sans classe association

On pourrait penser que dès lors qu’il y a une association entre deux classes avec “*” en multiplicité maximum, alors il y a forcément une classe association. Cela est vrai si l’on se place du point de vue d’un développeur fabriquant sa base de données. Mais lorsqu’on travaille à un niveau conceptuel métier, ce qui est le cas lorsqu’on rédige un cahier des charges, alors cela n’est plus du tout systématique.

Pour illustrer cela, je vais prendre un exemple simple. Imaginons que vous deviez rédiger un cahier des charges pour gérer les traducteurs d’une maison d’édition. Un traducteur peut traduire une à plusieurs (*) langues et une même langue peut être traduite par un à plusieurs (*) traducteurs. Le système à implémenter devra donc permettre de renseigner cela et de dire précisément quel traducteur traduit quelle(s) langue(s).

Exemple d'association many to many

Dit plus clairement, le traducteur François traduit l’anglais et l’espagnol et la traductrice Claire traduit l’anglais et l’allemand. Un traducteur se caractérise par son nom et sa date d’entrée dans la maison d’éditions (ce sont ses attributs) et une langue se caractérise par son nom. Souvenez-vous ce que j’ai écrit plus haut : “une classe association vient porter des informations, que l’on appellera “attributs”, qui sont en dépendance directe des deux autres classes“. Dans le cas exposé ici, aucun attribut n’est en dépendance à la fois du traducteur et de la langue : nul besoin de représenter une classe association dans la vision “métier” des choses.

Exemple de cas avec une classe association

Toujours dans le cadre de notre maison d’édition, vous devez à présent gérer le fait qu’un traducteur n’a pas le même niveau de maîtrise pour chacune des langues qu’il pratique. François a l’anglais pour langue maternelle et a un niveau courant en espagnol. Quant à Claire, elle est bilingue sur l’anglais et l’allemand.

Où mettre cette nouvelle information qu’est le “niveau” et qui est très importante pour le métier ? Comment représenter graphiquement le fait que pour chaque occurrence de couple “traducteur – langue”, je dois pouvoir indiquer le niveau de maîtrise ?

Option 1

Exemple d'association many to many

Option 1 : je dis que le niveau est un nouvel attribut du traducteur. Problème : le niveau que j’attribuerai au traducteur sera le même pour toutes les langues qu’il traite. Pourquoi ? Parce que l’attribut “niveau” du concept “Traducteur” ne peut prendre qu’une seule valeur à un instant T, donc si je dis que François a un niveau “langue maternelle”, cette valeur vaudra pour toutes les langues auxquelles il est rattaché : l’anglais et l’espagnol. Or, au regard de l’énoncé, on sait que cela est faux.

Option 2

Exemple d'association many to many

Option 2 : je mets le niveau sur la langue. Quelques secondes de réflexion suffisent à comprendre que cela n’est pas non plus un choix pertinent.

Option 3

Exemple de classe association

Option 3 : je fais appel à la classe association, que je pourrais appeler “Niveau” et sur laquelle je mettrai l’attribut “libellé”, la valeur de ce niveau dépendant à la fois du traducteur et de la langue.

Une fois traduit en termes métier, cette représentation graphique signifie bien que pour chaque couple “Traducteur – Langue”, je pourrai renseigner le niveau adéquat.

Ainsi :

  • François – Anglais – Langue maternelle
  • François – Espagnol – Courant
  • Claire – Anglais – Bilingue
  • Claire – Allemand – Bilingue

Le piège derrière la classe association

On pourrait avoir le réflexe de systématiquement utiliser la classe association dès lors que les principes précédents sont respectés : association entre deux classes avec “*” de chaque côté et présence d’au moins un attribut en dépendance directe des deux classes. Ce serait cependant une erreur de ne pas prendre un temps de réflexion pour bien approfondir le sujet.

En effet, la classe association a un signification bien précise et est porteuse d’une contrainte forte que je vais illustrer via un deuxième exemple.

Cas concret

Problématique à résoudre

Vous devez rédiger un cahier des charges pour une plateforme permettant à des écoliers de faire des exercices en ligne. Un écolier peut passer plusieurs exercices et un même exercice peut bien sûr être passé par plusieurs écoliers, ceux d’une même classe par exemple.

Pour chaque passage d’un exercice, le métier a besoin de pouvoir consulter la date de passage ainsi que le score obtenu par l’écolier.

Exemple de classe association

La classe association comme solution “réflexe”

Premier réflexe, naturel : je crée une classe association “Passage” où je vais stocker les deux attributs “date” et “score”.

Cela pourrait donc donner :

  • Nadia – Exercice 1 – 20/05/2021 10h05 – 78%
  • Nadia – Exercice 2 – 20/05/2021 11h01 – 95%
  • Adrien – Exercice 1 – 21/05/2021 08h33 – 80%
  • Adrien – Exercice 2 – 20/05/2021 08h45 – 63%
  • Etc.

A priori, tout va bien. J’enregistre les informations souhaitées et mon système fonctionne. J’ai cependant oublier de poser une question primordiale à mon interlocuteur métier : un écolier peut-il passer plusieurs fois le même exercice ? Par exemple pour le refaire s’il a obtenu un score insuffisant au premier passage.

Ne tombez pas dans le piège de la classe association systématique

Car c’est là le piège de la classe association : cette représentation implique qu’il ne peut pas y avoir deux occurrences d’un même couple de classes ou, pour illustrer avec l’exemple, cela signifie que Nadia ne pourra pas passer plus d’une fois chacun des exercices mis à sa disposition. Un seul passage autorisé pour l’exercice 1, l’exercice 2, etc.

Exemple de jeu de données

Pour bien comprendre cela, il faut se plonger un instant dans la base de données. Que va-t-il se passer lorsque Nadia va réaliser l’exercice 1 ? Le système va automatiquement créer une occurrence de classe association dont l’identifiant sera composé de celui de Nadia (écolière n° 345) et de celui de l’exercice (n° 61). Et comme il ne peut pas exister en base de données deux occurrences de classe ayant le même identifiant, cela signifie bien que le couple “Nadia – Exercice 1” ne pourra pas être enregistré deux fois.

L’impact métier dans ce cas précis est donc que l’écolier ne peut pas refaire plusieurs fois un même exercice en vue de s’améliorer.

Conséquence du piège

L’une des première choses à faire lorsque vous pensez représenter une classe association, c’est de bien s’assurer auprès du métier qu’il ne peut pas y avoir de répétition (plusieurs occurrences) d’un même couple de classes.

Dans l’exemple de la maison d’édition et des traducteurs, une fois que l’on a indiqué que l’anglais est la langue maternelle de François, cela n’aurait pas de sens de faire ensuite une deuxième occurrence pour dire qu’il est bilingue sur cette même langue. Donc, dans ce cas, la classe association est parfaitement utilisée.

En revanche, dans le cas des écoliers et des exercices, si le métier vous dit qu’il s’agit d’exercices :

  • à passage unique, alors la classe association se justifie pleinement,
  • pouvant être passés plusieurs fois afin de s’entraîner et de progresser, alors la classe association n’est pas la bonne représentation graphique.

Si l’on ne clarifie pas cela au plus tôt avec le métier, l’impact sur le système développé peut être énorme, et surtout très coûteux. En effet, imaginons que vous donniez votre modèle avec la classe association au développeur. Lui comprend normalement très bien la problématique exposée ci-dessus et les fonctionnalités qu’il développera répondront au besoin exprimé par votre schéma.

Je vous laisse réfléchir à la déconvenue du  métier lorsqu’il effectuera la recette et qu’il essaiera de passer une seconde fois un exercice… C’est tout votre système qu’il faudra revoir : modifier le cahier des charges, réécrire le code, refaire les tests unitaires, re livrer en environnement de recette, refaire les tests métier, cela entraînant bien sûr une dérive de délai et de coûts !

Comment éviter le piège ?

Exemple d'alternative à la classe association

Une fois que l’on a posé la question au métier et que l’on a compris qu’un même exercice doit pouvoir être fait plusieurs fois par un même écolier, que faire ? En effet, la classe association ne pouvant pas être utilisée, où mettre les informations de date de passage et de score ?

C’est très simple : le “Passage” reste bel et bien une classe mais :

  • elle sera rattachée à écolier et à exercice,
  • l’association entre écolier et exercice saute.

Cela donnera donc :

  • Un écolier fait aucun ou plusieurs passages et un passage est réalisé par un seul écolier.
  • Un exercice fait l’objet d’aucun ou plusieurs passages et un passage porte sur un seul exercice.

Autrement dit, j’ai cassé la relation avec multiplicité “*” entre écolier et exercice pour faire deux associations et cela exprime parfaitement le fait qu’un écolier puisse passer plusieurs fois le même exercice.

Pourquoi ? Vous demandez-vous peut-être…

Exemple de jeu de données

Tout simplement parce que dans le cas initial, l’identifiant de la classe association était composé des identifiants de l’écolier et de l’exercice, ce qui interdisait les doublons. Alors que dans le cas final, “Passage” étant une classe à part entière, elle a son propre identifiant, complètement indépendant de ceux de l’écolier et de l’exercice. Par conséquent, on peut en créer autant qu’on veut, Nadia peut passer 50 fois l’exercice 1 si elle le souhaite.

Une classe association peut-elle être rattachée à une autre classe ?

Si jamais vous vous posez la question, sachez que la réponse est oui. Au même titre que les autres classes de votre modèle, une classe association peut elle aussi être rattachée à une ou plusieurs autres classes.

Conclusion

Sur le principe, la technique de la classe association est assez simple à acquérir dès lors qu’on a compris la logique qui la sous-tend. Cependant, un usage trop systématique peut être fortement préjudiciable à la solution qui sera développée, aussi je vous recommande fortement de bien toujours penser à poser cette question de “peut-il y en avoir plusieurs ?”

Outre le fait que c’est un questionnement très pertinent pour comprendre le fonctionnement d’un métier et clarifier une attente, il vous permettra de modéliser puis de décrire de façon très précise l’attendu et ainsi éviter une incompréhension qui s’avèrera toujours coûteuse !

Pour en apprendre davantage sur la modélisation des données, vous pouvez également parcourir ces articles : 

https://soscahierdescharges.fr/modeliser-les-donnees-dans-un-cahier-des-charges/

https://soscahierdescharges.fr/diagramme-de-classe-les-bonnes-multiplicites/

https://soscahierdescharges.fr/diagramme-de-classe-7-clefs-pour-etre-compris/

N’hésitez pas à vous abonner à notre newsletter en bas de cette article. Postez un commentaire et venez partager votre expérience sur les sujets en lien avec les cahier des charges !

Tentative de définition d’une classe association

Exemple de classe association

Une “classe association”, qu’est-ce que c’est ?

Si vous avez été amené à modéliser des concepts métier (un diagramme de classe au sens UML) ou plus simplement à devoir lire un diagramme de classe, alors la représentation ci-dessus ne vous est peut-être pas inconnue.

Mais que signifie-t-elle réellement ? Comment la lire et quand l’utiliser à bon escient ? Tel est l’objet de cet article qui, je l’espère, vous aidera à mieux comprendre la technique de la classe association.

En modélisation UML des données, une “classe association” est une classe à la jonction de deux autres classes. Elle porte des informations, que l’on appelle “attributs”, qui sont en dépendance directe des deux autres classes et qui ne pourraient se mettre ni dans l’une, ni dans l’autre.

Bon, vous me direz qu’avec cela, on n’est pas beaucoup plus avancé. Je vais donc illustrer par des exemples. Je préciserais quand même que cet article s’adresse plutôt à des gens qui savent déjà un peu modéliser. A la fin, je vous donnerai une astuce pour vous passer de l’utilisation d’une classe association. Cela permettra aux plus néophytes de se sortir des situations complexes.

Quand peut-il y avoir une classe association ?

Exemple de classe association

Il ne peut y avoir une classe association que si l’association entre les deux autres classes a de part et d’autre une multiplicité maximum égale à “plusieurs”, représentée par le symbole “*”.

Dans l’exemple ci-dessus, il y a bien “*” du côté du concept A et du concept B, il est donc possible de mettre une classe association. Dans tous les autres cas, cela constituerait une erreur de modélisation. Pour information, la valeur de la multiplicité minimum (0 ou 1) n’entre pas en ligne de compte.

En synthèse, voici la liste des cas envisageables :

  • Concept A 0 ou 1..1 —————- 0 ou 1..* Concept B : pas de classe association possible
  • Concept A 0 ou 1..* —————– 0 ou 1..1 Concept B : pas de classe association possible
  • Concept A 0 ou 1..* —————– 0 ou 1..* Concept B : classe association possible

Y a-t-il toujours une classe association ?

Exemple de cas sans classe association

On pourrait penser que dès lors qu’il y a une association entre deux classes avec “*” en multiplicité maximum, alors il y a forcément une classe association. Cela est vrai si l’on se place du point de vue d’un développeur fabriquant sa base de données. Mais lorsqu’on travaille à un niveau conceptuel métier, ce qui est le cas lorsqu’on rédige un cahier des charges, alors cela n’est plus du tout systématique.

Pour illustrer cela, je vais prendre un exemple simple. Imaginons que vous deviez rédiger un cahier des charges pour gérer les traducteurs d’une maison d’édition. Un traducteur peut traduire une à plusieurs (*) langues et une même langue peut être traduite par un à plusieurs (*) traducteurs. Le système à implémenter devra donc permettre de renseigner cela et de dire précisément quel traducteur traduit quelle(s) langue(s).

Exemple d'association many to many

Dit plus clairement, le traducteur François traduit l’anglais et l’espagnol et la traductrice Claire traduit l’anglais et l’allemand. Un traducteur se caractérise par son nom et sa date d’entrée dans la maison d’éditions (ce sont ses attributs) et une langue se caractérise par son nom. Souvenez-vous ce que j’ai écrit plus haut : “une classe association vient porter des informations, que l’on appellera “attributs”, qui sont en dépendance directe des deux autres classes“. Dans le cas exposé ici, aucun attribut n’est en dépendance à la fois du traducteur et de la langue : nul besoin de représenter une classe association dans la vision “métier” des choses.

Exemple de cas avec une classe association

Toujours dans le cadre de notre maison d’édition, vous devez à présent gérer le fait qu’un traducteur n’a pas le même niveau de maîtrise pour chacune des langues qu’il pratique. François a l’anglais pour langue maternelle et a un niveau courant en espagnol. Quant à Claire, elle est bilingue sur l’anglais et l’allemand.

Où mettre cette nouvelle information qu’est le “niveau” et qui est très importante pour le métier ? Comment représenter graphiquement le fait que pour chaque occurrence de couple “traducteur – langue”, je dois pouvoir indiquer le niveau de maîtrise ?

Option 1

Exemple d'association many to many

Option 1 : je dis que le niveau est un nouvel attribut du traducteur. Problème : le niveau que j’attribuerai au traducteur sera le même pour toutes les langues qu’il traite. Pourquoi ? Parce que l’attribut “niveau” du concept “Traducteur” ne peut prendre qu’une seule valeur à un instant T, donc si je dis que François a un niveau “langue maternelle”, cette valeur vaudra pour toutes les langues auxquelles il est rattaché : l’anglais et l’espagnol. Or, au regard de l’énoncé, on sait que cela est faux.

Option 2

Exemple d'association many to many

Option 2 : je mets le niveau sur la langue. Quelques secondes de réflexion suffisent à comprendre que cela n’est pas non plus un choix pertinent.

Option 3

Exemple de classe association

Option 3 : je fais appel à la classe association, que je pourrais appeler “Niveau” et sur laquelle je mettrai l’attribut “libellé”, la valeur de ce niveau dépendant à la fois du traducteur et de la langue.

Une fois traduit en termes métier, cette représentation graphique signifie bien que pour chaque couple “Traducteur – Langue”, je pourrai renseigner le niveau adéquat.

Ainsi :

  • François – Anglais – Langue maternelle
  • François – Espagnol – Courant
  • Claire – Anglais – Bilingue
  • Claire – Allemand – Bilingue

Le piège derrière la classe association

On pourrait avoir le réflexe de systématiquement utiliser la classe association dès lors que les principes précédents sont respectés : association entre deux classes avec “*” de chaque côté et présence d’au moins un attribut en dépendance directe des deux classes. Ce serait cependant une erreur de ne pas prendre un temps de réflexion pour bien approfondir le sujet.

En effet, la classe association a un signification bien précise et est porteuse d’une contrainte forte que je vais illustrer via un deuxième exemple.

Cas concret

Problématique à résoudre

Vous devez rédiger un cahier des charges pour une plateforme permettant à des écoliers de faire des exercices en ligne. Un écolier peut passer plusieurs exercices et un même exercice peut bien sûr être passé par plusieurs écoliers, ceux d’une même classe par exemple.

Pour chaque passage d’un exercice, le métier a besoin de pouvoir consulter la date de passage ainsi que le score obtenu par l’écolier.

Exemple de classe association

La classe association comme solution “réflexe”

Premier réflexe, naturel : je crée une classe association “Passage” où je vais stocker les deux attributs “date” et “score”.

Cela pourrait donc donner :

  • Nadia – Exercice 1 – 20/05/2021 10h05 – 78%
  • Nadia – Exercice 2 – 20/05/2021 11h01 – 95%
  • Adrien – Exercice 1 – 21/05/2021 08h33 – 80%
  • Adrien – Exercice 2 – 20/05/2021 08h45 – 63%
  • Etc.

A priori, tout va bien. J’enregistre les informations souhaitées et mon système fonctionne. J’ai cependant oublier de poser une question primordiale à mon interlocuteur métier : un écolier peut-il passer plusieurs fois le même exercice ? Par exemple pour le refaire s’il a obtenu un score insuffisant au premier passage.

Ne tombez pas dans le piège de la classe association systématique

Car c’est là le piège de la classe association : cette représentation implique qu’il ne peut pas y avoir deux occurrences d’un même couple de classes ou, pour illustrer avec l’exemple, cela signifie que Nadia ne pourra pas passer plus d’une fois chacun des exercices mis à sa disposition. Un seul passage autorisé pour l’exercice 1, l’exercice 2, etc.

Exemple de jeu de données

Pour bien comprendre cela, il faut se plonger un instant dans la base de données. Que va-t-il se passer lorsque Nadia va réaliser l’exercice 1 ? Le système va automatiquement créer une occurrence de classe association dont l’identifiant sera composé de celui de Nadia (écolière n° 345) et de celui de l’exercice (n° 61). Et comme il ne peut pas exister en base de données deux occurrences de classe ayant le même identifiant, cela signifie bien que le couple “Nadia – Exercice 1” ne pourra pas être enregistré deux fois.

L’impact métier dans ce cas précis est donc que l’écolier ne peut pas refaire plusieurs fois un même exercice en vue de s’améliorer.

Conséquence du piège

L’une des première choses à faire lorsque vous pensez représenter une classe association, c’est de bien s’assurer auprès du métier qu’il ne peut pas y avoir de répétition (plusieurs occurrences) d’un même couple de classes.

Dans l’exemple de la maison d’édition et des traducteurs, une fois que l’on a indiqué que l’anglais est la langue maternelle de François, cela n’aurait pas de sens de faire ensuite une deuxième occurrence pour dire qu’il est bilingue sur cette même langue. Donc, dans ce cas, la classe association est parfaitement utilisée.

En revanche, dans le cas des écoliers et des exercices, si le métier vous dit qu’il s’agit d’exercices :

  • à passage unique, alors la classe association se justifie pleinement,
  • pouvant être passés plusieurs fois afin de s’entraîner et de progresser, alors la classe association n’est pas la bonne représentation graphique.

Si l’on ne clarifie pas cela au plus tôt avec le métier, l’impact sur le système développé peut être énorme, et surtout très coûteux. En effet, imaginons que vous donniez votre modèle avec la classe association au développeur. Lui comprend normalement très bien la problématique exposée ci-dessus et les fonctionnalités qu’il développera répondront au besoin exprimé par votre schéma.

Je vous laisse réfléchir à la déconvenue du  métier lorsqu’il effectuera la recette et qu’il essaiera de passer une seconde fois un exercice… C’est tout votre système qu’il faudra revoir : modifier le cahier des charges, réécrire le code, refaire les tests unitaires, re livrer en environnement de recette, refaire les tests métier, cela entraînant bien sûr une dérive de délai et de coûts !

Comment éviter le piège ?

Exemple d'alternative à la classe association

Une fois que l’on a posé la question au métier et que l’on a compris qu’un même exercice doit pouvoir être fait plusieurs fois par un même écolier, que faire ? En effet, la classe association ne pouvant pas être utilisée, où mettre les informations de date de passage et de score ?

C’est très simple : le “Passage” reste bel et bien une classe mais :

  • elle sera rattachée à écolier et à exercice,
  • l’association entre écolier et exercice saute.

Cela donnera donc :

  • Un écolier fait aucun ou plusieurs passages et un passage est réalisé par un seul écolier.
  • Un exercice fait l’objet d’aucun ou plusieurs passages et un passage porte sur un seul exercice.

Autrement dit, j’ai cassé la relation avec multiplicité “*” entre écolier et exercice pour faire deux associations et cela exprime parfaitement le fait qu’un écolier puisse passer plusieurs fois le même exercice.

Pourquoi ? Vous demandez-vous peut-être…

Exemple de jeu de données

Tout simplement parce que dans le cas initial, l’identifiant de la classe association était composé des identifiants de l’écolier et de l’exercice, ce qui interdisait les doublons. Alors que dans le cas final, “Passage” étant une classe à part entière, elle a son propre identifiant, complètement indépendant de ceux de l’écolier et de l’exercice. Par conséquent, on peut en créer autant qu’on veut, Nadia peut passer 50 fois l’exercice 1 si elle le souhaite.

Une classe association peut-elle être rattachée à une autre classe ?

Si jamais vous vous posez la question, sachez que la réponse est oui. Au même titre que les autres classes de votre modèle, une classe association peut elle aussi être rattachée à une ou plusieurs autres classes.

Conclusion

Sur le principe, la technique de la classe association est assez simple à acquérir dès lors qu’on a compris la logique qui la sous-tend. Cependant, un usage trop systématique peut être fortement préjudiciable à la solution qui sera développée, aussi je vous recommande fortement de bien toujours penser à poser cette question de “peut-il y en avoir plusieurs ?”

Outre le fait que c’est un questionnement très pertinent pour comprendre le fonctionnement d’un métier et clarifier une attente, il vous permettra de modéliser puis de décrire de façon très précise l’attendu et ainsi éviter une incompréhension qui s’avèrera toujours coûteuse !

Pour en apprendre davantage sur la modélisation des données, vous pouvez également parcourir ces articles : 

https://soscahierdescharges.fr/modeliser-les-donnees-dans-un-cahier-des-charges/

https://soscahierdescharges.fr/diagramme-de-classe-les-bonnes-multiplicites/

https://soscahierdescharges.fr/diagramme-de-classe-7-clefs-pour-etre-compris/

N’hésitez pas à vous abonner à notre newsletter en bas de cette article. Postez un commentaire et venez partager votre expérience sur les sujets en lien avec les cahier des charges !

La concision dans un cahier des charges

La concision dans un cahier des charges

La concision dans un cahier des charges pourrait avoir la même définition que celle qu’en donne Le Larousse : « Qui explique beaucoup de choses en peu de mots. ». Il s’agit donc, dans un cahier des charges, de savoir faire bref, dense, sobre, par opposition à long, prolixe ou verbeux. En revanche, ce que ne dit pas le dictionnaire c’est qu’il s’agit d’une qualité acquise et non pas innée : cela s’apprend, et c’est là tout l’objet de cet article.

La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer (Saint-Exupéry)

Un autre terme à la mode, synonyme de « concision », est « impactant », cela s’appliquant tant à l’écrit qu’à l’oral. Une personne concise serait donc quelqu’un qui a su faire sien le propos de Saint-Exupéry et a dégraissé sa communication de tous les détails inutiles et développements superflus.

Attention cependant à ne pas confondre « concision » et « clarté. » Ce n’est pas parce qu’une histoire est courte qu’elle est pour autant compréhensible. De même, lorsqu’on s’assure que l’on ne peut plus rien enlever à son cahier des charges, il faut également s’assurer que l’on est resté exhaustif.

concision

Ainsi, la concision dans un cahier des charges consisterait à avoir l’écrit le plus compact possible tout en conservant le même niveau d’information nécessaire. Dit autrement, un texte A ayant le même contenu et niveau de détail qu’un texte B mais avec un nombre de mots ou de caractères inférieur sera plus concis, la concision pouvant être vue au niveau du cahier des charges dans toute sa complétude comme d’une phrase.

Pourquoi être concis dans un cahier des charges ?

Dès lors que l’écriture devient un acte « professionnel », nous remarquons que la concision est à la fois une contrainte pour le rédacteur et un critère de qualité pour le lecteur.

Par exemple, les articles journalistiques sont très souvent contraints par un nombre de caractères limité. Le journaliste n’a que rarement « carte blanche », son texte doit rentrer dans un encart dont la taille est fixée, il doit donc tout dire avec un nombre de mots (voire de caractères) restreint. Il a fait de la concision une véritable technique rédactionnelle, devant chercher à chaque instant la façon la plus brève d’exprimer une idée sans pour autant la dénaturer.

Quant au lecteur, il est pressé. Qu’il lise un article sur le Web, un cahier des charges ou un email, il souhaite accéder le plus rapidement possible à l’information dont il a besoin. A l’inverse, ce même lecteur féru de littérature ne reprochera pas à Marcel Proust ses digressions infinies. Ce sont deux horizons d’attente bien distincts, il ne faudrait pas se tromper de cible.

Ainsi, dans un contexte professionnel, les lecteurs de nos cahiers des charges nous seront reconnaissants de savoir aller à l’essentiel sans pour autant être brusque, de ne pas « tourner autour du pot » et de rédiger sans « effets littéraires ».

Techniques pour améliorer sa concision : cas pratique et théorie

6 principles of concision

Cas pratique

Prenons la phrase suivante : « M Lambert passe le relais du dossier à Mme Yun, MOA senior, elle assure notamment la formation des gestionnaires de la société ProtègeTout et assure les contrôles qualités sur l’ensemble des projets de  ProtègeTout. »

Etape 1 : analyser

Elle se compose de 34 mots. Que pouvons-nous déjà observer ?

  • L’adverbe « notamment » introduit une question à laquelle la phrase ne répond pas : quelles sont les autres tâches de Mme Yun ?
  • Le nom de la société ainsi que le verbe d’action « assure » sont répétés deux fois.

Ainsi, si l’on corrige ces premiers défauts, cela donnerait : « M Lambert passe le relais du dossier à Mme Yun, MOA senior, elle assure pour ProtègeTout la formation des gestionnaires et les contrôles qualités sur l’ensemble des projets. » 28 mots.

Etape 2 : raccourcir

A présent, zoomons d’avantage et intéressons-nous au premier tronçon de phrase : « M Lambert passe le relais du dossier à Mme Yun, MOA senior. »

L’idée est de chercher une expression équivalente mais plus courte. Par exemple, « passer le relais à » pourrait être remplacé par « transmettre », ce qui donnerait alors : « M Lambert transmet le dossier à Mme Yun, MOA senior. Elle assure pour ProtègeTout la formation des gestionnaires et les contrôles qualités sur l’ensemble des projets. » 26 mots.

Etape 3 : raccourcir encore

Passons à la seconde partie de la phrase : « Elle assure pour ProtègeTout la formation des gestionnaires et les contrôles qualités sur l’ensemble des projets. » Comme on a déjà fait sauter les répétitions, cela devient plus compliqué. Cependant l’expression « sur l’ensemble de » pourrait être soit supprimée, soit remplacée par « tous » si vraiment l’auteur tient à insister sur ce point. Nous optons pour la version la plus radicale : « M Lambert transmet le dossier à Mme Yun, MOA senior. Elle assure pour ProtègeTout la formation des gestionnaires et les contrôles qualités sur les projets. » 25 mots.

Etape 4 : raccourcir encore et encore

Enfin, une dernière étape. Etant donné que le texte comporte une énumération de deux éléments, nous allons utiliser la liste à puces.

« M Lambert transmet le dossier à Mme Yun, MOA senior. Elle assure pour ProtègeTout :

  • la formation des gestionnaires,
  • les contrôles qualités des projets. »

Cette façon de présenter nous permet d’économiser encore un mot, la conjonction de coordination « et », pour un nouveau résultat de 24 mots.

Donc, au total, sur une phrase initiale de 34 mots, sans dénaturer le sens et en restant phrasé, nous avons pu économiser 10 mots.

Cela peut sembler peu mais, rapporté à un document de par exemple 10 000 mots, cela représenterait, par projection, une économie de 2 942 mots, soit près de 30% du volume total ! Et un lecteur moyen qui lit à 250 mots par minute n’aurait plus besoin de 40 minutes mais de moins de 30 pour le parcourir en intégralité.

Vous pouvez tester votre vitesse de lecture ici : http://www.readingsoft.com/fr/test.html

Théorie : les 7  règles de concision

Vous trouverez ci-dessous quelques techniques utiles pour devenir plus concis à l’écrit, dont notamment des règles d’écriture empruntées à George Orwell (écrivain anglais du début du 20ème siècle : “1984”, “La ferme des animaux”…) indiquées entre guillemets.

  1. « N’utilisez jamais un mot long quand un mot bref fait l’affaire. » Seule entorse à cette règle : le respect des termes de votre domaine métier.
  2. « S’il est possible de supprimer un mot, supprimez-le. » Cela peut nécessiter de multiples relectures dédiées à la concision afin de trouver les formulations les plus simples et directes.
  3. « N’utilisez jamais la voix passive si vous pouvez utiliser la voix active. »
  4. « N’utilisez jamais une phrase étrangère, un terme scientifique ou un mot de jargon si vous songez à un terme équivalent dans le langage courant. » Seule entorse à cette règle : le respect des termes de votre domaine métier.
  5. Privilégiez les phrases courtes (au-delà de 4 à 6 verbes dans une même phrase, on entre dans la complexité) et mono message.
  6. Dès que vous le pouvez, faites une liste à puces car cela pousse notamment à factoriser le terme l’introduisant et donc à éviter les répétitions.
  7. « Brisez l’une de ces règles plutôt que de dire quoi que ce soit de barbare. »

En espérant que cette fiche vous aura fourni quelques techniques faciles à mettre en place pour ne plus écrire de façon plus concise.

Références :

comprendre le métier

Comprendre le métier ? Suivez le guide

Ce que nous explique notre interlocuteur au cours d’un atelier est obscur pour vous ? Voilà la problématique à laquelle cet article va tenter de répondre, sans dogmatisme mais en vous présentant des techniques qui ont déjà fait leur preuve. Il en existe certainement d’autres, nous comptons donc sur vous pour nous en faire part… 😉

Tout comme une anomalie, plus une incompréhension fonctionnelle est levée tardivement, plus elle coûte cher à prendre en compte.

Constat général : il est normal de ne pas tout comprendre

Tout d’abord, il faut admettre ce postulat de base : nous serons forcément confrontés, au cours de notre carrière, à l’incompréhension. Cela est vrai pour des internes, cela l’est encore plus lorsque l’on fait de la prestation puisque nous sommes amenés à régulièrement changer de mission, donc de domaine métier, de méthode de travail, d’outil, etc.

Ainsi, il faut avoir conscience :

  • qu’il est normal de ne pas toujours tout comprendre,
  • que l’on ne nous tiendra pas rigueur de ne pas comprendre dès lors que nous faisons des efforts pour changer la donne et que nos progrès sont perceptibles.

L’incompréhension se voit

Lorsqu’on est face à une personne et que l’on ne comprend pas ce qu’elle explique, que ce soit totalement ou partiellement, ne nous leurrons pas : elle le sent, c’est ce que l’on appelle l’intelligence émotionnelle. Sans que nous ayons à dire un mot, le langage corporel nous trahit :

  • sourire forcé,
  • voix chevrotante,
  • regard fuyant,
  • tics physiques (jouer avec son stylo par exemple),
  • se réfugier derrière l’écran de l’ordinateur pour prendre convulsivement des notes sans comprendre ce que l’on rédige,
  • poser des questions “bateaux” : « qui fait cela ? », « combien de fois cela arrive ? », « comment vous faites pour… ? ». Souvent inutiles, elles ne masquent pas du tout notre incompréhension.

Bien entendu, si l’on n’a rien compris durant l’entretien, il n’y a aucune raison pour que l’illumination vienne a posteriori, durant la phase de rédaction. Aucun miracle en perspective : le livrable sera médiocre, voire mauvais.

Pour en apprendre plus sur l’intelligence émotionnelle, je vous recommande la lecture de l’ouvrage de Daniel Goleman, dont vous trouverez un résumé ici : https://des-livres-pour-changer-de-vie.com/lintelligence-emotionnelle/

Ne pas avoir peur de dire qu’on ne comprend pas

Je ne sais pas comment vous faisiez durant votre scolarité mais, au cours de la mienne, j’ai constaté que certains élèves n’hésitaient pas à lever la main et interroger le professeur lorsqu’ils n’avaient pas compris une explication. Ce n’est pas pour autant qu’ils étaient considérés comme des incapables et beaucoup d’élèves moins téméraires étaient très contents que la question soit posée.

De là à penser que ces élèves interrogateurs réussissaient mieux leurs contrôles que ceux qui se contentaient d’accepter leurs incompréhensions, il y a un pas que je ne franchirai pas…

Dire qu’on ne comprend pas est une marque de professionnalisme

Par conséquent, pourquoi une chose qui allait de soi à l’école devient-elle problématique dans le milieu professionnel ? A-t-on donc si peur de perdre notre emploi, de manquer une promotion, de se voir refuser une augmentation de salaire parce que l’on questionne ? Notre ego est-il devenu si important pour que l’idée de montrer une faiblesse le hérisse ? Nous n’attendons pourtant pas d’un médecin qu’il diagnostique précisément ce dont nous souffrons uniquement sur la base de ce qu’il observe… Non, le médecin interroge son patient, l’enquêteur interroge le suspect, et pour faire un cahier des charges, nous questionnons notre client. C’est dans l’ordre des choses, cela fait partie du travail et il serait donc non-professionnel de ne pas le faire.

A ce titre, il faut savoir qu’un client se plaint rarement qu’un consultant le questionne, c’est plutôt le contraire qui s’observe. En effet, quel message envoyons-nous lorsque nous ne questionnons pas ? Car notre interlocuteur connaît notre CV, il sait que nous n’avons pas de connaissances dans tel ou tel domaine. Aussi, le fait de ne pas clarifier les choses ne lui fait pas se dire « ce consultant doit être très bon, il comprend tout sans poser une seule question, j’ai fait le bon choix. » Non, il s’inquiétera, n’aura pas confiance. Or, au début, la confiance est l’une des plus choses les plus difficiles à maintenir, elle se perd beaucoup plus vite qu’elle ne se gagne. Alors autant commencer à la conquérir le plus tôt possible, dès les premières minutes d’un échange.

Notre guide SOS : quelles postures adopter quand on ne comprend pas ?

A présent que les bases ont été jetées, intéressons-nous aux postures à adopter lorsqu’on ne comprend pas.

Il faut savoir identifier ce qui pose problème. Ainsi le « flou » possède son cycle de vie :

  • non identifié : je ne comprends pas une chose mais je ne sais même pas encore qu’elle existe,
  • identifié : je suis face à une chose que je ne comprends pas,
  • soumis : j’ai mis en place des mécanismes qui vont me permettre de comprendre,
  • résolu : j’ai fini pas réellement comprendre et je peux le démontrer.

Nous allons laisser de côté le premier état (« non identifié ») pour nous intéresser directement au flou identifié.

1 – Clarifier tout ce qui n’a pas été compris

Il faut comprendre que lorsque l’on rédige un cahier des charges, on peut être victime du syndrome de la page blanche ou, de la question blanche : on est “sec”, on ne sait pas quelles questions poser, un long blanc s’installe… Pour cela, le flou est du pain béni : c’est une source de questions qui va venir alimenter sans effort l’interview, une pépite à transformer.

Cas d’application. Votre interlocuteur vous transmet les informations suivantes :

« Nous voulons moderniser le système de gestion des règlements client. Il faut pouvoir indiquer au niveau d’un client un délai de règlement.

Nous avons besoin de pouvoir rapprocher les règlements constatés en banque avec les factures émises, comme ça nous pourrons identifier les factures non encore réglées.

On doit tracer toutes les actions de relance avec les réponses apportées par les clients. On veut pouvoir catégoriser les clients selon qu’ils sont bons payeurs, payeurs moyens ou très mauvais payeurs. En effet, on veut pouvoir blacklister des clients : avec certains ne plus renouveler de commandes et avec d’autres interrompre les contrats en cours. »

A titre personnel, beaucoup d’éléments me semblent obscurs : les délais de règlement, les actions de relance, les réponses apportées, même « commande », dans ce contexte, me donne des frissons. Alors comment faire en sorte que chacun de ces flous deviennent individuellement limpides et que tout fasse sens ?

Le sujet portant sur la gestion des règlements client, il semble judicieux de commencer par clarifier cela. Qu’est-ce qu’un client au sein de l’organisme ? Y a-t-il une typologie client ? Peut-on obtenir des exemples de client ?

Posez un “nuage de mots” pour visualiser les difficultés.

Le sujet portant sur la gestion des règlements client, il semble judicieux de commencer par clarifier cela. Qu’est-ce qu’un client au sein de l’organisme ? Y a-t-il une typologie client ? Peut-on obtenir des exemples de client ?

Si l’on reformule notre compréhension de ce qu’est un client en intégrant les exemples collectés et que notre interlocuteur acquiesce explicitement, c’est gagné : nous venons de chasser notre premier flou ! Il en reste encore beaucoup mais, au moins, nous avons une base solide sur laquelle avancer.

2 – Avoir un fil directeur (conducteur) pour comprendre pas à pas

Ensuite, c’est le principe de la pelote de laine : on tire le fil et on voit où cela nous mène. Pour cela, l’approche par l’exemple reste une valeur sûre.

Nous vous proposons ci-dessous un exemple de dialogue :

  • A. : « Si j’étais client chez vous, que pourrais-je faire ? Vous m’avez parlé de commande… »
  • Métier : « Oui, les clients nous passent des commandes »
  • A. : « Donc en tant que client, je peux vous passer plusieurs commandes j’imagine. Mais est-ce qu’une commande est passée par un seul client, moi en l’occurrence ? Ou est-ce qu’une commande peut être groupée, c’est-à-dire que je la partage avec un autre client par exemple ? »
  • Métier : « Non, la commande est passée par un seul client. »
  • A. : « C’est très clair. Est-ce que je peux en déduire qu’un règlement, le paiement donc, concerne une commande ? Peut-on régler plusieurs commandes avec un seul règlement ? »
  • Etc.

On le voit, l’idée est donc d’avancer pas à pas, par couple de concepts métier, sans se précipiter. Et tant qu’un couple n’est pas parfaitement compris, on ne change pas de sujet.

3 – IMPORTANT Contrôler que l’on a bien compris

Comment savoir si j’ai bien compris ?

  • une définition illustre chaque concept,
  • il y a au moins un exemple par concept,
  • j’ai reformulé le fonctionnement de ce couple de concepts et mon interlocuteur a validé intégralement ma compréhension.

Et si vous êtes chevronné vérifiez aussi :

  • que pour une association entre deux concepts, les quatre multiplicités sont présentes,
  • qu’un exemple clarifie les multiplicités les plus complexes, structurantes.

4 – Demander à voir concrètement les choses pour être sûr de comprendre

Un dernier point qui fonctionne bien si l’on travaille sur une application existante :  demander à son interlocuteur qu’il nous montre concrètement les choses. Cela est particulièrement efficace si nous n’avons pas les habilitations nécessaires pour aller voir par nous-mêmes (par exemple lorsqu’une évolution concerne des fonctionnalités d’administrateur et que vous ne l’êtes pas.)

J’espère que ces conseils vous seront utiles et vous aideront à entrer plus facilement dans un sujet complexe tout en conservant votre confiance en vous. N’hésitez pas à lire l’article suivant, qui vous éclairera également sur le sujet : https://soscahierdescharges.fr/modeliser-les-donnees-dans-un-cahier-des-charges/

N’hésitez pas à vous abonner à notre newsletter en bas de cette article. Postez un commentaire et venez partager votre expérience sur les sujets en lien avec les cahier des charges !

Générer un sommaire et le contrôler automatiquement ? C’est simple

Bonjour à tous,

dans la vidéo ci-dessous je vais vous présenter comment générer un sommaire et le contrôler très simplement à partir d’un plug-in Word appelé “BA.companion”, le compagnon de route pour qui veut rédiger un bon cahier des charges.

Cet outil propose bien d’autres fonctionnalités utiles à tout rédacteur, novice comme expérimenté, telles que la détection automatique de termes flous (ambigus) ou de redondance textuelle et la gestion des exigences. Cependant, j’ai tenu aujourd’hui à mettre l’accent sur le sommaire car il reflète votre cheminement de pensée et détermine toute la structure de votre livrable. Il est donc primordial de ne pas prendre cette activité à la légère !

Si d’autres améliorations automatisées vous intéressent, je vous invite à laisser un commentaire.

En complément de cette vidéo, vous pouvez également relire l’article suivant : Faire un sommaire correct en 7 clefs simples et efficaces

Vous êtes libre de vous inscrire à notre newsletter en dessous de l’article garantie 100% sans spam. Vous recevrez à cette occasion notre bonus, un mini guide pour bien commencer votre cahier des charges.

Faire un sommaire correct en 7 clefs simples et efficaces

Faire efficacement un sommaire
Faire un sommaire efficacement, avoir en un seul coup d’œil la vision complète du contenu du document

Quel intérêt à soigner son sommaire ?

Parce que le sommaire, autrement appelé “table des matières”, est la première chose que lit un commanditaire lorsqu’il ouvre votre cahier des charges (après la page de garde j’entends), il est primordial d’en soigner la présentation.

Continuer la lecture de Faire un sommaire correct en 7 clefs simples et efficaces

Cas élémentaire de modélisation des concepts métier

Vous ne savez pas comment démarrer un cahier des charges ? Voici un cas élémentaire de modélisation des concepts métier. Fiabilisation projet 100% garantie 😉

Continuer la lecture de Cas élémentaire de modélisation des concepts métier

Les productions d’un cahier des charges

L’efficacité d’un recueil du besoin dans le cadre d’un cahier des charges ou autre (EB, SFD, Epic, US, Feature) s’évalue en partie au regard du nombre des 4 « productions » clés qu’il a permis de collecter. C’est la collecte de ces productions qui va guider le questionnement, ceci ayant pour effet bénéfique d’augmenter le nombre de questions utiles et de garantir  vos résultats.

Continuer la lecture de Les productions d’un cahier des charges

Critères qualité du recueil des besoins

Objectiver par des critères simples la qualité de votre recueil des besoins ? Rendre compte comme un pro ? Rattraper l’inefficacité d’un interview ? Voici des critères tangibles et quantifiables. Ceux-ci devraient sans équivoque vous aider à sortir du pur ressenti post atelier  :

  • « Cela s’est plutôt bien passé, je suis content(e) » 
  • « Le métier trouve que je ne les comprends jamais » 
  • « J’ai été catastrophique, je n’ai rien compris »
  • « Je n’ai pas eu le temps de tout recueillir »…

pour passer à une analyse factuelle de votre efficience. Bref, de quoi vous protéger des éventuels ressentis de vos commanditaires, représentants métier et ainsi être serein sur vos performances projet.

Continuer la lecture de Critères qualité du recueil des besoins

L’outil que je devrais garder secret… pour fabriquer mes cahiers des charges

Aujourd’hui, je vous propose un article un peu spécial. Je vais vous parler, ou plutôt vous présenter sous forme de vidéo, un outil que je devrais garder secret et que j’utilise quasi quotidiennement pour fabriquer mes cahiers des charges. Il booste ma productivité, c’est BA.autoconcept.

Continuer la lecture de L’outil que je devrais garder secret… pour fabriquer mes cahiers des charges

Pourquoi modéliser les données dans un cahier des charges ?

Dans cet article, nous allons nous intéresser aux motivations, au “pourquoi” il est utile de modéliser les données dans un cahier des charges.

« Un bon croquis vaut mieux qu’un long discours. » (Napoléon Bonaparte)

Un premier constat

Modéliser les données est difficile

Oui, la modélisation des données est une compétence difficile à acquérir. Mais postulons qu’une école telle que Supinfo, par exemple, trouve un intérêt à enseigner UML[1] à ses étudiants, notamment le diagramme de classe, ou que le témoignage suivant de Jean-Christophe Hurpea (responsable du développement d’Ortho-CLinical Diagnostics) a de la valeur :

Continuer la lecture de Pourquoi modéliser les données dans un cahier des charges ?