• Aucun résultat trouvé

Génie Logiciel Avancé

N/A
N/A
Protected

Academic year: 2022

Partager "Génie Logiciel Avancé"

Copied!
2
0
0

Texte intégral

(1)

Génie Logiciel Avancé

Année 2016-2017 Delphine Longuet, Thibaut Balabonski, Robin Pelle

[email protected], [email protected], [email protected]

TD 2 - Spécication des opérations

Semaine du 26 septembre 2016 Exercice 1

On considère le diagramme de classes suivant, qui modélise les diérents emplois occupés par des personnes dans des entreprises. Un emploi est caractérisé par son salaire et associe de manière unique une personne et une entreprise. Une personne ne peut pas occuper plusieurs emplois dans la même entreprise mais peut par contre travailler dans plusieurs entreprises. Il peut exister une relation de hiérarchie entre les employés d'une même entreprise, modélisée par l'association réexive sur la classe Emploi. Une personne reçoit toujours un salaire strictement inférieur à son supérieur. Pour simplier, les personnes et les entreprises sont caractérisées de manière unique par leur nom.

Personne nom : string

Emploi salaire : real

Entreprise nom : string 1

employé emplois

0..* 0..*

emplois entreprise 1 0..* subordonnés

chef 0..1

On associe à ce diagramme de classes les invariants suivants : (a) ∀p1, p2 ∈ Personne , p1 6= p2 ⇒ p1. nom 6= p2. nom

(b) ∀p ∈ Personne , |p. emplois | = |p. emplois.entreprise | (c) ∀e1, e2 ∈ Entreprise , e1 6= e2 ⇒ e1. nom 6= e2. nom (d) ∀e ∈ Emploi , e. salaire > 0

(e) ∀e ∈ Emploi , e. chef 6= ∅ ⇒ e. salaire < e. chef.salaire (f) ∀e ∈ Emploi , e. chef 6= ∅ ⇒ e. entreprise = e. chef.entreprise

On veut spécier les opérations suivantes :

1. Personne :: collegues(ent : Entreprise) : P (Personne) construit l'ensemble des personnes travaillant dans la même entreprise que la personne. Il faut que cette personne ait un emploi dans l'entreprise passée en argument. Une personne ne fait pas partie de l'en- semble de ses collègues.

ou bien : On peut toujours appeler l'opération, l'ensemble est vide si la personne ne travaille pas dans l'entreprise passée en argument.

2. Emploi :: superieurs() : P (Emploi) construit l'ensemble des emplois placés hiérarchique- ment au-dessus de l'emploi concerné.

3. Emploi :: augmenter(montant : int) permet d'augmenter le salaire d'un emploi du montant passé en argument. Il faut que les invariants liés à la hiérarchie dans l'entreprise soient toujours vériés après l'augmentation.

1

(2)

4. Emploi :: diriger(emp : Emploi) permet de devenir le supérieur de l'emploi passé en argu- ment. Il faut que cette personne n'ait pas déjà un supérieur et que la contrainte sur les salaires soit respectée.

5. Entreprise :: embaucher(nom : string, salaire : int) permet d'embaucher une personne avec le salaire donné. Il faut que cette personne existe et n'appartienne pas déjà aux employés de l'entreprise. L'emploi doit être créé lors de l'opération.

6. Entreprise :: licencier(nom : string) de licencier une personne. Il faut que cette personne soit un employé de l'entreprise. Tous ces liens avec l'entreprise et ses collègues doivent être supprimés.

Exercice 2

On considère le diagramme de classes du système de gestion des comptes bancaires du TD1 et la spécication suivante de l'opération retirer :

Compte :: retirer(montant : real) : boolean

pre : montant > 0 ∧ this. solde − montant >= 0 post : this. solde = old(this. solde ) − montant

Spécier l'opération retirer redénie dans la classe Compte_cheque. On rappelle que des frais de découvert sont ajoutés à toute opération dont le résultat laisse le solde du compte en-dessous du découvert autorisé.

Exercice 3

On considère une classe Ensemble dont les éléments sont des couples formés d'une clé et d'une valeur. Les clés et les valeurs sont toutes positives stric- tement et les clés sont deux à deux distinctes. L'opération chercher prend un entier en argument, renvoie la valeur correspondant à cette clé si elle existe dans l'ensemble et -1 sinon.

On a écrit une première spécication de l'opération chercher : Ensemble :: chercher(clé : int) : int

pre : true

post : (result >= 0 ∧ ∃e ∈ Element , e. clé = clé ) ∨ result = −1

Ensemble

Element cle : int valeur : int

1 ensemble elements 0..*

Cette spécication est-elle correcte ? Est-elle complète ? Quelles implémentations de l'opé- ration chercher sont autorisées par cette spécication ? Corriger la spécication en s'assurant que seules les implémentations voulues sont autorisées.

Exercice 4

L'opération sqrt calcule la racine carrée entière inférieure de son argument entier. On donne la spécication suivante de cette opération :

sqrt(a : int) : int pre : a > 0

post : result ∗ result = a

Cette spécication est-elle correcte ? Est-elle complète ? Quelles implémentations de l'opé- ration sqrt sont autorisées par cette spécication ? Corriger la spécication en s'assurant que toutes les implémentations voulues sont autorisées.

2

Références

Documents relatifs

● Vérification déductive : à l'aide d'un modèle formel du langage de programmation, démonstration que le programme satisfait

Intuition : ins ne peut pas être exécuté (pré-condition false) donc tout ce qui le suit ne peut pas non plus être exécuté (post-condition false : pré-condition de la suite

Puis choisir le format d’enregistrement (soit laisser en Wave soit en cliquant sur « Wav » choisir : AIFF puis cliquer sur « save » et fermer l’enregistrement (bouton rouge

S'il ne possède pas à titre personnel de numéro d'assuré social, vous devez en faire la demande dans un délai de 8 jours après l'embauche, par le biais soit

La classe TestPlein contient la méthode ajouterPresentPlein , qui vérifie que l’ajout d’un élément dont la clé est déjà présente dans un conteneur plein est possible (ne lève

• une m´ethode ajouter() dont le seul param`etre est l’entier dont une oc- currence est ` a ajouter au multi-ensemble (si celui-ci n’est pas plein), qui renvoie true si on a pu

L'intergiciel est la couche logicielle située entre les couches basses (systèmes d'exploitation, protocoles de communication) et les couches hautes (applications) dans un

Même son de cloche à propos du fameux article 2 : « Le projet de loi (...) renforce la compétitivité des entreprises, dans une perspective de relance de la croissance économique