|

Écrivez
à AILES ! |

Retour
vers programmation |

Retour
vers les questions UML |

C'est quoi, un "paradigme"
? |
|
|
Questionnaire UML
Lien fonctionnel - objet
[OMG],
[UML-UG]
|
Voilà une réponse qui n'en est pas vraiment une.
Il s'agit plus d'une hypothèse, d'un souhait qui permettrait,
à mon sens, de relier efficacement au sein d'un modèle UML :
- des spécifications fonctionnelles (exprimées au moyen des
cas d'utilisation) ;
- des modélisations objets (d'analyse et de conception).
La réponse tiendrait en un mot : Collaboration d'un ensemble
d'instances. |
C'est quoi, une
"collaboration d'un ensemble d'instances" ?
C'est tout simplement absent de tous vos AGL
(début 2002). Mais c'est bien présent dans le méta-modèle d'UML
1.4 :

figure 1 Instances des éléments de comportement du méta-modèle
UML1.4
Ce diagramme ne montre qu'une
partie des instances des éléments de comportement : il manque les interactions
(ce qui vous permet de visualiser les messages entre instances, dans
un diagramme de collaboration classique).
Reste la question : comment cela se
représente-t-il, et à quoi cela sert.
Cela se représente par une ellipse en pointillé.
Or, en UML, le seul autre symbole pointillé se retrouve avec les dépendances.
Cette ellipse permet de représenter des éléments
qui collaborent entre entre eux :
- soit pour réaliser une collaboration bien précise, et
[OMG],
dans son draft UML1.4 prend l'exemple des pattern ;
- soit pour réaliser une interface ou des
use-case, ce qui semble être le lien idéal entre les cas
d'utilisation (point de vue fonctionnel d'UML, où l'objet
n'intervient pas) et les interfaces
(point de vue objet, voir même "composant" d'UML, où
l'interface du système est clairement identifié, que ce soit au
niveau de l'Analyse
ou de la Conception
préliminaire ou détaillée).
Nous allons examiner le premier cas (réalisation de collaboration),
pour mieux illustrer la nature de ce symbole ("collaboration
d'ensemble d'instance"), avant d'aborder le second cas, qui
répond à la question de départ : comment, en UML, établir le lien
entre le paradigme fonctionnel et l'objet ?
Réalisation de collaboration :
Le draft UML1.4 d'[OMG]
prend essentiellement l'exemple du design pattern : on se trouve donc
au niveau Conception.

figure 2 Collaboration d'un ensemble d'instance dans le cadre d'un
design pattern
La figure 2 illustre le fait que 2
instances (une file d'appel et "barre graphique" qui
représente la capacité de la file d'appel ainsi que le nombre
d'appels dans la file) collaborent dans le cadre du design pattern
"observeur - observé".
Remarque : l'exemple est issu du draft UML1.4, section 3.66.2, sans
que le terme "SlidingBarIcon" ne soit jamais explicité...
on doit en deviner le sens à partir des 3 diagrammes qui utilisent
cette instance !
Il faut bien réaliser qu'une "collaboration
d'un ensemble d'instance" fonctionne comme un package
et peut contenir des diagrammes de collaboration (qui à leur tour
peuvent utiliser des "collaborations d'ensemble d'instances"
qui ... etc). La figure suivante illustre ce fait.

figure 3 : une collaboration incluant un diagramme de collaboration
La figure 3 illustre le fait que
l'on peut représenter la structure interne d'un design pattern.
Réalisation de cas d'utilisation et d'opération
Le lien entre paradigme fonctionnel (exprimé au
travers des cas d'utilisation, qui illustrent le fonctionnement
externe attendu par les utilisateurs externes du système
modélisé) et le paradigme objet (utilisé pour modélisé l'intérieur
du système via des classes d'analyses ou de conception) tient
presque en un seul diagramme tiré d'UML 1.4 :

figure 4 : réalisation d'opérations et de cas d'utilisation
En illustrant le concept de
"sous-système", le draft UML1.4 d'[OMG]
insiste sur le fait que ce "sous-sytème" regroupe 2 parties
:
- une partie dite de "spécification" incluant des
opérations et des cas d'utilisations identifiées par les acteurs
externes du système (paradigme fonctionnel)
- une partie dite de "réalisation", qui met en avant la
fameuse "collaboration d'ensemble d'instance". Cette
dernière peut, via une dépendance de type
"abstraction", à
savoir l'abstraction "realize", implémenter soit une
opération, soit un cas d'utilisation.
Rappelons que l'abstraction de type "realize"
sert justement à
relier 2 éléments qui représentent le même concept à différents
niveaux d'abstraction.
Or le niveau d'abstraction qui utilise un paradigme
fonctionnel est typiquement celui d'une analyse de très haut niveau,
à savoir la spécifications
des besoins. C'est là qu'interviennent les opérations et cas
d'utilisation qui figurent à gauche dans le sous-système de la
figure 4.
Le niveau d'abstraction qui utilise un paradigme
objet est typiquement la Conception,
au travers entre autres, de collaboration entre instances pour mieux
visualiser les rôles des différents objets modéliser pour réaliser
les spécifications évoquées ci-dessus.
Presque ?
Deux seuls regrets viennent ternir cette brillante
perspective :
1/ Aucun outils AGL
actuel (début 2002) ne permet dans un diagramme de
collaboration de :
- visualiser une "collaboration d'ensemble d'instances"
(l'ellipse pointillée) ;
- d'associer à cette ellipse une dépendance de type abstraction (le
"realize") vers :
* une instance (ce qui est dommage, vue que les
instances existent naturellement dans tout diagramme de
collaboration);
* un cas d'utilisation (essayez d'introduire un cas
d'utilisation dans un diagramme de collaboration ! Impossible... et
l'ellipse pointillée n'est pas plus disponible dans les diagrammes de
cas d'utilisation !)
2/ Cet élément (la "collaboration d'ensemble d'instances")
n'étant reconnu par aucun AGL,
il n'existe aujourd'hui (début 2002) aucun moyen standard reconnu
pour lier une analyse de haut niveau (spécifications
des besoins) basé sur le paradigme fonctionnel et
une analyse
structurante ou une conception.
La dégradation d'un modèle d'analyse en modèle de conception reste inévitable,
comme cela est dénoncé dans ce grand
écart.
|