Concept: Evénements et signaux
Un événement est la spécification d'une occurrence significative ayant un emplacement dans le temps et l'espace. Un signal est un type d'événement qui représente la spécification d'un stimulus asynchrone entre deux instances.
Relations
Description principale

Introduction

Dans le monde réel, des choses se produisent, souvent simultanément et de manière imprévisible. Ces « choses qui se produisent » sont appelées « événements ».

Dans le contexte des machines d'état, les événements modélisent l'occurrence d'un stimulus susceptible de déclencher une transition d'état. Les événements comprennent les signaux, les appels, le temps qui passe ou un changement d'état. Les événements peuvent être synchrones ou asynchrones.

Un « signal » est un type d'événement qui représente la spécification d'un stimulus asynchrone entre deux instances.

Types d'événements

Les événements peuvent être externes ou internes. Les événements externes sont ceux qui transitent entre le système et ses acteurs. Les événements internes sont ceux qui transitent entre les objets qui résident sur le système. Il existe quatre types d'événements : les signaux, les appels, le temps qui passe et un changement d'état.

Les signaux

Un signal représente un objet qui est distribué (émis) de manière asynchrone par un objet et reçu (intercepté) par un autre. Les exceptions sont un exemple de type de signal.

Les signaux peuvent avoir des instances, bien que celles-ci ne soient généralement pas modélisées de manière explicite. Les signaux peuvent être impliqués dans des relations de généralisation, ce qui autorise la modélisation de hiérarchies d'événements.

Les signaux peuvent avoir des attributs et des opérations. Les attributs d'un signal lui servent de paramètres.

Un signal peut être envoyé en tant qu'action d'une transition d'état dans une machine d'état ou l'envoi d'un message dans une interaction. L'exécution d'une opération peut également envoyer des signaux. Lors de la modélisation d'une classe ou d'une interface, une partie importante de la spécification du comportement de l'élément consiste à spécifier les signaux pouvant être émis par ses opérations. La relation entre une opération et les événements qu'elle peut envoyer est modélisée à l'aide d'une relation de dépendance, sous la forme stéréotypée <<send>>.

Evénements d'appel

Tout comme un événement de signal représente l'occurrence d'un signal, un événement d'appel représente la distribution d'une opération. Dans les deux cas, l'événement peut déclencher une transition d'état dans une machine d'état.

Alors qu'un signal est un événement asynchrone, un événement d'appel est en général synchrone. Ainsi, lorsqu'un objet appelle une opération sur un autre objet, le contrôle passe de l'expéditeur au récepteur tant que l'opération n'est pas arrivée à son terme, moment auquel le contrôle est de nouveau confié à l'expéditeur. La modélisation d'un événement d'appel est visualisée de la même manière qu'un événement de signal. Dans les deux cas, l'événement est affiché avec ses paramètres comme déclencheur d'une transition d'état.

Bien qu'il n'existe pas d'indice visuel permettant de distinguer un événement de signal d'un événement d'appel, la différence apparaîtra dans la classe récepteur, car elle déclarera une opération qui traite l'événement d'appel. Dans le cas d'un signal, il existera une transition dans la machine d'état qui est déclenchée par le signal.

Evénements temporels et de changement

Un événement temporel représente le temps qui passe. Les événements temporels permettent de synchroniser les parties temporelles du système à l'aide d'un dispositif d'horloge commun. Un événement de changement représente un changement dans l'état du système ou la satisfaction d'une condition.

Envoyer et recevoir des événements

Les événements de signal et d'appel impliquent au moins deux objets : un expéditeur et un récepteur. Lorsque le signal est émis, l'expéditeur distribue ce signal et poursuit sur son flux de commande sans attendre de retour de la part du récepteur. Ceci est à opposer à la sémantique de l'appel d'opération, dans laquelle l'expéditeur attend que le récepteur réponde pour reprendre son flux de commande. De ce fait, les opérations sont généralement utilisées pour représenter les comportements « de blocage » (les comportements qui entraînent un blocage ou empêchent d'autres événements de se produire), tandis que les signaux sont utilisés pour représenter les comportements qui ne produisent pas de blocages.

L'envoi, par un objet, d'un signal à un ensemble d'objets est appelé « multidiffusion » et est représenté par l'envoi d'un signal à un conteneur qui abrite un ensemble de récepteurs. La diffusion correspond à l'envoi d'un signal à tous les objets d'un système et est représentée par l'envoi d'un signal à un objet qui représente le système dans son ensemble ; cet objet « système » réalise à son tour un mécanisme de distribution de message qui s'assure que ce signal est envoyé à tous les objets appropriés du système.