Université de Sherbrooke, Département d informatique



Documents pareils
École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique.

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Politique de placement de l encaisse

Approuvées et en vigueur le 14 septembre 1998 Révisées le 29 septembre 2012 Prochaine révision en Page 1 de 6

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Les chaînes de caractères

LA COMPTABILITÉ DU COMITÉ D ENTREPRISE : DE NOUVELLES OBLIGATIONS DE TRANSPARENCE À PARTIR DU 1 er JANVIER 2015

Livret de stage Canadien: Formulaire d enregistrement de l expérience en architecture

Génération de code à partir d une spécification B : Application aux bases de données

OCL - Object Constraint Language

RENSEIGNEMENTS GÉNÉRAUX et RÈGLEMENTS DE PARTICIPATION. CONCOURS «Gagnez jusqu à $ avec Immo-Clic.ca!»

Ressources affectées Selon l instruction n M9 du 18 mai 1993 Fiche de gestion financière

I. Introduction aux fonctions : les fonctions standards

FORMULAIRE 9. AVIS D ÉMISSION PROPOSÉE DE TITRES INSCRITS (ou titres convertibles ou échangeables en titres inscrits) 1

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

MANITOWOC. Bulletin d'orientation de l'entreprise. Circulaire originale En remplacement de la circulaire 103 datée du 22 septembre 1999

Connectiques et Utilisation d un disque dur multimédia MMEMUP

L du 24 juillet 1995 (Mém. n 66 du 16 août 1995, p.1565)

La Certification de la Sécurité des Automatismes de METEOR

RAPPORT FIN Réunion ordinaire du Conseil Ajout d une nouvelle politique sur les cartes de crédit corporatives

RÈGLEMENT FACULTAIRE SUR LA RECONNAISSANCE DES ACQUIS. Faculté des lettres et sciences humaines

01_15. Directive sur la poursuite contre un mineur

Gestion des transactions et accès concurrents dans les bases de données relationnelles

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

5 EXEMPLES DES MEILLEURES PRATIQUES

Régime de réinvestissement de dividendes et d achat d actions

Nombre de crédits Nombre d'évaluation UE Majeure de spécialité 6 2. UE mineure de spécialité 3 ou 2 1. UE libre 1 1

MEMOIRE. Présenté à. L École Nationale d Ingénieurs de Sfax. en vue de l obtention du MASTERE

NORME CANADIENNE LES PRATIQUES COMMERCIALES DES ORGANISMES DE PLACEMENT COLLECTIF TABLE DES MATIÈRES

Structures algébriques

A. Définition et formalisme

GUIDE FISCAL RELATIF AUX CARTES D ACHAT AU CANADA

CIRCULAIRE AUX BANQUES NON RESIDENTES N 86-13

SARL CONCEPT & STRATEGIE

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

CONTRÔLES D'ACCÈS PHYSIQUE AUTOMATISÉS

UNIVERSITÉ DE MONCTON PROGRAMME DE CARTE D ACHAT INFORMATION GÉNÉRALE

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

COMPTES CONSOLIDES IFRS DU GROUPE CNP ASSURANCES au 31 Décembre 2007

«courtier» : un broker ou un dealer au sens de la Loi de 1934 dont l'établissement principal est situé aux États-Unis d'amérique;

Offre spéciale en partenariat avec ABC Bourse

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Guide d utilisation. Gamme Telium. Application AMEX EMV x

Formula Negator, Outil de négation de formule.

Genie Logiciel Avancé Projet :Gestion d une chaîne hotelier low cost

MARCHE PUBLIC DE TRAVAUX REGLEMENT DE LA CONSULTATION (RC)

3.1 La carte d achat sera émise par une institution financière retenue par le Conseil scolaire au nom de la personne autorisée et du Conseil.

Le Service de Télétransmission par Internet des banques du Réseau OCÉOR GUIDE UTILISATEURS. Version V1.0

Règlement du Jeu Jeu du Puzzle - 40 JOURS POUR BATTRE DES RECORDS DE PRIX SCAPEST

Architecture des Systèmes d Information Architecture des Systèmes d Information

LA TENUE DES ARCHIVES

