• Aucun résultat trouvé

Réalisations et Expérimentations

4.2 Le méta-modèle UML 2.0

4.2.3 Fragments d’UML2.0 pertinents

Rappelons que l’objectif recherché de cette partie de la thèse est d’établir un profil UML 2.0 pour le méta-modèle C3. Tout d’abord, nous allons présenter la partie du méta-modèle UML2.0 qui contient les classes relatives aux profils, ensuite, identifier les méta-classes cibles du méta-modèle UML2.0 pour stéréotyper les concepts de C3.

4.2.3.1 Profils UML2.0

UML 2.0 facilite la création de nouveaux profils en simplifiant la définition des concepts de profils et de stéréotypes dans le modèle. La Figure 4.6 illustre la partie du méta-modèle UML 2.0 qui contient les méta-classes relatives aux profils.

Figure 4.6 – Les profils dans UML 2.0.

Dans ce méta-modèle, les définitions des nouveaux profils sont considérées comme des packages. Ceci explique la relation d’héritage entre les deux méta-classes Profile et Package. La méta-classe Stereotype hérite de la méta-classe Class. Ceci a comme conséquence que les définitions des stéréotypes sont considérées comme étant des classes UML2.0.

Les classes étendues par les stéréotypes introduisent de nouvelles méta-classes dans le modèle. Ce qui représente le lien – via la classe Extension – entre les deux méta-classes Stereotype et Class. Sachant que la méta-classe Class représente aussi bien le concept de classe que celui de méta-classe.

4.2.3.2 Concepts structuraux de C3 et UML2.0

Dans cette section, nous nous interrogeons sur les concepts les plus proches d’UML2.0 permettant d’être utilisés comme cibles pour stéréotyper les concepts structuraux de C3 : composant, connecteur et configuration.

Les concepts structuraux de C3 à savoir composant, connecteur et configuration sont considérés comme des types. De plus, ils sont traités comme des entités occupant le même niveau conceptuel (entité de première classe). Enfin, la vision externe de ces trois concepts est basée sur un ensemble de ports. Les caractéristiques relatives aux concepts de composant et connecteur de C3 sont similaires aux concepts composant et classe d’UML2.0. En effet, en UML2.0, composant et classe sont considérés comme des classificateurs (classifier). Sachons qu’un classificateur permet de classifier un ensemble d’objets. En outre, en UML2.0, composant et classe sont considérés comme des classificateurs encapsulés sur lesquels on peut installer des ports au sens d’UML2.0.

Bien que les deux concepts composant et classe d’UML2.0 possèdent le même pouvoir expressif, ils sont utilisés comme base pour stéréotyper respectivement les deux concepts composant et connecteur de C3. Ceci permet de distinguer les deux constructions

Package

Profile Stereotype

1 *

Class Association

d’UML2.0 possède deux icônes différentes.

4.2.3.2.1 Classe et composant comme classificateurs

La Figure 4.7 illustre comment les deux concepts classe et composant sont considérés comme des classificateurs. En effet, les deux méta-classes Class et Component héritent d’une façon indirecte de la méta-classe Classifier. Celle-ci est une méta-classe abstraite qui représente des classificateurs tels que Class, Component, Interface, DataType, UseCase, etc. De plus, les deux méta-classes Class et Component dérivent indirectement de la méta-classe StructuredClassifier. Ceci précise que Class et Component peuvent contenir des connecteurs. Enfin, les deux méta-classes Class et Component provient de la méta-classe EncapsulatedClassifier. Ceci précise que Class et Component peuvent contenir des ports. Dans la suite, on va détailler respectivement les concepts connecteur, port, classe et composant.

Figure 4.7- Classe et composant comme classificateurs.

4.2.3.2.2 La méta-classe Connector dans le méta-modèle UML2.0

Dans ce méta-modèle (cf. Figure 4.8), la méta-classe Connector hérite de la méta-classe Feature. Cela signifie qu’un connecteur est une caractéristique (feature) qui peut être attachée à des instances appartenant à des classificateurs. La méta-classe Connector est reliée à la méta-classe ConnectorEnd par une méta-association qui précise d’un connecteur doit contenir au moins deux instances de types ConnectorEnd.

Classifier StructuredClassifier EncapsulatedClassifier Class Component Port +ow nedP ort

0..1 *

Connector +ow nedC onnector

Figure 4.8- Structure de la méta-classe Connector.

4.2.3.2.3 La méta-classe Port dans le méta-modèle UML2.0

La Figure 4.9 illustre la partie du méta-modèle UML2.0 qui définit la méta-classe Port. La méta-classe Port hérite à la fois de la méta-classe StructuralFeature et de la méta-classe

ConnectableElement. Un port est considéré comme une caractéristique (feature) structurelle,

et il peut être connecté par des connecteurs. De plus, la classe Port est reliée à la méta-classe Interface par deux méta-associations, qui précisent qu’un port peut identifier des interfaces requises ou offertes. Enfin, la méta-classe Port est reliée à la méta-classe ProtocolStateMachine par une méta-association, qui précise que le comportement d’un port peut être décrit par une machine à état de description de protocoles.

Figure 4.9- La méta-classe Port.

4.2.3.2.4 La méta-classe Class dans le méta-modèle UML2.0

La méta-classe Class possède des caractéristiques structurelles et comportementales. Ceci est traduit par deux méta-associations entre la méta-classe Class et respectivement la classe Property et la classe Operation. La Figure 4.10 illustre la partie du méta-modèle UML2.0 qui définit la méta-classe Class.

Feature

Connector

+Kind: ConnectorKind

ConnectorEnd +contract Behavior

* * +end 2..* 1 Port Interface P rotocolStateMachine

StateMachine ConnectableElement StructuralFeature

+/required

+/provided * *

+protocol

Figure 4.10- Structure de la méta-classe Class.

4.2.3.2.5 La méta-classe Component dans le méta-modèle UML2.0

La Figure 4.11 illustre la partie du méta-modèle UML2.0 qui définit la méta-classe

Component. La métaclasse Component est reliée à la classe Interface par deux

méta-associations. Ainsi, un composant a des interfaces offerts et/ou requises. La méta-classe Component est reliée à la méta-classe Realization par une méta-association qui précise qu’un composant peut être réalisé par une ou plusieurs instances de type Realization. La méta-classe Realization est reliée à la méta-méta-classe Classifier par une méta-association qui précise qu’une Realization est décrite par un classifier.

Figure 4.11- Structure de la méta-classe Component.