ROMET Pierre
Automne 2020
1 Pr´esentation du projet
1.1 Introduction
Le TP de LO43 va prendre la forme d’un mini-projet, que vous allez devoir r´ealiser en solitaire,
qui va vous permettre de mettre en pratique les connaissances acquises lors du cours
et du TD; il sera ´egalement une premi`ere mise en contexte concernant le d´eroulement et
les attentes du projet Java que vous r´ealiserez `a la suite de ce tp.
Vous avez jusqu’au jeudi 22 octobre pour me rendre votre tp projet.
1.2 Mise en contexte
Ce mini-projet vise la r´ealisation d’un simulateur d’environnement IOT.
Vous devrez mod´eliser un ´eco-syst`eme de capteurs ayant pour but de monitor´e l’environnement
de la cabine des passag´es `a bord d’un avion de ligne.
Votre ´eco-syst`eme sera bas´e sur cinq types de capteurs diff´erents, devant monitorer la
temp´erature, l’humidit´e, la lumi`ere ainsi que le niveau sonore dans la cabine. Ces capteurs
devrons ensuite communiquer avec un serveur sur lequel sera stock´e les donn´ees qui lui
seront transmises.
1.3 Rendu attendu
Pour le 22 octobre , vous devrez me rendre un rapport d´ecrivant la mani`ere dont vous
aurez architectur´e, pens´e, men´e le d´eveloppement de votre projet. L’objectif n’est pas
d’expliquer dans le d´etail les fonctions que vous aurez coder, mais bien la mani`ere dont
vous aurez con¸cu ce tp projet.
Je ferais un point sur cet ´el´ement lors de le premi`ere r´eunion Teams le jeudi 17 septembre
`a 14h.
1
2 Le simulateur
Lors de la premi`ere sc´eance, vous allez ˆetre amen´e `a mettre en pratique les bases de la
programmation C++ qui vous ont ´et´e introduites lors du cours et du TD.
Vous devrez ´egalement mettre en place des outils de programmation (l’IDE sur lequel
vous d´eciderez de travailler), ainsi qu’un outil de versionning et de travail collaboratif.
PS: Vous retrouverez en fin de document, un glossaire des logiciels que vous allez ˆetre
amen´e `a utiliser, ainsi qu’un coding standard que vous devrez respecter.
2.1 Votre premier programme
Pour commencer, vous allez coder un classique de la programmation, le ”Hello World”.
Seul contrainte obligatoire pour cette partie, vous devrez ´editer votre code dans un fichier
text `a l’aide d’un ´editeur (vim, nano ou autre) et ensuite le compiler et l’´executer en ligne
de commande.
Concernant la compilation, vous utiliserez le compilateur GNU C++, `a savoir ”g++”.
De plus, vous utiliserez les options du compilateur pour renommer votre fichi´e compil´e
”HELLOWORLD” ainsi qu’afficher les warnings.
De plus, vous vous baserez sur la documentation Linux de la console, le ”man” pour
r´ediger votre commande g++.
2.2 Premier pas dans le simulateur
Nous allons maintenant commencer le d´eveloppement de votre simulateur. Comme expliqu´e
pr´ec´edemment, le simulateur est compos´e d’un serveur ainsi que d’un ensemble de
capteurs.
Cependant, avant de commencer `a coder, vous allez mettre en place un d´epˆot GitHub.
GitHub est une plate-forme web permettant d’h´eberger votre travail, de le versionner et
de travailler `a plusieurs dessus. C’est notamment grˆace `a ce d´epˆot, que votre travail sera
rendu en milieu de semestre, afin d’ˆetre ´evalu´e.
Vous allez donc commencer par vous cr´eer un compte sur la plateforme (´eviter d’utiliser le
mail utbm), puis vous mettrez un commentaire dans le canal teams d´edier au tp ”Forum
TP-Projet” contenant votre identifiant GitHub afin que l’encadrant de tp puisse vous
ajouter au d´epˆot sur lequel vous serez amener `a travailler.
Une fois cela fait, vous allez commencer par v´erifier que Git est bien install´e sur votre
ordinateur. Pour cela vous ex´ecuterez la commande suivante:
git version qui devra vous retourner: git version 2.28.0
Sinon, installez le: apt install git-all
2
Vous pouvez maintenant cloner `a l’emplacement que vous souhaitez sur votre machine,
le repo fourni, avec la commande:
git clone ”URL du d´epˆot fourni par le prof”
L’URL ´etant: https://github.com/Aldarme/AP4A_TP_C-.git
Vous allez maintenant vous d´eplacer dans le repo que vous venez de cloner avec la commande
cd:
cd NOMDUDOSSIER
Ensuite, vous aller cr´eer une nouvelle branche personnel sur le repo, qui sera votre espace
de travail.
git branch MABRANCH
Puis, vous aller vous d´efinir cette nouvelle branche comme espace de travail par d´efaut:
git checkout MABRANCH
Pour finir, vous pousserez votre nouvelle branch sur le serveur distant:
git push - -set-upstream origin MABRANCH
Cela fait, vous disposer maintenant d’un espace de travail, sur un repo distant, qui vous
est d´edi´e. Vous allez maintenant copier votre ”helloword” dans le dossier du repo que
vous venez de cloner.
Nous allons maintenant placer notre fichier sous ”suivis de version”, ce qui va permettre
de traquer les changements qui surviendront dans le code du fichier. On dit que le code
est ajout´e `a l’index.
git add MONFICHIER
Ensuite, vous aller valider les modifications apport´ees `a l’index
git commit –m “Description du commit”
Si probleme d’autentification lors du commit:
git config –global user.email ”MONMAILGITHUB”
git config –global user.name ”MONNOM”
Enfin, vous pousser votre code sur le serveur distant
git push
Rentrer email, mdp github
3
2.3 Premi`ere classe
Avant toute chose, vous devrez prendre compte et analyser le coding standard qui vous
est fourni avec ce sujet de tp. Vous devrez appliquer celui-ci pour coder votre projet.
La classe ”Server” doit permettre de recevoir, de stocker et d’afficher les donn´ees envoy´es
provenant des capteurs de la cabine de l’avion.
Vous allez commencer par impl´ementer la forme canonique de la classe ”Server”.
Ensuite, vous impl´ementerez le stockage et l’affichage des mesures provenant des capteurs:
Concernant le stockage des donn´ees, vous devrez logger les mesures re¸cus dans un
fichier de log.
Pour l’affichage, vous redirigerez les donn´ees des capteurs vers la console.
4
Travail `a rendre pour le lundi 28 septembre
Cette partie de votre tp projet sera `a rendre pour le lundi 28 septembre. Vous effectuerez
votre rendu sous la forme d’un rapport que vous d´eposerez sur moodle et vous pousserez
votre code sur github.
Vous aurez `a impl´ementer la surcharge des op´erateurs ”=” et <<.
Pour les deux op´erateurs, la surcharge se d´efinit comme suivant:
”=” : La surcharge doit permettre de copier le contenu d’un objet dans l’objet
courant.
”<<” : Deux surcharges vous sont demand´ees:
– <<: Redirection vers la console
– <<: Redirection vers un fichier
Pour vous aider, utiliser la doc C++ en ligne:
https://www.cplusplus.com/reference/,
Enfin, vous aurez `a explorer les diverses possibilit´es qu’offre Git. Pour cela, vous
trouverez un tuto `a l’adresse suivante,
https://try.github.io/,
se nommant ”Learn Git branching”, que vous aller devoir faire.
Vous me rendrez un rapport faisant ´etat de la r´eussite de ce tuto.
De plus, vous utiliserez l’outil ”Visualizing Git”, `a la mˆeme adresse, pour tester et comprendre
les commandes suivantes:
Git config
Git init
Git status
Git merge
Git diff
Git blame
Vous incluerez votre compr´ehension de ces commandes dans le rapport.
5
3 Simulateur, la suite
Nous allons maintenant voir comment mettre en place l’architecture logiciel du projet et
son impl´ementation. L’architecture du projet vous est donn´e, afin que vous puissiez tous
travailler sur la mˆeme base et que vous ne rencontriez pas de difficult´e li´e `a la conception
de l’architecture du projet.
Vous trouverez le fichier illustrant l’architecture du projet en annexe. Attention, le diagramme
de classe en annexe ne fourni que le nom des fonctions, mais il ne d´efini pas le type
de retour ainsi que les param`etres possibles. Vous devrez donc faire preuve d’imagination
pour impl´ementer au mieux ces fonctions.
Je vous pr´esenterais ce diagramme de classe `a l’aide d’une vid´eo que vous trouverez sur
le canal de TP.
Apr`es avoir pris connaissance du fichier en annexe, vous pouvez commencer `a coder les
classes d´efinit par le diagramme de classe (fichier en annexe).
3.1 Classe ”Sensor”
La classe ”Sensor” repr´esente la classe m`ere sur laquelle vous allez baser les classes de vos
capteurs.
Dans un premier temps, tous vos capteurs vous retournerons le mˆeme type de donn´ees.
Pour le rendu final, vous devrez pouvoir g´en´erer des donn´ees de types diff´erents, en fonction
du type des capteurs.
Temperature, Humidity : FLOAT
Sound : INTEGER
Light : BOOLEAN
3.2 Classe ”Scheduler”
La classe Sch´eduler est le coeur de votre simulateur. C’est lui qui va g´erer la fr´equence `a
laquelle il va r´ecup´erer les donn´ees des diff´erents capteurs pour ensuite les transmettres
au serveur.
Dans un premier temps, vous r´ecup´ererez les mesures de tous les capteurs en mˆeme temps.
La contrainte final sera que chaque type de capteur devra ˆetre r´ecup´er´e `a des fr´equences
diff´erentes, avant d’ˆetre remont´e sur le serveur.
3.3 Classe ”Server”
La classe ”Server” doit permettre de recevoir, de stocker et d’afficher les donn´ees envoy´es
provenant des capteurs de la cabine de l’avion.
Concernant le stockage des donn´ees, vous devrez logger les mesures envoy´es par les capteurs
dans des fichiers de log. Chaque type de capteur aura son fichier de log d´edi´e.
De plus, vous devrez pouvoir activer ou non, l’affichage des donn´ees ou le stockage de ces
derni`eres.
6
4 Cheat Sheet
Voici une liste de logiciels qui pourrons vous ˆetre utile pour le projet:
Editeur Architecture logiciel (UML): le seul et unique ”ASTAH”
Le man
´editeur de code: VIM, EMACS, Gedit, atom, nano, imax, sublimeText
IDE: Eclipse, VisualStudio, Jetbrain, etc...
Compilateur: g++
Debugger: gdb
makefile (compilation automatis´e)
valgrind (d´etection fuite m´emoire)
Git
GitHub
5 Guide de programmation
Vous trouverez de plus, un coding standard joint au sujet de TP, que vous aurez `a respecter
pour la programmation de votre TP projet.
7
8
版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。