Juillet 2013 Recommandations de l ASB et de la COPMA relatives à la gestion du patrimoine conformément au droit de la protection des mineurs et des

CALCUL DES PROBABILITES

Procédure administrative Vérification des factures et des remboursements

Le présent communiqué est publié en application de l article 6 du règlement de la Commission des opérations de bourse.

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

CONTRAT D APPORTEUR D AFFAIRE

Circulaire 2013/xy Distribution de placements collectifs. Distribution au sens de la législation sur les placements collectifs de capitaux

Gestion des applications, TI. Tout droits réservés, Marcel Aubin

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Circulaire de la Commission fédérale des banques: Journal des valeurs mobilières tenu par le négociant

CHAPITRE VI ALEAS. 6.1.Généralités.

SOCIÉTÉ DE TRANSPORT DE SHERBROOKE

Étape 1 : s enregistrer en tant qu huissier de justice, candidat ou stagiaire

Importer les fichiers élèves - professeurs du secrétariat

Manuel d utilisation. Centre de facturation UPS

Comment l utiliser? Manuel consommateur

Algorithmique des Systèmes Répartis Protocoles de Communications

POLITIQUE FINANCIÈRE

Circulaire n 41/G/2007 du 2 août 2007 relative à l 'obligation de vigilance incombant aux établissements de crédit

TD/TP PAC - Programmation n 3

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

FORMATIONS LINGUISTIQUES DIPLOMES, TESTS & EXAMENS D ESPAGNOL COCEF

CONJUGUÉ D'UN POINT PAR RAPPORT À UN TRIANGLE

TD/TP PAC - Programmation n 3

Projet Active Object

Procédure de sauvegarde - Cobian Backup

PROCÉDURE D'APPEL D'OFFRES ET D'OCTROI POUR LES ACHATS D'ÉLECTRICITÉ

Annexe sur la maîtrise de la qualité

Initiation à la programmation en Python

L'instruction if permet d'exécuter des instructions différentes selon qu'une condition est vraie ou fausse. Sa forme de base est la suivante:

Gestion électronique des procurations

Demande d adhésion de la WLA Membres Associés

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

1. Contexte général page Le compte auprès de la BCGE...page La procuration 2.2 Les accès e-banking 2.3 Le bon de retrait 2.

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Ingénérie logicielle dirigée par les modèles

Comment piloter une entreprise d assurance IARD sous Solvabilité II?

Consignes pour les travaux d actualité Premier quadrimestre

Manuel d utilisation du Guichet électronique V2

BULLETIN DE SOUTIEN A LA FONDATION DES PROMOTEURS IMMOBILIERS DE FRANCE

F o n d a t i o n B é a t r i c e

CERTIFICATS TURBOS Instruments dérivés au sens du Règlement Européen 809/2004 du 29 avril 2004

Fiche descriptive de l indicateur : Tenue du dossier anesthésique (DAN)

Le terme «caution» est utilisé souvent à tort en matière de garanties internationales. Il existe trois types de garanties :

POLITIQUE ET LIGNES DIRECTRICES EN MATIERE DE TRACABILITE DES RESULTATS DE MESURE

LA CRÉATION D'UNE ENTREPRISE EN ESTONIE

Algorithmes récursifs

Transcription:

