Témoignage
 

Rubrique « Info »

 



É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.


               
 
Avertissement !
 
Décollage !  |  Présentation du site web "AILES"  | 
Infos générales  |  articles "Informatique"