Itération Principale N°0 : Phase d’Inception

N’étant pas encore vraiment habitué au Processus Unifié, il se peut fortement que je fasse des erreurs d’interprétation et d’utilisation de ce concept. Donc pour les puristes, ne m’en voulez pas trop fort :p

Rappelons qu’une itération est composée de 4 phases, l’Inception, l’Élaboration, la Construction et la Transition.

Etant donné qu’un projet est une succession d’itérations organisées en poupée russe, pour moi la couche principale d’itération est forcément la succession des versions majeurs d’un projet. Et il me paraît logique de commencer les itération par “ 0 “, car avant d’avoir une version “1”, on passe par le développement entier d’une itération. Une fois l’itération finie et le projet livré, on peut prétendre être en version 1.

Un système de versioning ?

Cela nous permettra d’écrire un versionning sous forme d’itérations successive, comme “0.10.5” qui se lirait : “Nous sommes dans l’itération 5, de l’itération 10 de l’itération principale 0”. 

Il pourrait être intéressant de garder également un suivi des Phase sur chaque numérotage d’itération via un pointage alphabétique “a, b, c, d” pour chaque phase d’itération, par exemple : “0c.10c.5a” 

Mais j’ai peur que cela devienne trop compliqué et qui plus est, ça me pose une question importante, à partir de quel moment je sais qu’il faut que je divise une itération en sous itérations ?
De manière plutôt logique, je me vois faire ça pendant la phase d’Élaboration ou de Construction. Le mieux serait de le faire pendant l’élaboration pour savoir exactement ce qu’on a à faire pendant la construction. Cela dit, pendant la Construction on peut se retrouver face à des choix qui nous demanderont peut-être de subdiviser une partie de projet en sous itération pour rendre les choses plus faciles à gérer.

Peut-être faudra t-il alors juste se laisser la possibilité de le faire et dans l’Élaboration et dans la Construction en fonction du besoin. Voir savoir faire les deux, pendant l’Élaboration prévoir les futurs sous itération et pendant la Construction, créer ces itérations.

Enfin, je pense qu’il est peut-être inutile de préciser la phase des couches supérieures. Lors de release ou simplement via Git, un simple versioning : “0.10.5c” pourrait faire l’affaire.

Hé bien chers amis, débutons notre toute première itération principale et sa première phase, l’Inception.

Phase d’Inception :

“La Phase d’Inception, consiste à évaluer le projet, on y détermine des cas d’utilisation et un premier brouillon d’architecture.
On modélise les processus métier et on gère les exigences du projet.”

Evaluation du Projet

En terme d’évaluation je pense que j’ai déjà passé assez de temps ces derniers mois pour savoir si le projet était faisable ou non. Tout ce que j’ai pu chercher, tester et apprendre me servira donc pour établir les cas d’utilisations et notre premier brouillon d’architecture.

Déterminer les cas d’utilisations 

Les cas d’utilisation détaillent le/les comportement(s) du système étudié sous la forme d’une liste d’actions et d’interactions entre l’acteur et le système (voir entre différentes actions).

Le cas d’utilisation décrit les exigences fonctionnelles entre le système et l’acteur, il doit donc être succinct et ne concerner que cette relation.

Vue d’une relation entre un acteur primaire et un use case dans un système (schématisé en UML)

Dans notre cas un acteur peut-être un Trader par exemple, mais lorsqu’il s’agit d’aller plus en profondeur dans les itération, les acteurs pourront être des systèmes. On pourrait donner comme exemple une interaction entre un gestionnaire de base de données et un gestionnaire de téléchargement de données historiques.

Il est donc clair qu’en détaillant les premiers cas d’utilisation, on ne fera que survoler les sujets et on ira détailler chaque action et chaque interaction dans des itérations plus profondes si le besoin s’en fait sentir.

Comment connaître les cas d’utilisation et savoir les définir ?

Dans un premier temps je pense qu’il est important de définir les limites de l’application, savoir faire la liste des fonctionnalités globales. Un peu comme si on se présentait à un client et qu’on lui demandait ce qu’il veut, le client va nous dire “je voudrais ça, ça, et ceci et ça”, il le dira sans avoir aucune connaissances en développement, ce sera donc une première vision “naïve” du projet.

