HTML5 : Etudes de cas

Quand j'étais petit je démontais tout, réveil, vieux téléviseurs, mobylette. Aujourd'hui je démonte des sites web, les jeux en ligne,  pour le plaisir de comprendre comment çà marche. Et au moins là je ne peux rien casser. Voici la démarche que je vous propose de suivre pour analyser quelques applications, jeux, ou démos qui ont retenu mon attention.


Démarche d'ingénierie

Dans tout projet informatique (ou autre) qui se respecte, on ne commence pas par ouvrir son éditeur et taper du code, on suit une démarche d’ingénierie système. Je ne vais pas entrer dans le détail de ce qu'est une démarche d'ingénierie, ce n'est pas le but de l'article, mais en gros on analyse le besoin, on établit une architecture fonctionnelle puis une architecture organique (phase de conception) et enfin on peut commencer à coder.


Retro-ingénierie

Nous ici on veut faire l'inverse, on a un programme, jeu, application et on veut comprendre comment çà fonctionne. C'est ce qu'on pourrait appeler de la retro-ingénierie (ou reverse engineering). Ce terme est surtout utilisé dans l'industrie, pour décrire ce que fait un industriel pour copier un objet ou une application. 

Prenons le cas d'une application. La démarche est dans une première phase d'observer l'application, d'en définir les fonctions et caractéristiques visibles de l'extérieur (analyse boite noire). Si l'application est en plusieurs parties on peut déjà en déduire une cartographie sommaire. 

Dans une deuxième phase on utilise des outils de débuggage et d'extraction de code source, et fonction par fonction on identifie le code qui s'y rapporte pour établir une cartographie des fonctions internes et petit à petit on reconstruit l'architecture interne de l'application. C'est évidemment un peu résumé et simplifié mais çà permet de comprendre la démarche qu'on va suivre.


Adaptation à une analyse d'application web

On va donc suivre une démarche d'ingénierie inverse, on part du produit, on l'observe de l'extérieur, on l'ouvre, on regarde de quoi il est fait et on essaie d'en établir l'architecture. La limite de la démarche est qu'on n'a accès uniquement qu'à la partie cliente de l'application. Dans une application web il y a en effet la partie client qui s'exécute sur le navigateur (html/js/css) et la partie serveur qu'on ne voie pas, qui peut être du code php, nodejs, python ou autre. La plupart du temps on ne peut même pas savoir quelle est la technologie utilisée coté serveur.


Démarche proposée, résumé

- Technologies utilisées : détermination rapide des technologies utilisées par l'application
- Analyse fonctionnelle : détermination par l'observation des principales fonctions du jeu
- Analyse organique : analyse de chaque fonction, détermination de l'architecture de l'application
- Et enfin, quand c'est possible, détournement de l'application pour s'amuser.

Aucun commentaire :

Enregistrer un commentaire