Documente Academic
Documente Profesional
Documente Cultură
ETUDE DE L'UTILISATION D'UN SYSTEME EMBARQU: FONCTIONNEMENT D'UNE APPLICATION MVC WEB SUR UN ROUTEUR DOMESTIQUE
2007-2008 Etudiants :
Tuteur :
IUT Informatique de Clermont Ferrand Licence professionnelle Dveloppement d'applications Internet et Intranet
IUT Informatique de Clermont -Ferrand Pages : 1/30
Remerciements
Nous souhaitons remercier M. Sbastien Salva, notre tuteur de projet pour sa grande disponibilit, sa comprhension et son aide durant toute la priode du projet.
Sommaire
Introduction.........................................................................................04 1 - Installation d'un environement Web sous systme embarqu.................05 1.1 - Les systmes embarqus.......................................................05 1.2 - Installation du firmware Openwrt............................................06 1.3 - Mise en place d'un environnement web sur le routeur................10 2 - Prsentation de l'application Gestion de l'automate de l'aquarium.......12 2.1 Principe..............................................................................12 2.2 - Prsentation de l'existant......................................................12 2.2.1 UML........................................................................12 2.2.2 - Diagramme de contexte de l'application........................14 2.2.3 - Diagramme de cas d'utilisation de l'application..............15 2.2.4 - Diagrammes de trois cas d'utilisation...........................16 A Cas #1 : se connecter (login.php)............................16 B Cas #2 : Calibrage sonde PH (ph)............................18 C Cas #3 : Configurations (configuration)....................20 2.3 Nouvelle version : passage en MVC........................................22 2.3.1 MVC type web..........................................................23 2.3.2 Etapes d'une action avec le modle MVC......................27 2.3.3 Exemple : affichage page du PH..................................28 2.3.4 Avantages/Inconvnients...........................................29 2.3.5 Autre volution : le Flash pour les graphiques...............29 Conclusion..........................................................................................30
Introduction
Dans le cadre de notre licence professionnelle option dveloppement d'application Internet et Intranet, l'Institut Universitaire de Clermont-Ferrand (IUT), dpartement informatique, nous avons d raliser un projet tutor. Le but de ce projet est d'tudier le comportement de diffrentes applications web, sur un systme embarqu. Nous avons donc d pour se faire, tudier dans un premier temps le domaine des systmes embarqus, afin d'installer un environnement nous permettant de tester diffrentes applications web. Ensuite nous avons choisi une application que nous avons analys et implement afin d'executer nos diffrents tests. Dans ce rapport nous allons donc tout d'abord tudier comment installer un environnement permettant de tester des application web sur un systme embarqu, puis dans un second temps prsenter l'application test et son analyse.
Bootloader : PMON System-On-Chip : Broadcom 4710 CPU Speed : 125 Mhz Flash Size : 4 Mb RAM : 16 MB Wireless : Mini-PCI Broadcom WL-120G Ethernet : two network interface, one for 4 LAN ports, one for WAN port, no VLAN tagging USB : 1xUSB 1.1 LPT : yes Serial : yes, with external UART
Les systmes embarqus font trs souvent appel l'informatique, et notamment aux systmes temps rel. Le terme de systme embarqu dsignent aussi bien le materiel que le logiciel utilis. Les caracteristiques d'un tel systme sont donc:
Ayant un espace mmoire limit de l'ordre de quelques Mo maximum. Il convient de concevoir des systmes embarqus qui
Pages : 5/30
Il convient d'avoir la puissance de calcul juste ncessaire pour rpondre aux besoins et aux contraintes temporelles. Les processeurs utiliss dans les systmes embarqus sont beaucoup moins puissants qu'un processeur d'un ordinateur PC. Il fonctionne le plus souvent avec des ressources matrielles limites : un petit (voire pas de) clavier, un petit cran et peu de mmoire dans notre cas on accde au routeur grce un accs distant (telnet, ssh, interface web). Les systmes embarqus sont la plupart du temps dans des machines qui doivent fonctionner en continu pendant de nombreuses annes, sans erreurs et, dans certains cas, rparer eux mme les erreurs quand elles arrivent. C'est pourquoi les logiciels sont toujours dvelopps et tests avec plus d'attention que ceux pour les PC. Le logiciel cre pour les systmes embarqus est appel firmware. Il est stock dans de la mmoire en lecture seule ou de la mmoire flash plutt que dans un disque dur
Donc un systeme embarqu est une entit informatique et lectronique aux ressources limites et aux accs (configuration) restreints, faite pour fonctionner en continu. Elle fonctionne grce un firmware qui correpond au systme d'exploitation de l'appareil, nous allons donc voir le firmware utilis pour le routeur wl500g.
kamikaze 7.09 (la derniere version disponible). La distribution OpenWRt permet de crer un firmware personalis. En effet, on le configure afin qu'il reponde aux mieux nos besoins. Ensuite, une fois sous forme de fichier executable, on le depose sur le routeur (on dit que l'on flash le routeur) La configuration: Voil le menu de configuration du firmware :
Schma 1 : Capture d'cran montrant la configuration du firmware:
La cross-compilation : ou compilation croise On ne peut compiler entirement les sources du projet sur le routeur car les ressources ne nous le permettent pas, et simplement compiler les sources sur le PC ne veut rien dire car le contexte d'execution et le contexte de compilation sont diffrents, il nous faut donc utiliser la cross-compilation, c'est-IUT Informatique de Clermont -Ferrand Pages : 7/30
Code Source
Execution Routeur
L'installation sur le routeur: Une fois que l'on a obtenu le firmware (fichier .trx), il faut le
IUT Informatique de Clermont -Ferrand Pages : 8/30
dposer sur le routeur, on dit alors que l'on flash le routeur. Diffrentes mthodes sont possibles mais la plus simple reste l'utilisation de tftp (trivail ftp).
$ sudo arp -s 192.168.1.1 $ tftp 192.168.1.1 tftp> binary tftp> trace tftp> get ASUSSPACELINKaaaa /dev/null tftp> put openwrt-xxx-x.x-xxx.trx ASUSSPACELINK
Une fois le firmware sur le routeur, celui-ci va redmarrer afin de tenir compte des modifications. Nous disposons enfin d'un systeme d'exploitation fonctionnele nous permettant d'effectuer les manipulation de bases des systmes UNIX (ls, cd, mount, ..) et entirement configurables (rseaux, tches planifies, applications,..), c'est d'ailleurs grce cel que l'on pourra installer notre environnement Web (Serveur, PHP, SGBD).
Schma 4 : Connection ssh sur le routeur
Donc pour pouvoir grer une application web, il nous faut : Un serveur web : lighttpd lighttpd (ou "lighty") est un serveur HTTP scuris, rapide et flexible. De nombreux langage (dont PHP) son grs grce au module FastCGI. Le principal inconvnient de lighttpd face Apache est de ne pas supporter les fichiers .htaccess : les directives ne sont values qu'une seule fois, au dmarrage du serveur. Un Moteur de Base de donne : SQLite3 SQLite est une petite bibliothque crite en C qui propose un moteur de base de donnes SQL. Contrairement aux serveurs de bases de donnes comme MySQL, sa particularit est de ne pas reproduire le schma habituel client/serveur mais d'tre intgr directement aux programmes en utilisant des fichiers de bases de donnes. On comprend donc l'intert d'un tel moteur de base donnes dans les systmes embarqus aux ressources limites (il est d'ailleurs utiliss dans l'iPhone, Firefox, Skype, entre autre). Un langage de Programmation : PHP5 PHP: Hypertext Preprocessor, est un langage de script libre, trs simple, principalement utilis pour produire des pages web dynamiques via un serveur HTTP. Le PHP gre depuis sa version 5 les concepts
IUT Informatique de Clermont -Ferrand Pages : 10/30
objets. Il permet de dynamiser les pages web en accdant une base de donnes par exemple, ou en utilisant tout un panel de fonctions permettant des transformations de textes, des calculs mathmatiques ou de gnrer des fichiers par exemple. Une fois tous les paquets installs et configurs, on peut alors profiter de toutes applications web bases sur le PHP et SQLite. Dans notre cas il s'agira d'une gestion d'un automate d'un aquarium.
Schma 5 : Page principal de l'application tudie affiche depuis le routeur
A cause des ressources limites du routeur 4Mo de flash, il tait impossible de tout laisser sur l'appareil. On a donc d externaliser sur un espace de stockage une partie de l'installation. L'lement le plus lourd lors de l'installation est l'executable php.
IUT Informatique de Clermont -Ferrand Pages : 11/30
Compilation du paquet php sans gnration de l'executable. Pour cela on commente la ligne crant l'executable. On obtient alors un paquet de quelques Ko, eu lieu de 1,3Mo. On installe normalement le paquet php sur le routeur. On monte le peripherique de stockage. On crer un lien symbolique entre l'executable php prsent sur le pripherique et le l'executable qui devrait etre sur le routeur.*
On obtient donc une installation capable de grer le php, cependant il faut pour cela toujours avoir un peripherique contenant l'executable php. Il faut donc chaque redmarrage du routeur, monter le pripherique et crer le lien. Voil un script, lanc au dmarrage du routeur, effectuant les diffrentes tches:
#!/bin/sh /etc/rc.common START=90 start() { echo start # commands to launch application #USB mount /dev/scsi/host0/bus0/target0/lun0/part1 /mnt/ #PHP ln s /mnt/usb/usr/bin/phpcgi /usr/bin/phpcgi }
1.5-Image Builder
La procdure d'installation est donc longue et, demande des comptences provenant surtout du domaine Unix (fichiers, commandes, compilation). Afin de simplifier cette procdure, on peut utiliser Image Builder. Le but de ce programme est de partir d'une premiere version du
IUT Informatique de Clermont -Ferrand Pages : 12/30
firmware et d'installer les fichiers et paquets dsirs par l'utilisateur. Pour cela, on peut utiliser la gestion de profils, ou les options de la ligne de commande. Il suffit de preciser le rpertoire dans lequel sont stocks les paquets voulus, et faire la mme chose avec les fichiers (Attention: il faut respecter l'architecture du systeme de fichiers : /etc/lighttpd/configuration par exemple pour mettre le fichier de configuration dans le bon repertoire). Ex: avec la gestion de profile:
make image PROFILE="NOM_PROFILE" FILES="CHEMIN_FICHIER"
On compile (la compilation est beaucoup plus rapide car correspond seulement une installation de paquets). On obtient alors un firmware personnalis et prt l'emploi.
Diagramme de contexte : c'est un diagramme dynamique permettant d'identifier les acteurs et les messages. Les acteurs utilisent le systme et ragissent par envoi ou rception des messages.
Diagramme de cas d'utilisation : il reprsente lensemble des fonctionnalits du systme tudier. Il permet didentifier toutes les fonctions du systme, de les resituer entre elles et/ou face aux acteurs. En gnral, ce diagramme est accompagn de fiches descriptives (une par cas dutilisation).
Diagramme d'activit : il reprsente les rgles denchainement des activits du systme. Il comprend un tat initial, des tests-conditions, des tatsactivits et un tat final.
Diagramme des classes participantes : associe entre elles, deux ou plusieurs classes prcises par le code de multiplicit et par laction qui les lie. Il permet de dcouvrir les classes du systme et dimplmenter les proprits et les mthodes des classes.
Diagramme d'tat : il reprsente le cycle de vie dun objet dune classe. Les objets subissant les contraintes extrieures passent par une succession dtats modifiant la valeur des attributs ou des rgles composant lobjet. Il
est compos dun tat initial, dtats de lobjet, de transitions composes dvnements et de conditions et dun tat final.
Diagramme de collaboration : il permet de respecter chronologiquement les scnarii, les interactions entre objets au niveau du cas dutilisation. Il souligne les relations structurelles (changes, messages).
Diagramme de squence : il prcise le diagramme de collaboration, il ordonne les changes des messages entre objets. Cest le seul diagramme sous UML, o la notion de temps apparat. Il existe un diagramme de squence gnral et un diagramme de squence dtaill.
Diagramme de packages : un package tant un conteneur logique permettant de regrouper et d'organiser les lments dans le modle UML, il sert reprsenter les dpendances entre packages, cest--dire les dpendances entre ensembles de dfinitions.
Concernant notre analyse, elle ne contient que l'tude de certains cas d'utilisation, ou U.C. (les plus interressantes). Par ailleurs, l'application n'ayant pas t dveloppe en Objets (alors que UML est une mthode oriente objets), certains diagrammes sont inaplicables, comme le Diagramme de classes participantes, le Diagramme d'tat, le Diagramme de collaboration et le Diagramme de packages, c'est pour cette raison qu'ils ne figureront pas dans l'analyse.
Ce shma reprsente simplement l'application globalement, sans les dtails internes, ceux-ci tant dcrit tout de suite, avec le diagramme de cas d'utilisation du site , rvlant tous les cas d'utilisation. 2.2.3 Diagramme de cas d'utilisation de l'application Ce diagramme nous permet de mieux comprendre l'application de gestion de l'automate de l'aquarium, en reprsentant l'ensemble de ses fonctionnalits, comme la gestion de l'aquarium, la connexion,...
Schma 7 : diagramme de cas d'utilisation
Nous allons maintenant vous prsenter l'analyse de trois des neuf cas d'utilisation de l'application, les autres leurs ressemblant normement. 2.2.4 Diagrammes de trois cas d'utilisation A Cas #1 : se connecter (login.php)
Il s'agt de la partie concernant la connexion d'un utilisateur l'application, se composant de deux parties : la vue v-login.php et le modle a-login.php.
Schma 8 : diagramme d'activit de l'U.C. se connecter
B Cas #2 : Calibrage sonde PH (ph) Cette partie concerne le calibrage de la sonde PH mise dans l'aquarium li l'application. Cette partie n'est pas trs complexe, mais reprsente bien ce qui se fait dans la plupart des UC, c'est dire une simple vrification de l'utilisation du formulaire de modifications, une mise jour de la base de donnes (BDD) et ensuite une rcupration de certains donnes dans la BDD, ainsi que et c'est plus rare - la construction d'un fichier XML, permettant de faire des courbes d'volution (du PH donc) graphe une animation Flash. Cette partie se compose de deux fichiers php : la vue v-ph.php et le modle aph.php.
Cette partie concerne la configuration de divers paramtres de l'application, comme l'adresse e-mail de l'administrateur, les deux groupes de pompes, l'cumeur, les pompes doseuses, etc... Comme tous les U.C., elle se compose de deux fichiers php, une vue et un modle.
Schma 12 : diagramme d'activit de l'U.C. configuration
Aprs avoir analys l'ancienne version du site et en avoir retir les avantages et inconvnient, points positifs et ngatifs, il nous fallu le transformer, effectuant ainsi son passage en MVC, et par ailleurs, en y intgrant des classes mtiers, permettant ainsi une meilleure robustesse, une plus grande malabilit (souplesse) et une maintenance plus aise, ainsi qu'une organisation plus pousse. Par ailleurs, il nous a paru vident qu'il fallait aussi modifier le code, afin d'viter des contrles rptitifs et similaires ainsi que des rptitions de blocs de traitements inutiles, ceci dans le but de mieux organiser le code, pour que ce dernier soit plus facilement modifiable, et afin de rduire la taille de l'application, celle-ci tant trs importante du fait du manque de place disponible (la faute la faible mmoire du routeur).
IUT Informatique de Clermont -Ferrand Pages : 22/30
2.3.1 MVC type Web Il faut tout savoir ce qu'est le MVC (Modle Vue Controleur). Il s'agt en fait d'un modle de programmation (Pattern) qui permet d'organiser une application (avec une interface graphique, lourde ou de type web) en trois lments cls :
le modle, qui verifie l'intgrit des donnes et qui effectue les diffrents traitements (travaux), en faisant appel aux classes mtiers les vues, qui s'occupe de reprsenter visuellement et d'organiser les donnes retournes par le modle le controleur, qui fait appel au modle en fonction des actions demandes par l'utilisateur
Nous n'avons pas touch aux vues (sauf pour les formulaires, en y intgrant un champ hidden (cach) contenant le nom de l'action effectuer), en revanche, nous avons d entirement crer les controleurs, les modles et les classes du site. Ces dernires, aux nombre de neuf (sans compter la classe de connexion la base SQLite3 et la classe Champ [dj implmente]), sont les suivantes :
Tout cela rend tout de suite le code plus propre et plus facilement modulable/utilisable/lisible, comme on peut le voir avec l'exemple suivant, qui concerne l'arrt/redmarrage de l'automate.
$oConnection = new Connection($dConfig["connection"]); $oConnection->start(); if(isset($_POST['gr'])) { $g=$_POST["gr"]; $sql="UPDATE parametres SET nb='$g' WHERE nom='start'"; $rep = $oConnection->query($sql) <br>'.$sql.'<br>'); if($g=="3") $etat="pas demarr"; else $etat="demarr"; } $oConnection->stop();
Ancienne version dite procdurale
or die('Erreur SQL !
if(isset($_POST['gr'])) { $param = new Parametre(); $param->nb = $_POST["gr"]; $param->nom = "start"; $param->updateNbForNom(); if($_POST["gr"] == "3") $etat="pas demarr"; else $etat="demarr"; return $etat; }
Nouvelle version avec utilisation de la classe mtier Parametre
Toutefois, dans notre cas (application web), nous avons utilis une lgre variante du MVC, en intgrant un Front controleur , une sorte d'aiguilleur, qui fait appel des controleurs spcifiques en fonction des actions demandes/effectues par l'utilisateur. Nous avons donc l'architecture suivante pour l'application Gestion de l'automate d'un aquarium :
Ainsi, lorsque l'utilisateur fait appel une page ou effectue une action, il appel en ralit le Front Controleur, qui est l'index du site. Celui-ci, en fonction du type de requte (GET ou POST), rcupre l'action, et, suivant cette dernire, fait appel au controleur lui tant spcifique. Le controleur ainsi appel, en fonction de l'action, demande au(x) modle(s) lui tant associ(s) d'effectuer un ou plusieurs traitements/travaux (par le biai de fonctions), afin de rcuprer des donnes et/ou d'en modifier certaines. Une fois ces traitemens effectus par le(s) modle(s), le controleur n'a plus qu' faire appel une (ou plusieurs vues) qui se chargera elle d'utiliser/afficher les donnes ainsi rcupres. On voit donc bien ici que chaque couche a sa fonction et que rien
IUT Informatique de Clermont -Ferrand Pages : 27/30
n'est mlang, ce qui permet une meilleure modularit et une maintenance plus facile effectuer. D'ailleurs, nous allons maintenant voir un exemple avec l'une des pages de l'application web sur laquelle nous avons d travailler.
Ainsi, cet exemple nous permet de bien voir les diffrentes intractions entre les diffrents composants/objets du site. On remarque ici que le Front Controleur prcdement cit est ici l'index, comme dans la plupart des applications Web de ce type. Par ailleurs, on peut voir que nous avons un Controleur par groupement de tches (par page), mais un Controleur peut lui utiliser un ou plusieurs modles. Enfin, comme nous l'avons dit, les vues ne servent qu' afficher les donnes retournes par le(s) modle(s) et ne font en aucun cas du traitement (des contrles quelques fois). 2.3.4 Avantages/Inconvnients Comme nous l'avons dit prcdement, ce type d'architecture permet une maintenance plus facile et une meilleure organisation des tches/rles de chaque partie (vues, modles,...) du site, ce qui permet par ailleurs un dveloppement plus rapide. En revanche, cela demande plus de ressources (RAM surtout), puisqu'il s'agt l d'une imbrication de couches, demandant sans cesse des inclusions de pages, des appels d'autres pages,... Par ailleurs, le fait d'utiliser des objets (avec des crations perpetuelles) demande plus de ressources qu' l'acoutum, mais l'application n'tant pas destine au grand-public, ceci n'est pas un gros problme. 2.3.5 Autre volution : le Flash pour les graphiques En effet, un des points noirs de l'ancienne version tait ses graphiques, gnrs en php (grce des librairies spciales), et demandant des traitements trs lourds, autrement dit, quasi impossible grer pour le routeur. La solution a t de transfrer cette surcharge de travail du serveur au client, en traant les graphiques (courbes) en Flash.
Conclusion
Nous avons donc russi faire du rooteur ASUS un mini-serveur, en y installant un firmware personnalis (grce au systme d'exploitation OpenWRT), un client NTP, FastCGI (un module permettant de grer plusieurs langages comme le PHP, quasi incontournable dans les applications de type web), et en utilisant une base de donnes SQLite3, permettant ainsi d'avoir de vritables capacits de gnration de pages web dynamiques. Cette fase d'installation a t trs longue mais trs interressante puisque permettant de se rendre compte combien il t facile, avec un simple rooteur, de se doter de son propre serveur (avec bien entendu des capacits moindres que les gros serveurs prsents sur la toile), pour par exemple, se constituer une petite plateforme d'change et de gestion des PC prsents dans sa maison (si on en a plusieurs). Concernant l'application placer sur le mini-serveur, nous l'avons transform en MVC (aprs avoir compris compris son architecture, son fonctionnement, et valu ses points forts, ses points faibles), et nous avons aussi d effectuer son passage en objets, le tout avec l'objectif de raliser un site lger, tant au niveau des ressources mmoires que des ressources lies la puissance du routeur. Cet objectif a t en grande partie rempli, puisque le site est dsormais moins gros que la version prcdentes, et les temps de rponses ne semblent pas tre plus importants. En revanche, la transformation n'est pas totale, certaines fonctions posant encore problme (et ne marchent pas), la faute un nombre trop important de bases de donnes diffrentes (trois en tout, avec des tables et des lignes diffrentes), et des problmes de serveur vers la fin du projet (quelqu'un essayait pendant des jours de le pirater, rendant impossible son utilisation).