Université de Sherbrooke, Département d informatique IGL501 : Méthodes formelles en génie logiciel, Examen périodique Professeur : Marc Frappier, mardi 7 octobre 2013, 15h30 à 18h20, local D4-2022 Documentation permise. La correction est, entre autres, basée sur le fait que chacune de vos réponses soit claire, c est-à-dire lisible et compréhensible pour le lecteur; précise, c est-à-dire exacte et sans erreur; concise, c est-à-dire qu il n y ait pas d élément superflu; complète, c est-à-dire que tous les éléments requis sont présents. Pondération : 1 30 pts 2 10 pts 3 20 pts 4 40 pts Total 100 pts Prénom: Nom: Matricule : Signature: 1. (12 pts) Soit A ={a1,a2,a3} et B ={b1,b2,b3}. Indiquez si les expressions suivantes sont vraies ou fausses, Justifiez votre réponse. 1. {a1 a2} P(A A); vrai 2. {{a1 a2}} A A; vrai 3. { a1 a2, a1 a3} A A; faux; deux images pour a1 4. { a1 a1, a2 a3, a3 a2} A A; vrai 5. A B A A ; vrai; une fonction est aussi une relation; faux codomaines distincts 6. A B A A ; faux; une fonction partielle f A B avec dom(f) A n'appartient pas à A B, codomaines distincts 2. (8 pts) Calculez le résultat des expressions suivantes. 1. dom({a1 a2, a1 a3, a3 a2}) = {a1,a3} 2. {a1 a2, a1 a3, a3 a2};{a1 a2, a1 a3, a3 a2} = { a1 a2 } 3. {a1} {a1 a2, a1 a3, a3 a2} {a2} = {a1 a2 } 4. {a1 a2, a1 a3, a3 a2}<+{ a1 a1}= { a1 a1, a3 a2 } 1/6

3. (25 pts) Pour chaque opération ainsi que pour l'initialisation de la machine suivante, indiquez si l'invariant est préservé, en faisant le calcul de l'obligation de preuve. MACHINE Q3 CONSTANTS A PROPERTIES A = 0..1 VARIABLES x, z INVARIANT x 1..3 z A A INITIALISATION ANY a WHERE a A z := id(a) x := a Réponse: faux, car le cas a = 0 viole l'invariant OPERATIONS op1 = PRE x 1..2 x:= x +1 ANY a WHERE a A z(a) := a ; Réponse: faux, dans le cas où z(a) /= a avant l'exécution de l'opération op2(y1,y2) = PRE y1 Α y2 Α z(y1) :=z(y2) z(y2) :=z(y1) Réponse: vrai, car cela permute deux valeurs dans la fonction op3(y) = PRE y -1..1 y < x SELECT y > 0 x := y+1 WHEN y > x x := y ; Réponse: vrai op4 = CHOICE x := 0 OR x := 1 Réponse: faux, car x:= 0 viole l'invariant 2/6

4. (45 pts) Écrivez une spécificartion B pour le système suivant. Le système gère un système de transactions d'une firme de courtage la bourse. Chaque courtier est soumis à une limite quotidienne pour le total de ses transactions. Cette limite quotidienne varie en fonction du courtier, mais elle ne doit pas dépasser une certaine limite globale fixée par la firme de courtage. Une transaction qui dépasse une certaine limite doit être approuvée par le superviseur du courtier; cette limite pour une transaction varie en fonction du courtier. Chaque courtier a un superviseur. On distingue les transactions complétées (ie, approuvées ou qui n'ont pas besoin d'approbation à cause de leur montant), des transactions en attente d'approbation. Le respect des limites quotidiennes d'un courtier doit prendre en compte autant les transactions en attente que les transactions complétées. Pour simplifier, votre modèle n'a pas a prendre en compte l'évolution du temps; il ne doit gérer que les transactions d'une journée; il n'a pas a prendre en compte plusieurs journées à la fois; les limites fixées ne varient pas durant une journée. Le système doit garder une trace des approbations et des refus, aux fins de vérification externe par des vérificateurs de l'autorité des marchés financiers. Vous aurez besoin de l'opérateur somme(s), définit ci-dessous, qui retourne la somme des éléments de S; il retourne 0 si S est vide. Complétez la spécification suivante. MACHINE Courtier SETS COURTIER = {c1,c2}; SUPERVISEUR = {s1,s2}; TRANSACTION = {t1,t2,t3,t4,t5} DEFINITIONS somme(s) == (z).(z S z) VARIABLES courtier, superviseur, supervisepar, limitequotidienne, limitepartransaction, limiteglobale, transaction, montant, auteur, transactionenattente, approbation, refus INVARIANT courtier COURTIER /* ensemble des courtiers */ superviseur SUPERVISEUR /* ensemble des superviseurs */ supervisepar courtier superviseur /* indique le superviseur du courtier */ limitequotidienne courtier NAT /* indique la limite quotidienne du courtier */ limiteglobale NAT /* indique la limite quotidienne du système */ limitepartransaction courtier NAT /* indique la limite d'une transaction d'un courtier */ transaction TRANSACTION /* ensemble des transactions */ montant transaction NAT /* montant d'une transaction*/ auteur transaction courtier /* indique le courtier qui a effectué la transaction */ transactionenattente transaction /* transactions qui doivent être approuvées */ approbation transaction superviseur /* indique le superviseur qui a approuvé une transaction */ refus transaction superviseur /* indique le superviseur qui a refusé une transaction */ /* La somme des transactions ne dépasse pas la limite du courtier */ (c).(c courtier somme(montant[auteur -1 [{c}]-dom(refus)]) limitequotidienne(c)) /* La limite quotidienne d'un courtier ne dépasse pas la limite de la firme */ (c).(c courtier limitequotidienne(c) limiteglobale) /* Les transactions en attente ont besoin d'être approuvées */ 3/6

