Passer la navigation

salut à tous,
après une petite recherche google sur ce concept (A.G.S.I.), je me suis rendu compte que mon blog n’était pas recensé (enfin, celui-ci du moins).
Donc que faire sinon écrire un petit billet pourtant ce nom ? Atelier de Génie de Système d’Information (en anglais, Computer-Aided Information System Engineering, ou CAISE)

Quel est l’objectif ? Si vous savez ce qu’est un Atelier de Génie Logiciel, alors vous êtes proches de comprendre de quoi il s’agit en incorporant à ce concept la « gestion » d’un système d’information dans sa globalité : de l’infra-structure à la super-structure.

Si vous n’avez jamais entendu parler d’un tel logiciel (Borland Delphi, MS Visual Studio, PC SOFT WinDev, etc), c’est un type de logiciel qui permet de réaliser des applications de « a à z », en gérant ses versions, son cahier des charges, etc. Certains sont plus ou moins réussis (prenant plus ou moins biens en compte plus ou moins de choses essentielles ou non).

Donc en remplaçant « Logiciel » par « Système d’Information », on ne prend plus seulement en compte le côté software de la force, mais aussi le côté hardware, et donc aussi (pour « bridger », ponter) les deux, il faut le « network » (qui est aussi du hardware mais en même temps du software, uh -openDNS, etc; que ce soit dans du CISCO ou sur un Linux, c’est du software tournant sur du hardware-).

Concrètement, avant d’aller plus loin, il faut aussi percevoir deux éléments fondamentaux dans la décomposition d’un système d’information, et ce d’un niveau fonctionnel. J’y vois donc deux éléments, l’infra-structure qui supporte la super-structure (un peu comme en architecture de bâtiment).

Concrètement, j’entends par « infra-structure » ce qui permet à la « super-structure » d’exister. Les deux sont intimement liés. Mais on peut les découpler !
C’est-à-dire, pour le premier, les ordinateurs, les réseaux de l’entreprise, les systèmes d’exploitations, etc; pour le second, ce sera les applications métiers des utilisateurs du système d’information.
S’il y a des développeurs, le S.I. doit pouvoir gérer le développement (d’applications, du S.I. lui-même, etc). S’il y a des comptables, il doit être à même de proposer une solution comptable. Le tout est intégré avec le tout : toute application est connectée au vocabulaire, aux concepts de l’entreprise. L’application comptable est une simple application comptable, mais qui permet aisément de relater les produits inscrits sur les lignes comptables, de rappeler la fiche client et sa gestion (type CRM), etc.

D’un point de vue développement, il s’agit concrètement de réaliser une « méta-application » (on est en plein « model-driven development »), un méta-modèle, un langage en bref. Puis les utilisateurs (les développeurs de S.I., par exemple), créeront des modèles correspondant à l’entreprise qu’ils modélisent. Le tout étant cadré (au travers du méta-langage), il y aura possibilité de générer plusieurs éléments (qui pourront ensuite être modifiés, la génération est ici amenée dans un esprit de prototypage, de retours utilisateurs rapide, génération de la doc, etc); ce qui est un gain de temps considérable.

Qu’est-ce que j’entends par modéliser une entreprise ? Concrètement, parlons de l’entreprise de mon père, l’Espace du Sommeil à Antibes, qui est relié à deux autres magasins à Nice (même enseigne).

On verra sur un modèle trois éléments (de type « boite rectangulaire ») typés « Magasin », nommées « EDS Antibes », « EDS Barberis » et « EDS Raimbaldi », par exemple, tous reliés à un réseau nommé « RPV EDS » (Réseau Privé Virtuel Espace du Sommeil, c’est moi, configurateur du S.I. de l’Espace du Sommeil, qui aurait créé ce modèle de configuration, en quelques cliques, vous voyez bien ici que ce qui est représenté à l’écran représente une certaine réalitée -on peut aller plus loin dans la modélisation en marquant dans le modèle le fait qu’un magasin est une localité géographique et rapporter tout ça sur google maps par exemple-). Tout ça parce qu’à ce niveau, le méta-modèle parle de types de locaux d’entreprise, et de types de liaisons entre eux.

Puis à côté, un jolie bouton nommé « Déployer le S.I. » qui vous proposera une action immédiate ou retardée. Dans tous les cas il vous sera explicité ce qui est nécessaire de réaliser avant, pendant et après, étape par étape (1: connecter l’ordi 2: connecter au réseau 3: allumer, etc), etc.

L’idée me parait « unifiante », car réunissant tous les concepts au sein d’un même outil, ce qui évite pas mal de choses du genre : redondance de l’information (resaisies, etc), redondance des mécaniques applicatives (gain d’espace, de temps en recherche et développement, tracking de bugs, factorisation du code, maintenance et évolutivité de la solution, ré-utilisation, etc) et modèles par la même (qui est en soi un logiciel, retombant dans le même discours qui précède).

