TDs INF422 — Introduction

Introduction      FAQ   Glossary   Project   TD 1   TD 2   TD 3   TD 4   TD 5   TD 6   TD 7   TD 8

Retour au cours.

1.  Android

L'ensemble des exerices et illustrations concrètes du cours porteront sur une version légèrement modifiée (enrichie en outils UNIX) du système ouvert pour mobiles Android. Ce système comprend un noyau Linux, un sous-ensemble minimal des outils standard UNIX, des bibliothèques permettant de gérer le matériel et les périphériques, une machine virtuelle Java spécialisée pour l'embarqué (Dalvik), et une grande quantité de composants logiciels pour le développement d'applications interactives à haut niveau.

Il existe de nombreux téléphones et même quelques netbooks commercialisés sur Android. Le premier a été contruit par HTC et commercialisé sous le nom de G1 par T-Mobile aux États-Unis, en Octobre 2008. Nous disposons d'une version déverouillée de ce téléphone pour effectuer des démonstrations en situation réelle. Google commercialise une version développeur du G1 plus officielle, pour les développeurs, et proposera sans doute des mises à jour de ce matériel. L'ensemble du code source composant la base du système est libre, sous licences libres (principalement Apache, mais aussi GPL et BSD).

Nous travaillerons sur un émulateur de téléphone et de système multiprocesseur sur puce (system-on-chip, ou SoC), fondé sur l'émulateur libre multi-plateforme QEMU.

Il existe une introduction pédagogique à l'anatomie d'une application Android, un excellent tutoriel, et une synthèse des tâches courantes de programmation.

2.  Sujets de TD

Les TDs abordent l'ensemble des concepts, des interfaces de programmation et des outils composant un ordinateur ou un système embarqué moderne.

Sur le plan technique, nous rappelons trois objectifs génériques en matière de conception d'applications interagissant avec le système.

  1. Portabilité : mis à part les composantes spécifique à Android, les outils que vous réaliserez doivent être conçus pour fonctionner sur un maximum d'architectures, dès lors qu'une machine virtuelle Java 6 est disponible (ou ulterieure, comme OpenJDK qui est libre), ainsi que les outils UNIX standard  vous êtes fortement encouragés à tester vos programmes sur plusieurs versions (ou distributions) de GNU/Linux, et sur d'autres systèmes UNIX (FreeBSD, MacOS X, Solaris).
  2. Sécurité : l'application faisant intéragir plusieurs utilisateurs, il ne faut pas qu'un utilisateur puisse compromettre le fonctionnement correct des serveurs ou des clients de messagerie, ni qu'il puisse utiliser vos outils pour prendre le contrôle du système.
  3. Facilité d'administration : le travail de l'ingénieur système doit être simplifié au maximum  une fois que la configuration de l'outil est faite, il ne devrait plus avoir à intervenir.

3.  Le travail demandé

L'implémentation se fera en langage Java 6 avec les paquetages fournis par Android, ainsi que dans divers langages associés aux outils UNIX standard, à commencer par le langage de script shell.