(t). ( t transactionenattente montant(t) > limitepartransaction(auteur(t)) ) /* Les transaction complétées sont approuvées si nécessaire */ (t). ( t transaction t transactionenattente montant(t) > limitepartransaction(auteur(t)) t! supervisepar(auteur(t)) : (approbation refus) ) /* Une transaction est soit en attente, soit approuvée ou refusée */ (dom(approbation) dom(refus)) transactionenattente = dom(approbation) dom(refus) = INITIALISATION rien à compléter ici OPERATIONS /* Cette opération effectue une transaction par le courtier c pour le montant m. Le no de la transaction est choisi de manière aléatoire par le système. */ transiger(c,m) = PRE c courtier m NAT1 somme(montant[auteur -1 [{c}]]) + m limitequotidienne(c) TRANSACTION - transaction ANY t WHERE t TRANSACTION - transaction transaction := transaction {t} IF m > limitepartransaction(c) transactionenattente := transactionenattente {t} auteur(t) := c montant(t) := m ; /* Cette opération permet à un superviseur s d'approuver la transaction t. */ approuver(s,t) = 4/6

PRE s superviseur s = supervisepar(auteur(t)) t transactionenattente transactionenattente := transactionenattente - {t} approbation(t) := s ; refuser(s,t) = PRE s superviseur s = supervisepar(auteur(t)) t transactionenattente transactionenattente := transactionenattente - {t} refus(t) := s 5. (10 pts) Pour chaque question suivante, indiquez si l'opération abstraite Op1 est raffinée par l'opération concrète Op2, avec l'invariant de collage x = x' (l'invariant de collage est l'invariant J du REFINEMENT, c'est-à-dire la machine concrète). L'invariant I de la machine abstraite est x -1.. 1. Notez qu'il n'y a pas de variable de sortie ici et pas de précondition, donc l'obligation de preuve devient simplement a) I J => [op2] [op1] J Op1 = ANY z WHERE z { 1,1} ΤΗΕΝ x := z Op2 = CHOICE x' := 1 OR x' := -1 Solution: [CHOICE x' := 1 OR x' := -1 ] [ ANY z WHERE z { 1,1} ΤΗΕΝ x := z ] ( x = x') ó [CHOICE x' := 1 OR x' := -1 ] ( z. z { 1,1} => [x := z] ( x = x')) ó [x' := 1] ( z. z { 1,1} => [x := z] ( x = x')) [x' := -1] ( z. z { 1,1} => [x := z] ( x = x')) ó ( z. z { 1,1} => ( z = 1)) ( z. z { 1,1} => ( z = 1)) ó z. z { 1,1} z = 1 z. z { 1,1} z = -1 ó vrai b) Op1 = CHOICE x' := 1 OR x' := -1 Op2 = ANY z WHERE z 1..1 ΤΗΕΝ x := z 5/6

Solution: [ ANY z WHERE z 1..1 ΤΗΕΝ x' := z ] [CHOICE x := 1 OR x := -1 ] ( x = x') ó z. z 1..1 => ([x:=1] ( x = z) [x:=-1] ( x = z)) ó z. z 1..1 => ( ( 1 = z) ( -1 = z)) ó z. z 1..1 => (1 = z -1 = z) ó faux pour z = 0 6/6