L’idée me parait « porteuse » car explicite, via le « model-driven », dans des modèles, de quoi il s’agit. On sépare deux niveaux : le méta-modèle (la légende d’une carte routière par exemple, qui décrit 1) ce qui est considéré dans la carte 2) ce qu’il est possible de voir sur la carte, selon la perspective qu’on a de l’histoire).
Ce qui permet de mieux comprendre ce de quoi on parle, de pointer les problèmes du doigt pour mieux y répondre (bien formuler un problème peut amener sa solution).

L’idée me parait « exigente » tend il faut formuler de modèles (celui du réseau, de linux, d’apache, de mysql, de php, et donc des systèmes d’exploitation, des serveurs web, des sgbdr, des interpréteurs de scripts -comme une espèce de « dualité » modèle-méta-modèle-, etc) et toute l’artillerie lourde qui va avec (« générateurs », « validateurs », « transformateurs », « mélangeurs », etc).

Cela fait un moment que je n’ai pas continuer le développement des projets en cours type php5, symfony, etc, car j’avais d’autres choses sur le feu, un peu plus personnels. Maintenant que c’est passé, je vais revenir au fondamentaux de ce projet : finir php5, symfony, doctrine, continuer celui du système d’information (avec justement les langages de réseau, de système d’exploitation, de serveurs web, de sgbdr, d’interpréteurs de scripts, etc).

Je ne vais pas « tout faire » d’un coup. Je vais faire le minimal sur chaque élément pour créer un prototype qui fonctionne dans une certaine optique (déployer un s.i. en générant des scripts et en les exécutant, ce n’est pas encore arrêté).

6 Comments

  1. Salut Stéphane,

    Je découvre à l’instant ton blog et je vois que tu travailles également avec Symfony! (mon blog y est entièrement consacré).

    Les grands esprits antibois se rencontrent 😉

    A+

    • Salut Nicolas !

      Grand esprit ? J’y travail ! 😉

      Il me semble connaître un Nicolas Martin à Antibes, avec qui j’ai fais des LAN au magasin de mon père, il y a de ça 10 ans (pfiou). Est-ce toi ?

      Concernant Symfony, ça fait un bon moment que je guette son évolution, à l’heure actuel je développe le site de l’entreprise de mon père à l’aide de ce cadre applicatif, dans une architecture LAMP (Debian 5), pour être à même de tout consolider dans un méta-modèle à l’aide d’outils de modélisation tels qu’EMF et Epsilon.

      Ce projet est « mon » « grand » projet actuel, qui, dans ma tête, murît depuis 5 ans ! Tout vient à temps à qui sait attendre 😉

      Fini d’abstraire, place au concret 😉

      Quant à la rencontre, pourquoi pas ?! Si t’es toujours à Antibes ?

      à bientôt.

    • p.s.: poste un lien vers ton blog, que j’y jette un oeil, sûrement qu’il y a des choses intéressantes dedans 🙂

  2. Oui c’est bien moi !

    En effet, il serait temps de passer à l’implémentation.
    J’ai hâte de voir les détails dans les prochains posts !

    A+

    Nicolas Martin
    http://arpeggios.wordpress.com

    • Je viens d’écrire un « petit » billet quant à l’utilisation du « Model-Driven Software Development » en l’appliquant directement à sfDoctrine pour réaliser des modèles de classes qui pourront êtres transformés en code, validés, avec assistance aidant l’utilisateur dans la réalisation du modèle (création de refClass automatiquement, création des colonnes id automatiquement, pour ce qui est réalisé dans l’exemple du billet, entre autres possibilités infinies 😉

      Les Epsilons endoctrinés

      Ton retour sera grandement apprécié !

      à bientôt !

  3. Aahh ! 🙂

    Concernant l’implémentation, ce sera réalisé à l’aide d’Epsilon, plug-in d’Eclipse, qui utilise le plug-in EMF (méta-modélisation eCore), dans un premier temps.
    Par la suite (hmm, dans 2 ans), ce sera réalisé en qooxdoo, donc application web (d’ici là il y aura des transformateurs qooxdoo stables).

    Regarde les billets de ce blog-ci, j’y explicite autant que je peux les concepts de modélisation au travers d’exemples de php, symfony, doctrine, debian, etc (notamment le premier billet, entre autres), qui seront utilisés dans l’implémentation de ce CAiSE tool 😉

    Et la symfony

    Doctrine des méta-modèles

    Système d’information par le modèle

    Je regarde ton blog demain !

    à bientôt !