Mobile Modeling
Site du cours de modélisation des applications mobiles de la LP APSIO 2016-2017.

Concepts


Problématique

Quels sont les concepts UML les plus populaires, et comment sont-ils utilisés dans le cadre du développement mobile ?

Le langage UML est une standardisation de différents diagrammes de conceptions qui peuvent être utilisés à différentes étapes du développement d'un produit. Ces diagrammes permettent une communication efficace et claire entre les différents acteur du développement (client, développeurs, designer ...), ce qui essentiel pour n'importe quel projet d'envergure, notamment les applications mobiles

Liste des diagrammes les plus utilisés

1. Diagramme de classes

Le diagramme de classe est l’outil de conception le plus utilisé dans le cadre de la programmation orienté objet (POO). Il permet de représenter les différentes classes, avec leurs attributs et méthodes, ainsi que les relations entre celles-ci (héritage, implémentation d’interfaces, appartenance …).


2. Diagramme d’activité

Le diagramme d’activité permet de représenter graphiquement le “workflow” de certaines activités ou fonctionnalités, en représentant les différents états du système par des colonnes sur le diagramme. Les transitions entre états sont ensuite modélisées par un ensemble d'actions et de décisions qui constituent le workflow du système.

Légende
Rectangle arrondis : Actions
Losanges : Décisions
Rectangles : "Produits" émis
Barres : Début ou fin d’un bloc d’activités parallèles
Rond noir : Etat initial
Rond noir entouré : Etat final

3. Diagramme d’objets

Un diagramme d’objets permet de représenter une vue partielle ou complète de la structure d’un système à un instant spécifique, il s’agit d’une spécialisation d’un diagramme de classe.


4. Diagramme de cas d'utilisation

Un diagramme de cas d’utilisation est une représentation la plus simpliste possible entre un utilisateur et les différents cas d’utilisation auxquels il peut prendre part. Ce diagramme peut permettre d’identifier les potentiels utilisateurs d’un système. Il permet également un point de vue plus simple du système, utile par exemple en communiquant avec un client.


5. Diagramme d’état

Un diagramme d’état permet de représenter les différents états du système, ainsi que les conditions nécessaires pour passer d’un état à l’autre (événements, conditions …).


6. Diagramme de déploiement

Un diagramme de déploiement représente le déploiement physique des différents modules du système. Par exemple, pour un site web, les différents modules pourraient être le serveur web, un serveur d’application, une base de données … Le diagramme permet de représenter la façon dont ces modules sont connectés.


7. Diagramme composants

Le diagramme de composants est utilisé dans le cadre de projets importants, qui nécessitent d’être séparés en différents composants. Ce diagramme permet alors de représenter la structure organisant ces composants.


8. Diagramme de séquence

Un diagramme de séquence représente les interactions entre les différents objets qui composent le système. La temporalité est respectée de manière verticale sur le diagramme.

Outils de modélisation d'interfaces


Problématique :

Un des problèmes rencontrées lors de la création d'application est qu’il n’existe pas de moyen standard, comme l’UML, de représenter les IHM et leurs interactions avec l’utilisateur.

Pour répondre à ce besoin de modélisation, de nombreux outils sont apparus afin d’apporter une aide. Plusieurs types de modélisation existent:


  • Les SNI :

    Dérivé du diagramme d’activités de l’uml, utilisé pour décrire l'interaction sur l’ihm.

  • Le wireframing :

    Définit visuellement l’emplacement des composants et les actions liées aux différents éléments de l’application.

  • Les Mockups :

    Définit visuellement le design final.

  • Les Prototypes :

    Peuvent simuler les interactions entre les différentes vues de l’ihm.

Plateformes de développement Android


Problématique :

Quelles sont les plateformes de développement les plus utilisées, et les plus performantes pour Android ?

Avant de pouvoir se lancer dans du développement d'une application Android, il faut se demander quels environnements de développement intégré va-t-on utiliser afin de gagner du temps. Plusieurs choix s'offrent à nous dont le plus utilisé Android Studio. Mais il existe plusieurs IDE différents comprenant la possibilité de développer avec divers langages. La plupart des IDE pour les applications mobiles comportent un outil très utile qui permet de modéliser l'interface graphique générale que l'application aura quand on la lancera sur une plateforme mobile.


IDE : L'objectif d'un environnement de développement est d'augmenter la productivité des programmeurs en automatisant une partie des activités et en simplifiant les opérations. Les environnements de développement visent également à améliorer la qualité de la documentation en rapport avec le logiciel en construction. Certains environnements de développement offrent également la possibilité de créer des prototypes, de planifier les travaux et de gérer des projets.


Différents langages pour faire de l'Android


JAVA avec Eclipse (obsolète) et Android Studio

L'utilisation la plus classique pour créer des applications Android est l'utilisation du SDK (Software Development Kit) fourni par "google". Il est préférable d'utiliser un IDE afin de générer des classes complexes étant donné qu'il faut avoir une architecture de code complexe.


C++ avec android studio

"Google" a fournit le NDK (Native Development Kit ) qui permet de faire des applications android à partir de code en C et C++.


GoLang

Le langage "made in Google" a été conçu aussi afin d'être utilisé pour faire des applications android. Cependant comme ce langage est encore nouveau, toutes les fonctionnalités d'Android ne sont pas encore implémentées. De plus, ce langage est procédural ce qui limite la conception des applications. Cependant, il est bien possible d'imaginer que plus tard, afin de réaliser des petites applications, ce langage devienne de plus en plus utilisé.


