Title: cours GL en IUT 1
1De l'analyse des besoins à la spécification
formelle en B un cours en première année d'IUT
Nicole Levy
Journée B L'enseignement de B et des méthodes
formelles Nantes Vendredi 29 Novembre 2002
21. Objectifs
- Donner une vision globale du développement dun
logiciel basée sur le cycle en V
Analyse des besoins
31. Objectifs
- Cours de Génie Logiciel
- en première année dIUT
- et même premier semestre !
- Public jeune et globalement pas très bon
- Manque de connaissances
- en théorie des ensembles et en logique
42. Approche proposée
- Analyse des besoins
- En dériver des tests dacceptation
- En 7 semaines 1 cours et 1 TD de 2h
- Spécification en B
- Jusquà limplémentation
- En dériver des tests système
- En 7 semaines 1 cours,1 TD de 1h1/4 et 1 TP de
2h
5Analyse des besoins
- Approche inspirée des travaux de
- J. Souquières et M. Heisel
- Introduisant quelques diagrammes UML
- (mais ils ne connaissent pas encore les langages
orientés objets)
6Étapes danalyse
- 1ère étape
- Analyse des interactions
- Logiciel ? Environnement
- 2ème étape
- Définition des propriétés invariantes
- 3ème étape
- Étude de quelques comportements
- 4ème étape
- Définition du comportement
7Étapes danalyse
8Example un distributeur de boissons
Le distributeur à analyser pourra servir 4
boissons différentes et à des prix différents.
Parmi ces boissons, il y a du café pour lequel
lutilisateur pourra indiquer quil désire plus
de sucre ou au contraire nen désire pas du tout.
Lutilisateur devra dans un premier temps choisir
sa boisson puis la payer à laide de pièces de
0.2, 0.5 et 1 euro. Si largent fourni est
suffisant, si le distributeur possède de quoi
rendre la monnaie ainsi que (possède) la boisson
demandée, alors il rendra la monnaie, préparera
la boisson et la délivrera (la boisson). Dans les
autres cas, il rendra largent à lutilisateur.
9Lecture du cahier des charges un distributeur de
boissons...
Le distributeur à analyser pourra servir 4
boissons différentes et à des prix différents.
Parmi ces boissons, il y a du café pour lequel
lutilisateur pourra indiquer quil désire plus
de sucre ou au contraire nen désire pas du
tout.Lutilisateur devra dans un premier temps
choisir sa boisson puis la payer à laide de
pièces de 0.2, 0.5 et 1 euro. Si largent fourni
est suffisant, si le distributeur possède de quoi
rendre la monnaie ainsi que (possède) la boisson
demandée, alors il rendra la monnaie, préparera
la boisson et la délivrera (la boisson). Dans les
autres cas, il rendra largent à lutilisateur.
101ère étape Analyse des Interactions
- Identifier les acteurs et les actions
- Acteurs ils interagissent avec le système,
- ils déclenchent les actions
- Actions elles modifient létat du système
- Associer
- à chaque acteur les actions qu'il pourra
effectuer - au logiciel les actions qu'il effectuera en
retour - ? Diagrammes Use-Case
111ère étape Analyse des Interactions un
distributeur de boissons...
- Utilisateur
- indiquer quil désire plus ou pas de sucre,
- choisir une boisson,
- payer une boisson
- Distributeur
- posséder de la monnaie,
- posséder la boisson demandée,
- rendre de la monnaie,
- préparer une boisson,
- délivrer une boisson,
- rendre largent
122ème étape analyse des propriétés invariantes
- Comprendre ce qui est attendu du logiciel
- Faits
- propriétés statiques du domaine d'application
- comportement implicite du système
- ses états
- les préconditions sur les transitions physiques
- les préconditions évidentes
- les limites physiques
132ème étape analyse des propriétés invariantes
- Comprendre ce qui est attendu du logiciel
- Hypothèses
- concernant le comportement attendu de
l'environnement - peuvent être remises en causes
- Besoins
- concernant le comportement attendu du logiciel
- propriétés temporelles
- propriétés structurelles
14 2ème étape propriétés invariantes un
distributeur de boissons...
- Faits
- 1. le distributeur sert un utilisateur et une
boisson à la fois - 2. le distributeur peut rendre la monnaie
- 3. le prix des boissons peut être payé à laide
- des pièces acceptées par le distributeur
-
15 2ème étape propriétés invariantes un
distributeur de boissons...
- Hypothèses
- 4. le distributeur naccepte que les pièces de
- 0.2, 0.5 et 1
- 5. le distributeur sert 6 boissons différentes
- dont 3 qui sont du café plus ou moins sucré
- 6. le prix de chaque boisson est fixé
- 7. lutilisateur peut annuler sa commande
- mais il faut définir jusquà quand
16 2ème étape propriétés invariantes un
distributeur de boissons...
- Besoins
- 8. lutilisateur choisit dabord sa boisson
- (une parmi les 6) puis la paye.
- 9. Si le distributeur accepte de servir une
boisson - Alors il doit rendre la monnaie correctement
- 10. Si le distributeur naccepte pas de servir
une boisson - Alors il doit rendre tout largent donné par
lutilisateur - 11. le distributeur accepte de servir une
boisson ssi - largent fourni est suffisant et
- la monnaie est disponible et
- la boisson est disponible et
- un gobelet est disponible
173ème étape description de certains
comportements particuliers
- Diagrammes de séquence
- Montre les objets de lenvironnement et le
logiciel et les messages quils séchangent - Les messages sont classés par ordre
chronologique. - Un scénario représente une vue particulière du
logiciel par un des acteurs.
- Un scénario est une suite d'actions se produisant
à partir d'un état donné du système et
provoquant éventuellement l'exécution d'
opérations.
183ème étape certains comportements un
distributeur de boissons...
- Utilisateur Distributeur
-
- Choisit une boisson attente choix
- boisson disponible
- gobelet disponible
- Paye attente argent
- argent suffisant
- monnaie disponible
- prépare la boisson
- Délivre la boisson
-
- Rend la monnaie
- attente choix
-
-
194ème étape Définition du comportement
- Réaction comportement précis et complet
- attendu du système
- pour chaque acteur
- pour chaque action qu'il peut déclencher
- pour tous les états possibles du système
- Expression de chaque réaction selon un format
standard - Ri Quand un acteur déclenche une action
- Si le logiciel est dans un état donné
- et Si une propriété est vérifiée
- Alors le logiciel change d'état
- et exécute une opération
- et renvoie une réponse
- ? Diagrammes d'états-transitions
204ème étape réactions un distributeur de
boissons...
- 1. Quand un utilisateur choisit une boisson
(une parmi les 6) - Si le distributeur est en attente de choix de
boisson - Et Si la boisson est disponible
- Alors le distributeur attend que lutilisateur
paye - 2. Quand un utilisateur choisit une boisson
(une parmi les 6) - Si le distributeur est en attente de choix de
boisson - Et Si la boisson nest pas disponible
- Alors le distributeur reste dans lattente dun
choix de boisson - Et envoie en réponse un message boisson non
disponible - 3. Quand un utilisateur choisit une boisson
(une parmi les 6) - Si le distributeur nest pas en attente de choix
de boisson - Alors le distributeur ne change pas détat il
ne se passe rien - 4. Quand un utilisateur paye (on suppose
une action unique) - Si le distributeur est en attente de paiement
- Et Si largent donné est suffisant
- Et Si le distributeur a de quoi rendre la
monnaie - Alors le distributeur rend la monnaie, prépare
la boisson et - la délivre et passe à létat attente dun choix
de boisson
214ème étape réactions un distributeur de
boissons...
- 5. Quand un utilisateur paye (action unique
) - Si le distributeur est en attente de paiement
- Et Si largent donné nest pas suffisant
- Ou Si le distributeur na pas de quoi rendre la
monnaie - Alors le distributeur rend largent et
- passe à létat attente dun choix de boisson
- 6. Quand un utilisateur paye
- Si le distributeur nest pas en attente de
paiement - Alors le distributeur rend largent et ne change
pas détat - 7. Quand un utilisateur annule
- Si le distributeur est en attente de paiement
- Alors le distributeur passe à létat attente
dun choix de boisson - 8. Quand un utilisateur annule
- Si le distributeur nest pas en attente de
paiement - Alors le distributeur ne change pas détat
224ème étape réactions un distributeur de
boissons...
- On ajoute un état PANNE et une action de
détection de panne - 9. Quand une panne est détectée
- Si le distributeur est en attente de choix de
boisson - ou de paiement
- Alors le distributeur passe à létat panne
- Et envoie en réponse un message distributeur
HS - 10. Quand une panne est détectée
- Si le distributeur est en déjà en panne
- Alors le distributeur ne change pas détat il
ne se passe rien -
234ème étape Comportement un distributeur de
boissons...
- Diagramme d'états-transitions
24Génération des tests dacceptation
25De lanalyse des besoins à la Spécification en B
- Formaliser les besoins
- Des Faits, Hypothèses et besoins
- ?La partie statique
- Des réactions
- ?La partie dynamique
26De lanalyse des besoins à B un distributeur de
boissons...
- Exemple
- Faits
- 3. le prix des boissons peut être payé à laide
des pièces acceptées par le distributeur - ? variable pièces_acceptées de type P(NATURAL)
- Hypothèses
- 4. le distributeur naccepte que les pièces de
- 0.2, 0.5 et 1
- ? variable pièces_acceptées 20,50,100
27De lanalyse des besoins à B un distributeur de
boissons...
- DISTRIBUTEUR_BOISSON
- SETS
- BOISSON
- ETAT att_boisson, att_paiement, panne
- REPONSE boisson_non_disponible,
veuillez_payer, - prenez_la_boisson, somme_versee_insuffisante
- CONSTANTS
- cafe_sucre, cafe_non_sucre, cafe_plus_sucre,
pas_de_choix, - prix_boisson , /Hyp6 / piece_acceptees,/Hy
p4 / - boissons_servies
- PROPERTIES
- cafe_sucre BOISSON
- cafe_non_sucre BOISSON
- cafe_plus_sucre BOISSON
- pas_de_choix BOISSON
- prix_boisson NATURAL
- piece_acceptees POW (NATURAL)
- boissons_servies POW(BOISSON)
- card(boissons_servies) 6 /Hyp5 /
28De lanalyse des besoins à B un distributeur de
boissons...
- OPERATIONS
- rep lt-- Choisir_boisson (boi)
- PRE boi BOISSON boi / pas_de_choix
- etat_courant att_boisson THEN
- IF boi boissons_disponibles THEN /réact
1/ - utilisateur boi
- etat_courant att_paiement
- rep veuillez_payer
- ELSE
- rep boisson_non_disponible/réact 2/
- END
- END/réact 3/
-
29Spécification en B
- On ne peut pas tout voir alors jai choisi de
montrer - Comment modéliser
- ensembles, relations, fonctions et suites
- Comment raffiner
- très rapidement et sur des exemples très simples
- Pour arriver à la génération de code
- Toujours une seule machine
30Conclusions
- Public jeune et globalement pas très bon
- Mais sans a priori et très réceptif
- Un choc dès leur arrivée
- des maths et
- la génération automatique de code !
- Pour certains cest très dur
- pour dautre au contraire pas du tout
- Mais ils prennent tous des bonnes habitudes
31Conclusions
- Ce que jespère quils acquièrent (en vrac)
- Réfléchir au comportement désiré avant de
programmer - La notion de type et dinvariant
- La notion de précondition
- Lidée que savoir programmer nest pas forcément
leur unique objectif - La vision dun système comme un tout quil faut
décomposer - La notion de raffinement
- Penser aux tests dès les premières étapes de
développement
32Conclusions
- TP avec lAtelier B
- Contrôleur de Type le plus utilisé
- Prouveur Preuves automatiques uniquement
- Mais ils doivent savoir lire les Obligations de
Preuve - Lanimateur inadéquat et manque cruellement
- Un regret
- pas de version gratuite quils puissent
télécharger chez eux - Et puis. Des petits problèmes tels que
- Surchage du serveur ? TP à 2 par machine
- Problèmes de jetons
- Les commentaires disparaissent lors du passage à
Latex
33Et après ? .
- En deuxième année
- Le projet tutoré
- et un suivi dans le module génie logiciel
- Lanalyse des besoins et les fiches de test
- pas de spécification B
- Mais UML
341èreétape Analyse des Interactions un
distributeur de boissons...
- Analyse un plus approfondie des interactions
35Exemples dexercices
- Des distributeurs en tous genres
- Un réseau téléphonique
- Lorganisation dun séminaire
36Un projet à faire en 3 semaines
- Lan dernier
- Spécification dun système distribué
- Un système de communication dans réseau complexe