On va pouvoir définir une première fois ce qu’on attend de l’application, qui sont les utilisateurs visés (ceux qu’on appellera les Acteurs Primaires), avec qui ou quoi ils vont interagir, etc.

Description globale du projet :

J’aimerais développer une application qui puisse apporter un soutien, une aide au travail quotidien du Trader. Cette aide, ce soutien serait fourni par des outils graphiques, un calcul d’indicateurs, un espace de test de stratégie avec des données historiques de marché.

L’intérêt majeur de l’application serait de permettre au Trader de configurer et entraîner une IA sur différentes stratégies et pattern, afin de l’utiliser pour dans un premier temps offrir une aide à la décision et dans un second temps gérer une automatisation de prise de position, voir une gestion d’un wallet complet.


L’application devrait pouvoir permettre au Trader effectuer des opérations sur un maximum de plateformes d’échange de crypto-monnaies. Il devrait pouvoir avoir des informations de ses comptes sur ces plateformes, avoir des informations sur l’état de ses wallets et l’état de ses prises de position.

Cela implique de lui fournir des outils graphiques de CandleStick ainsi que des outils de configuration et d’affichage d’Indicateurs en fonction des données de marché demandées par le Trader sur les plateformes disponibles.

L’application doit pouvoir gérer un espace de test de stratégie. Le Trader doit donc pouvoir télécharger et gérer des données historiques de n’importe quelle plateforme.
Il doit pouvoir avoir accès à une Fake Plateforme pour faire des fausses opérations et pouvoir tester ses stratégies de manière manuelle.

L’intérêt majeur de l’application se trouverait dans la configuration et la gestion d’une IA créée et entraînée par le Trader.
Il doit donc pouvoir d’abord avoir un espace lui permettant de créer des configuration d’IA et de Réseaux de Neurones. Cela permettra à tout un chacun d’avoir des configuration et modèle d’IA différent.
Enfin le Trader doit pouvoir avoir accès à des outils graphiques lui permettant de modéliser des données d’entraînements de stratégies pour son/ses IA et lancer des sessions de visualisation d’entraînement pour tester ses configurations et modèles.

Dans un premier temps les différentes configurations et modèles d’IA ne devraient être utilisées que de manière indépendante les unes des autres.
Mais dans un deuxième temps il serait très intéressant de pouvoir définir un réseau de petite IA permettant au Trader de traiter différentes phases de traitement de données et de décisions.

Cette application n’est pas faites pour être un outil magique, le Trader devra pouvoir fournir lui même des connaissances afin de pouvoir correctement configurer, définir ses modèles, utiliser ses indicateurs et construire ses stratégies.

En aucun cas l’application ne doit apporter toutes les solutions, c’est une application qui sert de support de travail et d’aide à la prise de décision, pas gagner de l’argent magique.

Ecriture des Uses Cases :

En y réfléchissant un peu, on va vite se rendre compte que la première liste de cas d’utilisations va certainement être assez longue. Et qu’il faudra faire un tri dans tout ça, voir ce qui est cohérent et voir ce qui ne l’est pas.

Ce qu’il faudra retenir, c’est que je devrais faire des cas d’utilisation entre le Trader et le système “Application”. C’est à dire, en passant par l’interface graphique, chose que nous n’avons bien évidemment pas encore abordé haha.

Je propose donc que les Uses cases soient l’objet du prochain article parce que je vais avoir besoin de préparer le terrain !

En tout cas, encore un grand merci à ceux et celles qui me lisent, j’espère que cela vous plait. N’hésitez surtout pas à vous inscrire et laisser des commentaires 😉

A bientôt !

PS : Je ferai mes schéma UML via l’application en ligne draw.io, elle est gratuite, assez propre et propose toute une panoplie d’outil de schématisation de projet, dont les outils UML.

Vous pouvez la trouver là : https://www.draw.io/

Ecrire un commentaire