HTML/JS avec Eclipse (obsolète) et Android Studio

Dans le SDK fourni, une classe java appelée WebView qui permet de convertir des fichiers HTML et javascript pour réaliser une application android. L'utilisation de l'HTML pour créer des pages ne gêne en rien à l'utilisateur car elles sont très proches aux pages vues mais le javascript qui est un langage interprété et n'est pas natif à l'android peut avoir des pertes de performances.


Ruby avec le framework Ruboto

Le langage ruby intègre diverses librairies et frameworks dont un appelé "Ruboto". Il englobe certaines librairies qui permet d'intégrer en ruby certaines méthodes qui correspondent aux besoins du développement Android. Puis il convertit le code en code java pour créer un .apk afin de déployer l'application. Ce framework est fonctionnel (version 1.4.1), donnera une application aussi rapide qu'une application réalisé avec Java et l'utilisation du ruby facilite les tests automatisés, cependant ce famework nécessiterait de cadrer les méthodes de travail (MVC n'est pas implémenté nativement) de plus ce n'est pas pratique de tester nous-mêmes l'application rapidement vu qu'il génère un .apk directement sur l'ordinateur.


PHP avec les outils de PHPForAndroid

L'utilisation du PHP est possible pour créer des applications android cependant c'est encore très expérimental et ça nécessite l'utilisation d'applications tierses qui vont comprendre le langage et l'interpréter pour l'android. Cependant pour les vues de l'application, il faut apprendre chaque objet qui est retranscrit en PHP ce qui n'est pas aisé.


Au vu de cette suite de langages possibles pour réaliser des applications androids, nous pouvons en déduire que pour les performances et la simplification du code produit, le Java et le C++ restent les meilleurs langages. Cependant, le HTML/JS est aussi très utilisé, car cela reste le plus simple pour réaliser ces applications.


Plusieurs IDE pour faire de l'Android


Eclipse et le plugin ADT (Android Developer Tools)

Anciennement, l'IDE officiel pour le développement Android, il propose une interface graphique permettant d'utiliser les outils du SDK d'Android. Il comporte un éditeur visuel, des outils de débuggages, de compilations, de packaging ou encore le lancement d'un émulateur. Il se base sur le langage Java. Il était fourni par Google, aujourd'hui, il est mis à jour par la communauté.

IntelliJ Idea

IntelliJ Idea est développé par JetBrains, et est un IDE performant. Il est prévu pour développer en Android, que cela soit dans sa version gratuite ou payante. Plus complet que le plugin pour Eclipse, il propose les mêmes fonctionnalités tout en les améliorant, ainsi que de nouvelles, comme le refactoring, un système de log, des tests unitaires et bien d'autres.

Android Studio

Android Studio est sortie en version 1.0 en 2014 avec une préparation de 2 ans. Les développeurs se sont basés sur l'IDE IntelliJ Community Edition (la version open-source de IntelliJ). Android Studio permet de concevoir des applications pour la multiplicité des produits Android du marché, des tablettes à Android Wear, en passant par Android Auto, Google Glass ou Android TV. Il contient également un émulateur comprenant les principales tailles d'écran des différents terminaux Android. L'IDE se base également sur Gradle qui sert à la construction et compilation du build.

Titanium Studio

Le framework Titanium permet d'écrire des interfaces graphiques pour mobile en Javascript qui sont ensuite compilables pour la plupart des plateformes mobiles comme Android, iPhone, Black Berry, Tizen, et Windows Phone. Le développement d'une application Titanium est similaire au développement d'une application Java.

AIDE

C'est une application qui s'installe directement sur un terminal Android. Android Java IDE permet de développer des applications depuis son téléphone. Il comprend un éditeur, un compilateur et un outil de refactoring.


Conclusion

Android Studio est évidemment l'IDE le plus utilisé pour développer en Android étant donné qu'il est l'IDE officiel fourni par Google. Il permet de coder principalement en Java, même si d'autres langages sont envisageables. Il est certainement le plus performant avec IntelliJ Idea.

Comparatif iOS/Android


Différences entre Android et iOS


Android:

Android est un système d'exploitation mobile 3,4 basé sur le noyau Linux et développé actuellement par Google.

Lancé en juin 2007 à la suite du rachat par Google en 2005 de la startup du même nom, le système avait d'abord été conçu pour les smartphones et tablettes tactiles, puis s'est diversifié dans les objets connectés et ordinateurs comme les télévisions (Android TV), les voitures (Android Auto), les ordinateurs (Android-x86) et les smartwatchs (Android Wear).

En 2015, Android est, face à iOS d'Apple, le système d'exploitation le plus utilisé dans le monde avec plus de 80 % de parts de marché dans les smartphones. (Wiki)




iOS:

iOS, anciennement iPhone OS, est le système d'exploitation mobile développé par Apple pour plusieurs de ses appareils.

Il est dérivé de OS X dont il partage les fondations (le noyau hybride XNU basé sur le micro-noyau Mach, les services Unix et Cocoa, etc.). iOS comporte quatre couches d'abstraction, similaires à celles de Mac OS X : une couche «Core OS», une couche «Core Services», une couche «Media» et une couche «Cocoa». Le système d'exploitation occupe au maximum 3 Go de la capacité mémoire totale de l'appareil, selon l'appareil. (wiki)




Tableau comparatif