Smag0 Qu'est-ce c'est ?

"Smag0, un robot qui range ma chambre", qu'est ce que c'est donc ? 

  • C'est à la fois l'idée de départ (merci #Simon), et l'exemple qui servira de fil conducteur pour construire une architecture possible du système qui devra nous aider à faire évoluer cette idée et résoudre les difficultés que l'on pourrait rencontrer. Vous me verrez d'ailleurs parfois utiliser le nom de "Smag0" pour désigner le système dans sa globalité.
  • L'idée d'un "robot qui range ma chambre" nous servira en effet d'exemple pour décrire les mécanismes ou les fonctionnalités d'une partie particulière du système, tout en gardant à l'esprit que le système Smag0 reste extensible, adaptable à d'autres situations plus ou moins complexes, dans d'autres environnements, à d'autres échelles, mais l'exemple d'"un robot qui range une chambre" est mon avis le plus parlant pour illustrer une situation, et vous pourrez aisément la transposer selon vos goûts, et nous verrons plus tard comment.

Maintenant, nous nous devons d'aborder deux notions essentielles : 

  1. Idée = Agent;
  1. Système = Organisation.

  • Tout d'abord, le fait que l'idée de départ ne restera pas figée, et qu'elle évoluera au gré de nouvelles attentes, de nouveaux éléments, de contraintes. Cette idée est "vivante", et je peux la modifier, la rattacher à d'autres idées ou à des vidéos que je vois, à des documents que je lis, ou à d'autres projets qui m'intéressent. Je pourrais la partager, et alors d'autres que moi pourront apporter leur contribution et modifier cette idée. Ou bien mon idée de départ d'"un robot qui range ma chambre" (qui n'est d'ailleurs pas la mienne, mais celle de #Simon, mon fils) pourra inspirer chez toi, lecteur ou chez d'autres de nouvelles idées, poser de nouveaux problèmes ou évoquer de nouveaux projets. Cette idée devient alors autonome, vivante, je ne la maîtrise plus. 
  • A partir du moment où j'ai partagé cette idée, je ne peux plus savoir quelle nouvelle idée elle évoquera chez toi ou chez quelqu'un d'autre, la difficulté étant de garder le lien entre ces idées, pour que celui qui arrive ensuite profite de la réflexion que nous avons eu, toi et moi, sur le sujet.
  • Le "comportement" de cette idée peut alors faire penser et être assimilé à un Agent Informatique tel que définit par #Ferber dans son livre sur les systèmes multi-agents.

    Le livre de Ferber :
    D'autres références sur les systèmes multi-agents : 

Le gros problème avec les idées.

Une idée pose souvent deux gros problèmes : 
  1. Elle est fuyante est volatile, ou bien
  2. Elle nous obnubile et il est impossible de s'en défaire tant qu'on n'est pas allé jusqu'au bout.

  • L'idée fuyante et volatile : Il faut trouver un moyen de la capturer simplement. Et pour ce faire, le système Smag va la stocker d'abord de la manière la plus simple qui soit, en lui donnant un nom et une description au moyen d'un formulaire --> formulaire pour la saisie des idées ou des projets. ( !!! Possible que vous ayez un message d'erreur en consultant cette page, car elle est sur un serveur Openhift, à bas prix, et le serveur se met en veille quand il n'a pas eu de requete depuis un certain temps. Si ça vous arrive, attendez 30 secondes/1 minute et renouvelez l'essai. Si ça dure trop, merci de me prévenir, j'y jeterais un oeil!!!)
  •  Pour stocker cette idée, on va utiliser le format RDF (Resource Description Framework) qui permet de stocker un concept avec ses propriétés, sous forme d'un triplet (sujet, prédicat, objet) ou (sujet, propriété, objet) [A]. Ainsi, si on considèrent "IdentifiantIdee1" comme étant l'identifiant unique de notre idée, on pourra avoir quelque chose qui ressemble à ceci : 
[A] :
{ IdentifiantIdee1   type             Idee }
{ IdentifiantIdee1   nom            "Smag0" }
{ IdentifiantIdee1   description  "Un robot qui range ma chambre, blablabla, description succincte"  }
            |                           |                           |
           \/                          \/                          \/
        Sujet                  Propriété                 Objet

Ceci se traduit par le SUJET possède la PROPRIETE dont l'objet est .... l'OBJET ( et oui, trop dur !).

  • Les trois premières propriétés sont remplies dès le début car essentielles; la description peut-être succincte ou complète. Les autres propriétés seront à remplir au fur et à mesure de la réflexion pour compléter l'idée ou le projet. Le système Smag0 nous aidera également à trouver des correspondances, des liens entre les idées et projets. 
  • L'idée qui vous obnubile ... (Patience, on va y venir ! En attendant, penchons-nous sur la méthode pour faire évoluer une idée)

Une méthode pour faire évoluer une idée

Une fois le type, le nom, et la description remplis et stockés sous forme de triplets, on pourra compléter l'idée ou le projet avec de nouvelles propriétés [B] comme celles-ci, par exemple : 

[B] :
{ IdentifiantIdee1   demandeur    SimonF }
{ IdentifiantIdee1   développeur  DavidF }
{ IdentifiantIdee1   environnement  AppartementDeDavidF  }
            |                           |                           |
           \/                          \/                          \/
        Sujet                  Propriété                 Objet

L'ajout de propriétés est libre et dépend de l'objet, du contexte, on pourra aussi rajouter d'autres propriétés, mais cette fois-ci entre les autres éléments. Entre DavidF et SimonF, entre SimonF et sa chambre, entre la chambre de SimonF et l'appartement de DavidF , entre l'appartement de DavidF et.... DavidF , etc [C]. On va pouvoir ainsi définir l'idée ou le projet et tous les éléments qui nous semblent essentiels, avec la possibilité de les compléter au fur et à mesure des besoins.

[C] :
{ DavidF                               pereDe                SimonF }
{ SimonF                               occupe               ChambreDeSimonF }
{ ChambreDeSimonF     estUnePartieDe        AppartementDeDavidF  }
{ DavidF                               occupe                AppartementDeDavidF  }

(on pourra aussi utiliser des propriétés inverse, comme filsDe, estOccupéPar,...)


  • Vous avez peut-être remarqué que parfois, je mets des guillemets dans les triplets, parfois pas, et que des fois je mets même des majuscules au milieu des mots ? La raison en est toute simple, en RDF on utilise les guillemets pour les information que l'on appelle de type "Literal", c'est à dire une chaine de caractère, alors qu'on utilisera l'autre forme (sans guillemets) pour les ressources (ou sujets) et les propriétés, ou encore les objets définis par des ressources. [voir les principes de RDF, ce n'est pas le sujet, ici ;-)]
  • L'ajout de propriétés est donc libre et dépend du projet, disais-je, mais pour aider à faire avancer un projet ou une idée, on peut également appliquer une méthode. En fonction du type de projet, on pourra appliquer des méthodes différentes. Pour le projet d'"un robot qui range ma chambre" la méthode qui me parait la plus adaptée, est la méthode DIAMOND, enfin pour l'instant (car ça peut évoluer (voir la méthode ASPECS ), vous êtes même invités à proposer vos propres méthodes/procédures métiers adaptées à votre projet ou à une de ses parties.
  • Comme pour l'instant, y'en a pas d'autre, on va partir sur celle-ci, et vous la retrouverez sur chaque page projet (enfin jusqu'à une éventuelle modification).
  • Pour un projet informatique, on pourra en plus remplir le DOAP (Description Of A Project). doap  est au format RDF... cool, il est intégré à la base, alors ???  OUI ! pour la méthode Diamond, c'est plus difficile, mais j'y travaille
  • Un petit aparté (encore !!!) pour m'excuser de confusions qui pourraient apparaître dans mes propos, confusion entre "Idée", "Projet", "Problème". Ces notions sont effectivement différentes mais sont très liées et pourraient être traitées de la même manière au sein du système Smag0. Ainsi lorsque j'ai une idée, elle peut se transformer en projet, ou bien être utilisée pour résoudre un problème. Un projet s'attachant à créer quelque chose qui n'existe pas encore, alors que la résolution d'un problème tâchera de corriger quelque chose qui existe mais n'est pas adapté.

Smag0, une méta-application


  • De part sa conception, Smag0 devient une méta-application au sens de la méta-programmation, c'est à dire une application qui se décrit elle-même, et que l'on va utiliser pour modifier ses fonctionnalités.

exemple : Si je veux "un robot qui range ma chambre", il me faudra une interface pour communiquer avec ce robot, ou avec ma maison / mon appartement pour leur envoyer les informations que je souhaite. Je reprendrais donc l'identifiant de mon idée utilisé précédemment "IdentifiantIdee1" et je lui rajouterais une propriété "nécessite" avec l'objet "InterfaceSmag0". On pourra rajouter de la même manière que précédemment autant de propriétés que nécessaire pour décrire cette interface.

[D] :
{IdentifiantIdee1    nécessite Interface  }
{InterfaceSmag0   permet   EnvoiDInformation }
{InterfaceSmag0   permet   ReceptionInformation }
{InterfaceSmag0   communiqueAvec   AppartementDeDavid  }
{InterfaceSmag0Smartphone   type  InterfaceSmag0   InterfaceSmag0 }
{InterfaceSmag0PC   type  InterfaceSmag0   InterfaceSmag0 }

Les deux dernières lignes décrivent deux interfaces, une pour smartphone, l'autre pour PC, qui sont de type InterfaceSmag0, c'est cool, RDF !


  • On utilise donc le système Smag0 pour modifier sa propre composition. Ceci procure à Smag0 des possibilités d'évolution illimitées puisque l'idée que vous pourriez avoir pour modifier le système est déjà intégré à partir du moment où vous la saisissez. (ça ferait presque peur, non ?).
  • Cette idée n'est alors pas encore traitée, ni développée, mais elle est intégrée, et le système Smag0 se chargera de trouver les solutions, les compétences, les idées similaires pour faire avancer votre idée. Plus vous intégrez d'idées dans Smag0, plus celui-ci évolue et s'adapte à votre besoin. 
  • Smag0 est donc une méta-application car on peut l'utiliser pour modifier ses propres caractéristiques. 

Smag0 est extensible ou scalable.


  • Vous pouvez étendre le système Smag0 en créant votre propre serveur de données RDF(avec Fuseki, par exemple ou indiquer la référence vers un vocabulaire comme celui utilisé pour DOAP, une ontologie, un serveur BigData (https://www.data.gouv.fr ou http://www.data.grandlyon.com/) un endpoint Sparql comme celui de l'Insee ou DbPedia. Des tonnes de vocabulaires spécifiques à un domaine sont déjà accessibles : http://linkeddata.org/ , http://lov.okfn.org/
  • Des méthodes, des processus métiers peuvent également être stockés de cette manière.
  • Dans ce contexte, Smag0 prenant comme point de départ l'idée du "robot qui range ma chambre" peut s'adapter à un environnement plus vaste et aider à des problèmes encore plus complexes, intégrant gestion de ressources et analyses de données, comme ceux que l'on peut rencontrer dans une entreprise ou en politique. 






... à suivre... Coolitude4, une appli pour enregistrer mes idées et mes projets sur le serveur Fuseki


Aucun commentaire:

Enregistrer un commentaire