Академический Документы
Профессиональный Документы
Культура Документы
Date 13/06/05
Diffusion Publique sauf page indiquée
Nombre de pages 31
Table des matières
Introduction.........................................................................................................................................1
Contexte du stage...........................................................................................................................1
Présentation du document..............................................................................................................1
Wengo.................................................................................................................................................2
La société........................................................................................................................................2
Le sujet du stage.............................................................................................................................3
Subject of the internship.................................................................................................................3
La téléphonie sur Internet....................................................................................................................4
Introduction....................................................................................................................................4
Les technologies actuelles..............................................................................................................4
Skype.........................................................................................................................................4
GnomeMeeting..........................................................................................................................5
MSN et Yahoo!..........................................................................................................................5
Solutions matérielles.................................................................................................................5
SIP, le futur de la téléphonie sur IP ?..................................................................................................6
Introduction....................................................................................................................................6
Stacks SIP existantes......................................................................................................................7
État des lieux de l'architecture Wengo..............................................................................................10
Plateforme réseau.........................................................................................................................10
Le Wengophone, application cliente............................................................................................11
Conception d'un softphone « idéal ».................................................................................................13
Évaluation des fonctionnalités.....................................................................................................13
Conception des fonctionnalités....................................................................................................14
Conception de l'historique du softphone.................................................................................15
Conception de la « contact list »..............................................................................................16
Conception de la partie téléphonie..........................................................................................17
Développement de l'IHM.........................................................................................................18
Implémentation.............................................................................................................................20
Les choix de l'implémentation.................................................................................................20
Rigueur durant le projet...........................................................................................................20
Intégration de la bibliothèque phAPI.......................................................................................21
Non implémenté......................................................................................................................22
Capture d'écran........................................................................................................................23
...........................................................................................................................................................24
Idées sur la plateforme « idéale » de téléphonie................................................................................24
Problèmes structurels liés à Wengo..................................................................................................26
Conclusion........................................................................................................................................28
ANNEXES........................................................................................................................................29
Remerciements
Ce stage de fin d'études valide une formation continue entreprise dans une
filière de Master Informatique spécialisé développement logiciel à l'IFSIC
(Université de Rennes 1, France), Institut de Formation Supérieure en Informatique
et Communication.
1
2. Wengo
2.1. La société
2
2.2. Le sujet du stage
The internship has finaly been focused around the modelisation of a « ideal »
phone software. My work during that internship has been to help the developers to
understand how to move their current softphone to a better modelisation, and
provide them documentation, UML description and clean source code of my own
version of a softphone.
3
3. La téléphonie sur Internet
3.1. Introduction
Des aspects juridiques importants existent aussi sur les codecs utilisés dans
les flux audios et vidéos ; en effet, la plupart des protocoles utilisés sont soumis à
des brevets et ce problème est encore plus ennuyeux pour les développeurs de
logiciels libres.
Skype est, parmi les acteurs actuels spécialisés dans la téléphonie sur IP,
devenu rapidement une référence. Son principe se base sur la diffusion massive
de leur client, et ils simplifient au maximum son téléchargement. Le site
http://www.skype.com/ propose directement de l'obtenir. Le client est simpliste,
accessible à un maximum d'utilisateurs, et a d'ailleurs déjà convaincu plusieurs
millions de personnes. Le site indique plus de 120 millions de téléchargements
au moment de la rédaction de ce document.
4NAT: Network address translation. Mécanisme qui permet de faire correspondre les adresses
IP internes non-unique d'un domaine vers un ensemble d'adresse externes uniques et
routables.
4
compétences nécessaires au développement d'un outil téléphonique qui se base
sur ce concept. Cela permet entre autres d'éviter de supporter les coûts de
bande passante en déléguant à des clients tiers (appelés Supernode) le rôle de
relais, et réduit donc considérablement les frais de fonctionnement.
Skype propose en outre une API complète pour les développeurs désireux
d'utiliser leur réseau pour développer des applications spécifiques. Néanmoins et
tout en étant gratuit, Skype se base sur des technologies propriétaires et est
difficilement, pour ne pas dire impossible, connectable avec d'autres fournisseurs
de voix sur IP.
3.2.2. GnomeMeeting
5
4. SIP, le futur de la téléphonie sur IP ?
4.1. Introduction
6
protocoles qu'il supporte en commun avec Proxy2 celui que Proxy2 préfère. Ce
protocole sera utilisé par les utilisateurs pour communiquer entre eux.
Le protocole SIP permet d'avoir un mode connecté vis à vis du client qui
l'utilise. Les piles SIP fonctionnent en général sur un système de « callbacks » : on
s'enregistre sur un serveur SIP et la pile SIP tourne dans son propre thread. La pile
appelle les callbacks lors d'événements spécifiques tels qu'une demande d'appel,
un changement de présence, ou un changement d'état d'un appel en cours.
7
tentatives sur certaines d'entre elles, dont voici une liste non-exhaustive.
1.SipX
2.OPAL
OPAL est une pile SIP diffusée sous licence MPL (Mozilla Public licence) qui
a été intégrée dans le projet OpenH323, et c'est celle qui est utilisée dans le
projet GnomeMeeting. Elle fonctionne nativement sous Linux et Windows et
pourrait être intégrée et utilisée dans le softphone. Suite à des contraintes de
temps je n'ai pas testé son intégration dans le code existant, mais il est probable
que cela fonctionnerait et elle mérite qu'on y prête attention.
Plus d'information sur OPAL est disponible à l'adresse
http://www.openh323.org/opal.html
3.RTC Microsoft
osip est une pile SIP sous licence LGPL qui implémente les couches basses
du protocole SIP. EXosip est une pile SIP sous licence GPL qui simplifie
l'utilisation d'osip. Au contraire d'osip, l'utilisateur n'a pas besoin d'une
connaissance très évoluée du protocole SIP pour utiliser eXosip. Osip et eXosip
sont développés par Aymeric Moizard, et plus d'information est disponible sur
http://www.antisip.com/.
8
un « wrapper » en C : phAPI. PhApi a l'avantage de faciliter encore plus
l'utilisation de eXosip, d'intégrer la gestion des médias, et de proposer des
fonctions haut-niveau pour décrocher ou raccrocher la ligne, passer un appel en
attente, etc. De plus en plus de fonctionnalités haut-niveau sont rajoutées au
sein de phAPI (vidéo par exemple).
7Glib est une bibliothèque C bas-niveau développée dans le cadre du projet GTK et très
populaire dans les programmes développés en C. Plus d'information sur
http://developer.gnome.org/doc/API/glib/
9
5. État des lieux de l'architecture Wengo
5.1. Plateforme réseau
L'architecture réseau actuelle de Wengo se base sur le protocole SIP pour
toutes les communications avec ses clients. Le schéma réseau suivant permet
d'avoir une vue globale de l'infrastructure en ce qui concerne le Wengophone. En
simplifiant, le « backoffice » est constitué d'un serveur SIP, d'un proxy SIP
(CIRPACK), d'un proxy RTP (pour les médias), et d'un serveur « SSO » (Single
Sign-On) utilisé pour permettre aux clients d'avoir une identification unique et non
dépendante des informations SIP.
10
5.2. Le Wengophone, application cliente
11
12
6. Conception d'un softphone « idéal »
6.1. Évaluation des fonctionnalités
• Gestion d'un historique sur les appels (appels reçus, appels effectués,
appels en absence) avec possibilité de rejouer ces appels.
• Gestion d'une notion d'état de présence pour l'utilisateur pour pouvoir
passer en mode silence ou absent, à la manière des outils de messagerie
instantanée.
• Gestion d'une liste de contacts.
Suite à des discussions avec les développeurs actuels, j'ai ensuite déterminé les
fonctionnalités suivantes, non intégrées actuellement, et qui présentaient un
intérêt :
13
6.2. Conception des fonctionnalités
Plusieurs outils ont été testés pour la conception UML du logiciel. Il s'avère
qu'il n'existe pas encore d'outil « idéal » pour la conception. J'ai cherché en vain un
outil qui soit rapide et complet, mais qui génère des graphes UML qui soient
exploitables ultérieurement (un graphe trop complexe ne serait pas utilisé car
difficilement compréhensible), et qui permette de garder une relation étroite entre
le code et la conception (répercussion des modifications de l'un vers l'autre et
réciproquement).
Au début du projet, le choix du langage n'étant pas encore fait, j'ai utilisé
Eclipse10 couplé avec le plugin Omondo 11 pour définir les principales fonctionnalités.
Par la suite j'ai testé Rational, Together, Poseidon, Umbrello et Dia 12, et aucun ne
m'a donné satisfaction. Au final Together est l'outil qui s'est le plus rapproché de
mes attentes ; néanmoins, certaines de ses limitations pour les diagrammes de
classes lors de l'utilisation de code C# ne m'ont pas permis, par exemple, d'afficher
les nom des relations, ou leurs cardinalités. Les diagrammes générés avec Omondo
intègrent ces informations.
14
• Découpage des classes de telle sorte qu'il soit aisé de mettre en place des
tests unitaires ;
• Indépendance de la couche métier avec la couche de présentation en
utilisant un système similaire à PAC détaillé en annexe.
15
...Wengo.History.EventHistory interface
...EventCommandCaller
+EventHistory Interface pour l'invoker
+EventHistory du pattern command
peers:PeerCollection
+addMemento:void sipconnection:ISIPConnection
+save:void
mementos:HistoryMementoCollection
hasHistory:bool
AddedMemento
SoftPhone Wengo.SoftPhone
16
Illustration 2 Diagramme de classe pour la "contact list"
17
6.2.4. Développement de l'IHM
Le développement de la partie IHM de l'application utilise une méthode
similaire à PAC, et se compose en trois couches : la couche métier, la couche
contrôle et la couche de présentation. Cette implémentation de PAC est détaillée
de manière plus complète dans un document en annexe à ce rapport, rédigé
dans un but pédagogique pour l'équipe responsable du Wengophone actuel et
afin qu'elle puisse appliquer cette méthode à l'avenir.
18
de contrôle. Il est en conséquence très aisé de créer des implémentations avec
de nouvelles bibliothèques graphiques.
19
6.3. Implémentation
6.3.1. Les choix de l'implémentation
Le choix du langage pour l'implémentation s'est orienté vers C#. En effet, j'ai
désiré pouvoir bénéficier d'un langage objet haut-niveau multiplateforme, pourvu
d'un typage fort et statique, et qui me permette d'intégrer facilement des
bibliothèques existantes développées en C. De plus les implémentations de C# à la
manière de Java proposent une notion de ramasse-miette pour éviter les
problèmes inhérents aux allocations mémoires.
14SVN est un outil de gestion de révision similaire à CVS mais plus récent
20
J'ai aussi conservé une « roadmap » succincte sur les fonctionnalités ultérieures
à développer. Ces fichiers roadmad et Changelog ne sont censés être lus que par
les développeurs qui contribuent au projet.
15 Voir http://www.ecma-international.org/publications/standards/Ecma-335.htm
21
bibliothèques C. La bibliothèque graphique GTK# utilise d'ailleurs ce procédé et il
est tout à fait envisageable d'automatiser la génération du code C#. En théorie,
il suffit de déclarer la fonction qu'on souhaite utiliser dans une bibliothèque
spécifique, et l'interpréteur CLI se chargera du reste. En pratique c'est un peu
plus compliqué, surtout dans le cas de passage de pointeurs comme c'est le cas
dans le cadre d'une pile SIP pour les callbacks.
[DllImport("phapi")]
private static extern int phInit(ref phCallbacks callback, String server, int
asyncmode);
http://www.mono-project.com/Interop_with_Native_Libraries
De plus, n'étant pas maître d'oeuvre sur les pile SIP, il faudrait développer des
22
tests unitaires qui valident les fonctionnalités minimales nécessaires à leur
utilisation au sein du softphone.
23
7. Idées sur la plateforme « idéale » de téléphonie
Le schéma suivant donne une idée de l'architecture réseau qui remplirait ces
fonctionnalités.
24
• Des clients utilisateurs du service Wengo
• Des « supernoeuds » qui peuvent jouer le rôle de proxy RTP aujourd'hui
supporté par Wengo uniquement.
• Le proxy SIP hébergé chez Wengo qui centralise la réception des commandes
(passer un appel, etc)
• Un proxy RTP de secours hébergé par Wengo
Les supernoeuds sont des clients Wengo qui ont activé la possibilité de jouer
le rôle de relais, et qui respectent un nombre de critères minimum pour être élu à
ce titre (connectivité rapide, tourner en permanence, latence réduite, etc). Un
réseau P2P indépendant et connectant les différents supernoeuds permet, avec la
connaissance d'un seul d'entre eux, d'avoir une liste des supernoeuds existants.
25
8. Conclusion
Mes priorités pendant ce stage ont été de laisser des documents et du code
source exploitables à l'avenir par l'équipe actuelle. Un effort a été fait dans la
documentation du code source développé et j'ai expliqué régulièrement à mes
collègues le travail effectué pour qu'ils puissent en prendre le contrôle
ultérieurement.
Tout au long de mon stage j'ai insisté sur l'importance d'avoir une
architecture logicielle réfléchie, particulièrement dans une société dont la raison
d'exister provient des outils qu'elle développe et qui souhaite capitaliser cette
expérience.
26
ANNEXES