TOPO pour étudiants en informatique intéressés par le projet GAMIN
Introduction :
Non pas basé
sur les « couches basses » de logiciel (= matériel,
système d'exploitation ...), mais basé sur les «
couches hautes » (applicatives), l'objectif serait
de faire vivre un nouveau langage graphique simple (de haut
niveau, c'est à dire se rapprochant du langage naturel)
Ce
langage permet la construction, l'affichage, l'animation, et
certaines interactivités sur des objets "multimédia"
: images, sons, dessin vectoriel ( avec peut-être quelques
nouveautés par rapport à ce que propose un
logiciel comme FLASH par exemple) '"
ATTENTION : l'idée n'est pas d'avoir la prétention de concurrencer un produit existant ! :
il s'agit de mettre en place un projet, initié à LYON, et susceptible d'intéresser un maximum d'utilisateurs ... et de contributeurs ;
mais l'objectif principal est de constituer un point de motivations et d'échanges pour ceux qui sont concernés par le développement logiciel utilisant, au moins dans un premier temps, le langage JAVA et les technologies correspondantes.
Une maquette opérationnelle prouve déjà la faisabilité de ce "projet GAMIN" (Graphisme Animé Multimédia Interactif Numérique)
Cette 'maquette' a été
réalisée avec des moyens réduits au minimum (
environnement de développement open source ECLIPSE / ou
versions de démo de JBuilder )..
Mais,
cette maquette ne constitue qu'un point de départ !
L'objectif est d'en partir pour mettre en place un vaste projet d'application distribuée utilisant les techniques J2EE (Java 2 Platform Entreprise Edition),
sachant que l'expérience acquise sur un tel "projet pilote" a toutes les chances d'intéresser les futurs employeurs ...
( Un réseau d'étudiants ayant contribué à un même projet serait un gage de capacité au travail en équipe(s) ... et de maîtrise des outils modernes de travail collaboratif ).
Noter que l'objet du projet : le graphisme animé sur le Web, peut encore intéresser , outre les acteurs de projet :
* ceux qui veulent un standard simple et Open Source pour concevoir des dessins et animations à partir de lignes de texte ( GAMIN pourrait être un intermédaire beaucoup plus rapide à maîtriser que SVG: la norme du W3C qui vient en 'sur-couche' de XML ...)
* ceux qui veulent un standard de dessin qu'ils pourraient conrôler eux-mêmes : demander ou apporter soi-même des évolutions
Donc,
ceux qui réaliseront
des dessins avec le(s) logiciel(s) de GAMIN auront intérêt
à ce qu'une structure assure la continuation du projet : d'où
l'association G.O.N.I.C. ...
( dont la charte garantit
l'indépendance et la neutralité en dehors des questions
liées au développement informatique )
Cette association vise à un effet pédagogique et à une dynamique d'apprentissage, voire de recherche spontannée de solutions d'excellence, en rapprochant étudiants, chômeurs disponibles, + autres intéressés autour d'une même motivation.
Travaux à réaliser à partir de la maquette actuelle :
Les interventions envisageable à partir de la maquette existante devraient permettre :
de développer de nouvelles extensions ou fonctionnalités
d'envisager les questions de Qualité logicielle
de contribuer à proposer et à mettre en oeuvre, le plus tôt possible des principes, méthodes et outils pour faciliter le travail ...
de pratiquer ou
apprendre la maintenance corrective ... mais aussi évolutive
:
( dans le métier, le plus souvent, le plus délicat
est de bien comprendre l'existant )
d'aborder les questions de coordination du développement logiciel
Ci-dessous un aperçu des travaux réalisables dans le cadre de TD, ( ou plus tard, de stages) : à choisir "à la carte". On pourra commencer par ceux dont l'abord est est le plus rapide : à noter que l'application principale est découpée en plusieurs packages de classes ( des interventions sur l'existant peuvent se limiter à quelques classes : notamment pour la Qualité, les Améliorations ou Optimisations ...) (Cette liste n'est pas exhaustive, mais il ne faudrait pas non plus qu'elle fasse peur : rien n'est indispensable ! ce fera ce qui se pourra, en fonction des choix des intervenants ) ==========================================================
Qualité :
Etablir des diagrammes
UML :
- de l'existant ( directement ou par "reverse
engineering")
- des évolutions prévues
pratiquer l'outil de
documentation des sources (sous Eclipse) :
compléter,
revoir, ajouter les commentaires (du code stabilisé)
créer ou compléter le manuel d'aide en ligne
(re-) définir et contrôler les règles de nommenclature et 'règles de programmation'
Compléments :
valider une version LINUX
ajouter Menu
"Options / Préférences" :
- positions de
Menus / - couleurs / - activer / desactiver "Témoins
d'activité"
- parametres permanents ($0 ... $9)
-
langue : ( sous-option = tout / commentaires / aides / menus ) =>
Franglais / Anglais / Espagnol / Italien / Allemand / Grec / . . .
(Locale)
mettre en oeuvre la gestion des Sons ( développer la classe correspondante à l'identique des autres ...) .. et tester !
......... CONFIGURATION : Initiale / statique / dynamique ........
Fonctions Formes :
-
(Tourner) / Deplacer / Grossir / Deformer / . . . => fonctions
spéciales à inventer !
==> chargement dynamique
de fonctions par base de données objet
Intersections : 2 ellipses / Droite & Forme / . . .
Améliorations :
déterminer les séquences de code critiques pour la rapidité d'exécution
les optimiser
optimisations :
- copies : mixer 'intelligemment' Clone/ Reference
- jouer avec un attribut "Visible" associé à chaque élément graphique
Changer le "Paint"
principal :
- pas d'effacement global hors CMD (instruction,
primitive ou cas précis )
- effacement piece par piece
Extensions :
P_piece: => courbes d'EVolution temporelle = chemin d'evolution dans le temps
développer un
outils spécifique de traces et de débug ( déjà
imaginé : à développer )
ou configurer une
solution Open Source déjà existante
mettre en oeuvre une base
de données objets : - pour les scripts de dessin dans un
premier temps / - pour des fonctions en ligne, des paramétrages
de scénarii regroupant plusieurs scripts par la suite
...
prévoir
des nomenclatures pour base de donnée GAMIN :
dessins /
genres de dessins / licenses-autorisations pour chaque constituant /
itou pour ... fontions / textures /
chargement de
dessins GAMIN par base de données objet
chargement de
composants : images / sons / polices de car. / ... par base de
données objet
concevoir, définir
et coder un mécanisme d'enchainement de : - lancements
d'animation et- de chargements de dessin_GPA ( coupler avec
pré-chargements d'images ? ...)
Suppression /
renouvellement des pieces
créer un nouvel objet graphique P_piece: => Gmem : calques ...
fonctions de contour ou de chemins algébrique pouvant s'appuyer sur des tableaux de points ..
mise en place de l'architecture
J2EE : choix des outils & environnement de travail .. ( à
priori, voir "architecture 5 couches" ) ...
Etablir
des diagrammes UML
Développer
un Editeur spécifique ( avec coloration syntaxique et
coloration du fond des GRP alternée faisant ressortir les
sous-niveaux )
==> voir possibilités avec ECLIPSE /
développement indépendant
Fonctions/ propriétés permettant d'associer à chaque dessin + (animation / interactivité) une courbe de charge CPU en fonction du temps ( par process & globalement)
fonction en ligne
de(s) éditeur(s) GAMIN, pour conseil à la conception de
documents GAMIN
( % temps CPU évalué / aide en ligne
en fonction du type de dessin et du contexte en cours ...)
Fonctions
d'extrusion de courbe ou de forme ..
fonctions de contour :
tampons / textures / dégradés / ...
fonctions de
remplissage : tampons / textures / dégradés / ..
Fonction ou Objet Graphique : fractale ...
Ajouter des
'squelettes 3D de référence' couplés avec
fonctions de projection plane ...
=> éventuellement:
étendre les attributs des éléments graphiques /
ou plutôt introduire une notion de structures 3D dont des élts
2D pourront être dérivés ...
définir des
clichés de paramètre d'évolution d'une animation
(Groupe ou Dessin entier)
=> repérables et archivables
en base se donnée
Coordination :
configurer une gestion de versions : CVS
configurer un outil de gestion de projets (licence libre) ... à convenir ..
A Noter :
si le projet tient le
coup, les contributeurs pourraient faire valoir, y compris sur leur
CV, leurs interventions :
(bien sûr, pas question de
conserver d'éventuelles apréciations défavorables,
mais, pour ceux qui acceptent ont pourra mémoriser les
apréciations élogieuses ...)
L'association GONIC est
là pour apporter son soutien et sa disponibilité à
ceux qui choisiront d'intervenir sur ce projet, l'intérêt
étant que chacun y trouve son compte !
ne pas hésiter
à demander des compléments d'information et un
rendez-vous pour choisir et envisager ou déterminer un projet
particulier de contribution au projet ...
il n'est pas interdit,
bien sûr de s'inscrire chez GONIC et de rejoindre la
coordination du projet ...