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 : OCL vous en redemandez ?

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

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

Modélisation de système : OCL vous en redemandez ?

Pour spécifier une classe d'association (Job ou Marriage dans le diagramme de classe UML) :

context Person inv:
self.Job[employer]

On peut naviguer à partir de la classe d'association vers les objets participants :

context Job
inv: self.employer.numberOfEmployees >= 1
inv: self.employee.age > 21

Naviguez à travers des associations qualifiées : pour obtenir la personne possédant le compte bancaire 123456789

context Bank inv:
self.customer[123456789]

Pour spécifier un chemin complet avec des package :

Packagename1::Packagename2::Typename

Accédez aux propriétés d'un supertype :

context B inv:
self.oclAsType(A).p1 -- accède à la propriété p1 définie dans le supertype A (B hérite de A)
self.p1 -- accède à la propriété p1 définie dans B (B est l'objet courant)

Propriétés prédéfinies pour tous les objets :

oclIsTypeOf (t : Classifier) : Boolean
oclIsKindOf (t : Classifier) : Boolean
oclIsInState (s : OclState) : Boolean
oclIsNew () : Boolean
oclAsType (t : Classifier) : instance de Classifier

context Person
inv: self.oclIsTypeOf( Person ) -- = true
inv: self.oclIsTypeOf( Company) -- = false

Membres statiques d'une classe :

context Employee::id : String init:
Employee::uniqueID()

Si nous voulons que toutes les instances de Personne aient un nom unique :

context Person inv:
Person.allInstances()->forAll(p1, p2 | p1 <> p2 implies p1.name <> p2.name)

La gestion des collections : Set = pas de doublons ; Bag = doublons possible ; Sequence = Bag ordonné ;OrderedSet = Set ordonné

Ces collections sont définies dans "OCL Standard Library".

Exemples :

Set { 1 , 88, 5, 2 }
Set { 'strawberry', 'apple', 'orange' }
Sequence { 45, 3, 3, 2, 1 }
Sequence { 'ape', 'nut' }
Bag {1, 3, 4, 3, 5 }

Selectionner les personnes qui ont plus de 50 ans (les 2 expressions suivantes sont équivalentes) :

context Company inv:
self.employee->select(age > 50)->notEmpty()

context Company inv:
self.employee->select(p | p.age > 50)->notEmpty()

Pour obtenir tous les éléments pour lesquels la condition est fausse (l'inverse du select), exemple, pour avoir les célibataires :

context Company inv:
self.employee->reject( isMarried )->isEmpty()

Pour obtenir des collections différentes (les 3 expressions suivantes sont équivalentes) :

self.employee->collect( birthDate )
self.employee->collect( person | person.birthDate )
self.employee->collect( person : Person | person.birthDate )

Pour savoir (le résultat sera vrai) si une condition s'applique (est vraie) sur toutes les occurrences :

context Company
inv: self.employee->forAll( age <= 65 )
inv: self.employee->forAll( p | p.age <= 65 )
inv: self.employee->forAll( p : Person | p.age <= 65 )

Pour savoir si une condition s'applique sur au moins une occurrence :

context Company inv:
self.employee->exists( forename = 'Jack' )
context Company inv:
self.employee->exists( p | p.forename = 'Jack' )
context Company inv:
self.employee->exists( p : Person | p.forename = 'Jack' )

Itération (les 2 expressions suivantes sont équivalentes) :

collection->collect(x : T | x.property)
-- est identique à :
collection->iterate(x : T; acc : T2 = Bag{} |
acc->including(x.property))

Nous verrons dans un prochain article la gestion des messages.

"Assume ton destin. Derrière les soucis, le chagrin et la peur, tu découvriras alors l'extraordinaire bonheur qu'est la confiance en soi."
Richard Dehmel

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