You are on page 1of 13

UNIVERSITE PAUL SABATIER

TOULOUSE III

TP EM7ECEIM CONCEPTION DES SYSTEMES

MASTER EEA

2011/2012

TABLE DES MATIERES

Remarques Pratiques ...................................................................................................................... 3 Le dbogueur ddd ........................................................................................................................... 4 Umbrello ........................................................................................................................................ 6 Mini Projet: Gestion d'un distributeur de carburant ....................................................................... 8

2011/2012

REMARQUES PRATIQUES
Ces TP d'Informatique Industrielle se droulent sur PC et essentiellement sous le systme d'exploitation LINUX. Sont runis ici des remarques d'ordre pratique concernant l'utilisation des machines de la salle mises votre disposition. 1 Login et mot de passe

Les machines sont relies en rseau un serveur qui stocke en particulier tous les fichiers utilisateurs. Chaque utilisateur (chaque binme en l'occurrence) doit possder un compte pour pouvoir se connecter une machine. Un nom de compte vous sera attribu au dbut de la premire sance. C'est le nom qui devra tre rentr l'affichage de l'invite: nom_de_machine login: Il vous sera alors demand un mot de passe. Chaque compte possde un mot de passe par dfaut: jsupe2008 . Il est vivement conseill de modifier ce mot de passe ds la premire sance en utilisant la commande yppasswd . Les rgles de scurit demandent que tout mot de passe comporte au moins 6 caractres et que ces caractres constituent un mlange de lettres majuscules et minuscules ou un mlange de caractres alphabtiques et de chiffres. Une fois la connexion effectue, vous vous trouvez en mode console et le systme attend vos commandes. Le prompt (message d'invite) affiche votre nom de login (nom du compte), le nom de la machine sur laquelle vous tes et le rpertoire dans lequel vous vous trouvez. Exemple: [m1eea_001@alicia m1eea_001]$ 2 Arrt des machines

Les accs disques tant tamponns (buffris) un arrt brutal de la machine risque fortement d'endommager le systme de fichiers et par consquent d'entraner la perte de tous vos efforts! Si vous voulez (ou devez) arrter la machine sur laquelle vous travaillez de manire propre, utilisez la combinaison de touches Ctrl+Alt+Del . En cas de blocage complet n'hsitez pas faire appel un enseignant. 3 Impression des listings

L'impression des listings se fait sur une imprimante connecte au rseau. A partir de la ligne de commande il suffit de taper la commande a2ps mon_fichier.c pour sortir un listing format avec entte. La commande a2ps est en fait un filtre d'impression qui traduit un texte ascii en postscript en fonction de son type. Un fichier d'extension .c est ainsi reconnu comme un source C et trait en consquence (commentaires en italiques, etc...). L'autre commande (standard) pour imprimer est lpr fichier . Le contrle de l'impression se fait en utilisant la commande lpq qui permet de visualiser les travaux d'impressions en attente. Chacun des travaux est associ a un numro qui doit tre utilis pour l'enlever ventuellement de la file d'impression en invoquant la commande lprm et en lui passant ce numro en argument. Il est rappel que l'imprimante est une ressource collective. Le respect des autres utilisateurs impose de vrifier que l'impression que l'on a lanc s'est bien droule et ne bloque pas l'imprimante pour une raison ou pour une autre. Le papier est par ailleurs une ressource rare qui doit donc tre utilise bon escient. En pratique deux imprimantes sont relies au rseau. L'une d'entre elles est dfinie comme imprimante par dfaut mais on peut accder a l'autre en prcisant son nom grace l'option -P . Par exemple: a2ps Pimp4 prog.c enverra le travail d'impression sur l'imprimante 4 ( droite en entrant) et a2ps Pimp3 prog.c l'enverra sur l'imprimante 3. L'imprimante dfinie par dfaut dpend de la machine sur laquelle vous travaillez. 2011/2012

LE DEBOGUEUR DDD

ddd est un outil GNU d'aide la mise au point de programmes. ddd permet de lancer une application, de la stopper o l'utilisateur le souhaite, d'examiner et de modifier des variables, d'excuter des fonctions pas pas Pour pouvoir dboguer un programme sous ddd il faut l'avoir compil pralablement avec l'option -g afin de gnrer une table des symboles utilise par le dbogueur.
gcc -g -o monprogramme monprogramme.c

1.

Lancer ddd

A partir d'une fentre xterm taper la ligne de commande: ddd [<monprogramme> <fichier image memoire>] & Les deux paramtres sont facultatifs (gnralement nutiliser que le premier): monprogramme : nom de l'excutable obtenu avec l'option de compilation g fichier image mmoire : core dump obtenu aprs un problme lors de l'excution. Il est donc possible : de faire la mise au point d'un programme aprs une excution qui a engendr un fichier core; le dbogueur prcise alors le type de problme rencontr et situe le problme dans le code source. de faire la mise au point sous le contrle du dbogueur (sans fichier core) l'aide de commandes xxgdb. 1 La fentre ddd

Au lancement on obtient une fentre ddd compose de 3 parties1 : fentre source : affichage du source du programme en cours de mise au point, fentre de commande (a droite): prsente un certain nombre de commandes ddd sous forme de boutons (run, cont, next )

Voir figure

2011/2012

fentre de travail : fentre d'entre des commandes (en ligne, si les boutons du bandeau ne sont pas utiliss), fentre d'affichage des rsultats des commandes ddd et d'affichage des sorties du programme. Commandes de base

Parmi les commandes ddd nous prsentons sous forme de tableau quelques commandes lmentaires prsentes sous forme de boutons. L'une des commandes ddd permet d'avoir des informations en ligne: help suivi du nom d'une commande. Toutes ces commandes sont soit des commandes en lignes, soit utilisables depuis linterface graphique. run cont next step break delete print print * file finish interrupt quit 3 lance l'excution continue l'excution aprs arrt sur un point d'arrt excute une fonction en un pas excution pas pas (ligne par ligne) mise en place d'un point d'arrt efface un point d'arrt affiche le contenu d'une variable affiche le contenu d'une variable pointe permet de slectionner un fichier excutable termine l'excution d'une fonction interrompt la mise au point (devra tre relance par run) termine la session xxgdb

Remarques sur la mise au point de programmes

ddd est un outil de mise au point puissant, assez facile utiliser minima ... mais c'est un outil de plus connatre. Dans bien des cas, quelques instructions d'criture, bien places dans les programmes, permettent de localiser rapidement les problmes et d'y remdier. Par contre, dans le cas d'utilisation intensive de pointeurs ddd s'avre un outil indispensable pour dtecter des pointeurs non initialiss et autres problmes causant des erreurs d'excution.

2011/2012

UMBRELLO
Umbrello est un outil de modlisation UML utilisable pendant la phase de conception et le dveloppement de logiciels. Les principales fonctionnalits actuelles du logiciel sont : ldition des diagrammes UML et la gnration automatique de code. Umbrello 1.2 supporte les diagrammes suivants : diagrammes de classes, de squences, de collaborations, de cas dutilisation, dtats, dactivits, de composants, et de dploiement. 1. Interface graphique

Pour excuter Umbrello tapez simplement la commande umbrello ou cherchez licne dans le menu Applications.

La fentre principale dumbrello est compose de trois parties : en haut a gauche, une partie permettant de naviguer entre les diffrentes entits du modle. en bas a gauche, une partie documentation donnant un rapide aperut d'une entit. a droite, la zone d'dition des diagrammes UML. A l'extrme droite, se trouve une barre d'icnes contenant les diffrentes entits relatives au diagramme en cours d'dition. 1 Cration dun projet et principe de modlisation

La cration d'un nouveau projet et l'ajout de nouveaux diagrammes sont relativement simples. La cration d'un nouveau projet se fait par la barre de menu Fichier / Nouveau . L'ajout d'un nouveau diagramme se fait en slectionnant dans l'espace de navigation la vue qui recevra le nouveau diagramme (par exemple la vue logique), puis l'aide du bouton droit de la souris ou du menu Diagramme . Cliquer sur Nouveau et slectionner le type de diagramme ajouter la vue. Pour chaque type de diagramme, la barre d'icnes droite indique les lments UML utilisables dans ce diagramme. Cliquer sur un de ces icnes pour ajouter l'lment au diagramme. 2 Modification des proprits des lments UML

Tous les lments de modlisation UML (classe, tat, cas d'utilisation, ...) sont modifiables et paramtrables en utilisant le menu proprit accessible depuis l'lment par le bouton droit de la souris. Ce menu permet par exemple d'ajouter des attributs et des mthodes une classe ou de changer le nom de rle d'une association.

2011/2012

Gnration automatique du code source

Un des attraits des ateliers de gnie logiciel est leur capacit gnrer automatiquement le code source du programme partir du modle. Bien sr, cette gnration n'est jamais totale et doit toujours tre complte par le programmeur. Umbrello produit le squelette du programme partir du diagramme de classe. Cette fonctionnalit n'est disponible dans umbrello que pour certains langages, en particulier C++ et Java. Elle n'est donc pas utilisable pour de la gnration de code C. Pour utiliser cette fonctionnalit, utiliser le menu Code source / Code Generation Wizzard ... , puis suivre les diffrentes fentres de dialogue et terminer par le bouton Gnrer . Dans le rpertoire spcifi se trouvent les fichiers gnrs relatifs aux classes slectionnes.

2011/2012

MINI PROJET: GESTION D'UN DISTRIBUTEUR DE CARBURANT


4 Cahier des charges Le systme concevoir doit grer un distributeur automatique de carburant constitu d'un automate reli plusieurs pompes essence, chacune dlivrant un seul type de carburant (sans plomb, diesel, super,...). Ce distributeur n'est accessible qu' des abonns disposant d'une carte et d'un code personnalis. Le pompiste a accs l'automate partir d'un terminal personnel qui lui permet de dfinir et mettre jour la liste des abonns. A chaque abonn est associ une fiche constitue par le nom de l'abonn, le numro de sa carte, son code secret et le montant des sommes dues. Lors de la cration dun compte client, le pompiste devra insrer une nouvelle carte dabonn dans le lecteur pour associer le numro de carte la nouvelle fiche client. Le pompiste peut aussi accder l'automate pour modifier le prix des carburants. Ceci n'est possible que si aucune livraison n'est en cours. L'automate comprend: un dispositif d'insertion de la carte abonn un pupitre un cran un dispositif dimpression Chaque pompe possde: un pistolet avec gchette des indicateurs numriques prcisant le prix au litre et affichant en temps rel la quantit de carburant dlivre et le montant total de la livraison. Un client dsirant se servir en carburant doit effectuer les oprations dans l'ordre suivant: insrer sa carte dans le lecteur qui identifie l'abonn par le numro de la carte rentrer son code abonn a partir du clavier de l'automate qui vrifie sa validit Si le systme l'identifie, il doit alors: prciser le type de carburant souhait dcrocher le pistolet de la pompe indique et active par l'automate se servir en appuyant sur la gchette raccrocher le pistolet lorsqu'il a termin retourner l'automate qui lui indique le montant factur et met jour le montant des sommes dues. rcuprer sa carte. 5 Travail effectuer

Le cahier des charges prcdemment donn reprsente les besoins d'un client (le vendeur de ce type de distributeur de carburant). Il est demand de raliser un logiciel satisfaisant ce cahier des charges suivant une approche mthodologique rigoureuse en vue de la maintenance future du produit.

5.1

Analyse

L'analyse fine du problme, s'appuyant sur le langage UML, sera faite en Travaux Dirigs en vue de prciser les besoins du client (vision client) pour fournir une spcification claire et prcise l'quipe de conception. 2011/2012

5.2

Analyse et conception

A partir de la spcification fournie faire l'analyse et la conception du logiciel en vue de la ralisation du produit (vision quipe de conception) en utilisant le langage UML.

5.3

Implmentation

L'implmentation devra s'appuyer sur la conception labore prcdemment. Elle s'talera sur trois sances en commenant par l'implmentation de la partie gestion des services . La partie Gestion des abonns sera implmente ensuite aprs validation de la partie gestion des services . Il ne sera pas ncessaire dutiliser une structure de donnes dynamique pour stocker la liste des clients, un simple tableau sera suffisant. 6 Mise en oeuvre

La mise en oeuvre du projet de gestion du distributeur automatique de carburant fait appel d'une part un simulateur logiciel comportant la partie pupitre utilisateur et la partie pompes (pistolets, gchettes et afficheurs) et d'autre part un lecteur de carte reli au botier d'extension du PC . Ces lments, ainsi que les moyens de les utiliser sont dcrits ci-dessous.

6.1

Simulateur

Le simulateur, dont une vue est reprsente ci-dessous, comporte: Un clavier numrique associ a un afficheur. La touche C du clavier permet de corriger le dernier chiffre entr tandis que la touche V permet de valider le nombre introduit (elle remet par ailleurs l'affichage 0). Une fentre d'affichage de messages Trois fentres associes aux trois types de carburants disponibles chacune constitue: o d'un bouton simulant le dcrochage du pistolet. o d'un bouton simulant l'action sur la gchette. o de 3 afficheurs indiquant le volume fourni, le prix au litre et le prix total payer. Un bouton permettant au pompiste de prendre le contrle du systme.

Pour communiquer avec ce simulateur (rcuprer des informations ou en fournir) une structure de mmoire partage est mise disposition. Celle-ci est dfinie dans le fichier inclure: donnees.h

2011/2012

typedef struct s_entrees { int validation; int code; int acces_pompiste; int auto_acces_pompiste; int ecrire_message; char message[40]; int pompe_validee[3]; double prix[3]; int affiche_prix[3]; int pistolet_decroche[3]; int gachette[3]; double volume[3]; int affiche_volume[3]; }; typedef struct s_entrees entrees;

Une donne de ce type sera accessible partir d'un pointeur entrees* valeurs; (voir l'exemple qui suit). Les diffrents champs de la structure entrees sont les suivants: code valeur rentre au clavier du pupitre au moment de l'appui sur la touche V (visible sur l'afficheur numrique). validation mise 1 par le simulateur chaque appui sur la touche V du clavier. L'utilisateur est charg de la remise 0. acces_pompiste mis 1 par le simulateur si le bouton acces pompiste est activ. auto_acces_pompiste doit tre mis un par l'utilisateur pour rendre actif le bouton acces pompiste. ecrire_message doit tre mis 1 pour permettre l'envoi de la chane de caractres message sur l'afficheur (remis 0 par le simulateur). La valeur de la chane message doit tre fixe avant mise 1 du champ ecrire_message. Exemple: la pompe (sinon le bouton pistolet est inactif) et 0 pour dsactiver la pompe. pistolet_decroche[] mis 1 par le simulateur si le bouton pistolet est activ. gachette[] vaut 1 si la gchette est active. Si la gchette est active il faut la remettre 0 et incrmenter le volume comme dans l'exemple de code suivant:
/* attente decrochage pistolet */ while (valeurs->pistolet_decroche[choix_pompe]==0) usleep(100); do /* tant que pistolet decroche */ { if (valeurs->gachette[choix_pompe]==1) { valeurs->gachette[choix_pompe]=0; valeurs->volume[choix_pompe]+=0.1; valeurs->affiche_volume[choix_pompe]=1; } } while(valeurs->pistolet_decroche[choix_pompe]==1); affiche_prix[] doit tre mis 1 par l'utilisateur pour afficher le prix du carburant contenu dans prix[] (remis 0 par le simulateur). strcpy(valeurs->message,"insez votre carte"); valeurs->ecrire_message=1; pompe_validee[] doit tre mis 1 par l'utilisateur pour activer

2011/2012

affiche_volume[] doit tre mis a 1 par l'utilisateur pour afficher le volume de carburant indiqu par volume[] (remis 0 par le simulateur). Pour accder ces diffrents champs, il est ncessaire d'inclure les fichiers mem_sh.h et donnees.h, de dclarer une variable de type entrees* et d'appeler la fonction acces_memoire comme ci-dessous:
#include <donnees.h> #include <mem_sh.h> entrees *valeurs; /* pointeur sur structure de type 'entrees' */

/*------------------------------------------------------------------------*/ int main() { int shmid; valeurs=acces_memoire(&shmid); /* associe la zone de memoire partagee au pointeur */ ...

L'accs aux champs se fait de manire classique partir du pointeur, par exemple: valeurs->prix[0]=7.4 permet de fixer le prix du SP95 (les 3 pompes sont numrotes de 0 2).

6.2

Lecteur de cartes
/* Interface lecteur de cartes */ /*----------------------------------------------------------------*/ void initialisations_ports(); /*----------------------------------------------------------------*/ void liberation_ports(); /*----------------------------------------------------------------*/ void attente_insertion_carte(); /*----------------------------------------------------------------*/ void attente_retrait_carte(); /*----------------------------------------------------------------*/ int carte_inseree(); /*----------------------------------------------------------------*/ unsigned short int lecture_numero_carte(); /*----------------------------------------------------------------*/

L'interface avec le lecteur de carte se fait en utilisant les fonctions contenues dans le fichier inclure lcarte.h:

Le lecteur de carte de marque GEMPLUS et de modle GEMPC USB-SL est reli au PC par l'intermdiaire dun cble USB. Il respecte la norme PC/SC (Personal Computer / Smart Card) qui offre une bibliothque logicielle pour laccs des cartes puces sous Windows et Linux. Les cartes puces utilises sont de type carte mmoire de 1 Kb et disposent de mcanismes dauthentification embarqus. Dans le cadre de ce projet, nous avons dvelopp une API (Application Programming Interface) simplifiant lutilisation de ces cartes. En pratique, les procdures fournies permettent de raliser les diffrentes oprations ncessaires:

2011/2012

On doit d'abord: initialiser les ports (initialisation_ports()) Attendre linsertion de la carte (attente_insertion_carte()) enfin, on peut rcuprer son numro (numero=lecture_numero_carte()). il ne reste qu' attendre son retrait (attente_retrait_carte()). Et librer les ports : (liberation_ports())

6.3

Remarques pratiques

Pour avoir accs aux fonctions dfinies dans les divers fichiers inclus vous devez l'indiquer au compilateur. La compilation devrait donc ressembler :
gcc -Wall -o mon_programme mon_programme.c ltpauto

Toutefois, afin de faciliter la compilation, un fichier de compilation Makefile vous sera donn. Pour lutiliser, vous devez le modifier afin de ladapter vos besoins, puis taper les commandes make depend et make qui auront pour effet de recompiler votre programme. Le lancement du simulateur se fait (en arrire-plan pour garder la main dans la fentre) en tapant: sim_carb &. La communication entre linterface graphique et votre programme se fait par lintermdiaire dun segment de mmoire partag. En cas darrt brutal du simulateur ou de lexistence dinstances multiples, il se peut quun message derreur apparaisse au lancement de la commande sim_carb . Dans ce cas, quittez le simulateur et supprimez les segments de mmoire partags. Pour cela vous pouvez utiliser la commande ipcclean ou les commandes associes ipcs m et ipcrm m segid. : - ipcclean supprime la mmoire partage et les smaphores d'un serveur qui a d s'arrter brutalement. - ipcs fournit des informations sur l'usage des ressources IPC. - ipcrm dtruit la ressource IPC spcifie. Vous pouvez consulter les fichiers d'entte (.h) dans le rpertoire /usr/local/include.

6.4

Travail rendre et valuation

Un rapport de conception, un listing comment et une mini-recette sont requis pour lvaluation du projet. Le rapport de conception : Le rapport de conception couvrira lintgralit de la conception, c'est--dire depuis la dfinition complte des cas dutilisation jusqu' la conception dtaille. Vous complterez les cas dutilisation tudis en TD et traiterez lintgralit du cas dutilisation Grer Liste , cest dire de la cration dun client jusqu sa suppression et le cas Grer Prix . - La premire partie danalyse prcisera les cas dutilisation avec au moins la dfinition du contexte, la description des scnarios, la dfinition des objets, les diagrammes de squence, une bauche du diagramme de classes. - La deuxime partie de conception, prcisera les diagrammes de collaboration, compltera le diagramme de classes, dcrira toutes les mthodes dfinies par leur contrat type et donnera les principes de conception du programme principal. - La troisime partie sera le code source de votre logiciel. Il devra tre mis en forme et comment correctement. Une attention toute particulire sera porte sur la cohrence de votre logiciel avec la spcification.

2011/2012

La recette : La recette de votre projet consiste en une dmonstration de votre logiciel lors de la dernire sance. La couverture des cas dutilisation par votre logiciel, sa fiabilit, son ergonomie seront des lments importants de lvaluation.

2011/2012

You might also like