développement d application mobile pour la messagerie: … · ainsi, kononi.com a décidé de...
TRANSCRIPT
Rapport de stage
Preacutesenteacute Par Massa DICKO et Alpha DIALLO
Encadreurs
Dr Jacqueline KONATE
Mr Cheick KEITA
LICENCE INFORMATIQUE
Anneacutee universitaire 2013-2014
Deacuteveloppement drsquoune
Application mobile pour la
Messagerie KONONI
UNIVERSITE DES SCIENCES DES
TECHNIQUES ET DES TECHNOLOGIES
DE BAMAKO (USTTB)
sectsectsectsectsectsectsectsectsectsectsectsectsectsectsect
FACULTE DES SCIENCES ET
TECHNIQUES
2
Remerciements
Tous drsquoabord nous remercions infiniment le Bon Dieu de nous avoir donneacute la force
le courage et la patience tout au long de nos eacutetudes et surtout drsquoavoir mis sur
notre chemin des personnes exceptionnelles
Nous adressons un grand remerciement agrave Mr Cheick Keita ingeacutenieur reacutesidant aux
USA qui a proposeacute le sujet du stage et qui a assureacute son encadrement Nous lui
sommes tregraves reconnaissants pour son aide preacutecieuse et pour le temps qursquoil nous a
consacreacute lorsque nous en avions eu besoin
Un grand remerciement agrave Dr Sogoba Jacqueline Konateacute maicirctre-assistante agrave la FST-
USTTB de nous avoir choisis pour faire ce stage et drsquoavoir assureacute son co-
encadrement
Nous voulons eacutegalement remercier tous les professeurs de la faculteacute des sciences et
techniques qui nous ont formeacutes tout au long de notre parcours
Nous ne saurions terminer sans adresser nos chaleureuses salutations aux geacuteneacutereux
parents qui nous ont toujours encourageacutes et soutenus dans nos eacutetudes
3
Table de matiegraveres
Remerciements 2
I Contexte et probleacutematique 4
II Analyse des besoins et Architecture de lrsquoapplication 6 II1 Analyse des besoins 6 II2 Architecture 9
III Impleacutementation de lrsquoapplication 11 III1 Seacutelection drsquoun plugin 11 III2 Environnement de deacuteveloppement 12 III3 Etapes de Deacuteveloppement 16 III4 Mise en œuvre des fonctionnaliteacutes 18
III41 Creacuteation de compte et authentification 18 III42 Envoie de messages publics et groupeacutes 21 III43 Affichage de lrsquohistorique des messages 23 III44 Invitation agrave lrsquoabonnement aux messages publics 24
IV Outils et technologies utiliseacutes 25 IV1 NetBeans [5] 25 IV2 Langage java [6] 25 IV3 Git hub [7] 25 IV4 Trello [8] 26 IV5 Codename one [9] 26 IV6 Protocol http [10] 27 IV7 Skype [11] 27 IV8 Apache Tomcat [12] 27 IV9 JSON [13] 27
V Preacutesentation de lrsquoapplication 28
Conclusion et perspectives 33
Reacutefeacuterences 34
4
I Contexte et probleacutematique
Traditionnellement la radio et la teacuteleacutevision sont les principaux moyens de
communication de masse dans le monde Toutefois ces moyens ne sont pas
accessibles agrave tous sur le mecircme pied drsquoeacutegaliteacute Ils sont unidirectionnels (de
lrsquoeacutemetteur vers le reacutecepteur du message) par nature et nrsquooffrent pas de garantie
par rapport aux nombres de personnes recevant un message donneacute
La reacutevolution numeacuterique qui a commenceacute en 2000 a fait drsquoInternet le moyen de
communication de masse privileacutegieacute dans le monde Elle a rendu accessibles aux
masses les canaux qui peuvent ecirctre bidirectionnels Cette reacutevolution tarde agrave ecirctre
une reacutealiteacute dans les pays en voie de deacuteveloppement comme le Mali ougrave le taux de
peacuteneacutetration drsquoInternet est de lrsquoordre de 2 [1]
Cependant les pays en voie de deacuteveloppement ont reacutealiseacute drsquoimportantes avanceacutees
en termes drsquoadoption du teacuteleacutephone portable
Avec une population de 15 millions drsquohabitants le Mali compte 10 millions
drsquoabonneacutes chez les opeacuterateurs de teacuteleacutephonie mobile Malitel et Orange en 2013 soit
un taux de peacuteneacutetration du teacuteleacutephone portable de 6666 Alors le teacuteleacutephone
portable est le moyen de communication privileacutegieacute des populations maliennes et
est utiliseacute dans les communications simples entre deux utilisateurs (SMS ou appels
teacuteleacutephoniques)
En plus de permettre les communications simples on pourrait imaginer une
solution ougrave toute personne pourrait envoyer le mecircme message vocal ou textuel agrave
une large liste de ses contacts Ce genre de messages pourrait par exemple ecirctre
utile dans un contexte seacutecuritaire pour passer des alertes agrave une population ougrave tout
simplement pour adresser un message agrave un grand nombre de destinataires le plus
rapidement possible Ceci fera du teacuteleacutephone portable un vecteur ideacuteal pour
acceacuteleacuterer la vulgarisation des communications de masse
Crsquoest dans ce cadre que la plateforme de messagerie de masse kononicom a eacuteteacute
lanceacutee Le prototype initial ldquoMVPrdquo (ldquoMinimum Viable Productrdquo ou ldquoplus petit
prototype viablerdquo) ne concernait que les communications par SMS gracircce a un
numeacutero unique Il a servi agrave prouver la faisabiliteacute du service et agrave deacutefinir le protocole
de diffusion des eacutechanges entre utilisateurs
5
Crsquoest agrave la suite de cette premiegravere expeacuterimentation qursquoil srsquoest aveacutereacute utile de
faciliter lrsquoadoption de la plateforme aupregraves des utilisateurs citadins qui ont plus
facilement accegraves agrave Internet et qui peuvent servir de tremplin pour une diffusion
beaucoup plus large au Mali Ainsi kononicom a deacutecideacute de creacuteer une application
multiplateforme pour teacuteleacutephone mobile pour faciliter la creacuteation de compte
lrsquoenvoi de messages et le partage avec les contacts de lrsquoutilisateur
Les travaux rapporteacutes dans le preacutesent document srsquoinscrivent dans le contexte de la
creacuteation drsquoapplications mobiles pour les ldquoadopteurs preacutecocesrdquo [2] de kononicom Ils
ont consisteacute agrave deacutevelopper lrsquoapplication conformeacutement au cahier des charges de la
plateforme kononicom
Dans la suite du document lrsquoanalyse des besoins et architecture de lrsquoapplication
sont preacutesenteacutees dans la section II lrsquoimpleacutementation de lrsquoapplication est abordeacutee
dans la section III les outils et technologies utiliseacutes sont preacutesenteacutes dans la section
IV la preacutesentation de lrsquoapplication est faite dans la section V et enfin la
conclusion et les perspectives sont preacutesenteacutees dans la derniegravere section
6
II Analyse des besoins et Architecture de lrsquoapplication
II1 Analyse des besoins
Les communications de la version laquo MVP raquo de la plate-forme srsquoeffectue
essentiellement par SMS Toutefois le site Internet laquo wwwkononicom raquo offre
quelques faciliteacutes pour lrsquoinscription et la diffusion de messages en ligne
Figure 1 Site de Kononi
Voici une description du protocole de communication mis en place par Kononi gracircce
aux SMS
a) Srsquoinscrire
Pour diffuser vos propres messages vous pouvez facilement creacuteer votre compte
Kononi Pour creacuteer un compte pour lrsquoutilisateur laquo Fatoumata raquo par SMS il suffit
drsquoenvoyer le SMS laquo +Fatoumata raquo
Ci-dessous des captures drsquoeacutecran montrant lrsquoinscription par SMS
7
Figure 2 inscription (avec MVP)
Figure 3 Message de confirmation (MVP)
b) Srsquoabonner
8
Kononi vous permet drsquoecirctre toujours au courant de ce qui se passe autour de vous
Abonnez-vous aux comptes de votre choix pour recevoir tous les SMS qursquoils
enverront Par exemple pour recevoir gratuitement les messages du compte News
envoyez le SMS laquo news raquo
c) Diffuser ses messages
Diffuser vos messages une fois que vous aurez creacuteeacute votre compte Kononi vous
pourrez entrer en contact avec tous vos abonneacutes en leur envoyant le mecircme
message
Pour diffuser le message laquo Bonne fecircte agrave tousraquo agrave tous vos abonneacutes par exemple il suffira
de lenvoyer une seule fois agrave Kononi qui se chargera de le diffuser
d) Inviter ses amis
Pour inviter vos amis agrave srsquoabonner agrave vos messages envoyeacutes agrave partir de Kononi
envoyez la liste de leurs numeacuteros de teacuteleacutephone preacuteceacutedeacutee du point drsquointerrogation
Exemple drsquoinvitation 66xxxxxx 77xxxxxx
Lrsquoindicatif du pays est obligatoire pour les numeacuteros qui ne sont pas maliens Les
numeacuteros sont deacutelimiteacutes par le caractegravere espace laquo raquo
e) Reacutepondre
Crsquoest facile de reacutepondre agrave un message sur Kononi
Pour envoyer le message laquo Reccedilu 55 raquo au compte Toto envoyez le SMS laquo toto Reccedilu
55 raquo agrave Kononi qui se chargera de le transmettre agrave votre contact
f) Se deacutesabonner
Pour vous deacutesabonner du compte Toto par exemple et ne plus recevoir les
messages envoyeacutes par ce compte envoyez le SMS laquo -toto raquo
g) Se deacutesactiver
Pour ne plus recevoir de messages de Kononi envoyez le message STOP
9
Lrsquoobjectif de notre travail est de creacuteer une application mobile preacutesentant les
mecircmes fonctionnaliteacutes pour garantir la vulgarisation de Kononi aupregraves des
ldquoadopteurs preacutecocesrdquo Lrsquoapplication mobile devra utiliser les mecircmes APIs que le
MVP baseacute sur les communications purement par SMS pour assurer lrsquointeropeacuterabiliteacute
entre les deux services Les utilisateurs de Kononi doivent pouvoir eacutechanger entre
eux sans accroc peu importe lrsquooutil qursquoils utilisent (site internet application
mobile ou simple SMS)
Pour reacutealiser une application reacutepondant agrave ces besoins lrsquoarchitecture suivante a eacuteteacute
eacutelaboreacutee
II2 Architecture
Lrsquoarchitecture adopteacutee est inspireacutee du modegravele client-serveur comme montreacute agrave la
figure 4
Figure 4 architecture de lrsquoapplication
10
1deg) Lrsquoapplication envoie les donneacutees par requecircte http depuis le teacuteleacutephone de
lrsquoutilisateur Lambda (poste client)
2deg) Les donneacutees sont envoyeacutees au serveur de kononicom ougrave elles sont traiteacutees
3deg) Apregraves traitement les donneacutees sont envoyeacutees par requecircte http
4deg) Les donneacutees sont ensuite envoyeacutees aux destinataires
5deg) Les utilisateurs peuvent reacuteagir sur les donneacutees reccedilues ou envoyer de nouvelles
donneacutees par requecircte http
6deg) Lrsquoutilisateur Lambda peut recevoir les donneacutees eacutemises par drsquoautres utilisateurs
La mise en œuvre de cette architecture est preacutesenteacutee dans la section suivante
11
III Impleacutementation de lrsquoapplication
Cette section preacutesente les diffeacuterentes eacutetapes de reacutealisation de lrsquoapplication et
lrsquoapproche adopteacutee agrave cet effet
III1 Seacutelection drsquoun plugin
Initialement la technologie J2MEJava Mobile [3] avait eacuteteacute retenue pour le
deacuteveloppement de lrsquoapplication mobile Kononi car comme la majoriteacute des
teacuteleacutephones au Mali sont conccedilus suivant cette technologie Cependant J2ME
preacutesente des limites fonctionnelles pour les deacuteveloppeurs telles que
lrsquoincompatibiliteacute du fichier JAR (fichier drsquoinstallation) avec certains teacuteleacutephones de
la mecircme plateforme lrsquoimpossibiliteacute de marquer fin de deacutebogage En outre cette
technologie est relativement ancienne et tend agrave disparaicirctre
Une recherche de solutions alternatives nous a conduits au pluginlaquo Codename
One raquo [8] compatible avec Eclipse et NetBeans Il permet de deacutevelopper en Java
avec un seul et mecircme code des applications multiplateformes
Lrsquoobjectif de Codename One est de proposer une interface de deacuteveloppement
commune codeacutee en Java et capable de fonctionner sur iOS Androiumld BlackBerry
OS Windows Phone 7 et J2ME (pour les teacuteleacutephones simples) Ainsi il offre la
possibiliteacute de deacutevelopper rapidement et facilement des applications
multiplateformes
Codename One est structureacute plus ou moins de la mecircme faccedilon que lrsquoenvironnement
Java mais il utilise une approche SaaS (Software as a Service) Il est composeacute
comme suit
minus Une interface de programmation (API) ougrave on retrouve toutes les
bibliothegraveques Java et Codename One que lrsquoon peut utiliser
minus Une interface de design (GUI) permettant de creacuteer des thegravemes et des
fenecirctres pour les applications
minus Lrsquointerface de deacuteveloppement proposant un simulateur avec la possibiliteacute de
visionner lrsquoaspect de lrsquoapplication sur les diffeacuterents systegravemes drsquoexploitation
12
gracircce agrave des skins (simulateurs des plateformes) et de tester le
fonctionnement de lrsquoapplication sur lrsquoIDE
minus La construction des applications (Build) ne se fait pas sur lrsquoIDE mais dans le
Cloud sur des serveurs Codename One il faut ensuite aller reacutecupeacuterer le
reacutesultat de la construction sur son compte Codename One
III2 Environnement de deacuteveloppement
Lrsquoenvironnement de travail est composeacute de NetBeans du plugin Codename One et
de Git hub Apregraves lrsquoinstallation de NetBeans 8 le plugin Codename One a eacuteteacute
installeacute dans NetBeans puis le programme Git
Pour commencer lrsquoIDE NetBeans est lanceacute Dans lrsquoonglet laquo Tools raquo une sous
rubrique laquo plugins raquo existe et permet drsquoajouter le plugin laquo Codename One raquo
Figure 5 Option plugin
Le plug-in est reacutecupeacutereacute et ajouteacute agrave lrsquoenvironnement de deacuteveloppement
13
Figure 6 Ajout du plugin
Une fenecirctre srsquoouvre dans laquelle le plug-in est choisi en lrsquooccurrence laquo Codename
One raquo Lrsquourl pour reacutecupeacuterer le plug-in est indiqueacutee [4]
Figure 7 Saisie de lrsquoURL du plugin
14
Figure 8 Seacutelection du plugin
Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo
Figure 9 Installation
15
Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective
Figure 10 Installation (suite)
La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez
lrsquoinstallation
Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet
de relancer NetBeans
16
Figure 11 Installation (fin)
III3 Etapes de Deacuteveloppement
La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication
depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave
lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone
17
Figure 12 Phases de deacuteveloppement
Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un
compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel
pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur
fait des modifications sur le projet localement Lorsque des modifications sont
faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre
faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)
ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le
serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur
vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du
serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est
appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des
modifications des reacutepertoires personnels vers le reacutepertoire central
18
Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont
compileacutes
Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier
exeacutecutable
Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de
lrsquoapplication
1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de
fichier exeacutecutable
2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier
JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)
3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication
Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes
est deacutetailleacutee
III4 Mise en œuvre des fonctionnaliteacutes
III41 Creacuteation de compte et authentification
Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est
composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription
19
Figure 13 Diagramme de seacutequences de lrsquoinscription
Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave
lrsquoutilisateur de saisir son nom et numeacutero
20
Figure 14 formulaire drsquoinscription
Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de
teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une
requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour
arguments deux variables contenant respectivement le nom et le numeacutero de
teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au
format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de
donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie
automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le
numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une
diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste
21
dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui
signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche
Lrsquoutilisateur est donc inscrit agrave Kononi
III42 Envoie de messages publics et groupeacutes
Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute
a Message public
Un message public est un message que chaque utilisateur peut envoyer sur Kononi
sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous
les abonneacutes au compte de lrsquoutilisateur
Figure 15 Diagramme de seacutequences drsquoenvoi de message public
En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle
interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte
permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave
lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler
lrsquoopeacuteration
22
Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le
bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans
deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au
serveur
Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
dialogue contenant le code et le message drsquoerreur srsquoaffiche
b Message groupeacute
Un message de groupe est un message qursquoun utilisateur de Kononi envoie en
seacutelectionnant un groupe de contacts
Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe
Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle
interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte
et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps
du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton
laquo annuler raquo
23
Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton
laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton
laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave
envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees
comme paramegravetres de la requecircte envoyeacutee au serveur
Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
message drsquoerreur srsquoaffiche
Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page
principale
III43 Affichage de lrsquohistorique des messages
Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de
Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur
avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON
(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur
Figure 17 Exemple de reacuteponse du serveur
24
Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer
(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements
suivants
bull Un label pour lrsquoimage
bull Un label pour le nom qui a envoyeacute le message
bull Un textArea pour le message
bull Un label pour la date
III44 Invitation agrave lrsquoabonnement aux messages publics
Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande
laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page
laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous
les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a
eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour
effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le
code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes
dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux
variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave
travers une exception
- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur
- Sinon la page principale est afficheacutee
La section suivante preacutesente les outils et technologies utiliseacutes pour
lrsquoimpleacutementation de lrsquoapplication
25
IV Outils et technologies utiliseacutes
Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies
suivants ont eacuteteacute utiliseacutes
IV1 NetBeans [5]
NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun
sous la licence CDDL (Common Development and Distribution License) et GPL
(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents
autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML
NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement
JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut
ecirctre senrichi par des plugins
Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute
drsquoutiliser Codename One Drsquoougrave le choix de cette IDE
IV2 Langage java [6]
Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute
par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa
principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves
facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents
Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux
IV3 Git hub [7]
Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le
programme Git Git Hub propose des comptes gratuits pour les projets de logiciels
libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute
par Linus Torvalds
Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi
servi agrave sauvegarder toutes les versions de lrsquoapplication
26
IV4 Trello [8]
Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est
baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les
cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre
Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version
de base est gratuite
Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs
lrsquoeacutetat davancement du projet
IV5 Codename one [9]
Figure 18 Logo et slogan de Codename One
Il permet de deacutevelopper en Java avec un seul et mecircme code des applications
multiplateformes Il nous a permis de creacuteer notre application
27
IV6 Protocol http [10]
Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-
serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche
application
Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local
IV7 Skype [11]
Outre les messages eacutelectroniques qui ont servi aux communications asynchrones
lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels
Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois
racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft
Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet
Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes
additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la
visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie
instantaneacutee et le partage drsquoeacutecrans
IV8 Apache Tomcat [12]
Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache
Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne
principalement sur les systegravemes drsquoexploitation UNIX et Windows
Apache Tomcat a permis de tester localement (au sein de NetBeans) le
comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur
Kononi
IV9 JSON [13]
Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de
donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre
repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir
repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de
programmation Il est notamment utiliseacute comme le langage de transport de
donneacutees par les services Web
JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
2
Remerciements
Tous drsquoabord nous remercions infiniment le Bon Dieu de nous avoir donneacute la force
le courage et la patience tout au long de nos eacutetudes et surtout drsquoavoir mis sur
notre chemin des personnes exceptionnelles
Nous adressons un grand remerciement agrave Mr Cheick Keita ingeacutenieur reacutesidant aux
USA qui a proposeacute le sujet du stage et qui a assureacute son encadrement Nous lui
sommes tregraves reconnaissants pour son aide preacutecieuse et pour le temps qursquoil nous a
consacreacute lorsque nous en avions eu besoin
Un grand remerciement agrave Dr Sogoba Jacqueline Konateacute maicirctre-assistante agrave la FST-
USTTB de nous avoir choisis pour faire ce stage et drsquoavoir assureacute son co-
encadrement
Nous voulons eacutegalement remercier tous les professeurs de la faculteacute des sciences et
techniques qui nous ont formeacutes tout au long de notre parcours
Nous ne saurions terminer sans adresser nos chaleureuses salutations aux geacuteneacutereux
parents qui nous ont toujours encourageacutes et soutenus dans nos eacutetudes
3
Table de matiegraveres
Remerciements 2
I Contexte et probleacutematique 4
II Analyse des besoins et Architecture de lrsquoapplication 6 II1 Analyse des besoins 6 II2 Architecture 9
III Impleacutementation de lrsquoapplication 11 III1 Seacutelection drsquoun plugin 11 III2 Environnement de deacuteveloppement 12 III3 Etapes de Deacuteveloppement 16 III4 Mise en œuvre des fonctionnaliteacutes 18
III41 Creacuteation de compte et authentification 18 III42 Envoie de messages publics et groupeacutes 21 III43 Affichage de lrsquohistorique des messages 23 III44 Invitation agrave lrsquoabonnement aux messages publics 24
IV Outils et technologies utiliseacutes 25 IV1 NetBeans [5] 25 IV2 Langage java [6] 25 IV3 Git hub [7] 25 IV4 Trello [8] 26 IV5 Codename one [9] 26 IV6 Protocol http [10] 27 IV7 Skype [11] 27 IV8 Apache Tomcat [12] 27 IV9 JSON [13] 27
V Preacutesentation de lrsquoapplication 28
Conclusion et perspectives 33
Reacutefeacuterences 34
4
I Contexte et probleacutematique
Traditionnellement la radio et la teacuteleacutevision sont les principaux moyens de
communication de masse dans le monde Toutefois ces moyens ne sont pas
accessibles agrave tous sur le mecircme pied drsquoeacutegaliteacute Ils sont unidirectionnels (de
lrsquoeacutemetteur vers le reacutecepteur du message) par nature et nrsquooffrent pas de garantie
par rapport aux nombres de personnes recevant un message donneacute
La reacutevolution numeacuterique qui a commenceacute en 2000 a fait drsquoInternet le moyen de
communication de masse privileacutegieacute dans le monde Elle a rendu accessibles aux
masses les canaux qui peuvent ecirctre bidirectionnels Cette reacutevolution tarde agrave ecirctre
une reacutealiteacute dans les pays en voie de deacuteveloppement comme le Mali ougrave le taux de
peacuteneacutetration drsquoInternet est de lrsquoordre de 2 [1]
Cependant les pays en voie de deacuteveloppement ont reacutealiseacute drsquoimportantes avanceacutees
en termes drsquoadoption du teacuteleacutephone portable
Avec une population de 15 millions drsquohabitants le Mali compte 10 millions
drsquoabonneacutes chez les opeacuterateurs de teacuteleacutephonie mobile Malitel et Orange en 2013 soit
un taux de peacuteneacutetration du teacuteleacutephone portable de 6666 Alors le teacuteleacutephone
portable est le moyen de communication privileacutegieacute des populations maliennes et
est utiliseacute dans les communications simples entre deux utilisateurs (SMS ou appels
teacuteleacutephoniques)
En plus de permettre les communications simples on pourrait imaginer une
solution ougrave toute personne pourrait envoyer le mecircme message vocal ou textuel agrave
une large liste de ses contacts Ce genre de messages pourrait par exemple ecirctre
utile dans un contexte seacutecuritaire pour passer des alertes agrave une population ougrave tout
simplement pour adresser un message agrave un grand nombre de destinataires le plus
rapidement possible Ceci fera du teacuteleacutephone portable un vecteur ideacuteal pour
acceacuteleacuterer la vulgarisation des communications de masse
Crsquoest dans ce cadre que la plateforme de messagerie de masse kononicom a eacuteteacute
lanceacutee Le prototype initial ldquoMVPrdquo (ldquoMinimum Viable Productrdquo ou ldquoplus petit
prototype viablerdquo) ne concernait que les communications par SMS gracircce a un
numeacutero unique Il a servi agrave prouver la faisabiliteacute du service et agrave deacutefinir le protocole
de diffusion des eacutechanges entre utilisateurs
5
Crsquoest agrave la suite de cette premiegravere expeacuterimentation qursquoil srsquoest aveacutereacute utile de
faciliter lrsquoadoption de la plateforme aupregraves des utilisateurs citadins qui ont plus
facilement accegraves agrave Internet et qui peuvent servir de tremplin pour une diffusion
beaucoup plus large au Mali Ainsi kononicom a deacutecideacute de creacuteer une application
multiplateforme pour teacuteleacutephone mobile pour faciliter la creacuteation de compte
lrsquoenvoi de messages et le partage avec les contacts de lrsquoutilisateur
Les travaux rapporteacutes dans le preacutesent document srsquoinscrivent dans le contexte de la
creacuteation drsquoapplications mobiles pour les ldquoadopteurs preacutecocesrdquo [2] de kononicom Ils
ont consisteacute agrave deacutevelopper lrsquoapplication conformeacutement au cahier des charges de la
plateforme kononicom
Dans la suite du document lrsquoanalyse des besoins et architecture de lrsquoapplication
sont preacutesenteacutees dans la section II lrsquoimpleacutementation de lrsquoapplication est abordeacutee
dans la section III les outils et technologies utiliseacutes sont preacutesenteacutes dans la section
IV la preacutesentation de lrsquoapplication est faite dans la section V et enfin la
conclusion et les perspectives sont preacutesenteacutees dans la derniegravere section
6
II Analyse des besoins et Architecture de lrsquoapplication
II1 Analyse des besoins
Les communications de la version laquo MVP raquo de la plate-forme srsquoeffectue
essentiellement par SMS Toutefois le site Internet laquo wwwkononicom raquo offre
quelques faciliteacutes pour lrsquoinscription et la diffusion de messages en ligne
Figure 1 Site de Kononi
Voici une description du protocole de communication mis en place par Kononi gracircce
aux SMS
a) Srsquoinscrire
Pour diffuser vos propres messages vous pouvez facilement creacuteer votre compte
Kononi Pour creacuteer un compte pour lrsquoutilisateur laquo Fatoumata raquo par SMS il suffit
drsquoenvoyer le SMS laquo +Fatoumata raquo
Ci-dessous des captures drsquoeacutecran montrant lrsquoinscription par SMS
7
Figure 2 inscription (avec MVP)
Figure 3 Message de confirmation (MVP)
b) Srsquoabonner
8
Kononi vous permet drsquoecirctre toujours au courant de ce qui se passe autour de vous
Abonnez-vous aux comptes de votre choix pour recevoir tous les SMS qursquoils
enverront Par exemple pour recevoir gratuitement les messages du compte News
envoyez le SMS laquo news raquo
c) Diffuser ses messages
Diffuser vos messages une fois que vous aurez creacuteeacute votre compte Kononi vous
pourrez entrer en contact avec tous vos abonneacutes en leur envoyant le mecircme
message
Pour diffuser le message laquo Bonne fecircte agrave tousraquo agrave tous vos abonneacutes par exemple il suffira
de lenvoyer une seule fois agrave Kononi qui se chargera de le diffuser
d) Inviter ses amis
Pour inviter vos amis agrave srsquoabonner agrave vos messages envoyeacutes agrave partir de Kononi
envoyez la liste de leurs numeacuteros de teacuteleacutephone preacuteceacutedeacutee du point drsquointerrogation
Exemple drsquoinvitation 66xxxxxx 77xxxxxx
Lrsquoindicatif du pays est obligatoire pour les numeacuteros qui ne sont pas maliens Les
numeacuteros sont deacutelimiteacutes par le caractegravere espace laquo raquo
e) Reacutepondre
Crsquoest facile de reacutepondre agrave un message sur Kononi
Pour envoyer le message laquo Reccedilu 55 raquo au compte Toto envoyez le SMS laquo toto Reccedilu
55 raquo agrave Kononi qui se chargera de le transmettre agrave votre contact
f) Se deacutesabonner
Pour vous deacutesabonner du compte Toto par exemple et ne plus recevoir les
messages envoyeacutes par ce compte envoyez le SMS laquo -toto raquo
g) Se deacutesactiver
Pour ne plus recevoir de messages de Kononi envoyez le message STOP
9
Lrsquoobjectif de notre travail est de creacuteer une application mobile preacutesentant les
mecircmes fonctionnaliteacutes pour garantir la vulgarisation de Kononi aupregraves des
ldquoadopteurs preacutecocesrdquo Lrsquoapplication mobile devra utiliser les mecircmes APIs que le
MVP baseacute sur les communications purement par SMS pour assurer lrsquointeropeacuterabiliteacute
entre les deux services Les utilisateurs de Kononi doivent pouvoir eacutechanger entre
eux sans accroc peu importe lrsquooutil qursquoils utilisent (site internet application
mobile ou simple SMS)
Pour reacutealiser une application reacutepondant agrave ces besoins lrsquoarchitecture suivante a eacuteteacute
eacutelaboreacutee
II2 Architecture
Lrsquoarchitecture adopteacutee est inspireacutee du modegravele client-serveur comme montreacute agrave la
figure 4
Figure 4 architecture de lrsquoapplication
10
1deg) Lrsquoapplication envoie les donneacutees par requecircte http depuis le teacuteleacutephone de
lrsquoutilisateur Lambda (poste client)
2deg) Les donneacutees sont envoyeacutees au serveur de kononicom ougrave elles sont traiteacutees
3deg) Apregraves traitement les donneacutees sont envoyeacutees par requecircte http
4deg) Les donneacutees sont ensuite envoyeacutees aux destinataires
5deg) Les utilisateurs peuvent reacuteagir sur les donneacutees reccedilues ou envoyer de nouvelles
donneacutees par requecircte http
6deg) Lrsquoutilisateur Lambda peut recevoir les donneacutees eacutemises par drsquoautres utilisateurs
La mise en œuvre de cette architecture est preacutesenteacutee dans la section suivante
11
III Impleacutementation de lrsquoapplication
Cette section preacutesente les diffeacuterentes eacutetapes de reacutealisation de lrsquoapplication et
lrsquoapproche adopteacutee agrave cet effet
III1 Seacutelection drsquoun plugin
Initialement la technologie J2MEJava Mobile [3] avait eacuteteacute retenue pour le
deacuteveloppement de lrsquoapplication mobile Kononi car comme la majoriteacute des
teacuteleacutephones au Mali sont conccedilus suivant cette technologie Cependant J2ME
preacutesente des limites fonctionnelles pour les deacuteveloppeurs telles que
lrsquoincompatibiliteacute du fichier JAR (fichier drsquoinstallation) avec certains teacuteleacutephones de
la mecircme plateforme lrsquoimpossibiliteacute de marquer fin de deacutebogage En outre cette
technologie est relativement ancienne et tend agrave disparaicirctre
Une recherche de solutions alternatives nous a conduits au pluginlaquo Codename
One raquo [8] compatible avec Eclipse et NetBeans Il permet de deacutevelopper en Java
avec un seul et mecircme code des applications multiplateformes
Lrsquoobjectif de Codename One est de proposer une interface de deacuteveloppement
commune codeacutee en Java et capable de fonctionner sur iOS Androiumld BlackBerry
OS Windows Phone 7 et J2ME (pour les teacuteleacutephones simples) Ainsi il offre la
possibiliteacute de deacutevelopper rapidement et facilement des applications
multiplateformes
Codename One est structureacute plus ou moins de la mecircme faccedilon que lrsquoenvironnement
Java mais il utilise une approche SaaS (Software as a Service) Il est composeacute
comme suit
minus Une interface de programmation (API) ougrave on retrouve toutes les
bibliothegraveques Java et Codename One que lrsquoon peut utiliser
minus Une interface de design (GUI) permettant de creacuteer des thegravemes et des
fenecirctres pour les applications
minus Lrsquointerface de deacuteveloppement proposant un simulateur avec la possibiliteacute de
visionner lrsquoaspect de lrsquoapplication sur les diffeacuterents systegravemes drsquoexploitation
12
gracircce agrave des skins (simulateurs des plateformes) et de tester le
fonctionnement de lrsquoapplication sur lrsquoIDE
minus La construction des applications (Build) ne se fait pas sur lrsquoIDE mais dans le
Cloud sur des serveurs Codename One il faut ensuite aller reacutecupeacuterer le
reacutesultat de la construction sur son compte Codename One
III2 Environnement de deacuteveloppement
Lrsquoenvironnement de travail est composeacute de NetBeans du plugin Codename One et
de Git hub Apregraves lrsquoinstallation de NetBeans 8 le plugin Codename One a eacuteteacute
installeacute dans NetBeans puis le programme Git
Pour commencer lrsquoIDE NetBeans est lanceacute Dans lrsquoonglet laquo Tools raquo une sous
rubrique laquo plugins raquo existe et permet drsquoajouter le plugin laquo Codename One raquo
Figure 5 Option plugin
Le plug-in est reacutecupeacutereacute et ajouteacute agrave lrsquoenvironnement de deacuteveloppement
13
Figure 6 Ajout du plugin
Une fenecirctre srsquoouvre dans laquelle le plug-in est choisi en lrsquooccurrence laquo Codename
One raquo Lrsquourl pour reacutecupeacuterer le plug-in est indiqueacutee [4]
Figure 7 Saisie de lrsquoURL du plugin
14
Figure 8 Seacutelection du plugin
Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo
Figure 9 Installation
15
Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective
Figure 10 Installation (suite)
La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez
lrsquoinstallation
Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet
de relancer NetBeans
16
Figure 11 Installation (fin)
III3 Etapes de Deacuteveloppement
La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication
depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave
lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone
17
Figure 12 Phases de deacuteveloppement
Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un
compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel
pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur
fait des modifications sur le projet localement Lorsque des modifications sont
faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre
faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)
ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le
serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur
vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du
serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est
appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des
modifications des reacutepertoires personnels vers le reacutepertoire central
18
Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont
compileacutes
Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier
exeacutecutable
Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de
lrsquoapplication
1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de
fichier exeacutecutable
2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier
JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)
3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication
Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes
est deacutetailleacutee
III4 Mise en œuvre des fonctionnaliteacutes
III41 Creacuteation de compte et authentification
Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est
composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription
19
Figure 13 Diagramme de seacutequences de lrsquoinscription
Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave
lrsquoutilisateur de saisir son nom et numeacutero
20
Figure 14 formulaire drsquoinscription
Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de
teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une
requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour
arguments deux variables contenant respectivement le nom et le numeacutero de
teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au
format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de
donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie
automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le
numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une
diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste
21
dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui
signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche
Lrsquoutilisateur est donc inscrit agrave Kononi
III42 Envoie de messages publics et groupeacutes
Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute
a Message public
Un message public est un message que chaque utilisateur peut envoyer sur Kononi
sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous
les abonneacutes au compte de lrsquoutilisateur
Figure 15 Diagramme de seacutequences drsquoenvoi de message public
En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle
interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte
permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave
lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler
lrsquoopeacuteration
22
Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le
bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans
deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au
serveur
Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
dialogue contenant le code et le message drsquoerreur srsquoaffiche
b Message groupeacute
Un message de groupe est un message qursquoun utilisateur de Kononi envoie en
seacutelectionnant un groupe de contacts
Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe
Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle
interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte
et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps
du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton
laquo annuler raquo
23
Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton
laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton
laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave
envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees
comme paramegravetres de la requecircte envoyeacutee au serveur
Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
message drsquoerreur srsquoaffiche
Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page
principale
III43 Affichage de lrsquohistorique des messages
Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de
Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur
avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON
(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur
Figure 17 Exemple de reacuteponse du serveur
24
Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer
(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements
suivants
bull Un label pour lrsquoimage
bull Un label pour le nom qui a envoyeacute le message
bull Un textArea pour le message
bull Un label pour la date
III44 Invitation agrave lrsquoabonnement aux messages publics
Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande
laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page
laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous
les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a
eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour
effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le
code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes
dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux
variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave
travers une exception
- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur
- Sinon la page principale est afficheacutee
La section suivante preacutesente les outils et technologies utiliseacutes pour
lrsquoimpleacutementation de lrsquoapplication
25
IV Outils et technologies utiliseacutes
Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies
suivants ont eacuteteacute utiliseacutes
IV1 NetBeans [5]
NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun
sous la licence CDDL (Common Development and Distribution License) et GPL
(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents
autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML
NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement
JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut
ecirctre senrichi par des plugins
Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute
drsquoutiliser Codename One Drsquoougrave le choix de cette IDE
IV2 Langage java [6]
Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute
par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa
principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves
facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents
Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux
IV3 Git hub [7]
Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le
programme Git Git Hub propose des comptes gratuits pour les projets de logiciels
libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute
par Linus Torvalds
Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi
servi agrave sauvegarder toutes les versions de lrsquoapplication
26
IV4 Trello [8]
Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est
baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les
cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre
Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version
de base est gratuite
Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs
lrsquoeacutetat davancement du projet
IV5 Codename one [9]
Figure 18 Logo et slogan de Codename One
Il permet de deacutevelopper en Java avec un seul et mecircme code des applications
multiplateformes Il nous a permis de creacuteer notre application
27
IV6 Protocol http [10]
Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-
serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche
application
Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local
IV7 Skype [11]
Outre les messages eacutelectroniques qui ont servi aux communications asynchrones
lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels
Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois
racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft
Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet
Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes
additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la
visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie
instantaneacutee et le partage drsquoeacutecrans
IV8 Apache Tomcat [12]
Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache
Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne
principalement sur les systegravemes drsquoexploitation UNIX et Windows
Apache Tomcat a permis de tester localement (au sein de NetBeans) le
comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur
Kononi
IV9 JSON [13]
Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de
donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre
repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir
repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de
programmation Il est notamment utiliseacute comme le langage de transport de
donneacutees par les services Web
JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
3
Table de matiegraveres
Remerciements 2
I Contexte et probleacutematique 4
II Analyse des besoins et Architecture de lrsquoapplication 6 II1 Analyse des besoins 6 II2 Architecture 9
III Impleacutementation de lrsquoapplication 11 III1 Seacutelection drsquoun plugin 11 III2 Environnement de deacuteveloppement 12 III3 Etapes de Deacuteveloppement 16 III4 Mise en œuvre des fonctionnaliteacutes 18
III41 Creacuteation de compte et authentification 18 III42 Envoie de messages publics et groupeacutes 21 III43 Affichage de lrsquohistorique des messages 23 III44 Invitation agrave lrsquoabonnement aux messages publics 24
IV Outils et technologies utiliseacutes 25 IV1 NetBeans [5] 25 IV2 Langage java [6] 25 IV3 Git hub [7] 25 IV4 Trello [8] 26 IV5 Codename one [9] 26 IV6 Protocol http [10] 27 IV7 Skype [11] 27 IV8 Apache Tomcat [12] 27 IV9 JSON [13] 27
V Preacutesentation de lrsquoapplication 28
Conclusion et perspectives 33
Reacutefeacuterences 34
4
I Contexte et probleacutematique
Traditionnellement la radio et la teacuteleacutevision sont les principaux moyens de
communication de masse dans le monde Toutefois ces moyens ne sont pas
accessibles agrave tous sur le mecircme pied drsquoeacutegaliteacute Ils sont unidirectionnels (de
lrsquoeacutemetteur vers le reacutecepteur du message) par nature et nrsquooffrent pas de garantie
par rapport aux nombres de personnes recevant un message donneacute
La reacutevolution numeacuterique qui a commenceacute en 2000 a fait drsquoInternet le moyen de
communication de masse privileacutegieacute dans le monde Elle a rendu accessibles aux
masses les canaux qui peuvent ecirctre bidirectionnels Cette reacutevolution tarde agrave ecirctre
une reacutealiteacute dans les pays en voie de deacuteveloppement comme le Mali ougrave le taux de
peacuteneacutetration drsquoInternet est de lrsquoordre de 2 [1]
Cependant les pays en voie de deacuteveloppement ont reacutealiseacute drsquoimportantes avanceacutees
en termes drsquoadoption du teacuteleacutephone portable
Avec une population de 15 millions drsquohabitants le Mali compte 10 millions
drsquoabonneacutes chez les opeacuterateurs de teacuteleacutephonie mobile Malitel et Orange en 2013 soit
un taux de peacuteneacutetration du teacuteleacutephone portable de 6666 Alors le teacuteleacutephone
portable est le moyen de communication privileacutegieacute des populations maliennes et
est utiliseacute dans les communications simples entre deux utilisateurs (SMS ou appels
teacuteleacutephoniques)
En plus de permettre les communications simples on pourrait imaginer une
solution ougrave toute personne pourrait envoyer le mecircme message vocal ou textuel agrave
une large liste de ses contacts Ce genre de messages pourrait par exemple ecirctre
utile dans un contexte seacutecuritaire pour passer des alertes agrave une population ougrave tout
simplement pour adresser un message agrave un grand nombre de destinataires le plus
rapidement possible Ceci fera du teacuteleacutephone portable un vecteur ideacuteal pour
acceacuteleacuterer la vulgarisation des communications de masse
Crsquoest dans ce cadre que la plateforme de messagerie de masse kononicom a eacuteteacute
lanceacutee Le prototype initial ldquoMVPrdquo (ldquoMinimum Viable Productrdquo ou ldquoplus petit
prototype viablerdquo) ne concernait que les communications par SMS gracircce a un
numeacutero unique Il a servi agrave prouver la faisabiliteacute du service et agrave deacutefinir le protocole
de diffusion des eacutechanges entre utilisateurs
5
Crsquoest agrave la suite de cette premiegravere expeacuterimentation qursquoil srsquoest aveacutereacute utile de
faciliter lrsquoadoption de la plateforme aupregraves des utilisateurs citadins qui ont plus
facilement accegraves agrave Internet et qui peuvent servir de tremplin pour une diffusion
beaucoup plus large au Mali Ainsi kononicom a deacutecideacute de creacuteer une application
multiplateforme pour teacuteleacutephone mobile pour faciliter la creacuteation de compte
lrsquoenvoi de messages et le partage avec les contacts de lrsquoutilisateur
Les travaux rapporteacutes dans le preacutesent document srsquoinscrivent dans le contexte de la
creacuteation drsquoapplications mobiles pour les ldquoadopteurs preacutecocesrdquo [2] de kononicom Ils
ont consisteacute agrave deacutevelopper lrsquoapplication conformeacutement au cahier des charges de la
plateforme kononicom
Dans la suite du document lrsquoanalyse des besoins et architecture de lrsquoapplication
sont preacutesenteacutees dans la section II lrsquoimpleacutementation de lrsquoapplication est abordeacutee
dans la section III les outils et technologies utiliseacutes sont preacutesenteacutes dans la section
IV la preacutesentation de lrsquoapplication est faite dans la section V et enfin la
conclusion et les perspectives sont preacutesenteacutees dans la derniegravere section
6
II Analyse des besoins et Architecture de lrsquoapplication
II1 Analyse des besoins
Les communications de la version laquo MVP raquo de la plate-forme srsquoeffectue
essentiellement par SMS Toutefois le site Internet laquo wwwkononicom raquo offre
quelques faciliteacutes pour lrsquoinscription et la diffusion de messages en ligne
Figure 1 Site de Kononi
Voici une description du protocole de communication mis en place par Kononi gracircce
aux SMS
a) Srsquoinscrire
Pour diffuser vos propres messages vous pouvez facilement creacuteer votre compte
Kononi Pour creacuteer un compte pour lrsquoutilisateur laquo Fatoumata raquo par SMS il suffit
drsquoenvoyer le SMS laquo +Fatoumata raquo
Ci-dessous des captures drsquoeacutecran montrant lrsquoinscription par SMS
7
Figure 2 inscription (avec MVP)
Figure 3 Message de confirmation (MVP)
b) Srsquoabonner
8
Kononi vous permet drsquoecirctre toujours au courant de ce qui se passe autour de vous
Abonnez-vous aux comptes de votre choix pour recevoir tous les SMS qursquoils
enverront Par exemple pour recevoir gratuitement les messages du compte News
envoyez le SMS laquo news raquo
c) Diffuser ses messages
Diffuser vos messages une fois que vous aurez creacuteeacute votre compte Kononi vous
pourrez entrer en contact avec tous vos abonneacutes en leur envoyant le mecircme
message
Pour diffuser le message laquo Bonne fecircte agrave tousraquo agrave tous vos abonneacutes par exemple il suffira
de lenvoyer une seule fois agrave Kononi qui se chargera de le diffuser
d) Inviter ses amis
Pour inviter vos amis agrave srsquoabonner agrave vos messages envoyeacutes agrave partir de Kononi
envoyez la liste de leurs numeacuteros de teacuteleacutephone preacuteceacutedeacutee du point drsquointerrogation
Exemple drsquoinvitation 66xxxxxx 77xxxxxx
Lrsquoindicatif du pays est obligatoire pour les numeacuteros qui ne sont pas maliens Les
numeacuteros sont deacutelimiteacutes par le caractegravere espace laquo raquo
e) Reacutepondre
Crsquoest facile de reacutepondre agrave un message sur Kononi
Pour envoyer le message laquo Reccedilu 55 raquo au compte Toto envoyez le SMS laquo toto Reccedilu
55 raquo agrave Kononi qui se chargera de le transmettre agrave votre contact
f) Se deacutesabonner
Pour vous deacutesabonner du compte Toto par exemple et ne plus recevoir les
messages envoyeacutes par ce compte envoyez le SMS laquo -toto raquo
g) Se deacutesactiver
Pour ne plus recevoir de messages de Kononi envoyez le message STOP
9
Lrsquoobjectif de notre travail est de creacuteer une application mobile preacutesentant les
mecircmes fonctionnaliteacutes pour garantir la vulgarisation de Kononi aupregraves des
ldquoadopteurs preacutecocesrdquo Lrsquoapplication mobile devra utiliser les mecircmes APIs que le
MVP baseacute sur les communications purement par SMS pour assurer lrsquointeropeacuterabiliteacute
entre les deux services Les utilisateurs de Kononi doivent pouvoir eacutechanger entre
eux sans accroc peu importe lrsquooutil qursquoils utilisent (site internet application
mobile ou simple SMS)
Pour reacutealiser une application reacutepondant agrave ces besoins lrsquoarchitecture suivante a eacuteteacute
eacutelaboreacutee
II2 Architecture
Lrsquoarchitecture adopteacutee est inspireacutee du modegravele client-serveur comme montreacute agrave la
figure 4
Figure 4 architecture de lrsquoapplication
10
1deg) Lrsquoapplication envoie les donneacutees par requecircte http depuis le teacuteleacutephone de
lrsquoutilisateur Lambda (poste client)
2deg) Les donneacutees sont envoyeacutees au serveur de kononicom ougrave elles sont traiteacutees
3deg) Apregraves traitement les donneacutees sont envoyeacutees par requecircte http
4deg) Les donneacutees sont ensuite envoyeacutees aux destinataires
5deg) Les utilisateurs peuvent reacuteagir sur les donneacutees reccedilues ou envoyer de nouvelles
donneacutees par requecircte http
6deg) Lrsquoutilisateur Lambda peut recevoir les donneacutees eacutemises par drsquoautres utilisateurs
La mise en œuvre de cette architecture est preacutesenteacutee dans la section suivante
11
III Impleacutementation de lrsquoapplication
Cette section preacutesente les diffeacuterentes eacutetapes de reacutealisation de lrsquoapplication et
lrsquoapproche adopteacutee agrave cet effet
III1 Seacutelection drsquoun plugin
Initialement la technologie J2MEJava Mobile [3] avait eacuteteacute retenue pour le
deacuteveloppement de lrsquoapplication mobile Kononi car comme la majoriteacute des
teacuteleacutephones au Mali sont conccedilus suivant cette technologie Cependant J2ME
preacutesente des limites fonctionnelles pour les deacuteveloppeurs telles que
lrsquoincompatibiliteacute du fichier JAR (fichier drsquoinstallation) avec certains teacuteleacutephones de
la mecircme plateforme lrsquoimpossibiliteacute de marquer fin de deacutebogage En outre cette
technologie est relativement ancienne et tend agrave disparaicirctre
Une recherche de solutions alternatives nous a conduits au pluginlaquo Codename
One raquo [8] compatible avec Eclipse et NetBeans Il permet de deacutevelopper en Java
avec un seul et mecircme code des applications multiplateformes
Lrsquoobjectif de Codename One est de proposer une interface de deacuteveloppement
commune codeacutee en Java et capable de fonctionner sur iOS Androiumld BlackBerry
OS Windows Phone 7 et J2ME (pour les teacuteleacutephones simples) Ainsi il offre la
possibiliteacute de deacutevelopper rapidement et facilement des applications
multiplateformes
Codename One est structureacute plus ou moins de la mecircme faccedilon que lrsquoenvironnement
Java mais il utilise une approche SaaS (Software as a Service) Il est composeacute
comme suit
minus Une interface de programmation (API) ougrave on retrouve toutes les
bibliothegraveques Java et Codename One que lrsquoon peut utiliser
minus Une interface de design (GUI) permettant de creacuteer des thegravemes et des
fenecirctres pour les applications
minus Lrsquointerface de deacuteveloppement proposant un simulateur avec la possibiliteacute de
visionner lrsquoaspect de lrsquoapplication sur les diffeacuterents systegravemes drsquoexploitation
12
gracircce agrave des skins (simulateurs des plateformes) et de tester le
fonctionnement de lrsquoapplication sur lrsquoIDE
minus La construction des applications (Build) ne se fait pas sur lrsquoIDE mais dans le
Cloud sur des serveurs Codename One il faut ensuite aller reacutecupeacuterer le
reacutesultat de la construction sur son compte Codename One
III2 Environnement de deacuteveloppement
Lrsquoenvironnement de travail est composeacute de NetBeans du plugin Codename One et
de Git hub Apregraves lrsquoinstallation de NetBeans 8 le plugin Codename One a eacuteteacute
installeacute dans NetBeans puis le programme Git
Pour commencer lrsquoIDE NetBeans est lanceacute Dans lrsquoonglet laquo Tools raquo une sous
rubrique laquo plugins raquo existe et permet drsquoajouter le plugin laquo Codename One raquo
Figure 5 Option plugin
Le plug-in est reacutecupeacutereacute et ajouteacute agrave lrsquoenvironnement de deacuteveloppement
13
Figure 6 Ajout du plugin
Une fenecirctre srsquoouvre dans laquelle le plug-in est choisi en lrsquooccurrence laquo Codename
One raquo Lrsquourl pour reacutecupeacuterer le plug-in est indiqueacutee [4]
Figure 7 Saisie de lrsquoURL du plugin
14
Figure 8 Seacutelection du plugin
Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo
Figure 9 Installation
15
Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective
Figure 10 Installation (suite)
La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez
lrsquoinstallation
Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet
de relancer NetBeans
16
Figure 11 Installation (fin)
III3 Etapes de Deacuteveloppement
La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication
depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave
lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone
17
Figure 12 Phases de deacuteveloppement
Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un
compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel
pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur
fait des modifications sur le projet localement Lorsque des modifications sont
faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre
faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)
ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le
serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur
vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du
serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est
appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des
modifications des reacutepertoires personnels vers le reacutepertoire central
18
Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont
compileacutes
Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier
exeacutecutable
Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de
lrsquoapplication
1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de
fichier exeacutecutable
2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier
JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)
3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication
Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes
est deacutetailleacutee
III4 Mise en œuvre des fonctionnaliteacutes
III41 Creacuteation de compte et authentification
Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est
composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription
19
Figure 13 Diagramme de seacutequences de lrsquoinscription
Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave
lrsquoutilisateur de saisir son nom et numeacutero
20
Figure 14 formulaire drsquoinscription
Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de
teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une
requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour
arguments deux variables contenant respectivement le nom et le numeacutero de
teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au
format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de
donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie
automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le
numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une
diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste
21
dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui
signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche
Lrsquoutilisateur est donc inscrit agrave Kononi
III42 Envoie de messages publics et groupeacutes
Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute
a Message public
Un message public est un message que chaque utilisateur peut envoyer sur Kononi
sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous
les abonneacutes au compte de lrsquoutilisateur
Figure 15 Diagramme de seacutequences drsquoenvoi de message public
En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle
interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte
permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave
lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler
lrsquoopeacuteration
22
Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le
bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans
deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au
serveur
Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
dialogue contenant le code et le message drsquoerreur srsquoaffiche
b Message groupeacute
Un message de groupe est un message qursquoun utilisateur de Kononi envoie en
seacutelectionnant un groupe de contacts
Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe
Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle
interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte
et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps
du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton
laquo annuler raquo
23
Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton
laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton
laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave
envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees
comme paramegravetres de la requecircte envoyeacutee au serveur
Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
message drsquoerreur srsquoaffiche
Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page
principale
III43 Affichage de lrsquohistorique des messages
Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de
Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur
avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON
(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur
Figure 17 Exemple de reacuteponse du serveur
24
Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer
(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements
suivants
bull Un label pour lrsquoimage
bull Un label pour le nom qui a envoyeacute le message
bull Un textArea pour le message
bull Un label pour la date
III44 Invitation agrave lrsquoabonnement aux messages publics
Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande
laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page
laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous
les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a
eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour
effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le
code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes
dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux
variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave
travers une exception
- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur
- Sinon la page principale est afficheacutee
La section suivante preacutesente les outils et technologies utiliseacutes pour
lrsquoimpleacutementation de lrsquoapplication
25
IV Outils et technologies utiliseacutes
Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies
suivants ont eacuteteacute utiliseacutes
IV1 NetBeans [5]
NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun
sous la licence CDDL (Common Development and Distribution License) et GPL
(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents
autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML
NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement
JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut
ecirctre senrichi par des plugins
Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute
drsquoutiliser Codename One Drsquoougrave le choix de cette IDE
IV2 Langage java [6]
Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute
par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa
principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves
facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents
Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux
IV3 Git hub [7]
Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le
programme Git Git Hub propose des comptes gratuits pour les projets de logiciels
libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute
par Linus Torvalds
Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi
servi agrave sauvegarder toutes les versions de lrsquoapplication
26
IV4 Trello [8]
Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est
baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les
cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre
Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version
de base est gratuite
Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs
lrsquoeacutetat davancement du projet
IV5 Codename one [9]
Figure 18 Logo et slogan de Codename One
Il permet de deacutevelopper en Java avec un seul et mecircme code des applications
multiplateformes Il nous a permis de creacuteer notre application
27
IV6 Protocol http [10]
Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-
serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche
application
Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local
IV7 Skype [11]
Outre les messages eacutelectroniques qui ont servi aux communications asynchrones
lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels
Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois
racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft
Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet
Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes
additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la
visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie
instantaneacutee et le partage drsquoeacutecrans
IV8 Apache Tomcat [12]
Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache
Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne
principalement sur les systegravemes drsquoexploitation UNIX et Windows
Apache Tomcat a permis de tester localement (au sein de NetBeans) le
comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur
Kononi
IV9 JSON [13]
Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de
donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre
repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir
repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de
programmation Il est notamment utiliseacute comme le langage de transport de
donneacutees par les services Web
JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
4
I Contexte et probleacutematique
Traditionnellement la radio et la teacuteleacutevision sont les principaux moyens de
communication de masse dans le monde Toutefois ces moyens ne sont pas
accessibles agrave tous sur le mecircme pied drsquoeacutegaliteacute Ils sont unidirectionnels (de
lrsquoeacutemetteur vers le reacutecepteur du message) par nature et nrsquooffrent pas de garantie
par rapport aux nombres de personnes recevant un message donneacute
La reacutevolution numeacuterique qui a commenceacute en 2000 a fait drsquoInternet le moyen de
communication de masse privileacutegieacute dans le monde Elle a rendu accessibles aux
masses les canaux qui peuvent ecirctre bidirectionnels Cette reacutevolution tarde agrave ecirctre
une reacutealiteacute dans les pays en voie de deacuteveloppement comme le Mali ougrave le taux de
peacuteneacutetration drsquoInternet est de lrsquoordre de 2 [1]
Cependant les pays en voie de deacuteveloppement ont reacutealiseacute drsquoimportantes avanceacutees
en termes drsquoadoption du teacuteleacutephone portable
Avec une population de 15 millions drsquohabitants le Mali compte 10 millions
drsquoabonneacutes chez les opeacuterateurs de teacuteleacutephonie mobile Malitel et Orange en 2013 soit
un taux de peacuteneacutetration du teacuteleacutephone portable de 6666 Alors le teacuteleacutephone
portable est le moyen de communication privileacutegieacute des populations maliennes et
est utiliseacute dans les communications simples entre deux utilisateurs (SMS ou appels
teacuteleacutephoniques)
En plus de permettre les communications simples on pourrait imaginer une
solution ougrave toute personne pourrait envoyer le mecircme message vocal ou textuel agrave
une large liste de ses contacts Ce genre de messages pourrait par exemple ecirctre
utile dans un contexte seacutecuritaire pour passer des alertes agrave une population ougrave tout
simplement pour adresser un message agrave un grand nombre de destinataires le plus
rapidement possible Ceci fera du teacuteleacutephone portable un vecteur ideacuteal pour
acceacuteleacuterer la vulgarisation des communications de masse
Crsquoest dans ce cadre que la plateforme de messagerie de masse kononicom a eacuteteacute
lanceacutee Le prototype initial ldquoMVPrdquo (ldquoMinimum Viable Productrdquo ou ldquoplus petit
prototype viablerdquo) ne concernait que les communications par SMS gracircce a un
numeacutero unique Il a servi agrave prouver la faisabiliteacute du service et agrave deacutefinir le protocole
de diffusion des eacutechanges entre utilisateurs
5
Crsquoest agrave la suite de cette premiegravere expeacuterimentation qursquoil srsquoest aveacutereacute utile de
faciliter lrsquoadoption de la plateforme aupregraves des utilisateurs citadins qui ont plus
facilement accegraves agrave Internet et qui peuvent servir de tremplin pour une diffusion
beaucoup plus large au Mali Ainsi kononicom a deacutecideacute de creacuteer une application
multiplateforme pour teacuteleacutephone mobile pour faciliter la creacuteation de compte
lrsquoenvoi de messages et le partage avec les contacts de lrsquoutilisateur
Les travaux rapporteacutes dans le preacutesent document srsquoinscrivent dans le contexte de la
creacuteation drsquoapplications mobiles pour les ldquoadopteurs preacutecocesrdquo [2] de kononicom Ils
ont consisteacute agrave deacutevelopper lrsquoapplication conformeacutement au cahier des charges de la
plateforme kononicom
Dans la suite du document lrsquoanalyse des besoins et architecture de lrsquoapplication
sont preacutesenteacutees dans la section II lrsquoimpleacutementation de lrsquoapplication est abordeacutee
dans la section III les outils et technologies utiliseacutes sont preacutesenteacutes dans la section
IV la preacutesentation de lrsquoapplication est faite dans la section V et enfin la
conclusion et les perspectives sont preacutesenteacutees dans la derniegravere section
6
II Analyse des besoins et Architecture de lrsquoapplication
II1 Analyse des besoins
Les communications de la version laquo MVP raquo de la plate-forme srsquoeffectue
essentiellement par SMS Toutefois le site Internet laquo wwwkononicom raquo offre
quelques faciliteacutes pour lrsquoinscription et la diffusion de messages en ligne
Figure 1 Site de Kononi
Voici une description du protocole de communication mis en place par Kononi gracircce
aux SMS
a) Srsquoinscrire
Pour diffuser vos propres messages vous pouvez facilement creacuteer votre compte
Kononi Pour creacuteer un compte pour lrsquoutilisateur laquo Fatoumata raquo par SMS il suffit
drsquoenvoyer le SMS laquo +Fatoumata raquo
Ci-dessous des captures drsquoeacutecran montrant lrsquoinscription par SMS
7
Figure 2 inscription (avec MVP)
Figure 3 Message de confirmation (MVP)
b) Srsquoabonner
8
Kononi vous permet drsquoecirctre toujours au courant de ce qui se passe autour de vous
Abonnez-vous aux comptes de votre choix pour recevoir tous les SMS qursquoils
enverront Par exemple pour recevoir gratuitement les messages du compte News
envoyez le SMS laquo news raquo
c) Diffuser ses messages
Diffuser vos messages une fois que vous aurez creacuteeacute votre compte Kononi vous
pourrez entrer en contact avec tous vos abonneacutes en leur envoyant le mecircme
message
Pour diffuser le message laquo Bonne fecircte agrave tousraquo agrave tous vos abonneacutes par exemple il suffira
de lenvoyer une seule fois agrave Kononi qui se chargera de le diffuser
d) Inviter ses amis
Pour inviter vos amis agrave srsquoabonner agrave vos messages envoyeacutes agrave partir de Kononi
envoyez la liste de leurs numeacuteros de teacuteleacutephone preacuteceacutedeacutee du point drsquointerrogation
Exemple drsquoinvitation 66xxxxxx 77xxxxxx
Lrsquoindicatif du pays est obligatoire pour les numeacuteros qui ne sont pas maliens Les
numeacuteros sont deacutelimiteacutes par le caractegravere espace laquo raquo
e) Reacutepondre
Crsquoest facile de reacutepondre agrave un message sur Kononi
Pour envoyer le message laquo Reccedilu 55 raquo au compte Toto envoyez le SMS laquo toto Reccedilu
55 raquo agrave Kononi qui se chargera de le transmettre agrave votre contact
f) Se deacutesabonner
Pour vous deacutesabonner du compte Toto par exemple et ne plus recevoir les
messages envoyeacutes par ce compte envoyez le SMS laquo -toto raquo
g) Se deacutesactiver
Pour ne plus recevoir de messages de Kononi envoyez le message STOP
9
Lrsquoobjectif de notre travail est de creacuteer une application mobile preacutesentant les
mecircmes fonctionnaliteacutes pour garantir la vulgarisation de Kononi aupregraves des
ldquoadopteurs preacutecocesrdquo Lrsquoapplication mobile devra utiliser les mecircmes APIs que le
MVP baseacute sur les communications purement par SMS pour assurer lrsquointeropeacuterabiliteacute
entre les deux services Les utilisateurs de Kononi doivent pouvoir eacutechanger entre
eux sans accroc peu importe lrsquooutil qursquoils utilisent (site internet application
mobile ou simple SMS)
Pour reacutealiser une application reacutepondant agrave ces besoins lrsquoarchitecture suivante a eacuteteacute
eacutelaboreacutee
II2 Architecture
Lrsquoarchitecture adopteacutee est inspireacutee du modegravele client-serveur comme montreacute agrave la
figure 4
Figure 4 architecture de lrsquoapplication
10
1deg) Lrsquoapplication envoie les donneacutees par requecircte http depuis le teacuteleacutephone de
lrsquoutilisateur Lambda (poste client)
2deg) Les donneacutees sont envoyeacutees au serveur de kononicom ougrave elles sont traiteacutees
3deg) Apregraves traitement les donneacutees sont envoyeacutees par requecircte http
4deg) Les donneacutees sont ensuite envoyeacutees aux destinataires
5deg) Les utilisateurs peuvent reacuteagir sur les donneacutees reccedilues ou envoyer de nouvelles
donneacutees par requecircte http
6deg) Lrsquoutilisateur Lambda peut recevoir les donneacutees eacutemises par drsquoautres utilisateurs
La mise en œuvre de cette architecture est preacutesenteacutee dans la section suivante
11
III Impleacutementation de lrsquoapplication
Cette section preacutesente les diffeacuterentes eacutetapes de reacutealisation de lrsquoapplication et
lrsquoapproche adopteacutee agrave cet effet
III1 Seacutelection drsquoun plugin
Initialement la technologie J2MEJava Mobile [3] avait eacuteteacute retenue pour le
deacuteveloppement de lrsquoapplication mobile Kononi car comme la majoriteacute des
teacuteleacutephones au Mali sont conccedilus suivant cette technologie Cependant J2ME
preacutesente des limites fonctionnelles pour les deacuteveloppeurs telles que
lrsquoincompatibiliteacute du fichier JAR (fichier drsquoinstallation) avec certains teacuteleacutephones de
la mecircme plateforme lrsquoimpossibiliteacute de marquer fin de deacutebogage En outre cette
technologie est relativement ancienne et tend agrave disparaicirctre
Une recherche de solutions alternatives nous a conduits au pluginlaquo Codename
One raquo [8] compatible avec Eclipse et NetBeans Il permet de deacutevelopper en Java
avec un seul et mecircme code des applications multiplateformes
Lrsquoobjectif de Codename One est de proposer une interface de deacuteveloppement
commune codeacutee en Java et capable de fonctionner sur iOS Androiumld BlackBerry
OS Windows Phone 7 et J2ME (pour les teacuteleacutephones simples) Ainsi il offre la
possibiliteacute de deacutevelopper rapidement et facilement des applications
multiplateformes
Codename One est structureacute plus ou moins de la mecircme faccedilon que lrsquoenvironnement
Java mais il utilise une approche SaaS (Software as a Service) Il est composeacute
comme suit
minus Une interface de programmation (API) ougrave on retrouve toutes les
bibliothegraveques Java et Codename One que lrsquoon peut utiliser
minus Une interface de design (GUI) permettant de creacuteer des thegravemes et des
fenecirctres pour les applications
minus Lrsquointerface de deacuteveloppement proposant un simulateur avec la possibiliteacute de
visionner lrsquoaspect de lrsquoapplication sur les diffeacuterents systegravemes drsquoexploitation
12
gracircce agrave des skins (simulateurs des plateformes) et de tester le
fonctionnement de lrsquoapplication sur lrsquoIDE
minus La construction des applications (Build) ne se fait pas sur lrsquoIDE mais dans le
Cloud sur des serveurs Codename One il faut ensuite aller reacutecupeacuterer le
reacutesultat de la construction sur son compte Codename One
III2 Environnement de deacuteveloppement
Lrsquoenvironnement de travail est composeacute de NetBeans du plugin Codename One et
de Git hub Apregraves lrsquoinstallation de NetBeans 8 le plugin Codename One a eacuteteacute
installeacute dans NetBeans puis le programme Git
Pour commencer lrsquoIDE NetBeans est lanceacute Dans lrsquoonglet laquo Tools raquo une sous
rubrique laquo plugins raquo existe et permet drsquoajouter le plugin laquo Codename One raquo
Figure 5 Option plugin
Le plug-in est reacutecupeacutereacute et ajouteacute agrave lrsquoenvironnement de deacuteveloppement
13
Figure 6 Ajout du plugin
Une fenecirctre srsquoouvre dans laquelle le plug-in est choisi en lrsquooccurrence laquo Codename
One raquo Lrsquourl pour reacutecupeacuterer le plug-in est indiqueacutee [4]
Figure 7 Saisie de lrsquoURL du plugin
14
Figure 8 Seacutelection du plugin
Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo
Figure 9 Installation
15
Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective
Figure 10 Installation (suite)
La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez
lrsquoinstallation
Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet
de relancer NetBeans
16
Figure 11 Installation (fin)
III3 Etapes de Deacuteveloppement
La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication
depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave
lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone
17
Figure 12 Phases de deacuteveloppement
Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un
compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel
pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur
fait des modifications sur le projet localement Lorsque des modifications sont
faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre
faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)
ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le
serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur
vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du
serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est
appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des
modifications des reacutepertoires personnels vers le reacutepertoire central
18
Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont
compileacutes
Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier
exeacutecutable
Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de
lrsquoapplication
1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de
fichier exeacutecutable
2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier
JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)
3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication
Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes
est deacutetailleacutee
III4 Mise en œuvre des fonctionnaliteacutes
III41 Creacuteation de compte et authentification
Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est
composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription
19
Figure 13 Diagramme de seacutequences de lrsquoinscription
Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave
lrsquoutilisateur de saisir son nom et numeacutero
20
Figure 14 formulaire drsquoinscription
Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de
teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une
requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour
arguments deux variables contenant respectivement le nom et le numeacutero de
teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au
format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de
donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie
automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le
numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une
diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste
21
dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui
signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche
Lrsquoutilisateur est donc inscrit agrave Kononi
III42 Envoie de messages publics et groupeacutes
Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute
a Message public
Un message public est un message que chaque utilisateur peut envoyer sur Kononi
sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous
les abonneacutes au compte de lrsquoutilisateur
Figure 15 Diagramme de seacutequences drsquoenvoi de message public
En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle
interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte
permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave
lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler
lrsquoopeacuteration
22
Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le
bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans
deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au
serveur
Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
dialogue contenant le code et le message drsquoerreur srsquoaffiche
b Message groupeacute
Un message de groupe est un message qursquoun utilisateur de Kononi envoie en
seacutelectionnant un groupe de contacts
Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe
Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle
interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte
et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps
du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton
laquo annuler raquo
23
Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton
laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton
laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave
envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees
comme paramegravetres de la requecircte envoyeacutee au serveur
Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
message drsquoerreur srsquoaffiche
Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page
principale
III43 Affichage de lrsquohistorique des messages
Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de
Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur
avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON
(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur
Figure 17 Exemple de reacuteponse du serveur
24
Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer
(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements
suivants
bull Un label pour lrsquoimage
bull Un label pour le nom qui a envoyeacute le message
bull Un textArea pour le message
bull Un label pour la date
III44 Invitation agrave lrsquoabonnement aux messages publics
Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande
laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page
laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous
les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a
eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour
effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le
code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes
dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux
variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave
travers une exception
- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur
- Sinon la page principale est afficheacutee
La section suivante preacutesente les outils et technologies utiliseacutes pour
lrsquoimpleacutementation de lrsquoapplication
25
IV Outils et technologies utiliseacutes
Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies
suivants ont eacuteteacute utiliseacutes
IV1 NetBeans [5]
NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun
sous la licence CDDL (Common Development and Distribution License) et GPL
(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents
autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML
NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement
JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut
ecirctre senrichi par des plugins
Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute
drsquoutiliser Codename One Drsquoougrave le choix de cette IDE
IV2 Langage java [6]
Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute
par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa
principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves
facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents
Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux
IV3 Git hub [7]
Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le
programme Git Git Hub propose des comptes gratuits pour les projets de logiciels
libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute
par Linus Torvalds
Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi
servi agrave sauvegarder toutes les versions de lrsquoapplication
26
IV4 Trello [8]
Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est
baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les
cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre
Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version
de base est gratuite
Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs
lrsquoeacutetat davancement du projet
IV5 Codename one [9]
Figure 18 Logo et slogan de Codename One
Il permet de deacutevelopper en Java avec un seul et mecircme code des applications
multiplateformes Il nous a permis de creacuteer notre application
27
IV6 Protocol http [10]
Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-
serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche
application
Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local
IV7 Skype [11]
Outre les messages eacutelectroniques qui ont servi aux communications asynchrones
lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels
Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois
racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft
Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet
Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes
additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la
visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie
instantaneacutee et le partage drsquoeacutecrans
IV8 Apache Tomcat [12]
Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache
Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne
principalement sur les systegravemes drsquoexploitation UNIX et Windows
Apache Tomcat a permis de tester localement (au sein de NetBeans) le
comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur
Kononi
IV9 JSON [13]
Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de
donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre
repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir
repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de
programmation Il est notamment utiliseacute comme le langage de transport de
donneacutees par les services Web
JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
5
Crsquoest agrave la suite de cette premiegravere expeacuterimentation qursquoil srsquoest aveacutereacute utile de
faciliter lrsquoadoption de la plateforme aupregraves des utilisateurs citadins qui ont plus
facilement accegraves agrave Internet et qui peuvent servir de tremplin pour une diffusion
beaucoup plus large au Mali Ainsi kononicom a deacutecideacute de creacuteer une application
multiplateforme pour teacuteleacutephone mobile pour faciliter la creacuteation de compte
lrsquoenvoi de messages et le partage avec les contacts de lrsquoutilisateur
Les travaux rapporteacutes dans le preacutesent document srsquoinscrivent dans le contexte de la
creacuteation drsquoapplications mobiles pour les ldquoadopteurs preacutecocesrdquo [2] de kononicom Ils
ont consisteacute agrave deacutevelopper lrsquoapplication conformeacutement au cahier des charges de la
plateforme kononicom
Dans la suite du document lrsquoanalyse des besoins et architecture de lrsquoapplication
sont preacutesenteacutees dans la section II lrsquoimpleacutementation de lrsquoapplication est abordeacutee
dans la section III les outils et technologies utiliseacutes sont preacutesenteacutes dans la section
IV la preacutesentation de lrsquoapplication est faite dans la section V et enfin la
conclusion et les perspectives sont preacutesenteacutees dans la derniegravere section
6
II Analyse des besoins et Architecture de lrsquoapplication
II1 Analyse des besoins
Les communications de la version laquo MVP raquo de la plate-forme srsquoeffectue
essentiellement par SMS Toutefois le site Internet laquo wwwkononicom raquo offre
quelques faciliteacutes pour lrsquoinscription et la diffusion de messages en ligne
Figure 1 Site de Kononi
Voici une description du protocole de communication mis en place par Kononi gracircce
aux SMS
a) Srsquoinscrire
Pour diffuser vos propres messages vous pouvez facilement creacuteer votre compte
Kononi Pour creacuteer un compte pour lrsquoutilisateur laquo Fatoumata raquo par SMS il suffit
drsquoenvoyer le SMS laquo +Fatoumata raquo
Ci-dessous des captures drsquoeacutecran montrant lrsquoinscription par SMS
7
Figure 2 inscription (avec MVP)
Figure 3 Message de confirmation (MVP)
b) Srsquoabonner
8
Kononi vous permet drsquoecirctre toujours au courant de ce qui se passe autour de vous
Abonnez-vous aux comptes de votre choix pour recevoir tous les SMS qursquoils
enverront Par exemple pour recevoir gratuitement les messages du compte News
envoyez le SMS laquo news raquo
c) Diffuser ses messages
Diffuser vos messages une fois que vous aurez creacuteeacute votre compte Kononi vous
pourrez entrer en contact avec tous vos abonneacutes en leur envoyant le mecircme
message
Pour diffuser le message laquo Bonne fecircte agrave tousraquo agrave tous vos abonneacutes par exemple il suffira
de lenvoyer une seule fois agrave Kononi qui se chargera de le diffuser
d) Inviter ses amis
Pour inviter vos amis agrave srsquoabonner agrave vos messages envoyeacutes agrave partir de Kononi
envoyez la liste de leurs numeacuteros de teacuteleacutephone preacuteceacutedeacutee du point drsquointerrogation
Exemple drsquoinvitation 66xxxxxx 77xxxxxx
Lrsquoindicatif du pays est obligatoire pour les numeacuteros qui ne sont pas maliens Les
numeacuteros sont deacutelimiteacutes par le caractegravere espace laquo raquo
e) Reacutepondre
Crsquoest facile de reacutepondre agrave un message sur Kononi
Pour envoyer le message laquo Reccedilu 55 raquo au compte Toto envoyez le SMS laquo toto Reccedilu
55 raquo agrave Kononi qui se chargera de le transmettre agrave votre contact
f) Se deacutesabonner
Pour vous deacutesabonner du compte Toto par exemple et ne plus recevoir les
messages envoyeacutes par ce compte envoyez le SMS laquo -toto raquo
g) Se deacutesactiver
Pour ne plus recevoir de messages de Kononi envoyez le message STOP
9
Lrsquoobjectif de notre travail est de creacuteer une application mobile preacutesentant les
mecircmes fonctionnaliteacutes pour garantir la vulgarisation de Kononi aupregraves des
ldquoadopteurs preacutecocesrdquo Lrsquoapplication mobile devra utiliser les mecircmes APIs que le
MVP baseacute sur les communications purement par SMS pour assurer lrsquointeropeacuterabiliteacute
entre les deux services Les utilisateurs de Kononi doivent pouvoir eacutechanger entre
eux sans accroc peu importe lrsquooutil qursquoils utilisent (site internet application
mobile ou simple SMS)
Pour reacutealiser une application reacutepondant agrave ces besoins lrsquoarchitecture suivante a eacuteteacute
eacutelaboreacutee
II2 Architecture
Lrsquoarchitecture adopteacutee est inspireacutee du modegravele client-serveur comme montreacute agrave la
figure 4
Figure 4 architecture de lrsquoapplication
10
1deg) Lrsquoapplication envoie les donneacutees par requecircte http depuis le teacuteleacutephone de
lrsquoutilisateur Lambda (poste client)
2deg) Les donneacutees sont envoyeacutees au serveur de kononicom ougrave elles sont traiteacutees
3deg) Apregraves traitement les donneacutees sont envoyeacutees par requecircte http
4deg) Les donneacutees sont ensuite envoyeacutees aux destinataires
5deg) Les utilisateurs peuvent reacuteagir sur les donneacutees reccedilues ou envoyer de nouvelles
donneacutees par requecircte http
6deg) Lrsquoutilisateur Lambda peut recevoir les donneacutees eacutemises par drsquoautres utilisateurs
La mise en œuvre de cette architecture est preacutesenteacutee dans la section suivante
11
III Impleacutementation de lrsquoapplication
Cette section preacutesente les diffeacuterentes eacutetapes de reacutealisation de lrsquoapplication et
lrsquoapproche adopteacutee agrave cet effet
III1 Seacutelection drsquoun plugin
Initialement la technologie J2MEJava Mobile [3] avait eacuteteacute retenue pour le
deacuteveloppement de lrsquoapplication mobile Kononi car comme la majoriteacute des
teacuteleacutephones au Mali sont conccedilus suivant cette technologie Cependant J2ME
preacutesente des limites fonctionnelles pour les deacuteveloppeurs telles que
lrsquoincompatibiliteacute du fichier JAR (fichier drsquoinstallation) avec certains teacuteleacutephones de
la mecircme plateforme lrsquoimpossibiliteacute de marquer fin de deacutebogage En outre cette
technologie est relativement ancienne et tend agrave disparaicirctre
Une recherche de solutions alternatives nous a conduits au pluginlaquo Codename
One raquo [8] compatible avec Eclipse et NetBeans Il permet de deacutevelopper en Java
avec un seul et mecircme code des applications multiplateformes
Lrsquoobjectif de Codename One est de proposer une interface de deacuteveloppement
commune codeacutee en Java et capable de fonctionner sur iOS Androiumld BlackBerry
OS Windows Phone 7 et J2ME (pour les teacuteleacutephones simples) Ainsi il offre la
possibiliteacute de deacutevelopper rapidement et facilement des applications
multiplateformes
Codename One est structureacute plus ou moins de la mecircme faccedilon que lrsquoenvironnement
Java mais il utilise une approche SaaS (Software as a Service) Il est composeacute
comme suit
minus Une interface de programmation (API) ougrave on retrouve toutes les
bibliothegraveques Java et Codename One que lrsquoon peut utiliser
minus Une interface de design (GUI) permettant de creacuteer des thegravemes et des
fenecirctres pour les applications
minus Lrsquointerface de deacuteveloppement proposant un simulateur avec la possibiliteacute de
visionner lrsquoaspect de lrsquoapplication sur les diffeacuterents systegravemes drsquoexploitation
12
gracircce agrave des skins (simulateurs des plateformes) et de tester le
fonctionnement de lrsquoapplication sur lrsquoIDE
minus La construction des applications (Build) ne se fait pas sur lrsquoIDE mais dans le
Cloud sur des serveurs Codename One il faut ensuite aller reacutecupeacuterer le
reacutesultat de la construction sur son compte Codename One
III2 Environnement de deacuteveloppement
Lrsquoenvironnement de travail est composeacute de NetBeans du plugin Codename One et
de Git hub Apregraves lrsquoinstallation de NetBeans 8 le plugin Codename One a eacuteteacute
installeacute dans NetBeans puis le programme Git
Pour commencer lrsquoIDE NetBeans est lanceacute Dans lrsquoonglet laquo Tools raquo une sous
rubrique laquo plugins raquo existe et permet drsquoajouter le plugin laquo Codename One raquo
Figure 5 Option plugin
Le plug-in est reacutecupeacutereacute et ajouteacute agrave lrsquoenvironnement de deacuteveloppement
13
Figure 6 Ajout du plugin
Une fenecirctre srsquoouvre dans laquelle le plug-in est choisi en lrsquooccurrence laquo Codename
One raquo Lrsquourl pour reacutecupeacuterer le plug-in est indiqueacutee [4]
Figure 7 Saisie de lrsquoURL du plugin
14
Figure 8 Seacutelection du plugin
Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo
Figure 9 Installation
15
Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective
Figure 10 Installation (suite)
La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez
lrsquoinstallation
Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet
de relancer NetBeans
16
Figure 11 Installation (fin)
III3 Etapes de Deacuteveloppement
La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication
depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave
lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone
17
Figure 12 Phases de deacuteveloppement
Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un
compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel
pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur
fait des modifications sur le projet localement Lorsque des modifications sont
faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre
faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)
ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le
serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur
vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du
serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est
appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des
modifications des reacutepertoires personnels vers le reacutepertoire central
18
Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont
compileacutes
Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier
exeacutecutable
Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de
lrsquoapplication
1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de
fichier exeacutecutable
2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier
JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)
3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication
Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes
est deacutetailleacutee
III4 Mise en œuvre des fonctionnaliteacutes
III41 Creacuteation de compte et authentification
Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est
composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription
19
Figure 13 Diagramme de seacutequences de lrsquoinscription
Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave
lrsquoutilisateur de saisir son nom et numeacutero
20
Figure 14 formulaire drsquoinscription
Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de
teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une
requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour
arguments deux variables contenant respectivement le nom et le numeacutero de
teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au
format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de
donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie
automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le
numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une
diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste
21
dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui
signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche
Lrsquoutilisateur est donc inscrit agrave Kononi
III42 Envoie de messages publics et groupeacutes
Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute
a Message public
Un message public est un message que chaque utilisateur peut envoyer sur Kononi
sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous
les abonneacutes au compte de lrsquoutilisateur
Figure 15 Diagramme de seacutequences drsquoenvoi de message public
En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle
interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte
permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave
lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler
lrsquoopeacuteration
22
Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le
bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans
deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au
serveur
Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
dialogue contenant le code et le message drsquoerreur srsquoaffiche
b Message groupeacute
Un message de groupe est un message qursquoun utilisateur de Kononi envoie en
seacutelectionnant un groupe de contacts
Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe
Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle
interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte
et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps
du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton
laquo annuler raquo
23
Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton
laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton
laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave
envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees
comme paramegravetres de la requecircte envoyeacutee au serveur
Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
message drsquoerreur srsquoaffiche
Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page
principale
III43 Affichage de lrsquohistorique des messages
Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de
Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur
avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON
(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur
Figure 17 Exemple de reacuteponse du serveur
24
Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer
(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements
suivants
bull Un label pour lrsquoimage
bull Un label pour le nom qui a envoyeacute le message
bull Un textArea pour le message
bull Un label pour la date
III44 Invitation agrave lrsquoabonnement aux messages publics
Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande
laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page
laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous
les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a
eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour
effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le
code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes
dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux
variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave
travers une exception
- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur
- Sinon la page principale est afficheacutee
La section suivante preacutesente les outils et technologies utiliseacutes pour
lrsquoimpleacutementation de lrsquoapplication
25
IV Outils et technologies utiliseacutes
Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies
suivants ont eacuteteacute utiliseacutes
IV1 NetBeans [5]
NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun
sous la licence CDDL (Common Development and Distribution License) et GPL
(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents
autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML
NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement
JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut
ecirctre senrichi par des plugins
Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute
drsquoutiliser Codename One Drsquoougrave le choix de cette IDE
IV2 Langage java [6]
Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute
par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa
principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves
facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents
Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux
IV3 Git hub [7]
Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le
programme Git Git Hub propose des comptes gratuits pour les projets de logiciels
libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute
par Linus Torvalds
Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi
servi agrave sauvegarder toutes les versions de lrsquoapplication
26
IV4 Trello [8]
Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est
baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les
cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre
Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version
de base est gratuite
Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs
lrsquoeacutetat davancement du projet
IV5 Codename one [9]
Figure 18 Logo et slogan de Codename One
Il permet de deacutevelopper en Java avec un seul et mecircme code des applications
multiplateformes Il nous a permis de creacuteer notre application
27
IV6 Protocol http [10]
Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-
serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche
application
Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local
IV7 Skype [11]
Outre les messages eacutelectroniques qui ont servi aux communications asynchrones
lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels
Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois
racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft
Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet
Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes
additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la
visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie
instantaneacutee et le partage drsquoeacutecrans
IV8 Apache Tomcat [12]
Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache
Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne
principalement sur les systegravemes drsquoexploitation UNIX et Windows
Apache Tomcat a permis de tester localement (au sein de NetBeans) le
comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur
Kononi
IV9 JSON [13]
Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de
donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre
repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir
repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de
programmation Il est notamment utiliseacute comme le langage de transport de
donneacutees par les services Web
JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
6
II Analyse des besoins et Architecture de lrsquoapplication
II1 Analyse des besoins
Les communications de la version laquo MVP raquo de la plate-forme srsquoeffectue
essentiellement par SMS Toutefois le site Internet laquo wwwkononicom raquo offre
quelques faciliteacutes pour lrsquoinscription et la diffusion de messages en ligne
Figure 1 Site de Kononi
Voici une description du protocole de communication mis en place par Kononi gracircce
aux SMS
a) Srsquoinscrire
Pour diffuser vos propres messages vous pouvez facilement creacuteer votre compte
Kononi Pour creacuteer un compte pour lrsquoutilisateur laquo Fatoumata raquo par SMS il suffit
drsquoenvoyer le SMS laquo +Fatoumata raquo
Ci-dessous des captures drsquoeacutecran montrant lrsquoinscription par SMS
7
Figure 2 inscription (avec MVP)
Figure 3 Message de confirmation (MVP)
b) Srsquoabonner
8
Kononi vous permet drsquoecirctre toujours au courant de ce qui se passe autour de vous
Abonnez-vous aux comptes de votre choix pour recevoir tous les SMS qursquoils
enverront Par exemple pour recevoir gratuitement les messages du compte News
envoyez le SMS laquo news raquo
c) Diffuser ses messages
Diffuser vos messages une fois que vous aurez creacuteeacute votre compte Kononi vous
pourrez entrer en contact avec tous vos abonneacutes en leur envoyant le mecircme
message
Pour diffuser le message laquo Bonne fecircte agrave tousraquo agrave tous vos abonneacutes par exemple il suffira
de lenvoyer une seule fois agrave Kononi qui se chargera de le diffuser
d) Inviter ses amis
Pour inviter vos amis agrave srsquoabonner agrave vos messages envoyeacutes agrave partir de Kononi
envoyez la liste de leurs numeacuteros de teacuteleacutephone preacuteceacutedeacutee du point drsquointerrogation
Exemple drsquoinvitation 66xxxxxx 77xxxxxx
Lrsquoindicatif du pays est obligatoire pour les numeacuteros qui ne sont pas maliens Les
numeacuteros sont deacutelimiteacutes par le caractegravere espace laquo raquo
e) Reacutepondre
Crsquoest facile de reacutepondre agrave un message sur Kononi
Pour envoyer le message laquo Reccedilu 55 raquo au compte Toto envoyez le SMS laquo toto Reccedilu
55 raquo agrave Kononi qui se chargera de le transmettre agrave votre contact
f) Se deacutesabonner
Pour vous deacutesabonner du compte Toto par exemple et ne plus recevoir les
messages envoyeacutes par ce compte envoyez le SMS laquo -toto raquo
g) Se deacutesactiver
Pour ne plus recevoir de messages de Kononi envoyez le message STOP
9
Lrsquoobjectif de notre travail est de creacuteer une application mobile preacutesentant les
mecircmes fonctionnaliteacutes pour garantir la vulgarisation de Kononi aupregraves des
ldquoadopteurs preacutecocesrdquo Lrsquoapplication mobile devra utiliser les mecircmes APIs que le
MVP baseacute sur les communications purement par SMS pour assurer lrsquointeropeacuterabiliteacute
entre les deux services Les utilisateurs de Kononi doivent pouvoir eacutechanger entre
eux sans accroc peu importe lrsquooutil qursquoils utilisent (site internet application
mobile ou simple SMS)
Pour reacutealiser une application reacutepondant agrave ces besoins lrsquoarchitecture suivante a eacuteteacute
eacutelaboreacutee
II2 Architecture
Lrsquoarchitecture adopteacutee est inspireacutee du modegravele client-serveur comme montreacute agrave la
figure 4
Figure 4 architecture de lrsquoapplication
10
1deg) Lrsquoapplication envoie les donneacutees par requecircte http depuis le teacuteleacutephone de
lrsquoutilisateur Lambda (poste client)
2deg) Les donneacutees sont envoyeacutees au serveur de kononicom ougrave elles sont traiteacutees
3deg) Apregraves traitement les donneacutees sont envoyeacutees par requecircte http
4deg) Les donneacutees sont ensuite envoyeacutees aux destinataires
5deg) Les utilisateurs peuvent reacuteagir sur les donneacutees reccedilues ou envoyer de nouvelles
donneacutees par requecircte http
6deg) Lrsquoutilisateur Lambda peut recevoir les donneacutees eacutemises par drsquoautres utilisateurs
La mise en œuvre de cette architecture est preacutesenteacutee dans la section suivante
11
III Impleacutementation de lrsquoapplication
Cette section preacutesente les diffeacuterentes eacutetapes de reacutealisation de lrsquoapplication et
lrsquoapproche adopteacutee agrave cet effet
III1 Seacutelection drsquoun plugin
Initialement la technologie J2MEJava Mobile [3] avait eacuteteacute retenue pour le
deacuteveloppement de lrsquoapplication mobile Kononi car comme la majoriteacute des
teacuteleacutephones au Mali sont conccedilus suivant cette technologie Cependant J2ME
preacutesente des limites fonctionnelles pour les deacuteveloppeurs telles que
lrsquoincompatibiliteacute du fichier JAR (fichier drsquoinstallation) avec certains teacuteleacutephones de
la mecircme plateforme lrsquoimpossibiliteacute de marquer fin de deacutebogage En outre cette
technologie est relativement ancienne et tend agrave disparaicirctre
Une recherche de solutions alternatives nous a conduits au pluginlaquo Codename
One raquo [8] compatible avec Eclipse et NetBeans Il permet de deacutevelopper en Java
avec un seul et mecircme code des applications multiplateformes
Lrsquoobjectif de Codename One est de proposer une interface de deacuteveloppement
commune codeacutee en Java et capable de fonctionner sur iOS Androiumld BlackBerry
OS Windows Phone 7 et J2ME (pour les teacuteleacutephones simples) Ainsi il offre la
possibiliteacute de deacutevelopper rapidement et facilement des applications
multiplateformes
Codename One est structureacute plus ou moins de la mecircme faccedilon que lrsquoenvironnement
Java mais il utilise une approche SaaS (Software as a Service) Il est composeacute
comme suit
minus Une interface de programmation (API) ougrave on retrouve toutes les
bibliothegraveques Java et Codename One que lrsquoon peut utiliser
minus Une interface de design (GUI) permettant de creacuteer des thegravemes et des
fenecirctres pour les applications
minus Lrsquointerface de deacuteveloppement proposant un simulateur avec la possibiliteacute de
visionner lrsquoaspect de lrsquoapplication sur les diffeacuterents systegravemes drsquoexploitation
12
gracircce agrave des skins (simulateurs des plateformes) et de tester le
fonctionnement de lrsquoapplication sur lrsquoIDE
minus La construction des applications (Build) ne se fait pas sur lrsquoIDE mais dans le
Cloud sur des serveurs Codename One il faut ensuite aller reacutecupeacuterer le
reacutesultat de la construction sur son compte Codename One
III2 Environnement de deacuteveloppement
Lrsquoenvironnement de travail est composeacute de NetBeans du plugin Codename One et
de Git hub Apregraves lrsquoinstallation de NetBeans 8 le plugin Codename One a eacuteteacute
installeacute dans NetBeans puis le programme Git
Pour commencer lrsquoIDE NetBeans est lanceacute Dans lrsquoonglet laquo Tools raquo une sous
rubrique laquo plugins raquo existe et permet drsquoajouter le plugin laquo Codename One raquo
Figure 5 Option plugin
Le plug-in est reacutecupeacutereacute et ajouteacute agrave lrsquoenvironnement de deacuteveloppement
13
Figure 6 Ajout du plugin
Une fenecirctre srsquoouvre dans laquelle le plug-in est choisi en lrsquooccurrence laquo Codename
One raquo Lrsquourl pour reacutecupeacuterer le plug-in est indiqueacutee [4]
Figure 7 Saisie de lrsquoURL du plugin
14
Figure 8 Seacutelection du plugin
Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo
Figure 9 Installation
15
Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective
Figure 10 Installation (suite)
La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez
lrsquoinstallation
Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet
de relancer NetBeans
16
Figure 11 Installation (fin)
III3 Etapes de Deacuteveloppement
La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication
depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave
lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone
17
Figure 12 Phases de deacuteveloppement
Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un
compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel
pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur
fait des modifications sur le projet localement Lorsque des modifications sont
faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre
faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)
ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le
serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur
vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du
serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est
appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des
modifications des reacutepertoires personnels vers le reacutepertoire central
18
Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont
compileacutes
Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier
exeacutecutable
Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de
lrsquoapplication
1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de
fichier exeacutecutable
2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier
JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)
3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication
Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes
est deacutetailleacutee
III4 Mise en œuvre des fonctionnaliteacutes
III41 Creacuteation de compte et authentification
Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est
composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription
19
Figure 13 Diagramme de seacutequences de lrsquoinscription
Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave
lrsquoutilisateur de saisir son nom et numeacutero
20
Figure 14 formulaire drsquoinscription
Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de
teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une
requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour
arguments deux variables contenant respectivement le nom et le numeacutero de
teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au
format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de
donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie
automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le
numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une
diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste
21
dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui
signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche
Lrsquoutilisateur est donc inscrit agrave Kononi
III42 Envoie de messages publics et groupeacutes
Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute
a Message public
Un message public est un message que chaque utilisateur peut envoyer sur Kononi
sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous
les abonneacutes au compte de lrsquoutilisateur
Figure 15 Diagramme de seacutequences drsquoenvoi de message public
En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle
interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte
permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave
lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler
lrsquoopeacuteration
22
Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le
bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans
deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au
serveur
Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
dialogue contenant le code et le message drsquoerreur srsquoaffiche
b Message groupeacute
Un message de groupe est un message qursquoun utilisateur de Kononi envoie en
seacutelectionnant un groupe de contacts
Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe
Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle
interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte
et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps
du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton
laquo annuler raquo
23
Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton
laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton
laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave
envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees
comme paramegravetres de la requecircte envoyeacutee au serveur
Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
message drsquoerreur srsquoaffiche
Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page
principale
III43 Affichage de lrsquohistorique des messages
Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de
Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur
avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON
(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur
Figure 17 Exemple de reacuteponse du serveur
24
Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer
(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements
suivants
bull Un label pour lrsquoimage
bull Un label pour le nom qui a envoyeacute le message
bull Un textArea pour le message
bull Un label pour la date
III44 Invitation agrave lrsquoabonnement aux messages publics
Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande
laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page
laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous
les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a
eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour
effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le
code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes
dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux
variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave
travers une exception
- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur
- Sinon la page principale est afficheacutee
La section suivante preacutesente les outils et technologies utiliseacutes pour
lrsquoimpleacutementation de lrsquoapplication
25
IV Outils et technologies utiliseacutes
Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies
suivants ont eacuteteacute utiliseacutes
IV1 NetBeans [5]
NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun
sous la licence CDDL (Common Development and Distribution License) et GPL
(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents
autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML
NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement
JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut
ecirctre senrichi par des plugins
Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute
drsquoutiliser Codename One Drsquoougrave le choix de cette IDE
IV2 Langage java [6]
Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute
par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa
principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves
facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents
Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux
IV3 Git hub [7]
Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le
programme Git Git Hub propose des comptes gratuits pour les projets de logiciels
libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute
par Linus Torvalds
Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi
servi agrave sauvegarder toutes les versions de lrsquoapplication
26
IV4 Trello [8]
Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est
baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les
cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre
Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version
de base est gratuite
Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs
lrsquoeacutetat davancement du projet
IV5 Codename one [9]
Figure 18 Logo et slogan de Codename One
Il permet de deacutevelopper en Java avec un seul et mecircme code des applications
multiplateformes Il nous a permis de creacuteer notre application
27
IV6 Protocol http [10]
Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-
serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche
application
Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local
IV7 Skype [11]
Outre les messages eacutelectroniques qui ont servi aux communications asynchrones
lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels
Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois
racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft
Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet
Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes
additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la
visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie
instantaneacutee et le partage drsquoeacutecrans
IV8 Apache Tomcat [12]
Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache
Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne
principalement sur les systegravemes drsquoexploitation UNIX et Windows
Apache Tomcat a permis de tester localement (au sein de NetBeans) le
comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur
Kononi
IV9 JSON [13]
Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de
donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre
repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir
repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de
programmation Il est notamment utiliseacute comme le langage de transport de
donneacutees par les services Web
JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
7
Figure 2 inscription (avec MVP)
Figure 3 Message de confirmation (MVP)
b) Srsquoabonner
8
Kononi vous permet drsquoecirctre toujours au courant de ce qui se passe autour de vous
Abonnez-vous aux comptes de votre choix pour recevoir tous les SMS qursquoils
enverront Par exemple pour recevoir gratuitement les messages du compte News
envoyez le SMS laquo news raquo
c) Diffuser ses messages
Diffuser vos messages une fois que vous aurez creacuteeacute votre compte Kononi vous
pourrez entrer en contact avec tous vos abonneacutes en leur envoyant le mecircme
message
Pour diffuser le message laquo Bonne fecircte agrave tousraquo agrave tous vos abonneacutes par exemple il suffira
de lenvoyer une seule fois agrave Kononi qui se chargera de le diffuser
d) Inviter ses amis
Pour inviter vos amis agrave srsquoabonner agrave vos messages envoyeacutes agrave partir de Kononi
envoyez la liste de leurs numeacuteros de teacuteleacutephone preacuteceacutedeacutee du point drsquointerrogation
Exemple drsquoinvitation 66xxxxxx 77xxxxxx
Lrsquoindicatif du pays est obligatoire pour les numeacuteros qui ne sont pas maliens Les
numeacuteros sont deacutelimiteacutes par le caractegravere espace laquo raquo
e) Reacutepondre
Crsquoest facile de reacutepondre agrave un message sur Kononi
Pour envoyer le message laquo Reccedilu 55 raquo au compte Toto envoyez le SMS laquo toto Reccedilu
55 raquo agrave Kononi qui se chargera de le transmettre agrave votre contact
f) Se deacutesabonner
Pour vous deacutesabonner du compte Toto par exemple et ne plus recevoir les
messages envoyeacutes par ce compte envoyez le SMS laquo -toto raquo
g) Se deacutesactiver
Pour ne plus recevoir de messages de Kononi envoyez le message STOP
9
Lrsquoobjectif de notre travail est de creacuteer une application mobile preacutesentant les
mecircmes fonctionnaliteacutes pour garantir la vulgarisation de Kononi aupregraves des
ldquoadopteurs preacutecocesrdquo Lrsquoapplication mobile devra utiliser les mecircmes APIs que le
MVP baseacute sur les communications purement par SMS pour assurer lrsquointeropeacuterabiliteacute
entre les deux services Les utilisateurs de Kononi doivent pouvoir eacutechanger entre
eux sans accroc peu importe lrsquooutil qursquoils utilisent (site internet application
mobile ou simple SMS)
Pour reacutealiser une application reacutepondant agrave ces besoins lrsquoarchitecture suivante a eacuteteacute
eacutelaboreacutee
II2 Architecture
Lrsquoarchitecture adopteacutee est inspireacutee du modegravele client-serveur comme montreacute agrave la
figure 4
Figure 4 architecture de lrsquoapplication
10
1deg) Lrsquoapplication envoie les donneacutees par requecircte http depuis le teacuteleacutephone de
lrsquoutilisateur Lambda (poste client)
2deg) Les donneacutees sont envoyeacutees au serveur de kononicom ougrave elles sont traiteacutees
3deg) Apregraves traitement les donneacutees sont envoyeacutees par requecircte http
4deg) Les donneacutees sont ensuite envoyeacutees aux destinataires
5deg) Les utilisateurs peuvent reacuteagir sur les donneacutees reccedilues ou envoyer de nouvelles
donneacutees par requecircte http
6deg) Lrsquoutilisateur Lambda peut recevoir les donneacutees eacutemises par drsquoautres utilisateurs
La mise en œuvre de cette architecture est preacutesenteacutee dans la section suivante
11
III Impleacutementation de lrsquoapplication
Cette section preacutesente les diffeacuterentes eacutetapes de reacutealisation de lrsquoapplication et
lrsquoapproche adopteacutee agrave cet effet
III1 Seacutelection drsquoun plugin
Initialement la technologie J2MEJava Mobile [3] avait eacuteteacute retenue pour le
deacuteveloppement de lrsquoapplication mobile Kononi car comme la majoriteacute des
teacuteleacutephones au Mali sont conccedilus suivant cette technologie Cependant J2ME
preacutesente des limites fonctionnelles pour les deacuteveloppeurs telles que
lrsquoincompatibiliteacute du fichier JAR (fichier drsquoinstallation) avec certains teacuteleacutephones de
la mecircme plateforme lrsquoimpossibiliteacute de marquer fin de deacutebogage En outre cette
technologie est relativement ancienne et tend agrave disparaicirctre
Une recherche de solutions alternatives nous a conduits au pluginlaquo Codename
One raquo [8] compatible avec Eclipse et NetBeans Il permet de deacutevelopper en Java
avec un seul et mecircme code des applications multiplateformes
Lrsquoobjectif de Codename One est de proposer une interface de deacuteveloppement
commune codeacutee en Java et capable de fonctionner sur iOS Androiumld BlackBerry
OS Windows Phone 7 et J2ME (pour les teacuteleacutephones simples) Ainsi il offre la
possibiliteacute de deacutevelopper rapidement et facilement des applications
multiplateformes
Codename One est structureacute plus ou moins de la mecircme faccedilon que lrsquoenvironnement
Java mais il utilise une approche SaaS (Software as a Service) Il est composeacute
comme suit
minus Une interface de programmation (API) ougrave on retrouve toutes les
bibliothegraveques Java et Codename One que lrsquoon peut utiliser
minus Une interface de design (GUI) permettant de creacuteer des thegravemes et des
fenecirctres pour les applications
minus Lrsquointerface de deacuteveloppement proposant un simulateur avec la possibiliteacute de
visionner lrsquoaspect de lrsquoapplication sur les diffeacuterents systegravemes drsquoexploitation
12
gracircce agrave des skins (simulateurs des plateformes) et de tester le
fonctionnement de lrsquoapplication sur lrsquoIDE
minus La construction des applications (Build) ne se fait pas sur lrsquoIDE mais dans le
Cloud sur des serveurs Codename One il faut ensuite aller reacutecupeacuterer le
reacutesultat de la construction sur son compte Codename One
III2 Environnement de deacuteveloppement
Lrsquoenvironnement de travail est composeacute de NetBeans du plugin Codename One et
de Git hub Apregraves lrsquoinstallation de NetBeans 8 le plugin Codename One a eacuteteacute
installeacute dans NetBeans puis le programme Git
Pour commencer lrsquoIDE NetBeans est lanceacute Dans lrsquoonglet laquo Tools raquo une sous
rubrique laquo plugins raquo existe et permet drsquoajouter le plugin laquo Codename One raquo
Figure 5 Option plugin
Le plug-in est reacutecupeacutereacute et ajouteacute agrave lrsquoenvironnement de deacuteveloppement
13
Figure 6 Ajout du plugin
Une fenecirctre srsquoouvre dans laquelle le plug-in est choisi en lrsquooccurrence laquo Codename
One raquo Lrsquourl pour reacutecupeacuterer le plug-in est indiqueacutee [4]
Figure 7 Saisie de lrsquoURL du plugin
14
Figure 8 Seacutelection du plugin
Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo
Figure 9 Installation
15
Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective
Figure 10 Installation (suite)
La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez
lrsquoinstallation
Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet
de relancer NetBeans
16
Figure 11 Installation (fin)
III3 Etapes de Deacuteveloppement
La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication
depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave
lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone
17
Figure 12 Phases de deacuteveloppement
Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un
compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel
pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur
fait des modifications sur le projet localement Lorsque des modifications sont
faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre
faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)
ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le
serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur
vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du
serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est
appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des
modifications des reacutepertoires personnels vers le reacutepertoire central
18
Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont
compileacutes
Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier
exeacutecutable
Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de
lrsquoapplication
1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de
fichier exeacutecutable
2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier
JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)
3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication
Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes
est deacutetailleacutee
III4 Mise en œuvre des fonctionnaliteacutes
III41 Creacuteation de compte et authentification
Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est
composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription
19
Figure 13 Diagramme de seacutequences de lrsquoinscription
Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave
lrsquoutilisateur de saisir son nom et numeacutero
20
Figure 14 formulaire drsquoinscription
Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de
teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une
requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour
arguments deux variables contenant respectivement le nom et le numeacutero de
teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au
format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de
donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie
automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le
numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une
diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste
21
dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui
signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche
Lrsquoutilisateur est donc inscrit agrave Kononi
III42 Envoie de messages publics et groupeacutes
Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute
a Message public
Un message public est un message que chaque utilisateur peut envoyer sur Kononi
sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous
les abonneacutes au compte de lrsquoutilisateur
Figure 15 Diagramme de seacutequences drsquoenvoi de message public
En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle
interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte
permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave
lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler
lrsquoopeacuteration
22
Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le
bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans
deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au
serveur
Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
dialogue contenant le code et le message drsquoerreur srsquoaffiche
b Message groupeacute
Un message de groupe est un message qursquoun utilisateur de Kononi envoie en
seacutelectionnant un groupe de contacts
Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe
Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle
interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte
et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps
du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton
laquo annuler raquo
23
Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton
laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton
laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave
envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees
comme paramegravetres de la requecircte envoyeacutee au serveur
Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
message drsquoerreur srsquoaffiche
Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page
principale
III43 Affichage de lrsquohistorique des messages
Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de
Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur
avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON
(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur
Figure 17 Exemple de reacuteponse du serveur
24
Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer
(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements
suivants
bull Un label pour lrsquoimage
bull Un label pour le nom qui a envoyeacute le message
bull Un textArea pour le message
bull Un label pour la date
III44 Invitation agrave lrsquoabonnement aux messages publics
Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande
laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page
laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous
les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a
eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour
effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le
code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes
dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux
variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave
travers une exception
- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur
- Sinon la page principale est afficheacutee
La section suivante preacutesente les outils et technologies utiliseacutes pour
lrsquoimpleacutementation de lrsquoapplication
25
IV Outils et technologies utiliseacutes
Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies
suivants ont eacuteteacute utiliseacutes
IV1 NetBeans [5]
NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun
sous la licence CDDL (Common Development and Distribution License) et GPL
(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents
autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML
NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement
JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut
ecirctre senrichi par des plugins
Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute
drsquoutiliser Codename One Drsquoougrave le choix de cette IDE
IV2 Langage java [6]
Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute
par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa
principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves
facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents
Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux
IV3 Git hub [7]
Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le
programme Git Git Hub propose des comptes gratuits pour les projets de logiciels
libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute
par Linus Torvalds
Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi
servi agrave sauvegarder toutes les versions de lrsquoapplication
26
IV4 Trello [8]
Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est
baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les
cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre
Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version
de base est gratuite
Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs
lrsquoeacutetat davancement du projet
IV5 Codename one [9]
Figure 18 Logo et slogan de Codename One
Il permet de deacutevelopper en Java avec un seul et mecircme code des applications
multiplateformes Il nous a permis de creacuteer notre application
27
IV6 Protocol http [10]
Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-
serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche
application
Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local
IV7 Skype [11]
Outre les messages eacutelectroniques qui ont servi aux communications asynchrones
lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels
Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois
racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft
Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet
Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes
additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la
visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie
instantaneacutee et le partage drsquoeacutecrans
IV8 Apache Tomcat [12]
Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache
Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne
principalement sur les systegravemes drsquoexploitation UNIX et Windows
Apache Tomcat a permis de tester localement (au sein de NetBeans) le
comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur
Kononi
IV9 JSON [13]
Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de
donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre
repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir
repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de
programmation Il est notamment utiliseacute comme le langage de transport de
donneacutees par les services Web
JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
8
Kononi vous permet drsquoecirctre toujours au courant de ce qui se passe autour de vous
Abonnez-vous aux comptes de votre choix pour recevoir tous les SMS qursquoils
enverront Par exemple pour recevoir gratuitement les messages du compte News
envoyez le SMS laquo news raquo
c) Diffuser ses messages
Diffuser vos messages une fois que vous aurez creacuteeacute votre compte Kononi vous
pourrez entrer en contact avec tous vos abonneacutes en leur envoyant le mecircme
message
Pour diffuser le message laquo Bonne fecircte agrave tousraquo agrave tous vos abonneacutes par exemple il suffira
de lenvoyer une seule fois agrave Kononi qui se chargera de le diffuser
d) Inviter ses amis
Pour inviter vos amis agrave srsquoabonner agrave vos messages envoyeacutes agrave partir de Kononi
envoyez la liste de leurs numeacuteros de teacuteleacutephone preacuteceacutedeacutee du point drsquointerrogation
Exemple drsquoinvitation 66xxxxxx 77xxxxxx
Lrsquoindicatif du pays est obligatoire pour les numeacuteros qui ne sont pas maliens Les
numeacuteros sont deacutelimiteacutes par le caractegravere espace laquo raquo
e) Reacutepondre
Crsquoest facile de reacutepondre agrave un message sur Kononi
Pour envoyer le message laquo Reccedilu 55 raquo au compte Toto envoyez le SMS laquo toto Reccedilu
55 raquo agrave Kononi qui se chargera de le transmettre agrave votre contact
f) Se deacutesabonner
Pour vous deacutesabonner du compte Toto par exemple et ne plus recevoir les
messages envoyeacutes par ce compte envoyez le SMS laquo -toto raquo
g) Se deacutesactiver
Pour ne plus recevoir de messages de Kononi envoyez le message STOP
9
Lrsquoobjectif de notre travail est de creacuteer une application mobile preacutesentant les
mecircmes fonctionnaliteacutes pour garantir la vulgarisation de Kononi aupregraves des
ldquoadopteurs preacutecocesrdquo Lrsquoapplication mobile devra utiliser les mecircmes APIs que le
MVP baseacute sur les communications purement par SMS pour assurer lrsquointeropeacuterabiliteacute
entre les deux services Les utilisateurs de Kononi doivent pouvoir eacutechanger entre
eux sans accroc peu importe lrsquooutil qursquoils utilisent (site internet application
mobile ou simple SMS)
Pour reacutealiser une application reacutepondant agrave ces besoins lrsquoarchitecture suivante a eacuteteacute
eacutelaboreacutee
II2 Architecture
Lrsquoarchitecture adopteacutee est inspireacutee du modegravele client-serveur comme montreacute agrave la
figure 4
Figure 4 architecture de lrsquoapplication
10
1deg) Lrsquoapplication envoie les donneacutees par requecircte http depuis le teacuteleacutephone de
lrsquoutilisateur Lambda (poste client)
2deg) Les donneacutees sont envoyeacutees au serveur de kononicom ougrave elles sont traiteacutees
3deg) Apregraves traitement les donneacutees sont envoyeacutees par requecircte http
4deg) Les donneacutees sont ensuite envoyeacutees aux destinataires
5deg) Les utilisateurs peuvent reacuteagir sur les donneacutees reccedilues ou envoyer de nouvelles
donneacutees par requecircte http
6deg) Lrsquoutilisateur Lambda peut recevoir les donneacutees eacutemises par drsquoautres utilisateurs
La mise en œuvre de cette architecture est preacutesenteacutee dans la section suivante
11
III Impleacutementation de lrsquoapplication
Cette section preacutesente les diffeacuterentes eacutetapes de reacutealisation de lrsquoapplication et
lrsquoapproche adopteacutee agrave cet effet
III1 Seacutelection drsquoun plugin
Initialement la technologie J2MEJava Mobile [3] avait eacuteteacute retenue pour le
deacuteveloppement de lrsquoapplication mobile Kononi car comme la majoriteacute des
teacuteleacutephones au Mali sont conccedilus suivant cette technologie Cependant J2ME
preacutesente des limites fonctionnelles pour les deacuteveloppeurs telles que
lrsquoincompatibiliteacute du fichier JAR (fichier drsquoinstallation) avec certains teacuteleacutephones de
la mecircme plateforme lrsquoimpossibiliteacute de marquer fin de deacutebogage En outre cette
technologie est relativement ancienne et tend agrave disparaicirctre
Une recherche de solutions alternatives nous a conduits au pluginlaquo Codename
One raquo [8] compatible avec Eclipse et NetBeans Il permet de deacutevelopper en Java
avec un seul et mecircme code des applications multiplateformes
Lrsquoobjectif de Codename One est de proposer une interface de deacuteveloppement
commune codeacutee en Java et capable de fonctionner sur iOS Androiumld BlackBerry
OS Windows Phone 7 et J2ME (pour les teacuteleacutephones simples) Ainsi il offre la
possibiliteacute de deacutevelopper rapidement et facilement des applications
multiplateformes
Codename One est structureacute plus ou moins de la mecircme faccedilon que lrsquoenvironnement
Java mais il utilise une approche SaaS (Software as a Service) Il est composeacute
comme suit
minus Une interface de programmation (API) ougrave on retrouve toutes les
bibliothegraveques Java et Codename One que lrsquoon peut utiliser
minus Une interface de design (GUI) permettant de creacuteer des thegravemes et des
fenecirctres pour les applications
minus Lrsquointerface de deacuteveloppement proposant un simulateur avec la possibiliteacute de
visionner lrsquoaspect de lrsquoapplication sur les diffeacuterents systegravemes drsquoexploitation
12
gracircce agrave des skins (simulateurs des plateformes) et de tester le
fonctionnement de lrsquoapplication sur lrsquoIDE
minus La construction des applications (Build) ne se fait pas sur lrsquoIDE mais dans le
Cloud sur des serveurs Codename One il faut ensuite aller reacutecupeacuterer le
reacutesultat de la construction sur son compte Codename One
III2 Environnement de deacuteveloppement
Lrsquoenvironnement de travail est composeacute de NetBeans du plugin Codename One et
de Git hub Apregraves lrsquoinstallation de NetBeans 8 le plugin Codename One a eacuteteacute
installeacute dans NetBeans puis le programme Git
Pour commencer lrsquoIDE NetBeans est lanceacute Dans lrsquoonglet laquo Tools raquo une sous
rubrique laquo plugins raquo existe et permet drsquoajouter le plugin laquo Codename One raquo
Figure 5 Option plugin
Le plug-in est reacutecupeacutereacute et ajouteacute agrave lrsquoenvironnement de deacuteveloppement
13
Figure 6 Ajout du plugin
Une fenecirctre srsquoouvre dans laquelle le plug-in est choisi en lrsquooccurrence laquo Codename
One raquo Lrsquourl pour reacutecupeacuterer le plug-in est indiqueacutee [4]
Figure 7 Saisie de lrsquoURL du plugin
14
Figure 8 Seacutelection du plugin
Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo
Figure 9 Installation
15
Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective
Figure 10 Installation (suite)
La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez
lrsquoinstallation
Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet
de relancer NetBeans
16
Figure 11 Installation (fin)
III3 Etapes de Deacuteveloppement
La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication
depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave
lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone
17
Figure 12 Phases de deacuteveloppement
Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un
compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel
pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur
fait des modifications sur le projet localement Lorsque des modifications sont
faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre
faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)
ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le
serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur
vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du
serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est
appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des
modifications des reacutepertoires personnels vers le reacutepertoire central
18
Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont
compileacutes
Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier
exeacutecutable
Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de
lrsquoapplication
1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de
fichier exeacutecutable
2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier
JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)
3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication
Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes
est deacutetailleacutee
III4 Mise en œuvre des fonctionnaliteacutes
III41 Creacuteation de compte et authentification
Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est
composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription
19
Figure 13 Diagramme de seacutequences de lrsquoinscription
Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave
lrsquoutilisateur de saisir son nom et numeacutero
20
Figure 14 formulaire drsquoinscription
Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de
teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une
requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour
arguments deux variables contenant respectivement le nom et le numeacutero de
teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au
format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de
donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie
automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le
numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une
diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste
21
dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui
signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche
Lrsquoutilisateur est donc inscrit agrave Kononi
III42 Envoie de messages publics et groupeacutes
Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute
a Message public
Un message public est un message que chaque utilisateur peut envoyer sur Kononi
sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous
les abonneacutes au compte de lrsquoutilisateur
Figure 15 Diagramme de seacutequences drsquoenvoi de message public
En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle
interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte
permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave
lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler
lrsquoopeacuteration
22
Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le
bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans
deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au
serveur
Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
dialogue contenant le code et le message drsquoerreur srsquoaffiche
b Message groupeacute
Un message de groupe est un message qursquoun utilisateur de Kononi envoie en
seacutelectionnant un groupe de contacts
Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe
Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle
interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte
et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps
du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton
laquo annuler raquo
23
Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton
laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton
laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave
envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees
comme paramegravetres de la requecircte envoyeacutee au serveur
Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
message drsquoerreur srsquoaffiche
Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page
principale
III43 Affichage de lrsquohistorique des messages
Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de
Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur
avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON
(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur
Figure 17 Exemple de reacuteponse du serveur
24
Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer
(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements
suivants
bull Un label pour lrsquoimage
bull Un label pour le nom qui a envoyeacute le message
bull Un textArea pour le message
bull Un label pour la date
III44 Invitation agrave lrsquoabonnement aux messages publics
Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande
laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page
laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous
les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a
eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour
effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le
code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes
dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux
variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave
travers une exception
- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur
- Sinon la page principale est afficheacutee
La section suivante preacutesente les outils et technologies utiliseacutes pour
lrsquoimpleacutementation de lrsquoapplication
25
IV Outils et technologies utiliseacutes
Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies
suivants ont eacuteteacute utiliseacutes
IV1 NetBeans [5]
NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun
sous la licence CDDL (Common Development and Distribution License) et GPL
(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents
autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML
NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement
JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut
ecirctre senrichi par des plugins
Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute
drsquoutiliser Codename One Drsquoougrave le choix de cette IDE
IV2 Langage java [6]
Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute
par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa
principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves
facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents
Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux
IV3 Git hub [7]
Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le
programme Git Git Hub propose des comptes gratuits pour les projets de logiciels
libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute
par Linus Torvalds
Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi
servi agrave sauvegarder toutes les versions de lrsquoapplication
26
IV4 Trello [8]
Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est
baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les
cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre
Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version
de base est gratuite
Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs
lrsquoeacutetat davancement du projet
IV5 Codename one [9]
Figure 18 Logo et slogan de Codename One
Il permet de deacutevelopper en Java avec un seul et mecircme code des applications
multiplateformes Il nous a permis de creacuteer notre application
27
IV6 Protocol http [10]
Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-
serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche
application
Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local
IV7 Skype [11]
Outre les messages eacutelectroniques qui ont servi aux communications asynchrones
lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels
Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois
racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft
Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet
Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes
additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la
visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie
instantaneacutee et le partage drsquoeacutecrans
IV8 Apache Tomcat [12]
Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache
Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne
principalement sur les systegravemes drsquoexploitation UNIX et Windows
Apache Tomcat a permis de tester localement (au sein de NetBeans) le
comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur
Kononi
IV9 JSON [13]
Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de
donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre
repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir
repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de
programmation Il est notamment utiliseacute comme le langage de transport de
donneacutees par les services Web
JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
9
Lrsquoobjectif de notre travail est de creacuteer une application mobile preacutesentant les
mecircmes fonctionnaliteacutes pour garantir la vulgarisation de Kononi aupregraves des
ldquoadopteurs preacutecocesrdquo Lrsquoapplication mobile devra utiliser les mecircmes APIs que le
MVP baseacute sur les communications purement par SMS pour assurer lrsquointeropeacuterabiliteacute
entre les deux services Les utilisateurs de Kononi doivent pouvoir eacutechanger entre
eux sans accroc peu importe lrsquooutil qursquoils utilisent (site internet application
mobile ou simple SMS)
Pour reacutealiser une application reacutepondant agrave ces besoins lrsquoarchitecture suivante a eacuteteacute
eacutelaboreacutee
II2 Architecture
Lrsquoarchitecture adopteacutee est inspireacutee du modegravele client-serveur comme montreacute agrave la
figure 4
Figure 4 architecture de lrsquoapplication
10
1deg) Lrsquoapplication envoie les donneacutees par requecircte http depuis le teacuteleacutephone de
lrsquoutilisateur Lambda (poste client)
2deg) Les donneacutees sont envoyeacutees au serveur de kononicom ougrave elles sont traiteacutees
3deg) Apregraves traitement les donneacutees sont envoyeacutees par requecircte http
4deg) Les donneacutees sont ensuite envoyeacutees aux destinataires
5deg) Les utilisateurs peuvent reacuteagir sur les donneacutees reccedilues ou envoyer de nouvelles
donneacutees par requecircte http
6deg) Lrsquoutilisateur Lambda peut recevoir les donneacutees eacutemises par drsquoautres utilisateurs
La mise en œuvre de cette architecture est preacutesenteacutee dans la section suivante
11
III Impleacutementation de lrsquoapplication
Cette section preacutesente les diffeacuterentes eacutetapes de reacutealisation de lrsquoapplication et
lrsquoapproche adopteacutee agrave cet effet
III1 Seacutelection drsquoun plugin
Initialement la technologie J2MEJava Mobile [3] avait eacuteteacute retenue pour le
deacuteveloppement de lrsquoapplication mobile Kononi car comme la majoriteacute des
teacuteleacutephones au Mali sont conccedilus suivant cette technologie Cependant J2ME
preacutesente des limites fonctionnelles pour les deacuteveloppeurs telles que
lrsquoincompatibiliteacute du fichier JAR (fichier drsquoinstallation) avec certains teacuteleacutephones de
la mecircme plateforme lrsquoimpossibiliteacute de marquer fin de deacutebogage En outre cette
technologie est relativement ancienne et tend agrave disparaicirctre
Une recherche de solutions alternatives nous a conduits au pluginlaquo Codename
One raquo [8] compatible avec Eclipse et NetBeans Il permet de deacutevelopper en Java
avec un seul et mecircme code des applications multiplateformes
Lrsquoobjectif de Codename One est de proposer une interface de deacuteveloppement
commune codeacutee en Java et capable de fonctionner sur iOS Androiumld BlackBerry
OS Windows Phone 7 et J2ME (pour les teacuteleacutephones simples) Ainsi il offre la
possibiliteacute de deacutevelopper rapidement et facilement des applications
multiplateformes
Codename One est structureacute plus ou moins de la mecircme faccedilon que lrsquoenvironnement
Java mais il utilise une approche SaaS (Software as a Service) Il est composeacute
comme suit
minus Une interface de programmation (API) ougrave on retrouve toutes les
bibliothegraveques Java et Codename One que lrsquoon peut utiliser
minus Une interface de design (GUI) permettant de creacuteer des thegravemes et des
fenecirctres pour les applications
minus Lrsquointerface de deacuteveloppement proposant un simulateur avec la possibiliteacute de
visionner lrsquoaspect de lrsquoapplication sur les diffeacuterents systegravemes drsquoexploitation
12
gracircce agrave des skins (simulateurs des plateformes) et de tester le
fonctionnement de lrsquoapplication sur lrsquoIDE
minus La construction des applications (Build) ne se fait pas sur lrsquoIDE mais dans le
Cloud sur des serveurs Codename One il faut ensuite aller reacutecupeacuterer le
reacutesultat de la construction sur son compte Codename One
III2 Environnement de deacuteveloppement
Lrsquoenvironnement de travail est composeacute de NetBeans du plugin Codename One et
de Git hub Apregraves lrsquoinstallation de NetBeans 8 le plugin Codename One a eacuteteacute
installeacute dans NetBeans puis le programme Git
Pour commencer lrsquoIDE NetBeans est lanceacute Dans lrsquoonglet laquo Tools raquo une sous
rubrique laquo plugins raquo existe et permet drsquoajouter le plugin laquo Codename One raquo
Figure 5 Option plugin
Le plug-in est reacutecupeacutereacute et ajouteacute agrave lrsquoenvironnement de deacuteveloppement
13
Figure 6 Ajout du plugin
Une fenecirctre srsquoouvre dans laquelle le plug-in est choisi en lrsquooccurrence laquo Codename
One raquo Lrsquourl pour reacutecupeacuterer le plug-in est indiqueacutee [4]
Figure 7 Saisie de lrsquoURL du plugin
14
Figure 8 Seacutelection du plugin
Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo
Figure 9 Installation
15
Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective
Figure 10 Installation (suite)
La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez
lrsquoinstallation
Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet
de relancer NetBeans
16
Figure 11 Installation (fin)
III3 Etapes de Deacuteveloppement
La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication
depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave
lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone
17
Figure 12 Phases de deacuteveloppement
Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un
compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel
pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur
fait des modifications sur le projet localement Lorsque des modifications sont
faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre
faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)
ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le
serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur
vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du
serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est
appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des
modifications des reacutepertoires personnels vers le reacutepertoire central
18
Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont
compileacutes
Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier
exeacutecutable
Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de
lrsquoapplication
1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de
fichier exeacutecutable
2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier
JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)
3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication
Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes
est deacutetailleacutee
III4 Mise en œuvre des fonctionnaliteacutes
III41 Creacuteation de compte et authentification
Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est
composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription
19
Figure 13 Diagramme de seacutequences de lrsquoinscription
Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave
lrsquoutilisateur de saisir son nom et numeacutero
20
Figure 14 formulaire drsquoinscription
Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de
teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une
requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour
arguments deux variables contenant respectivement le nom et le numeacutero de
teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au
format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de
donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie
automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le
numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une
diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste
21
dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui
signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche
Lrsquoutilisateur est donc inscrit agrave Kononi
III42 Envoie de messages publics et groupeacutes
Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute
a Message public
Un message public est un message que chaque utilisateur peut envoyer sur Kononi
sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous
les abonneacutes au compte de lrsquoutilisateur
Figure 15 Diagramme de seacutequences drsquoenvoi de message public
En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle
interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte
permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave
lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler
lrsquoopeacuteration
22
Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le
bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans
deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au
serveur
Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
dialogue contenant le code et le message drsquoerreur srsquoaffiche
b Message groupeacute
Un message de groupe est un message qursquoun utilisateur de Kononi envoie en
seacutelectionnant un groupe de contacts
Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe
Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle
interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte
et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps
du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton
laquo annuler raquo
23
Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton
laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton
laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave
envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees
comme paramegravetres de la requecircte envoyeacutee au serveur
Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
message drsquoerreur srsquoaffiche
Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page
principale
III43 Affichage de lrsquohistorique des messages
Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de
Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur
avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON
(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur
Figure 17 Exemple de reacuteponse du serveur
24
Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer
(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements
suivants
bull Un label pour lrsquoimage
bull Un label pour le nom qui a envoyeacute le message
bull Un textArea pour le message
bull Un label pour la date
III44 Invitation agrave lrsquoabonnement aux messages publics
Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande
laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page
laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous
les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a
eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour
effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le
code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes
dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux
variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave
travers une exception
- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur
- Sinon la page principale est afficheacutee
La section suivante preacutesente les outils et technologies utiliseacutes pour
lrsquoimpleacutementation de lrsquoapplication
25
IV Outils et technologies utiliseacutes
Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies
suivants ont eacuteteacute utiliseacutes
IV1 NetBeans [5]
NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun
sous la licence CDDL (Common Development and Distribution License) et GPL
(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents
autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML
NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement
JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut
ecirctre senrichi par des plugins
Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute
drsquoutiliser Codename One Drsquoougrave le choix de cette IDE
IV2 Langage java [6]
Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute
par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa
principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves
facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents
Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux
IV3 Git hub [7]
Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le
programme Git Git Hub propose des comptes gratuits pour les projets de logiciels
libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute
par Linus Torvalds
Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi
servi agrave sauvegarder toutes les versions de lrsquoapplication
26
IV4 Trello [8]
Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est
baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les
cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre
Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version
de base est gratuite
Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs
lrsquoeacutetat davancement du projet
IV5 Codename one [9]
Figure 18 Logo et slogan de Codename One
Il permet de deacutevelopper en Java avec un seul et mecircme code des applications
multiplateformes Il nous a permis de creacuteer notre application
27
IV6 Protocol http [10]
Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-
serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche
application
Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local
IV7 Skype [11]
Outre les messages eacutelectroniques qui ont servi aux communications asynchrones
lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels
Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois
racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft
Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet
Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes
additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la
visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie
instantaneacutee et le partage drsquoeacutecrans
IV8 Apache Tomcat [12]
Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache
Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne
principalement sur les systegravemes drsquoexploitation UNIX et Windows
Apache Tomcat a permis de tester localement (au sein de NetBeans) le
comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur
Kononi
IV9 JSON [13]
Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de
donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre
repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir
repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de
programmation Il est notamment utiliseacute comme le langage de transport de
donneacutees par les services Web
JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
10
1deg) Lrsquoapplication envoie les donneacutees par requecircte http depuis le teacuteleacutephone de
lrsquoutilisateur Lambda (poste client)
2deg) Les donneacutees sont envoyeacutees au serveur de kononicom ougrave elles sont traiteacutees
3deg) Apregraves traitement les donneacutees sont envoyeacutees par requecircte http
4deg) Les donneacutees sont ensuite envoyeacutees aux destinataires
5deg) Les utilisateurs peuvent reacuteagir sur les donneacutees reccedilues ou envoyer de nouvelles
donneacutees par requecircte http
6deg) Lrsquoutilisateur Lambda peut recevoir les donneacutees eacutemises par drsquoautres utilisateurs
La mise en œuvre de cette architecture est preacutesenteacutee dans la section suivante
11
III Impleacutementation de lrsquoapplication
Cette section preacutesente les diffeacuterentes eacutetapes de reacutealisation de lrsquoapplication et
lrsquoapproche adopteacutee agrave cet effet
III1 Seacutelection drsquoun plugin
Initialement la technologie J2MEJava Mobile [3] avait eacuteteacute retenue pour le
deacuteveloppement de lrsquoapplication mobile Kononi car comme la majoriteacute des
teacuteleacutephones au Mali sont conccedilus suivant cette technologie Cependant J2ME
preacutesente des limites fonctionnelles pour les deacuteveloppeurs telles que
lrsquoincompatibiliteacute du fichier JAR (fichier drsquoinstallation) avec certains teacuteleacutephones de
la mecircme plateforme lrsquoimpossibiliteacute de marquer fin de deacutebogage En outre cette
technologie est relativement ancienne et tend agrave disparaicirctre
Une recherche de solutions alternatives nous a conduits au pluginlaquo Codename
One raquo [8] compatible avec Eclipse et NetBeans Il permet de deacutevelopper en Java
avec un seul et mecircme code des applications multiplateformes
Lrsquoobjectif de Codename One est de proposer une interface de deacuteveloppement
commune codeacutee en Java et capable de fonctionner sur iOS Androiumld BlackBerry
OS Windows Phone 7 et J2ME (pour les teacuteleacutephones simples) Ainsi il offre la
possibiliteacute de deacutevelopper rapidement et facilement des applications
multiplateformes
Codename One est structureacute plus ou moins de la mecircme faccedilon que lrsquoenvironnement
Java mais il utilise une approche SaaS (Software as a Service) Il est composeacute
comme suit
minus Une interface de programmation (API) ougrave on retrouve toutes les
bibliothegraveques Java et Codename One que lrsquoon peut utiliser
minus Une interface de design (GUI) permettant de creacuteer des thegravemes et des
fenecirctres pour les applications
minus Lrsquointerface de deacuteveloppement proposant un simulateur avec la possibiliteacute de
visionner lrsquoaspect de lrsquoapplication sur les diffeacuterents systegravemes drsquoexploitation
12
gracircce agrave des skins (simulateurs des plateformes) et de tester le
fonctionnement de lrsquoapplication sur lrsquoIDE
minus La construction des applications (Build) ne se fait pas sur lrsquoIDE mais dans le
Cloud sur des serveurs Codename One il faut ensuite aller reacutecupeacuterer le
reacutesultat de la construction sur son compte Codename One
III2 Environnement de deacuteveloppement
Lrsquoenvironnement de travail est composeacute de NetBeans du plugin Codename One et
de Git hub Apregraves lrsquoinstallation de NetBeans 8 le plugin Codename One a eacuteteacute
installeacute dans NetBeans puis le programme Git
Pour commencer lrsquoIDE NetBeans est lanceacute Dans lrsquoonglet laquo Tools raquo une sous
rubrique laquo plugins raquo existe et permet drsquoajouter le plugin laquo Codename One raquo
Figure 5 Option plugin
Le plug-in est reacutecupeacutereacute et ajouteacute agrave lrsquoenvironnement de deacuteveloppement
13
Figure 6 Ajout du plugin
Une fenecirctre srsquoouvre dans laquelle le plug-in est choisi en lrsquooccurrence laquo Codename
One raquo Lrsquourl pour reacutecupeacuterer le plug-in est indiqueacutee [4]
Figure 7 Saisie de lrsquoURL du plugin
14
Figure 8 Seacutelection du plugin
Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo
Figure 9 Installation
15
Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective
Figure 10 Installation (suite)
La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez
lrsquoinstallation
Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet
de relancer NetBeans
16
Figure 11 Installation (fin)
III3 Etapes de Deacuteveloppement
La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication
depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave
lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone
17
Figure 12 Phases de deacuteveloppement
Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un
compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel
pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur
fait des modifications sur le projet localement Lorsque des modifications sont
faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre
faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)
ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le
serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur
vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du
serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est
appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des
modifications des reacutepertoires personnels vers le reacutepertoire central
18
Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont
compileacutes
Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier
exeacutecutable
Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de
lrsquoapplication
1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de
fichier exeacutecutable
2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier
JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)
3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication
Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes
est deacutetailleacutee
III4 Mise en œuvre des fonctionnaliteacutes
III41 Creacuteation de compte et authentification
Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est
composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription
19
Figure 13 Diagramme de seacutequences de lrsquoinscription
Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave
lrsquoutilisateur de saisir son nom et numeacutero
20
Figure 14 formulaire drsquoinscription
Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de
teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une
requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour
arguments deux variables contenant respectivement le nom et le numeacutero de
teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au
format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de
donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie
automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le
numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une
diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste
21
dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui
signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche
Lrsquoutilisateur est donc inscrit agrave Kononi
III42 Envoie de messages publics et groupeacutes
Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute
a Message public
Un message public est un message que chaque utilisateur peut envoyer sur Kononi
sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous
les abonneacutes au compte de lrsquoutilisateur
Figure 15 Diagramme de seacutequences drsquoenvoi de message public
En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle
interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte
permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave
lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler
lrsquoopeacuteration
22
Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le
bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans
deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au
serveur
Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
dialogue contenant le code et le message drsquoerreur srsquoaffiche
b Message groupeacute
Un message de groupe est un message qursquoun utilisateur de Kononi envoie en
seacutelectionnant un groupe de contacts
Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe
Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle
interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte
et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps
du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton
laquo annuler raquo
23
Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton
laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton
laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave
envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees
comme paramegravetres de la requecircte envoyeacutee au serveur
Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
message drsquoerreur srsquoaffiche
Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page
principale
III43 Affichage de lrsquohistorique des messages
Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de
Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur
avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON
(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur
Figure 17 Exemple de reacuteponse du serveur
24
Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer
(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements
suivants
bull Un label pour lrsquoimage
bull Un label pour le nom qui a envoyeacute le message
bull Un textArea pour le message
bull Un label pour la date
III44 Invitation agrave lrsquoabonnement aux messages publics
Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande
laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page
laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous
les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a
eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour
effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le
code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes
dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux
variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave
travers une exception
- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur
- Sinon la page principale est afficheacutee
La section suivante preacutesente les outils et technologies utiliseacutes pour
lrsquoimpleacutementation de lrsquoapplication
25
IV Outils et technologies utiliseacutes
Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies
suivants ont eacuteteacute utiliseacutes
IV1 NetBeans [5]
NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun
sous la licence CDDL (Common Development and Distribution License) et GPL
(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents
autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML
NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement
JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut
ecirctre senrichi par des plugins
Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute
drsquoutiliser Codename One Drsquoougrave le choix de cette IDE
IV2 Langage java [6]
Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute
par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa
principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves
facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents
Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux
IV3 Git hub [7]
Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le
programme Git Git Hub propose des comptes gratuits pour les projets de logiciels
libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute
par Linus Torvalds
Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi
servi agrave sauvegarder toutes les versions de lrsquoapplication
26
IV4 Trello [8]
Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est
baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les
cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre
Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version
de base est gratuite
Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs
lrsquoeacutetat davancement du projet
IV5 Codename one [9]
Figure 18 Logo et slogan de Codename One
Il permet de deacutevelopper en Java avec un seul et mecircme code des applications
multiplateformes Il nous a permis de creacuteer notre application
27
IV6 Protocol http [10]
Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-
serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche
application
Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local
IV7 Skype [11]
Outre les messages eacutelectroniques qui ont servi aux communications asynchrones
lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels
Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois
racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft
Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet
Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes
additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la
visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie
instantaneacutee et le partage drsquoeacutecrans
IV8 Apache Tomcat [12]
Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache
Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne
principalement sur les systegravemes drsquoexploitation UNIX et Windows
Apache Tomcat a permis de tester localement (au sein de NetBeans) le
comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur
Kononi
IV9 JSON [13]
Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de
donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre
repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir
repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de
programmation Il est notamment utiliseacute comme le langage de transport de
donneacutees par les services Web
JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
11
III Impleacutementation de lrsquoapplication
Cette section preacutesente les diffeacuterentes eacutetapes de reacutealisation de lrsquoapplication et
lrsquoapproche adopteacutee agrave cet effet
III1 Seacutelection drsquoun plugin
Initialement la technologie J2MEJava Mobile [3] avait eacuteteacute retenue pour le
deacuteveloppement de lrsquoapplication mobile Kononi car comme la majoriteacute des
teacuteleacutephones au Mali sont conccedilus suivant cette technologie Cependant J2ME
preacutesente des limites fonctionnelles pour les deacuteveloppeurs telles que
lrsquoincompatibiliteacute du fichier JAR (fichier drsquoinstallation) avec certains teacuteleacutephones de
la mecircme plateforme lrsquoimpossibiliteacute de marquer fin de deacutebogage En outre cette
technologie est relativement ancienne et tend agrave disparaicirctre
Une recherche de solutions alternatives nous a conduits au pluginlaquo Codename
One raquo [8] compatible avec Eclipse et NetBeans Il permet de deacutevelopper en Java
avec un seul et mecircme code des applications multiplateformes
Lrsquoobjectif de Codename One est de proposer une interface de deacuteveloppement
commune codeacutee en Java et capable de fonctionner sur iOS Androiumld BlackBerry
OS Windows Phone 7 et J2ME (pour les teacuteleacutephones simples) Ainsi il offre la
possibiliteacute de deacutevelopper rapidement et facilement des applications
multiplateformes
Codename One est structureacute plus ou moins de la mecircme faccedilon que lrsquoenvironnement
Java mais il utilise une approche SaaS (Software as a Service) Il est composeacute
comme suit
minus Une interface de programmation (API) ougrave on retrouve toutes les
bibliothegraveques Java et Codename One que lrsquoon peut utiliser
minus Une interface de design (GUI) permettant de creacuteer des thegravemes et des
fenecirctres pour les applications
minus Lrsquointerface de deacuteveloppement proposant un simulateur avec la possibiliteacute de
visionner lrsquoaspect de lrsquoapplication sur les diffeacuterents systegravemes drsquoexploitation
12
gracircce agrave des skins (simulateurs des plateformes) et de tester le
fonctionnement de lrsquoapplication sur lrsquoIDE
minus La construction des applications (Build) ne se fait pas sur lrsquoIDE mais dans le
Cloud sur des serveurs Codename One il faut ensuite aller reacutecupeacuterer le
reacutesultat de la construction sur son compte Codename One
III2 Environnement de deacuteveloppement
Lrsquoenvironnement de travail est composeacute de NetBeans du plugin Codename One et
de Git hub Apregraves lrsquoinstallation de NetBeans 8 le plugin Codename One a eacuteteacute
installeacute dans NetBeans puis le programme Git
Pour commencer lrsquoIDE NetBeans est lanceacute Dans lrsquoonglet laquo Tools raquo une sous
rubrique laquo plugins raquo existe et permet drsquoajouter le plugin laquo Codename One raquo
Figure 5 Option plugin
Le plug-in est reacutecupeacutereacute et ajouteacute agrave lrsquoenvironnement de deacuteveloppement
13
Figure 6 Ajout du plugin
Une fenecirctre srsquoouvre dans laquelle le plug-in est choisi en lrsquooccurrence laquo Codename
One raquo Lrsquourl pour reacutecupeacuterer le plug-in est indiqueacutee [4]
Figure 7 Saisie de lrsquoURL du plugin
14
Figure 8 Seacutelection du plugin
Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo
Figure 9 Installation
15
Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective
Figure 10 Installation (suite)
La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez
lrsquoinstallation
Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet
de relancer NetBeans
16
Figure 11 Installation (fin)
III3 Etapes de Deacuteveloppement
La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication
depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave
lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone
17
Figure 12 Phases de deacuteveloppement
Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un
compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel
pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur
fait des modifications sur le projet localement Lorsque des modifications sont
faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre
faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)
ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le
serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur
vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du
serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est
appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des
modifications des reacutepertoires personnels vers le reacutepertoire central
18
Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont
compileacutes
Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier
exeacutecutable
Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de
lrsquoapplication
1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de
fichier exeacutecutable
2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier
JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)
3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication
Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes
est deacutetailleacutee
III4 Mise en œuvre des fonctionnaliteacutes
III41 Creacuteation de compte et authentification
Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est
composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription
19
Figure 13 Diagramme de seacutequences de lrsquoinscription
Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave
lrsquoutilisateur de saisir son nom et numeacutero
20
Figure 14 formulaire drsquoinscription
Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de
teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une
requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour
arguments deux variables contenant respectivement le nom et le numeacutero de
teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au
format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de
donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie
automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le
numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une
diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste
21
dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui
signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche
Lrsquoutilisateur est donc inscrit agrave Kononi
III42 Envoie de messages publics et groupeacutes
Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute
a Message public
Un message public est un message que chaque utilisateur peut envoyer sur Kononi
sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous
les abonneacutes au compte de lrsquoutilisateur
Figure 15 Diagramme de seacutequences drsquoenvoi de message public
En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle
interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte
permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave
lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler
lrsquoopeacuteration
22
Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le
bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans
deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au
serveur
Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
dialogue contenant le code et le message drsquoerreur srsquoaffiche
b Message groupeacute
Un message de groupe est un message qursquoun utilisateur de Kononi envoie en
seacutelectionnant un groupe de contacts
Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe
Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle
interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte
et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps
du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton
laquo annuler raquo
23
Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton
laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton
laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave
envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees
comme paramegravetres de la requecircte envoyeacutee au serveur
Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
message drsquoerreur srsquoaffiche
Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page
principale
III43 Affichage de lrsquohistorique des messages
Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de
Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur
avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON
(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur
Figure 17 Exemple de reacuteponse du serveur
24
Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer
(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements
suivants
bull Un label pour lrsquoimage
bull Un label pour le nom qui a envoyeacute le message
bull Un textArea pour le message
bull Un label pour la date
III44 Invitation agrave lrsquoabonnement aux messages publics
Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande
laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page
laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous
les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a
eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour
effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le
code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes
dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux
variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave
travers une exception
- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur
- Sinon la page principale est afficheacutee
La section suivante preacutesente les outils et technologies utiliseacutes pour
lrsquoimpleacutementation de lrsquoapplication
25
IV Outils et technologies utiliseacutes
Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies
suivants ont eacuteteacute utiliseacutes
IV1 NetBeans [5]
NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun
sous la licence CDDL (Common Development and Distribution License) et GPL
(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents
autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML
NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement
JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut
ecirctre senrichi par des plugins
Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute
drsquoutiliser Codename One Drsquoougrave le choix de cette IDE
IV2 Langage java [6]
Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute
par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa
principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves
facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents
Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux
IV3 Git hub [7]
Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le
programme Git Git Hub propose des comptes gratuits pour les projets de logiciels
libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute
par Linus Torvalds
Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi
servi agrave sauvegarder toutes les versions de lrsquoapplication
26
IV4 Trello [8]
Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est
baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les
cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre
Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version
de base est gratuite
Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs
lrsquoeacutetat davancement du projet
IV5 Codename one [9]
Figure 18 Logo et slogan de Codename One
Il permet de deacutevelopper en Java avec un seul et mecircme code des applications
multiplateformes Il nous a permis de creacuteer notre application
27
IV6 Protocol http [10]
Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-
serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche
application
Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local
IV7 Skype [11]
Outre les messages eacutelectroniques qui ont servi aux communications asynchrones
lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels
Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois
racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft
Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet
Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes
additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la
visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie
instantaneacutee et le partage drsquoeacutecrans
IV8 Apache Tomcat [12]
Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache
Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne
principalement sur les systegravemes drsquoexploitation UNIX et Windows
Apache Tomcat a permis de tester localement (au sein de NetBeans) le
comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur
Kononi
IV9 JSON [13]
Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de
donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre
repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir
repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de
programmation Il est notamment utiliseacute comme le langage de transport de
donneacutees par les services Web
JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
12
gracircce agrave des skins (simulateurs des plateformes) et de tester le
fonctionnement de lrsquoapplication sur lrsquoIDE
minus La construction des applications (Build) ne se fait pas sur lrsquoIDE mais dans le
Cloud sur des serveurs Codename One il faut ensuite aller reacutecupeacuterer le
reacutesultat de la construction sur son compte Codename One
III2 Environnement de deacuteveloppement
Lrsquoenvironnement de travail est composeacute de NetBeans du plugin Codename One et
de Git hub Apregraves lrsquoinstallation de NetBeans 8 le plugin Codename One a eacuteteacute
installeacute dans NetBeans puis le programme Git
Pour commencer lrsquoIDE NetBeans est lanceacute Dans lrsquoonglet laquo Tools raquo une sous
rubrique laquo plugins raquo existe et permet drsquoajouter le plugin laquo Codename One raquo
Figure 5 Option plugin
Le plug-in est reacutecupeacutereacute et ajouteacute agrave lrsquoenvironnement de deacuteveloppement
13
Figure 6 Ajout du plugin
Une fenecirctre srsquoouvre dans laquelle le plug-in est choisi en lrsquooccurrence laquo Codename
One raquo Lrsquourl pour reacutecupeacuterer le plug-in est indiqueacutee [4]
Figure 7 Saisie de lrsquoURL du plugin
14
Figure 8 Seacutelection du plugin
Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo
Figure 9 Installation
15
Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective
Figure 10 Installation (suite)
La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez
lrsquoinstallation
Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet
de relancer NetBeans
16
Figure 11 Installation (fin)
III3 Etapes de Deacuteveloppement
La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication
depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave
lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone
17
Figure 12 Phases de deacuteveloppement
Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un
compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel
pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur
fait des modifications sur le projet localement Lorsque des modifications sont
faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre
faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)
ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le
serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur
vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du
serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est
appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des
modifications des reacutepertoires personnels vers le reacutepertoire central
18
Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont
compileacutes
Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier
exeacutecutable
Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de
lrsquoapplication
1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de
fichier exeacutecutable
2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier
JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)
3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication
Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes
est deacutetailleacutee
III4 Mise en œuvre des fonctionnaliteacutes
III41 Creacuteation de compte et authentification
Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est
composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription
19
Figure 13 Diagramme de seacutequences de lrsquoinscription
Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave
lrsquoutilisateur de saisir son nom et numeacutero
20
Figure 14 formulaire drsquoinscription
Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de
teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une
requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour
arguments deux variables contenant respectivement le nom et le numeacutero de
teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au
format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de
donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie
automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le
numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une
diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste
21
dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui
signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche
Lrsquoutilisateur est donc inscrit agrave Kononi
III42 Envoie de messages publics et groupeacutes
Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute
a Message public
Un message public est un message que chaque utilisateur peut envoyer sur Kononi
sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous
les abonneacutes au compte de lrsquoutilisateur
Figure 15 Diagramme de seacutequences drsquoenvoi de message public
En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle
interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte
permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave
lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler
lrsquoopeacuteration
22
Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le
bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans
deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au
serveur
Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
dialogue contenant le code et le message drsquoerreur srsquoaffiche
b Message groupeacute
Un message de groupe est un message qursquoun utilisateur de Kononi envoie en
seacutelectionnant un groupe de contacts
Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe
Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle
interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte
et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps
du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton
laquo annuler raquo
23
Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton
laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton
laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave
envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees
comme paramegravetres de la requecircte envoyeacutee au serveur
Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
message drsquoerreur srsquoaffiche
Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page
principale
III43 Affichage de lrsquohistorique des messages
Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de
Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur
avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON
(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur
Figure 17 Exemple de reacuteponse du serveur
24
Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer
(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements
suivants
bull Un label pour lrsquoimage
bull Un label pour le nom qui a envoyeacute le message
bull Un textArea pour le message
bull Un label pour la date
III44 Invitation agrave lrsquoabonnement aux messages publics
Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande
laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page
laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous
les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a
eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour
effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le
code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes
dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux
variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave
travers une exception
- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur
- Sinon la page principale est afficheacutee
La section suivante preacutesente les outils et technologies utiliseacutes pour
lrsquoimpleacutementation de lrsquoapplication
25
IV Outils et technologies utiliseacutes
Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies
suivants ont eacuteteacute utiliseacutes
IV1 NetBeans [5]
NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun
sous la licence CDDL (Common Development and Distribution License) et GPL
(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents
autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML
NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement
JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut
ecirctre senrichi par des plugins
Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute
drsquoutiliser Codename One Drsquoougrave le choix de cette IDE
IV2 Langage java [6]
Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute
par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa
principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves
facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents
Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux
IV3 Git hub [7]
Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le
programme Git Git Hub propose des comptes gratuits pour les projets de logiciels
libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute
par Linus Torvalds
Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi
servi agrave sauvegarder toutes les versions de lrsquoapplication
26
IV4 Trello [8]
Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est
baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les
cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre
Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version
de base est gratuite
Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs
lrsquoeacutetat davancement du projet
IV5 Codename one [9]
Figure 18 Logo et slogan de Codename One
Il permet de deacutevelopper en Java avec un seul et mecircme code des applications
multiplateformes Il nous a permis de creacuteer notre application
27
IV6 Protocol http [10]
Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-
serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche
application
Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local
IV7 Skype [11]
Outre les messages eacutelectroniques qui ont servi aux communications asynchrones
lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels
Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois
racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft
Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet
Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes
additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la
visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie
instantaneacutee et le partage drsquoeacutecrans
IV8 Apache Tomcat [12]
Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache
Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne
principalement sur les systegravemes drsquoexploitation UNIX et Windows
Apache Tomcat a permis de tester localement (au sein de NetBeans) le
comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur
Kononi
IV9 JSON [13]
Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de
donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre
repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir
repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de
programmation Il est notamment utiliseacute comme le langage de transport de
donneacutees par les services Web
JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
13
Figure 6 Ajout du plugin
Une fenecirctre srsquoouvre dans laquelle le plug-in est choisi en lrsquooccurrence laquo Codename
One raquo Lrsquourl pour reacutecupeacuterer le plug-in est indiqueacutee [4]
Figure 7 Saisie de lrsquoURL du plugin
14
Figure 8 Seacutelection du plugin
Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo
Figure 9 Installation
15
Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective
Figure 10 Installation (suite)
La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez
lrsquoinstallation
Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet
de relancer NetBeans
16
Figure 11 Installation (fin)
III3 Etapes de Deacuteveloppement
La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication
depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave
lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone
17
Figure 12 Phases de deacuteveloppement
Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un
compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel
pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur
fait des modifications sur le projet localement Lorsque des modifications sont
faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre
faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)
ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le
serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur
vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du
serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est
appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des
modifications des reacutepertoires personnels vers le reacutepertoire central
18
Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont
compileacutes
Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier
exeacutecutable
Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de
lrsquoapplication
1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de
fichier exeacutecutable
2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier
JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)
3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication
Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes
est deacutetailleacutee
III4 Mise en œuvre des fonctionnaliteacutes
III41 Creacuteation de compte et authentification
Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est
composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription
19
Figure 13 Diagramme de seacutequences de lrsquoinscription
Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave
lrsquoutilisateur de saisir son nom et numeacutero
20
Figure 14 formulaire drsquoinscription
Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de
teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une
requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour
arguments deux variables contenant respectivement le nom et le numeacutero de
teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au
format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de
donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie
automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le
numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une
diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste
21
dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui
signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche
Lrsquoutilisateur est donc inscrit agrave Kononi
III42 Envoie de messages publics et groupeacutes
Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute
a Message public
Un message public est un message que chaque utilisateur peut envoyer sur Kononi
sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous
les abonneacutes au compte de lrsquoutilisateur
Figure 15 Diagramme de seacutequences drsquoenvoi de message public
En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle
interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte
permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave
lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler
lrsquoopeacuteration
22
Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le
bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans
deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au
serveur
Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
dialogue contenant le code et le message drsquoerreur srsquoaffiche
b Message groupeacute
Un message de groupe est un message qursquoun utilisateur de Kononi envoie en
seacutelectionnant un groupe de contacts
Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe
Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle
interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte
et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps
du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton
laquo annuler raquo
23
Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton
laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton
laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave
envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees
comme paramegravetres de la requecircte envoyeacutee au serveur
Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
message drsquoerreur srsquoaffiche
Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page
principale
III43 Affichage de lrsquohistorique des messages
Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de
Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur
avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON
(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur
Figure 17 Exemple de reacuteponse du serveur
24
Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer
(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements
suivants
bull Un label pour lrsquoimage
bull Un label pour le nom qui a envoyeacute le message
bull Un textArea pour le message
bull Un label pour la date
III44 Invitation agrave lrsquoabonnement aux messages publics
Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande
laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page
laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous
les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a
eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour
effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le
code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes
dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux
variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave
travers une exception
- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur
- Sinon la page principale est afficheacutee
La section suivante preacutesente les outils et technologies utiliseacutes pour
lrsquoimpleacutementation de lrsquoapplication
25
IV Outils et technologies utiliseacutes
Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies
suivants ont eacuteteacute utiliseacutes
IV1 NetBeans [5]
NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun
sous la licence CDDL (Common Development and Distribution License) et GPL
(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents
autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML
NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement
JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut
ecirctre senrichi par des plugins
Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute
drsquoutiliser Codename One Drsquoougrave le choix de cette IDE
IV2 Langage java [6]
Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute
par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa
principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves
facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents
Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux
IV3 Git hub [7]
Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le
programme Git Git Hub propose des comptes gratuits pour les projets de logiciels
libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute
par Linus Torvalds
Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi
servi agrave sauvegarder toutes les versions de lrsquoapplication
26
IV4 Trello [8]
Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est
baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les
cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre
Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version
de base est gratuite
Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs
lrsquoeacutetat davancement du projet
IV5 Codename one [9]
Figure 18 Logo et slogan de Codename One
Il permet de deacutevelopper en Java avec un seul et mecircme code des applications
multiplateformes Il nous a permis de creacuteer notre application
27
IV6 Protocol http [10]
Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-
serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche
application
Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local
IV7 Skype [11]
Outre les messages eacutelectroniques qui ont servi aux communications asynchrones
lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels
Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois
racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft
Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet
Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes
additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la
visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie
instantaneacutee et le partage drsquoeacutecrans
IV8 Apache Tomcat [12]
Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache
Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne
principalement sur les systegravemes drsquoexploitation UNIX et Windows
Apache Tomcat a permis de tester localement (au sein de NetBeans) le
comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur
Kononi
IV9 JSON [13]
Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de
donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre
repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir
repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de
programmation Il est notamment utiliseacute comme le langage de transport de
donneacutees par les services Web
JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
14
Figure 8 Seacutelection du plugin
Lrsquoinstallation peut maintenant deacutemarrer en cliquant sur le bouton laquo install raquo
Figure 9 Installation
15
Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective
Figure 10 Installation (suite)
La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez
lrsquoinstallation
Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet
de relancer NetBeans
16
Figure 11 Installation (fin)
III3 Etapes de Deacuteveloppement
La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication
depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave
lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone
17
Figure 12 Phases de deacuteveloppement
Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un
compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel
pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur
fait des modifications sur le projet localement Lorsque des modifications sont
faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre
faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)
ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le
serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur
vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du
serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est
appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des
modifications des reacutepertoires personnels vers le reacutepertoire central
18
Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont
compileacutes
Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier
exeacutecutable
Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de
lrsquoapplication
1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de
fichier exeacutecutable
2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier
JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)
3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication
Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes
est deacutetailleacutee
III4 Mise en œuvre des fonctionnaliteacutes
III41 Creacuteation de compte et authentification
Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est
composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription
19
Figure 13 Diagramme de seacutequences de lrsquoinscription
Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave
lrsquoutilisateur de saisir son nom et numeacutero
20
Figure 14 formulaire drsquoinscription
Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de
teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une
requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour
arguments deux variables contenant respectivement le nom et le numeacutero de
teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au
format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de
donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie
automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le
numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une
diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste
21
dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui
signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche
Lrsquoutilisateur est donc inscrit agrave Kononi
III42 Envoie de messages publics et groupeacutes
Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute
a Message public
Un message public est un message que chaque utilisateur peut envoyer sur Kononi
sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous
les abonneacutes au compte de lrsquoutilisateur
Figure 15 Diagramme de seacutequences drsquoenvoi de message public
En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle
interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte
permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave
lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler
lrsquoopeacuteration
22
Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le
bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans
deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au
serveur
Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
dialogue contenant le code et le message drsquoerreur srsquoaffiche
b Message groupeacute
Un message de groupe est un message qursquoun utilisateur de Kononi envoie en
seacutelectionnant un groupe de contacts
Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe
Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle
interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte
et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps
du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton
laquo annuler raquo
23
Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton
laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton
laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave
envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees
comme paramegravetres de la requecircte envoyeacutee au serveur
Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
message drsquoerreur srsquoaffiche
Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page
principale
III43 Affichage de lrsquohistorique des messages
Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de
Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur
avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON
(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur
Figure 17 Exemple de reacuteponse du serveur
24
Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer
(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements
suivants
bull Un label pour lrsquoimage
bull Un label pour le nom qui a envoyeacute le message
bull Un textArea pour le message
bull Un label pour la date
III44 Invitation agrave lrsquoabonnement aux messages publics
Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande
laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page
laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous
les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a
eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour
effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le
code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes
dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux
variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave
travers une exception
- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur
- Sinon la page principale est afficheacutee
La section suivante preacutesente les outils et technologies utiliseacutes pour
lrsquoimpleacutementation de lrsquoapplication
25
IV Outils et technologies utiliseacutes
Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies
suivants ont eacuteteacute utiliseacutes
IV1 NetBeans [5]
NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun
sous la licence CDDL (Common Development and Distribution License) et GPL
(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents
autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML
NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement
JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut
ecirctre senrichi par des plugins
Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute
drsquoutiliser Codename One Drsquoougrave le choix de cette IDE
IV2 Langage java [6]
Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute
par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa
principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves
facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents
Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux
IV3 Git hub [7]
Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le
programme Git Git Hub propose des comptes gratuits pour les projets de logiciels
libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute
par Linus Torvalds
Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi
servi agrave sauvegarder toutes les versions de lrsquoapplication
26
IV4 Trello [8]
Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est
baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les
cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre
Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version
de base est gratuite
Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs
lrsquoeacutetat davancement du projet
IV5 Codename one [9]
Figure 18 Logo et slogan de Codename One
Il permet de deacutevelopper en Java avec un seul et mecircme code des applications
multiplateformes Il nous a permis de creacuteer notre application
27
IV6 Protocol http [10]
Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-
serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche
application
Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local
IV7 Skype [11]
Outre les messages eacutelectroniques qui ont servi aux communications asynchrones
lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels
Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois
racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft
Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet
Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes
additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la
visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie
instantaneacutee et le partage drsquoeacutecrans
IV8 Apache Tomcat [12]
Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache
Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne
principalement sur les systegravemes drsquoexploitation UNIX et Windows
Apache Tomcat a permis de tester localement (au sein de NetBeans) le
comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur
Kononi
IV9 JSON [13]
Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de
donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre
repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir
repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de
programmation Il est notamment utiliseacute comme le langage de transport de
donneacutees par les services Web
JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
15
Une suite drsquoeacutetapes est neacutecessaire pour lrsquoinstallation effective
Figure 10 Installation (suite)
La fenecirctre drsquoacceptation de la licence apparait acceptez-la et continuez
lrsquoinstallation
Une fois lrsquoinstallation du plug-in termineacutee le bouton un clique sur laquo Finish raquopermet
de relancer NetBeans
16
Figure 11 Installation (fin)
III3 Etapes de Deacuteveloppement
La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication
depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave
lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone
17
Figure 12 Phases de deacuteveloppement
Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un
compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel
pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur
fait des modifications sur le projet localement Lorsque des modifications sont
faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre
faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)
ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le
serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur
vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du
serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est
appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des
modifications des reacutepertoires personnels vers le reacutepertoire central
18
Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont
compileacutes
Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier
exeacutecutable
Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de
lrsquoapplication
1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de
fichier exeacutecutable
2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier
JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)
3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication
Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes
est deacutetailleacutee
III4 Mise en œuvre des fonctionnaliteacutes
III41 Creacuteation de compte et authentification
Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est
composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription
19
Figure 13 Diagramme de seacutequences de lrsquoinscription
Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave
lrsquoutilisateur de saisir son nom et numeacutero
20
Figure 14 formulaire drsquoinscription
Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de
teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une
requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour
arguments deux variables contenant respectivement le nom et le numeacutero de
teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au
format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de
donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie
automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le
numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une
diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste
21
dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui
signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche
Lrsquoutilisateur est donc inscrit agrave Kononi
III42 Envoie de messages publics et groupeacutes
Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute
a Message public
Un message public est un message que chaque utilisateur peut envoyer sur Kononi
sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous
les abonneacutes au compte de lrsquoutilisateur
Figure 15 Diagramme de seacutequences drsquoenvoi de message public
En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle
interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte
permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave
lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler
lrsquoopeacuteration
22
Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le
bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans
deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au
serveur
Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
dialogue contenant le code et le message drsquoerreur srsquoaffiche
b Message groupeacute
Un message de groupe est un message qursquoun utilisateur de Kononi envoie en
seacutelectionnant un groupe de contacts
Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe
Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle
interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte
et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps
du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton
laquo annuler raquo
23
Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton
laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton
laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave
envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees
comme paramegravetres de la requecircte envoyeacutee au serveur
Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
message drsquoerreur srsquoaffiche
Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page
principale
III43 Affichage de lrsquohistorique des messages
Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de
Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur
avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON
(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur
Figure 17 Exemple de reacuteponse du serveur
24
Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer
(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements
suivants
bull Un label pour lrsquoimage
bull Un label pour le nom qui a envoyeacute le message
bull Un textArea pour le message
bull Un label pour la date
III44 Invitation agrave lrsquoabonnement aux messages publics
Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande
laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page
laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous
les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a
eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour
effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le
code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes
dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux
variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave
travers une exception
- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur
- Sinon la page principale est afficheacutee
La section suivante preacutesente les outils et technologies utiliseacutes pour
lrsquoimpleacutementation de lrsquoapplication
25
IV Outils et technologies utiliseacutes
Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies
suivants ont eacuteteacute utiliseacutes
IV1 NetBeans [5]
NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun
sous la licence CDDL (Common Development and Distribution License) et GPL
(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents
autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML
NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement
JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut
ecirctre senrichi par des plugins
Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute
drsquoutiliser Codename One Drsquoougrave le choix de cette IDE
IV2 Langage java [6]
Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute
par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa
principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves
facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents
Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux
IV3 Git hub [7]
Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le
programme Git Git Hub propose des comptes gratuits pour les projets de logiciels
libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute
par Linus Torvalds
Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi
servi agrave sauvegarder toutes les versions de lrsquoapplication
26
IV4 Trello [8]
Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est
baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les
cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre
Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version
de base est gratuite
Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs
lrsquoeacutetat davancement du projet
IV5 Codename one [9]
Figure 18 Logo et slogan de Codename One
Il permet de deacutevelopper en Java avec un seul et mecircme code des applications
multiplateformes Il nous a permis de creacuteer notre application
27
IV6 Protocol http [10]
Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-
serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche
application
Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local
IV7 Skype [11]
Outre les messages eacutelectroniques qui ont servi aux communications asynchrones
lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels
Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois
racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft
Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet
Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes
additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la
visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie
instantaneacutee et le partage drsquoeacutecrans
IV8 Apache Tomcat [12]
Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache
Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne
principalement sur les systegravemes drsquoexploitation UNIX et Windows
Apache Tomcat a permis de tester localement (au sein de NetBeans) le
comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur
Kononi
IV9 JSON [13]
Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de
donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre
repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir
repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de
programmation Il est notamment utiliseacute comme le langage de transport de
donneacutees par les services Web
JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
16
Figure 11 Installation (fin)
III3 Etapes de Deacuteveloppement
La figure 12 repreacutesente les eacutetapes conseacutecutives de construction de lrsquoapplication
depuis la saisie du code source dans lrsquoenvironnement de deacuteveloppement jusqursquoagrave
lrsquoinstallation de lrsquoapplication sur le teacuteleacutephone
17
Figure 12 Phases de deacuteveloppement
Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un
compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel
pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur
fait des modifications sur le projet localement Lorsque des modifications sont
faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre
faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)
ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le
serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur
vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du
serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est
appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des
modifications des reacutepertoires personnels vers le reacutepertoire central
18
Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont
compileacutes
Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier
exeacutecutable
Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de
lrsquoapplication
1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de
fichier exeacutecutable
2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier
JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)
3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication
Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes
est deacutetailleacutee
III4 Mise en œuvre des fonctionnaliteacutes
III41 Creacuteation de compte et authentification
Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est
composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription
19
Figure 13 Diagramme de seacutequences de lrsquoinscription
Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave
lrsquoutilisateur de saisir son nom et numeacutero
20
Figure 14 formulaire drsquoinscription
Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de
teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une
requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour
arguments deux variables contenant respectivement le nom et le numeacutero de
teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au
format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de
donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie
automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le
numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une
diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste
21
dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui
signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche
Lrsquoutilisateur est donc inscrit agrave Kononi
III42 Envoie de messages publics et groupeacutes
Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute
a Message public
Un message public est un message que chaque utilisateur peut envoyer sur Kononi
sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous
les abonneacutes au compte de lrsquoutilisateur
Figure 15 Diagramme de seacutequences drsquoenvoi de message public
En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle
interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte
permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave
lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler
lrsquoopeacuteration
22
Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le
bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans
deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au
serveur
Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
dialogue contenant le code et le message drsquoerreur srsquoaffiche
b Message groupeacute
Un message de groupe est un message qursquoun utilisateur de Kononi envoie en
seacutelectionnant un groupe de contacts
Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe
Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle
interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte
et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps
du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton
laquo annuler raquo
23
Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton
laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton
laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave
envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees
comme paramegravetres de la requecircte envoyeacutee au serveur
Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
message drsquoerreur srsquoaffiche
Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page
principale
III43 Affichage de lrsquohistorique des messages
Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de
Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur
avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON
(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur
Figure 17 Exemple de reacuteponse du serveur
24
Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer
(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements
suivants
bull Un label pour lrsquoimage
bull Un label pour le nom qui a envoyeacute le message
bull Un textArea pour le message
bull Un label pour la date
III44 Invitation agrave lrsquoabonnement aux messages publics
Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande
laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page
laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous
les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a
eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour
effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le
code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes
dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux
variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave
travers une exception
- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur
- Sinon la page principale est afficheacutee
La section suivante preacutesente les outils et technologies utiliseacutes pour
lrsquoimpleacutementation de lrsquoapplication
25
IV Outils et technologies utiliseacutes
Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies
suivants ont eacuteteacute utiliseacutes
IV1 NetBeans [5]
NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun
sous la licence CDDL (Common Development and Distribution License) et GPL
(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents
autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML
NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement
JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut
ecirctre senrichi par des plugins
Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute
drsquoutiliser Codename One Drsquoougrave le choix de cette IDE
IV2 Langage java [6]
Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute
par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa
principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves
facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents
Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux
IV3 Git hub [7]
Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le
programme Git Git Hub propose des comptes gratuits pour les projets de logiciels
libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute
par Linus Torvalds
Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi
servi agrave sauvegarder toutes les versions de lrsquoapplication
26
IV4 Trello [8]
Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est
baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les
cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre
Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version
de base est gratuite
Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs
lrsquoeacutetat davancement du projet
IV5 Codename one [9]
Figure 18 Logo et slogan de Codename One
Il permet de deacutevelopper en Java avec un seul et mecircme code des applications
multiplateformes Il nous a permis de creacuteer notre application
27
IV6 Protocol http [10]
Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-
serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche
application
Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local
IV7 Skype [11]
Outre les messages eacutelectroniques qui ont servi aux communications asynchrones
lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels
Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois
racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft
Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet
Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes
additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la
visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie
instantaneacutee et le partage drsquoeacutecrans
IV8 Apache Tomcat [12]
Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache
Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne
principalement sur les systegravemes drsquoexploitation UNIX et Windows
Apache Tomcat a permis de tester localement (au sein de NetBeans) le
comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur
Kononi
IV9 JSON [13]
Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de
donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre
repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir
repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de
programmation Il est notamment utiliseacute comme le langage de transport de
donneacutees par les services Web
JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
17
Figure 12 Phases de deacuteveloppement
Adeg) Environnement de deacuteveloppement constitueacute de NetBeans Codename One un
compte local de Git et un compte Git Hub ougrave se trouve un reacutepertoire personnel
pour chaque deacuteveloppeur et le reacutepertoire central du projet Chaque deacuteveloppeur
fait des modifications sur le projet localement Lorsque des modifications sont
faites sur le code drsquoun deacuteveloppeur une action de validation (commit) doit ecirctre
faite sur le reacutepertoire local Git Chaque deacuteveloppeur peut ensuite envoyer (push)
ses modifications depuis son reacutepertoire local vers son reacutepertoire personnel sur le
serveur Git Hub ou rapatrier (git pull) du code reacutepertoire personnel sur le serveur
vers son reacutepertoire local Pour envoyer du code depuis le reacutepertoire central du
serveur Git Hub vers le reacutepertoire local du deacuteveloppeur lrsquoaction (git pull master) est
appliqueacutee Seul le coordinateur du projet a le droit de faire la fusion des
modifications des reacutepertoires personnels vers le reacutepertoire central
18
Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont
compileacutes
Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier
exeacutecutable
Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de
lrsquoapplication
1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de
fichier exeacutecutable
2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier
JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)
3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication
Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes
est deacutetailleacutee
III4 Mise en œuvre des fonctionnaliteacutes
III41 Creacuteation de compte et authentification
Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est
composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription
19
Figure 13 Diagramme de seacutequences de lrsquoinscription
Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave
lrsquoutilisateur de saisir son nom et numeacutero
20
Figure 14 formulaire drsquoinscription
Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de
teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une
requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour
arguments deux variables contenant respectivement le nom et le numeacutero de
teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au
format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de
donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie
automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le
numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une
diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste
21
dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui
signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche
Lrsquoutilisateur est donc inscrit agrave Kononi
III42 Envoie de messages publics et groupeacutes
Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute
a Message public
Un message public est un message que chaque utilisateur peut envoyer sur Kononi
sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous
les abonneacutes au compte de lrsquoutilisateur
Figure 15 Diagramme de seacutequences drsquoenvoi de message public
En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle
interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte
permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave
lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler
lrsquoopeacuteration
22
Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le
bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans
deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au
serveur
Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
dialogue contenant le code et le message drsquoerreur srsquoaffiche
b Message groupeacute
Un message de groupe est un message qursquoun utilisateur de Kononi envoie en
seacutelectionnant un groupe de contacts
Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe
Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle
interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte
et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps
du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton
laquo annuler raquo
23
Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton
laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton
laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave
envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees
comme paramegravetres de la requecircte envoyeacutee au serveur
Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
message drsquoerreur srsquoaffiche
Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page
principale
III43 Affichage de lrsquohistorique des messages
Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de
Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur
avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON
(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur
Figure 17 Exemple de reacuteponse du serveur
24
Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer
(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements
suivants
bull Un label pour lrsquoimage
bull Un label pour le nom qui a envoyeacute le message
bull Un textArea pour le message
bull Un label pour la date
III44 Invitation agrave lrsquoabonnement aux messages publics
Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande
laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page
laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous
les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a
eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour
effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le
code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes
dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux
variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave
travers une exception
- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur
- Sinon la page principale est afficheacutee
La section suivante preacutesente les outils et technologies utiliseacutes pour
lrsquoimpleacutementation de lrsquoapplication
25
IV Outils et technologies utiliseacutes
Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies
suivants ont eacuteteacute utiliseacutes
IV1 NetBeans [5]
NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun
sous la licence CDDL (Common Development and Distribution License) et GPL
(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents
autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML
NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement
JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut
ecirctre senrichi par des plugins
Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute
drsquoutiliser Codename One Drsquoougrave le choix de cette IDE
IV2 Langage java [6]
Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute
par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa
principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves
facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents
Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux
IV3 Git hub [7]
Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le
programme Git Git Hub propose des comptes gratuits pour les projets de logiciels
libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute
par Linus Torvalds
Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi
servi agrave sauvegarder toutes les versions de lrsquoapplication
26
IV4 Trello [8]
Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est
baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les
cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre
Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version
de base est gratuite
Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs
lrsquoeacutetat davancement du projet
IV5 Codename one [9]
Figure 18 Logo et slogan de Codename One
Il permet de deacutevelopper en Java avec un seul et mecircme code des applications
multiplateformes Il nous a permis de creacuteer notre application
27
IV6 Protocol http [10]
Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-
serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche
application
Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local
IV7 Skype [11]
Outre les messages eacutelectroniques qui ont servi aux communications asynchrones
lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels
Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois
racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft
Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet
Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes
additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la
visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie
instantaneacutee et le partage drsquoeacutecrans
IV8 Apache Tomcat [12]
Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache
Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne
principalement sur les systegravemes drsquoexploitation UNIX et Windows
Apache Tomcat a permis de tester localement (au sein de NetBeans) le
comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur
Kononi
IV9 JSON [13]
Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de
donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre
repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir
repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de
programmation Il est notamment utiliseacute comme le langage de transport de
donneacutees par les services Web
JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
18
Bdeg) Builder Server est le serveur de Codename One ougrave les codes sources sont
compileacutes
Cdeg) Compte deacuteveloppeur sert drsquoemplacement de reacutecupeacuteration du fichier
exeacutecutable
Ddeg) Teacuteleacutephone crsquoest le terminal qui exploite (exeacutecute) les programmes de
lrsquoapplication
1deg) Le passage de A agrave B se fait par lrsquoenvoi de code source pour construction de
fichier exeacutecutable
2deg) Le passage de B agrave C se fait par lrsquoenvoi drsquoun lien de teacuteleacutechargement de fichier
JAR APK hellip (Selon la plateforme indiqueacutee) agrave lrsquoadresse du client (deacuteveloppeur)
3deg) Le passage de C agrave D consiste en la reacutecupeacuteration et lrsquoinstallation de lrsquoapplication
Dans les sous-sections suivantes la mise en œuvre des diffeacuterentes fonctionnaliteacutes
est deacutetailleacutee
III4 Mise en œuvre des fonctionnaliteacutes
III41 Creacuteation de compte et authentification
Lrsquoutilisation de Kononi neacutecessite drsquoavoir un compte Un compte Kononi est
composeacute drsquoun nom drsquoutilisateur et drsquoun numeacutero de teacuteleacutephone pour lrsquoinscription
19
Figure 13 Diagramme de seacutequences de lrsquoinscription
Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave
lrsquoutilisateur de saisir son nom et numeacutero
20
Figure 14 formulaire drsquoinscription
Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de
teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une
requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour
arguments deux variables contenant respectivement le nom et le numeacutero de
teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au
format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de
donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie
automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le
numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une
diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste
21
dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui
signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche
Lrsquoutilisateur est donc inscrit agrave Kononi
III42 Envoie de messages publics et groupeacutes
Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute
a Message public
Un message public est un message que chaque utilisateur peut envoyer sur Kononi
sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous
les abonneacutes au compte de lrsquoutilisateur
Figure 15 Diagramme de seacutequences drsquoenvoi de message public
En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle
interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte
permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave
lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler
lrsquoopeacuteration
22
Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le
bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans
deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au
serveur
Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
dialogue contenant le code et le message drsquoerreur srsquoaffiche
b Message groupeacute
Un message de groupe est un message qursquoun utilisateur de Kononi envoie en
seacutelectionnant un groupe de contacts
Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe
Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle
interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte
et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps
du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton
laquo annuler raquo
23
Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton
laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton
laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave
envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees
comme paramegravetres de la requecircte envoyeacutee au serveur
Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
message drsquoerreur srsquoaffiche
Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page
principale
III43 Affichage de lrsquohistorique des messages
Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de
Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur
avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON
(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur
Figure 17 Exemple de reacuteponse du serveur
24
Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer
(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements
suivants
bull Un label pour lrsquoimage
bull Un label pour le nom qui a envoyeacute le message
bull Un textArea pour le message
bull Un label pour la date
III44 Invitation agrave lrsquoabonnement aux messages publics
Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande
laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page
laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous
les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a
eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour
effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le
code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes
dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux
variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave
travers une exception
- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur
- Sinon la page principale est afficheacutee
La section suivante preacutesente les outils et technologies utiliseacutes pour
lrsquoimpleacutementation de lrsquoapplication
25
IV Outils et technologies utiliseacutes
Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies
suivants ont eacuteteacute utiliseacutes
IV1 NetBeans [5]
NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun
sous la licence CDDL (Common Development and Distribution License) et GPL
(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents
autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML
NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement
JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut
ecirctre senrichi par des plugins
Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute
drsquoutiliser Codename One Drsquoougrave le choix de cette IDE
IV2 Langage java [6]
Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute
par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa
principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves
facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents
Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux
IV3 Git hub [7]
Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le
programme Git Git Hub propose des comptes gratuits pour les projets de logiciels
libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute
par Linus Torvalds
Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi
servi agrave sauvegarder toutes les versions de lrsquoapplication
26
IV4 Trello [8]
Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est
baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les
cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre
Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version
de base est gratuite
Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs
lrsquoeacutetat davancement du projet
IV5 Codename one [9]
Figure 18 Logo et slogan de Codename One
Il permet de deacutevelopper en Java avec un seul et mecircme code des applications
multiplateformes Il nous a permis de creacuteer notre application
27
IV6 Protocol http [10]
Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-
serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche
application
Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local
IV7 Skype [11]
Outre les messages eacutelectroniques qui ont servi aux communications asynchrones
lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels
Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois
racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft
Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet
Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes
additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la
visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie
instantaneacutee et le partage drsquoeacutecrans
IV8 Apache Tomcat [12]
Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache
Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne
principalement sur les systegravemes drsquoexploitation UNIX et Windows
Apache Tomcat a permis de tester localement (au sein de NetBeans) le
comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur
Kononi
IV9 JSON [13]
Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de
donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre
repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir
repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de
programmation Il est notamment utiliseacute comme le langage de transport de
donneacutees par les services Web
JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
19
Figure 13 Diagramme de seacutequences de lrsquoinscription
Pour cela un formulaire est creacuteeacute (voir Figure 14 agrave la page 20) permettant agrave
lrsquoutilisateur de saisir son nom et numeacutero
20
Figure 14 formulaire drsquoinscription
Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de
teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une
requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour
arguments deux variables contenant respectivement le nom et le numeacutero de
teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au
format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de
donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie
automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le
numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une
diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste
21
dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui
signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche
Lrsquoutilisateur est donc inscrit agrave Kononi
III42 Envoie de messages publics et groupeacutes
Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute
a Message public
Un message public est un message que chaque utilisateur peut envoyer sur Kononi
sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous
les abonneacutes au compte de lrsquoutilisateur
Figure 15 Diagramme de seacutequences drsquoenvoi de message public
En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle
interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte
permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave
lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler
lrsquoopeacuteration
22
Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le
bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans
deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au
serveur
Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
dialogue contenant le code et le message drsquoerreur srsquoaffiche
b Message groupeacute
Un message de groupe est un message qursquoun utilisateur de Kononi envoie en
seacutelectionnant un groupe de contacts
Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe
Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle
interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte
et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps
du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton
laquo annuler raquo
23
Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton
laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton
laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave
envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees
comme paramegravetres de la requecircte envoyeacutee au serveur
Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
message drsquoerreur srsquoaffiche
Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page
principale
III43 Affichage de lrsquohistorique des messages
Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de
Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur
avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON
(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur
Figure 17 Exemple de reacuteponse du serveur
24
Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer
(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements
suivants
bull Un label pour lrsquoimage
bull Un label pour le nom qui a envoyeacute le message
bull Un textArea pour le message
bull Un label pour la date
III44 Invitation agrave lrsquoabonnement aux messages publics
Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande
laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page
laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous
les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a
eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour
effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le
code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes
dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux
variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave
travers une exception
- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur
- Sinon la page principale est afficheacutee
La section suivante preacutesente les outils et technologies utiliseacutes pour
lrsquoimpleacutementation de lrsquoapplication
25
IV Outils et technologies utiliseacutes
Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies
suivants ont eacuteteacute utiliseacutes
IV1 NetBeans [5]
NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun
sous la licence CDDL (Common Development and Distribution License) et GPL
(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents
autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML
NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement
JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut
ecirctre senrichi par des plugins
Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute
drsquoutiliser Codename One Drsquoougrave le choix de cette IDE
IV2 Langage java [6]
Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute
par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa
principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves
facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents
Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux
IV3 Git hub [7]
Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le
programme Git Git Hub propose des comptes gratuits pour les projets de logiciels
libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute
par Linus Torvalds
Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi
servi agrave sauvegarder toutes les versions de lrsquoapplication
26
IV4 Trello [8]
Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est
baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les
cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre
Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version
de base est gratuite
Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs
lrsquoeacutetat davancement du projet
IV5 Codename one [9]
Figure 18 Logo et slogan de Codename One
Il permet de deacutevelopper en Java avec un seul et mecircme code des applications
multiplateformes Il nous a permis de creacuteer notre application
27
IV6 Protocol http [10]
Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-
serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche
application
Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local
IV7 Skype [11]
Outre les messages eacutelectroniques qui ont servi aux communications asynchrones
lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels
Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois
racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft
Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet
Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes
additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la
visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie
instantaneacutee et le partage drsquoeacutecrans
IV8 Apache Tomcat [12]
Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache
Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne
principalement sur les systegravemes drsquoexploitation UNIX et Windows
Apache Tomcat a permis de tester localement (au sein de NetBeans) le
comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur
Kononi
IV9 JSON [13]
Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de
donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre
repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir
repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de
programmation Il est notamment utiliseacute comme le langage de transport de
donneacutees par les services Web
JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
20
Figure 14 formulaire drsquoinscription
Comme illustreacute par la figure 14 lrsquoutilisateur saisit son nom et son numeacutero de
teacuteleacutephone puis clique sur le bouton laquo submit raquo dans le formulaire pour envoyer une
requecircte de demande drsquoinscription au serveur Kononi Cette requecircte a pour
arguments deux variables contenant respectivement le nom et le numeacutero de
teacuteleacutephone de lrsquoutilisateur Le serveur reacutepond par un code secret aleacuteatoire au
format JSON Le teacuteleacutephone convertit la reacuteponse en Hashtable (structure de
donneacutees qui permet une association cleacute-eacuteleacutement) puis lrsquoenregistre et lrsquoenvoie
automatiquement par SMS au numeacutero de Kononi Le serveur agrave son tour compare le
numeacutero saisi par lrsquoutilisateur au numeacutero drsquoenvoi du SMS srsquoil deacutetecte une
diffeacuterence alors il retourne un code drsquoerreur drsquoinscription ainsi lrsquoutilisateur reste
21
dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui
signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche
Lrsquoutilisateur est donc inscrit agrave Kononi
III42 Envoie de messages publics et groupeacutes
Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute
a Message public
Un message public est un message que chaque utilisateur peut envoyer sur Kononi
sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous
les abonneacutes au compte de lrsquoutilisateur
Figure 15 Diagramme de seacutequences drsquoenvoi de message public
En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle
interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte
permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave
lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler
lrsquoopeacuteration
22
Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le
bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans
deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au
serveur
Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
dialogue contenant le code et le message drsquoerreur srsquoaffiche
b Message groupeacute
Un message de groupe est un message qursquoun utilisateur de Kononi envoie en
seacutelectionnant un groupe de contacts
Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe
Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle
interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte
et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps
du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton
laquo annuler raquo
23
Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton
laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton
laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave
envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees
comme paramegravetres de la requecircte envoyeacutee au serveur
Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
message drsquoerreur srsquoaffiche
Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page
principale
III43 Affichage de lrsquohistorique des messages
Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de
Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur
avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON
(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur
Figure 17 Exemple de reacuteponse du serveur
24
Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer
(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements
suivants
bull Un label pour lrsquoimage
bull Un label pour le nom qui a envoyeacute le message
bull Un textArea pour le message
bull Un label pour la date
III44 Invitation agrave lrsquoabonnement aux messages publics
Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande
laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page
laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous
les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a
eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour
effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le
code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes
dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux
variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave
travers une exception
- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur
- Sinon la page principale est afficheacutee
La section suivante preacutesente les outils et technologies utiliseacutes pour
lrsquoimpleacutementation de lrsquoapplication
25
IV Outils et technologies utiliseacutes
Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies
suivants ont eacuteteacute utiliseacutes
IV1 NetBeans [5]
NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun
sous la licence CDDL (Common Development and Distribution License) et GPL
(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents
autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML
NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement
JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut
ecirctre senrichi par des plugins
Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute
drsquoutiliser Codename One Drsquoougrave le choix de cette IDE
IV2 Langage java [6]
Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute
par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa
principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves
facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents
Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux
IV3 Git hub [7]
Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le
programme Git Git Hub propose des comptes gratuits pour les projets de logiciels
libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute
par Linus Torvalds
Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi
servi agrave sauvegarder toutes les versions de lrsquoapplication
26
IV4 Trello [8]
Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est
baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les
cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre
Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version
de base est gratuite
Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs
lrsquoeacutetat davancement du projet
IV5 Codename one [9]
Figure 18 Logo et slogan de Codename One
Il permet de deacutevelopper en Java avec un seul et mecircme code des applications
multiplateformes Il nous a permis de creacuteer notre application
27
IV6 Protocol http [10]
Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-
serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche
application
Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local
IV7 Skype [11]
Outre les messages eacutelectroniques qui ont servi aux communications asynchrones
lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels
Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois
racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft
Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet
Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes
additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la
visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie
instantaneacutee et le partage drsquoeacutecrans
IV8 Apache Tomcat [12]
Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache
Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne
principalement sur les systegravemes drsquoexploitation UNIX et Windows
Apache Tomcat a permis de tester localement (au sein de NetBeans) le
comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur
Kononi
IV9 JSON [13]
Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de
donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre
repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir
repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de
programmation Il est notamment utiliseacute comme le langage de transport de
donneacutees par les services Web
JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
21
dans la page laquo welcome raquo Autrement le serveur retourne un code au teacuteleacutephone lui
signifiant un succegraves drsquoinscription le code est lu et la page laquo principale raquo srsquoaffiche
Lrsquoutilisateur est donc inscrit agrave Kononi
III42 Envoie de messages publics et groupeacutes
Il yrsquoa deux maniegraveres drsquoenvoyer un message envoi public et envoi groupeacute
a Message public
Un message public est un message que chaque utilisateur peut envoyer sur Kononi
sans seacutelectionner des destinataires speacutecifiques Le message public est envoyeacute agrave tous
les abonneacutes au compte de lrsquoutilisateur
Figure 15 Diagramme de seacutequences drsquoenvoi de message public
En cliquant sur le bouton laquo public raquo de lrsquointerface principale une nouvelle
interface srsquoouvre avec un champ de texte et deux boutons Le champ de texte
permet de saisir le corps du message agrave envoyer un bouton laquo envoyer raquo sert agrave
lrsquoenvoi du message et un bouton laquo annuler raquo donne la possibiliteacute drsquoannuler
lrsquoopeacuteration
22
Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le
bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans
deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au
serveur
Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
dialogue contenant le code et le message drsquoerreur srsquoaffiche
b Message groupeacute
Un message de groupe est un message qursquoun utilisateur de Kononi envoie en
seacutelectionnant un groupe de contacts
Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe
Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle
interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte
et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps
du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton
laquo annuler raquo
23
Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton
laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton
laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave
envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees
comme paramegravetres de la requecircte envoyeacutee au serveur
Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
message drsquoerreur srsquoaffiche
Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page
principale
III43 Affichage de lrsquohistorique des messages
Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de
Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur
avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON
(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur
Figure 17 Exemple de reacuteponse du serveur
24
Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer
(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements
suivants
bull Un label pour lrsquoimage
bull Un label pour le nom qui a envoyeacute le message
bull Un textArea pour le message
bull Un label pour la date
III44 Invitation agrave lrsquoabonnement aux messages publics
Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande
laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page
laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous
les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a
eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour
effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le
code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes
dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux
variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave
travers une exception
- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur
- Sinon la page principale est afficheacutee
La section suivante preacutesente les outils et technologies utiliseacutes pour
lrsquoimpleacutementation de lrsquoapplication
25
IV Outils et technologies utiliseacutes
Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies
suivants ont eacuteteacute utiliseacutes
IV1 NetBeans [5]
NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun
sous la licence CDDL (Common Development and Distribution License) et GPL
(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents
autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML
NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement
JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut
ecirctre senrichi par des plugins
Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute
drsquoutiliser Codename One Drsquoougrave le choix de cette IDE
IV2 Langage java [6]
Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute
par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa
principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves
facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents
Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux
IV3 Git hub [7]
Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le
programme Git Git Hub propose des comptes gratuits pour les projets de logiciels
libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute
par Linus Torvalds
Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi
servi agrave sauvegarder toutes les versions de lrsquoapplication
26
IV4 Trello [8]
Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est
baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les
cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre
Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version
de base est gratuite
Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs
lrsquoeacutetat davancement du projet
IV5 Codename one [9]
Figure 18 Logo et slogan de Codename One
Il permet de deacutevelopper en Java avec un seul et mecircme code des applications
multiplateformes Il nous a permis de creacuteer notre application
27
IV6 Protocol http [10]
Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-
serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche
application
Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local
IV7 Skype [11]
Outre les messages eacutelectroniques qui ont servi aux communications asynchrones
lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels
Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois
racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft
Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet
Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes
additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la
visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie
instantaneacutee et le partage drsquoeacutecrans
IV8 Apache Tomcat [12]
Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache
Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne
principalement sur les systegravemes drsquoexploitation UNIX et Windows
Apache Tomcat a permis de tester localement (au sein de NetBeans) le
comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur
Kononi
IV9 JSON [13]
Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de
donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre
repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir
repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de
programmation Il est notamment utiliseacute comme le langage de transport de
donneacutees par les services Web
JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
22
Derriegravere lrsquointerface de chaque bouton se trouve un eacutevegravenement ou une action Le
bouton laquo envoyer raquo reacutecupegravere le message saisi et le code secret qui seront mis dans
deux variables Elles sont utiliseacutees comme paramegravetres de la requecircte envoyeacutee au
serveur
Si lrsquoenvoi du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
dialogue contenant le code et le message drsquoerreur srsquoaffiche
b Message groupeacute
Un message de groupe est un message qursquoun utilisateur de Kononi envoie en
seacutelectionnant un groupe de contacts
Figure 16 Diagramme de seacutequences drsquoenvoi de message de groupe
Lorsqursquoon clique sur le bouton laquo groupe raquo dans lrsquointerface principale une nouvelle
interface srsquoouvre agrave lrsquoutilisateur Cette interface contient deux (2) champs de texte
et trois (3) boutons un champ pour saisir les contacts un autre pour saisir le corps
du message agrave envoyer un bouton laquo ajout raquo un bouton laquo envoyer raquo et un bouton
laquo annuler raquo
23
Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton
laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton
laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave
envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees
comme paramegravetres de la requecircte envoyeacutee au serveur
Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
message drsquoerreur srsquoaffiche
Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page
principale
III43 Affichage de lrsquohistorique des messages
Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de
Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur
avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON
(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur
Figure 17 Exemple de reacuteponse du serveur
24
Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer
(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements
suivants
bull Un label pour lrsquoimage
bull Un label pour le nom qui a envoyeacute le message
bull Un textArea pour le message
bull Un label pour la date
III44 Invitation agrave lrsquoabonnement aux messages publics
Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande
laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page
laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous
les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a
eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour
effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le
code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes
dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux
variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave
travers une exception
- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur
- Sinon la page principale est afficheacutee
La section suivante preacutesente les outils et technologies utiliseacutes pour
lrsquoimpleacutementation de lrsquoapplication
25
IV Outils et technologies utiliseacutes
Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies
suivants ont eacuteteacute utiliseacutes
IV1 NetBeans [5]
NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun
sous la licence CDDL (Common Development and Distribution License) et GPL
(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents
autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML
NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement
JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut
ecirctre senrichi par des plugins
Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute
drsquoutiliser Codename One Drsquoougrave le choix de cette IDE
IV2 Langage java [6]
Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute
par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa
principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves
facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents
Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux
IV3 Git hub [7]
Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le
programme Git Git Hub propose des comptes gratuits pour les projets de logiciels
libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute
par Linus Torvalds
Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi
servi agrave sauvegarder toutes les versions de lrsquoapplication
26
IV4 Trello [8]
Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est
baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les
cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre
Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version
de base est gratuite
Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs
lrsquoeacutetat davancement du projet
IV5 Codename one [9]
Figure 18 Logo et slogan de Codename One
Il permet de deacutevelopper en Java avec un seul et mecircme code des applications
multiplateformes Il nous a permis de creacuteer notre application
27
IV6 Protocol http [10]
Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-
serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche
application
Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local
IV7 Skype [11]
Outre les messages eacutelectroniques qui ont servi aux communications asynchrones
lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels
Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois
racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft
Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet
Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes
additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la
visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie
instantaneacutee et le partage drsquoeacutecrans
IV8 Apache Tomcat [12]
Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache
Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne
principalement sur les systegravemes drsquoexploitation UNIX et Windows
Apache Tomcat a permis de tester localement (au sein de NetBeans) le
comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur
Kononi
IV9 JSON [13]
Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de
donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre
repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir
repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de
programmation Il est notamment utiliseacute comme le langage de transport de
donneacutees par les services Web
JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
23
Chacun de ces boutons est associeacute agrave un eacutevegravenement ou une action Le bouton
laquo ajout raquo dirige lrsquoutilisateur vers lrsquointerface de gestion des contacts Le bouton
laquo envoyer raquo se charge de reacutecupeacuterer les contacts seacutelectionneacutes le corps du message agrave
envoyer et le code secret qui seront mis dans 3 variables Elles sont utiliseacutees
comme paramegravetres de la requecircte envoyeacutee au serveur
Si lrsquoenvoie du message a reacuteussi lrsquoutilisateur revient agrave la page principale Sinon un
message drsquoerreur srsquoaffiche
Le bouton laquo annuler raquo permet drsquoannuler toute lrsquoopeacuteration et de retourner agrave la page
principale
III43 Affichage de lrsquohistorique des messages
Les SMS eacutemis par chaque utilisateur sont enregistreacutes dans la base de donneacutees de
Kononi Pour afficher lrsquohistorique des SMS une requecircte est envoyeacutee au serveur
avec en paramegravetre le code secret La reacuteponse du serveur est au format JSON
(JavaScript Object Notation) Ci-dessous un exemple de reacuteponse du serveur
Figure 17 Exemple de reacuteponse du serveur
24
Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer
(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements
suivants
bull Un label pour lrsquoimage
bull Un label pour le nom qui a envoyeacute le message
bull Un textArea pour le message
bull Un label pour la date
III44 Invitation agrave lrsquoabonnement aux messages publics
Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande
laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page
laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous
les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a
eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour
effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le
code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes
dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux
variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave
travers une exception
- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur
- Sinon la page principale est afficheacutee
La section suivante preacutesente les outils et technologies utiliseacutes pour
lrsquoimpleacutementation de lrsquoapplication
25
IV Outils et technologies utiliseacutes
Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies
suivants ont eacuteteacute utiliseacutes
IV1 NetBeans [5]
NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun
sous la licence CDDL (Common Development and Distribution License) et GPL
(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents
autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML
NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement
JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut
ecirctre senrichi par des plugins
Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute
drsquoutiliser Codename One Drsquoougrave le choix de cette IDE
IV2 Langage java [6]
Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute
par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa
principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves
facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents
Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux
IV3 Git hub [7]
Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le
programme Git Git Hub propose des comptes gratuits pour les projets de logiciels
libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute
par Linus Torvalds
Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi
servi agrave sauvegarder toutes les versions de lrsquoapplication
26
IV4 Trello [8]
Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est
baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les
cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre
Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version
de base est gratuite
Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs
lrsquoeacutetat davancement du projet
IV5 Codename one [9]
Figure 18 Logo et slogan de Codename One
Il permet de deacutevelopper en Java avec un seul et mecircme code des applications
multiplateformes Il nous a permis de creacuteer notre application
27
IV6 Protocol http [10]
Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-
serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche
application
Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local
IV7 Skype [11]
Outre les messages eacutelectroniques qui ont servi aux communications asynchrones
lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels
Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois
racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft
Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet
Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes
additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la
visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie
instantaneacutee et le partage drsquoeacutecrans
IV8 Apache Tomcat [12]
Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache
Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne
principalement sur les systegravemes drsquoexploitation UNIX et Windows
Apache Tomcat a permis de tester localement (au sein de NetBeans) le
comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur
Kononi
IV9 JSON [13]
Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de
donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre
repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir
repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de
programmation Il est notamment utiliseacute comme le langage de transport de
donneacutees par les services Web
JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
24
Apregraves traitement une liste est creacuteeacutee sur lrsquointerface principale avec un renderer
(un modegravele creacuteeacute effectuant le rendu des donneacutees) contenant les eacuteleacutements
suivants
bull Un label pour lrsquoimage
bull Un label pour le nom qui a envoyeacute le message
bull Un textArea pour le message
bull Un label pour la date
III44 Invitation agrave lrsquoabonnement aux messages publics
Dans la page principale derriegravere la touche laquo menu raquo est preacutesenteacutee une commande
laquo inviter raquo agrave laquelle est associeacutee une action permettant drsquoafficher la page
laquo Invitation Contact raquo (voir figures 25 et 26 agrave la page 32) Cette page preacutesente tous
les contacts du reacutepertoire du teacuteleacutephone avec des cases de seacutelection il y a
eacutegalement deux boutons laquo retour raquo et laquo inviter raquo Le bouton laquo retour raquo a pour
effet drsquoafficher la page laquo principale raquo Quand le bouton laquo inviter raquo est actionneacute le
code secret est reacutecupeacutereacute dans une variable ainsi que les contacts seacutelectionneacutes
dans une autre Ensuite une requecircte est envoyeacutee au serveur Kononi avec les deux
variables comme arguments Le serveur reacutepond par un code et ce dernier est lu agrave
travers une exception
- Si lrsquoinvitation a eacutechoueacute un dialogue affiche le code et le message drsquoerreur
- Sinon la page principale est afficheacutee
La section suivante preacutesente les outils et technologies utiliseacutes pour
lrsquoimpleacutementation de lrsquoapplication
25
IV Outils et technologies utiliseacutes
Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies
suivants ont eacuteteacute utiliseacutes
IV1 NetBeans [5]
NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun
sous la licence CDDL (Common Development and Distribution License) et GPL
(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents
autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML
NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement
JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut
ecirctre senrichi par des plugins
Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute
drsquoutiliser Codename One Drsquoougrave le choix de cette IDE
IV2 Langage java [6]
Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute
par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa
principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves
facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents
Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux
IV3 Git hub [7]
Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le
programme Git Git Hub propose des comptes gratuits pour les projets de logiciels
libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute
par Linus Torvalds
Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi
servi agrave sauvegarder toutes les versions de lrsquoapplication
26
IV4 Trello [8]
Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est
baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les
cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre
Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version
de base est gratuite
Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs
lrsquoeacutetat davancement du projet
IV5 Codename one [9]
Figure 18 Logo et slogan de Codename One
Il permet de deacutevelopper en Java avec un seul et mecircme code des applications
multiplateformes Il nous a permis de creacuteer notre application
27
IV6 Protocol http [10]
Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-
serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche
application
Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local
IV7 Skype [11]
Outre les messages eacutelectroniques qui ont servi aux communications asynchrones
lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels
Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois
racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft
Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet
Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes
additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la
visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie
instantaneacutee et le partage drsquoeacutecrans
IV8 Apache Tomcat [12]
Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache
Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne
principalement sur les systegravemes drsquoexploitation UNIX et Windows
Apache Tomcat a permis de tester localement (au sein de NetBeans) le
comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur
Kononi
IV9 JSON [13]
Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de
donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre
repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir
repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de
programmation Il est notamment utiliseacute comme le langage de transport de
donneacutees par les services Web
JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
25
IV Outils et technologies utiliseacutes
Pour impleacutementer les fonctionnaliteacutes de lrsquoapplication les outils et technologies
suivants ont eacuteteacute utiliseacutes
IV1 NetBeans [5]
NetBeans est un environnement de deacuteveloppement inteacutegreacute (EDI) proposeacute par Sun
sous la licence CDDL (Common Development and Distribution License) et GPL
(General Public License) En plus de Java NetBeans supporte eacutegalement diffeacuterents
autres langages comme Python C C++ JavaScript XML Ruby PHP et HTML
NetBeans est disponible sous Windows Linux Solaris Mac OS X Un environnement
JDK (Java Development Kit) est requis pour les deacuteveloppements en Java Il peut
ecirctre senrichi par des plugins
Compareacute agrave drsquoautres IDE comme Eclipse NetBeans offre une plus grande faciliteacute
drsquoutiliser Codename One Drsquoougrave le choix de cette IDE
IV2 Langage java [6]
Le langage Java est un langage de programmation informatique orienteacute objet creacuteeacute
par James Gosling et Patrick Naughton employeacutes de Sun Microsystems Sa
principale particulariteacute est que les logiciels eacutecrits dans ce langage sont tregraves
facilement portables et adaptables (avec peu ou pas de modifications) agrave diffeacuterents
Systegravemes drsquoExploitation tels que Windows UNIX Mac OS ou Linux
IV3 Git hub [7]
Il est un service Web de gestion de deacuteveloppement de logiciels utilisant le
programme Git Git Hub propose des comptes gratuits pour les projets de logiciels
libres Son programme Git est un logiciel de gestion de versions deacutecentraliseacutee creacuteeacute
par Linus Torvalds
Git Hub et Git ont permis de collaborer agrave distance entre deacuteveloppeurs Il a aussi
servi agrave sauvegarder toutes les versions de lrsquoapplication
26
IV4 Trello [8]
Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est
baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les
cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre
Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version
de base est gratuite
Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs
lrsquoeacutetat davancement du projet
IV5 Codename one [9]
Figure 18 Logo et slogan de Codename One
Il permet de deacutevelopper en Java avec un seul et mecircme code des applications
multiplateformes Il nous a permis de creacuteer notre application
27
IV6 Protocol http [10]
Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-
serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche
application
Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local
IV7 Skype [11]
Outre les messages eacutelectroniques qui ont servi aux communications asynchrones
lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels
Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois
racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft
Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet
Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes
additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la
visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie
instantaneacutee et le partage drsquoeacutecrans
IV8 Apache Tomcat [12]
Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache
Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne
principalement sur les systegravemes drsquoexploitation UNIX et Windows
Apache Tomcat a permis de tester localement (au sein de NetBeans) le
comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur
Kononi
IV9 JSON [13]
Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de
donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre
repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir
repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de
programmation Il est notamment utiliseacute comme le langage de transport de
donneacutees par les services Web
JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
26
IV4 Trello [8]
Trello est un outil de gestion de projet en ligne eacutediteacute par Fog Creek Software Il est
baseacute sur une organisation des projets en planches listant des cartes (tacircches) Les
cartes sont assignables agrave des utilisateurs et sont mobiles dune planche agrave lautre
Les utilisateurs sont signaleacutes de toute modification par lrsquoune des leurs La version
de base est gratuite
Il a permis de bien organiser le projet et drsquoinformer facilement les deacuteveloppeurs
lrsquoeacutetat davancement du projet
IV5 Codename one [9]
Figure 18 Logo et slogan de Codename One
Il permet de deacutevelopper en Java avec un seul et mecircme code des applications
multiplateformes Il nous a permis de creacuteer notre application
27
IV6 Protocol http [10]
Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-
serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche
application
Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local
IV7 Skype [11]
Outre les messages eacutelectroniques qui ont servi aux communications asynchrones
lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels
Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois
racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft
Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet
Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes
additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la
visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie
instantaneacutee et le partage drsquoeacutecrans
IV8 Apache Tomcat [12]
Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache
Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne
principalement sur les systegravemes drsquoexploitation UNIX et Windows
Apache Tomcat a permis de tester localement (au sein de NetBeans) le
comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur
Kononi
IV9 JSON [13]
Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de
donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre
repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir
repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de
programmation Il est notamment utiliseacute comme le langage de transport de
donneacutees par les services Web
JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
27
IV6 Protocol http [10]
Inventeacute par Tim Berners Lee HTTP est un protocole de communication client-
serveur deacuteveloppeacute pour le World Wide Web Il est un protocole de la couche
application
Il a permis drsquoeacutetablir une communication entre le simulateur et le serveur local
IV7 Skype [11]
Outre les messages eacutelectroniques qui ont servi aux communications asynchrones
lrsquooutil Skype a eacuteteacute utiliseacute pour les communications synchrones et en temps reacuteels
Skype a eacuteteacute creacuteeacute en 2003 par Niklas Zennstroumlm et Janus Friis puis plusieurs fois
racheteacute par diffeacuterentes socieacuteteacutes Crsquoest en 2011 qursquoil a eacuteteacute acquis par Microsoft
Skype est un logiciel qui permet aux utilisateurs de passer des appels via Internet
Les appels drsquoutilisateur agrave utilisateur sont gratuits Il existe des fonctionnaliteacutes
additionnelles comme la messagerie instantaneacutee le transfert de fichiers et la
visioconfeacuterence Il a permis de lrsquoutilisation de la visioconfeacuterence la messagerie
instantaneacutee et le partage drsquoeacutecrans
IV8 Apache Tomcat [12]
Apparu en Avril 1995 Apache est un logiciel de serveur http produit par laquo Apache
Software Foundation raquo sous une licence nommeacutee Licence Apache Il fonctionne
principalement sur les systegravemes drsquoexploitation UNIX et Windows
Apache Tomcat a permis de tester localement (au sein de NetBeans) le
comportement de lrsquoapplication avec les reacuteponses similaires agrave celles du serveur
Kononi
IV9 JSON [13]
Creacuteeacute par Douglas Crockford JSON (JavaScript Object Notation) est un format de
donneacutees textuel suffisamment geacuteneacuterique et abstrait pour drsquoune part pouvoir ecirctre
repreacutesenteacute dans nrsquoimporte quel langage de programmation drsquoautre part pouvoir
repreacutesenter nrsquoimporte quelle donneacutee concregravete Il est indeacutependant du langage de
programmation Il est notamment utiliseacute comme le langage de transport de
donneacutees par les services Web
JSON a permis de repreacutesenter facilement les donneacutees sur le serveur local
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
28
V Preacutesentation de lrsquoapplication
Cette section preacutesente lrsquoapplication Kononi agrave travers ses interfaces
Figure 19 Interface drsquoinscription Figure 20 Inscription drsquoun utilisateur
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
29
Figure 21 Interface pour la reacutedaction drsquoun message
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
30
Figure 22 Interface message public Figure 23 Interface message groupeacute
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
31
Figure 24 Interface de contacts pour message groupeacute
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
32
Figure 25 Interface drsquoinvitation Figure 26 Seacutelection des contacts agrave inviter
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
33
Conclusion et perspectives
Ce projet a permis la reacutealisation drsquoune application pour kononicom Il srsquoagit drsquoune
plateforme de messagerie en ligne qui souhaite relier les utilisateurs de teacuteleacutephones
portables agrave travers un numeacutero unique Lobjectif principal de la plateforme est de
servir de support de communication pour faciliter les conversations de groupes ou
la communication de masse Ses principales fonctionnaliteacutes sont linscription en
ligne ou par SMS labonnement au fil drsquoactualiteacute des numeacuteros preacutefeacutereacutes ou encore la
diffusion du mecircme message agrave un nombre eacutelargi dabonneacutes
Cette application est similaire agrave des services existants tels que Twitter WhatsApp
et Viber Sa particulariteacute reacuteside dans la creacuteation et la popularisation de solutions de
diffusion pour les populations disposant drsquoun faible nombre de Smartphones et
drsquoun faible budget pour la communication (SMS)
La reacutealisation de ce stage nous a consideacuterablement eacuteteacute beacuteneacutefique car nous avons
mis en œuvre nos acquis theacuteoriques Nous avons appris agrave travailler en groupe (agrave
distance et localement) et avons reacuteussi agrave deacutevelopper des capaciteacutes techniques et
de recherche car nous avons deacutecouvert en tant que deacuteveloppeurs de nouveaux
outils et technologies informatiques Ce stage a eacutegalement eacuteteacute lrsquooccasion de mener
un projet informatique de bout en bout
Au cours de nos travaux nous avons pris conscience des possibiliteacutes immenses
qursquooffrent les Technologies de lrsquoInformation et de la Communication
Enfin comme tout travail des difficulteacutes ont eacuteteacute rencontreacutees le long de ce stage
notamment des difficulteacutes de connexion lors des sessions de travail agrave distance et le
manque de documentations sur le plugin Codename One car qui est un plugin
relativement reacutecent
Dysfonctionnement du simulateur au cours de certains tests
Cependant malgreacute toutes ces difficulteacutes les objectifs ont eacuteteacute atteints
Pour qui concerne les eacutevolutions futures de lrsquoapplication kononicom pourrait
prochainement permettre une utilisation sans la connexion Internet avec cette
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom
34
application Des mises agrave jour pourraient eacutegalement srsquoeffectuer en fonction des
besoins des utilisateurs
Reacutefeacuterences
1 httpivorybibliodocwordpresscom20140114n29-quelques-chiffres-dutilisation-
dinternet-en-afrique-de-louest
2 httpwwwinnopifrencyclopedieadoptionhtm
3 httpwwworaclecomtechnetworkjavaembeddedjavameindexhtml
4 httppluginsnetbeansorgplugin42406codename-one
5 httpwwwdeveloppezcomactu69155NetBeans-s-aligne-sur-Java-8-la-version-
8-0-de-l-EDI-open-source-ameliore-ses-outils-pour-supporter-les-expressions-
Lambdas-Streams-et-Profiles
6 httpwwworaclecomtechnetworkjavaindexhtml
7 httpsgithubcom
8 httpstrellocom
9 httpwwwcodenameonecomdevelopershtml
9 wwwskypecom
10 httptomcatapacheorgdownload-70cgi
11 httpwwwjsonorg
12 httpkononicom
13 wwwdeveloppezcom