Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog

Quels sont les outils et méthodes informatiques pour améliorer le retour sur investissement de vos projets ?

Quels sont les outils et méthodes informatiques pour améliorer le retour sur investissement de vos projets ?

Les projets informatiques nécessitent une méthode spécifique intégrant un ensemble de bonnes pratiques que l'on peut à loisir enrichir et adapter. Sans la mise en place d'une telle méthode, on s'expose à un gaspillage important de ressources voire faire couler le projet.


Modélisation de système : tutoriel OCL, la gestion des évènements

Publié par Rhona Maxwel sur 14 Octobre 2015, 17:11pm

Catégories : #OCL, #UML, #Modélisation de système, #Modélisation métier, #Modélisation des besoins, #MDE, #MDA, #IDM, #Ingénierie Dirigée par les Modèles IDM

Modélisation de système : tutoriel OCL, la gestion des évènements

Ce tutoriel OCL (Object Constraint Language) est consacré à la gestion des évènements.

Pour illustrer ce concept, nous utiliserons le fameux design pattern du GoF (Gang of Four d'après la bande des 4 experts qui ont écrit en 1995 le livre contenant une vingtaine de solutions de conception objet génériques et qui ont révolutionné le monde du développement et de l'architecture logiciel).

Pour ceux qui ne ne connaissent pas leurs gammes, une description du problème, d'un exemple classique de gestion et bien entendu de la solution se trouvent dans mon article publié sur ce blog : http://www.urbanisation-si.com/urbanisation-du-systeme-d-information-creez-l-evenement

En OCL pour spécifier qu'un message signalant un évènement a été envoyé, on utilise l'opérateur ^

Exemple :

context Subject::hasChanged()
post: observer^update(12, 14)

Le résultat de observer^update(12, 14) est vrai si le message update avec les arguments 12 et 14 a été envoyé à "observer" pendant l'exécution de l'opération.

Update() est soit une opération de la classe Oserver ou bien un signal spécifié dans le modèle UML.

Si les valeurs des paramètres sont inconnues au moment de l'appel, on remplace par des ?

context Subject::hasChanged()
post: observer^update(? : Integer, ? : Integer)

OCL défini un type message spécial OclMessage qui peut être reçu par l'opérateur ^^

context Subject::hasChanged()
post: observer^^update(12, 14)

Le résultat est une Sequence de OclMessage.

context Subject::hasChanged()
post: let messages : Sequence(OclMessage) = observer^^update(? : Integer, ? : Integer) in
messages->notEmpty() and
messages->exists( m | m.i > 0 and m.j >= m.i )

Un OclMessage peut être envoyé à plusieurs cibles. Messages est une Sequence d'OclMessage dont chaque occurrence est envoyée à un observer cible :

context Subject::hasChanged()
post: let messages : Sequence(OclMessage) =
observers->collect(o | o^^update(? : Integer, ? : Integer) ) in
messages->forAll(m | m.i <= m.j )

Autre exemple, soit une opération Company::getMoney(amount :Integer) : Boolean

context Person::giveSalary(amount : Integer)
post: let message : OclMessage = company^getMoney(amount) in
message.hasReturned() -- getMoney a été envoyée et retournée
and
message.result() = true -- l'appel à getMoney a retourné true

Voilà à travers ces quelques articles, nous avons appris les rudiments d'OCL.

Ce kit de survie nous servira pour nos futurs articles sur l'ingénierie dirigée par les modèles et les transformations de modèles.

"Soyons reconnaissants envers les personnes qui nous donnent du bonheur ; elles sont les charmants jardiniers par qui nos âmes sont fleuries."
Marcel Proust

Voir aussi :

http://www.urbanisation-si.com/

http://urbanisation-si.blog4ever.net

http://urbanisation-si.wix.com/blog

http://urbanisme-si.wix.com/blog

http://urbanisation-si.wix.com/urbanisation-si

http://urbanisation-si.over-blog.com/

http://rhonamaxwel.over-blog.com/

http://urbanisation-des-si.blogspot.fr/

http://bonnes-pratiques-si.eklablog.com/

http://urbanisation-si.eklablog.com/

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article

Archives

Nous sommes sociaux !

Articles récents