Brevet FR2857471A1 — publié le 20050114

PROCEDE DE GESTION DES COMPOSANTS LOGICIELS INTEGRES DANS UN SYSTEME EMBARQUE La présente invention se rapporte au domaine des 5 composants logiciels dans les systèmes embarqués, notamment dans les téléphones mobiles. La présente invention se rapporte plus particulièrement à un procédé de gestion des composants, 10 incluant les appels et les dialogues intercomposant. La complexité du logiciel résidant dans des systèmes embarqués tels que les téléphones portables, les appareils de photographie ou les systèmes de navigation pour automobile a incroyablement augmenté durant la dernière décennie, pour atteindre des niveaux comparables à ceux atteints dans des appareils de type ordinateur personnel PC. L'industrie, en particulier celle de la téléphonie mobile, se trouve confrontée au challenge de rapidement développer de nouveaux appareils, intégrant un très grand nombre de fonctionnalités sur une myriade de plateformes très diverses. Associés à cette croissance de la complexité, les systèmes embarqués doivent aujourd'hui répondre à un cahier de charge réunissant à la fois des contraintes de flexibilité, d'ouverture (via téléchargement ou par ajout d'accessoires ou de carte mémoires), de coût, de rapidité de développement, et de robustesse voire de sécurité. Ces contraintes se retrouvent tout particulièrement au niveau du logiciel de tels systèmes. A la vue de ces contraintes, il apparaît clairement que le challenge auquel se trouve confrontée l'industrie vis-à-vis du software n'est plus lié essentiellement à une problématique de développement (de tel ou tel logiciel ayant 2857471 2 une fonctionnalité donnée plus ou moins complexe à implémenter), mais plutôt à une problématique d'intégration et de validation (de bouts logiciels de provenances diverses), comme cela est le cas pour l'industrie du hardware depuis une décennie. Le but de la présente invention est de faciliter la tâche d'intégration et de validation de systèmes embarqués logiciels complexes grâce à une technologie qui permet d'isoler les bouts logiciels en les transformant en composants indépendants, tout en conservant au niveau du système des performances équivalent aux technologies usitées à ce jour. Et ce, tout en ouvrant le système ainsi constitué à des ajouts ou corrections une fois les appareils commercialisés. Selon l'art antérieur, les logiciels embarqués sont traditionnellement développés sous forme de couches logicielles, couches ayant éventuellement dans le cas des systèmes les plus évolués des privilèges d'accès au processeur ou à des ressources spécifiques du système. La communication intra- et inter-couche se fait de manière procédurale (appel de fonction). Quant à l'image finale du logiciel, elle est réalisée suite à une phase de compilation bout par bout et de 'linkage' de l'ensemble, comme illustré sur la figure 1, où 3 codes sont référencés 1, 2 et 3, et où l'image finale est obtenue après édition de liens ('linkage') des codes 1, 2, et 3 une fois en mémoire, prêts à l'exécution par le processeur. Ce type de développement a l'avantage de créer des systèmes très efficaces en termes d'utilisation des ressources et de rapidité. En revanche, ils cumulent un certain nombre de problèmes, problèmes devenant de plus en plus difficiles à gérer avec une complexité croissante du système. On peut citer en particulier les problèmes de test, 2857471 3 de développement par parties distinctes, de portage sur d'autres plateformes, de mise à jour, de stabilité, de flexibilité ... Également selon l'art antérieur, afin de palier ces problèmes, la plupart des acteurs du monde de l'embarqué ont adopté une approche plus proche de l'approche dite 'composant', développée pour des systèmes beaucoup plus gros et complexes (en particulier au niveau des serveurs) à des plateformes beaucoup plus vétustes. Cela a été fait en remplaçant, lorsque cela était possible, les appels procéduraux par des échanges de messages via le système d'exploitation (OS pour operating system par la suite), comme illustré figure 2, où 3 codes sont référencés 1, 2 et 3, et où les boîtes aux lettres 7 reçoivent les messages 5 envoyés par les différents codes en utilisant le router 6 et sont gérées par l'OS. Cela permet de bien mieux séparer, et de manière contrôlée, les échanges entre entités logicielles. En revanche, du fait de la lourdeur d'un tel mécanisme (en termes de développement et de demande en ressources), ce mécanisme n'est utilisé que partiellement, les appels procéduraux restant monnaie courante dans de tels systèmes, limitant ainsi l'intérêt de l'approche puisque la plupart des désavantages cités préalablement perdurent. L'art antérieur connaît également, dans le domaine des composants embarqués, par la demande de brevet PCT WO 03/009137, un procédé pour intégrer des composants logiciels pour les systèmes embarqués. Les modules y sont instanciés de manière indépendante grâce à un manager s'assurant qu'un module a bien tous les autres modules dont il a besoin avant de lancer une exécution. 2857471 4 Cependant, cette demande ne mentionne pas de communication efficace entre les composants, afin de mieux utiliser les ressources. La présente invention entend remédier aux inconvénients de l'art antérieur en mettant en place une manière de communiquer entre les entités logicielles tout aussi performante que les appels procéduraux tout en permettant à ces entités d'agir comme des composants logiciels complètement indépendants. Pour ce faire, la présente invention est du type décrit ci-dessus et elle est remarquable, dans son acception la plus large, en ce qu'elle concerne un procédé de gestion d'un système embarqué comprenant: - au moins un code originel associé à un équipement informatique, au moins un code embarqué associé audit système embarqué, au moins un processeur associé audit système embarqué, caractérisé en ce qu'il comprend les étapes consistant à : É la création d'au moins un composant logiciel 25 autonome consistant: à analyser ledit code originel pour identifier les fonctions cibles appelées par ledit code originel et non implémentées dans ledit code originel, et à déterminer pour chacune desdites fonctions non implémentées un identifiant de fonction correspondant - à remplacer les appels desdites fonctions non implémentées par l'appel d'au moins une fonction d'aiguillage PLUG implémentée par ledit code embarqué, 2857471 5 É l'exécution dudit composant sur le système embarqué, ladite fonction d'aiguillage PLUG commandant la redirection du processeur vers l'adresse de la fonction cible non implémentée correspondant audit identifiant de fonction. De préférence, il comprend les étapes suivantes supplémentaires: É à la création du composant logiciel autonome: - à analyser ledit code originel pour identifier les fonctions cibles appelées ayant comme paramètre l'adresse d'une fonction originelle définie dans le composant, et - à remplacer ce dit paramètre de call-back par l'appel d'une fonction spécifique, - à générer automatiquement ladite fonction spécifique associée, fonction fournissant un identifiant de ladite fonction originelle et appelant au moins une fonction d'aiguillage PLUG implémentée par ledit code embarqué. De préférence, il comprend les étapes suivantes supplémentaires: É à la création du composant logiciel autonome: - à analyser ledit code originel pour identifier toute information non définie dans le code originel et dont le composant à besoin afin de pouvoir être exécuté. - à ajouter la liste de ces informations manquantes dans ledit composant lors de sa génération. É à l'exécution dudit composant, à modifier le code du dudit composant une fois que les informations initialement manquantes peuvent être fournies par le système, ce afin de rendre le composant exécutable sur ledit système embarqué. 2857471 6 Avantageusement, composant réside sur ledit système embarqué. De préférence, ledit composant est téléchargé par 5 ledit code embarqué. Avantageusement, ledit composant est sous forme cryptée au moment de sa création. Dans ce cas, le procédé comprend en outre une étape de décryptage dudit composant. Avantageusement, ledit composant est remplacé par un autre composant remplissant la même fonction. De préférence, ledit composant est placé à l'exécution dans une zone mémoire du système embarqué différente de la zone mémoire dans laquelle il se trouvait initialement ladite zone mémoire d'exécution. Avantageusement, ladite zone mémoire d'exécution est accessible par ledit processeur et possède des propriétés spécifiques en termes de vitesse d'exécution, de consommation et d'accessibilité en termes de droits d'accès. De préférence, ladite fonction d'aiguillage PLUG implémente une fonction de visualisation des différents appels traités avec les paramètres associés. De plus, ladite fonction d'aiguillage PLUG implémente une fonction d'enregistrement des différents appels traités avec les paramètres associés. 2857471 7 Dans ce cas, lesdits enregistrements des appels comportent au moins une information additionnelle pour chacun desdits appels (information de temps, de contexte d'exécution, d'utilisation mémoire). De préférence, lesdits enregistrements des appels liés au composant sont utilisés pour simuler ledit composant de manière autonome. Avantageusement, lesdits enregistrements des appels liés au composant sont utilisés pour la détection d'erreurs dans le code embarqué. Dans ce cas, lesdits enregistrements de détection d'erreur sont transmis à une autre ressource informatique en charge de l'analyse des erreurs, une fois une erreur détectée. Avantageusement, les identifiants de fonctions cibles 20 non implémentées constituent des paramètres de la fonction d'aiguillage PLUG. Avantageusement, il ne comporte aucune opération de copie des paramètres de la fonction cibles non implémentées. 25 De préférence, l'identifiant de la fonction non implémentée est stocké dans une pile du processeur avant l'appel de la fonction d'aiguillage PLUG, l'identifiant ainsi stocké étant ensuite utilisé par ladite fonction d'aiguillage pour réaliser la commande de la redirection vers la fonction correspondant audit identifiant. De préférence, l'identifiant de la fonction non implémentée est stocké dans un registre du processeur avant 2857471 8 l'appel de la fonction d'aiguillage PLUG, l'identifiant ainsi stocké étant ensuite utilisé par ladite fonction d'aiguillage pour réaliser la commande de la redirection vers la fonction correspondant audit identifiant. Selon un mode de mise en oeuvre, les fonctions cibles sont implémentées sur un autre processeur de l'équipement embarqué Selon un autre mode de mise en oeuvre, les fonctions cibles sont implémentées sur une autre ressource informatique, autre que ledit système embarqué. De préférence, ladite fonction d'aiguillage PLUG réalise un ensemble d'actions spécifiques associées à la fonction cible appelée, l'ensemble des actions par fonction cible ayant été préalablement définie et stockée sur le système embarqué. Par exemple, ledit ensemble d'actions spécifiques comprend le passage d'un contexte du processeur à un autre, l'installation et l'exécution d'un autre composant, la notification d'un ou de plusieurs composants de l'appel de la fonction cible, la notification de l'utilisateur du système embarqué, ou la notification d'une autre ressource informatique. De préférence, ledit ensemble d'actions est modifiable dynamiquement. Avantageusement, ladite fonction d'aiguillage PLUG réalise en outre une étape de génération d'une action spécifique dans le cas où la fonction cible correspond à un identifiant de fonction non disponible. 2857471 9 Dans ce cas, ladite action spécifique est déterminée par un attribut de l'identifiant de la fonction non disponible. De préférence, ladite fonction d'aiguillage PLUG réalise en outre une étape de vérification des droits du composant à appeler la fonction cible. Dans ce cas, ladite vérification est réalisée à partir d'une table de droit d'accès indiquant quel composant peut appeler quelle fonction. Avantageusement, ladite table de droit d'accès est 15 modifiable par l'utilisateur final De préférence, ladite table de droit d'accès est modifiable à distance par une autre ressource informatique. Avantageusement, ladite fonction d'aiguillage PLUG commande en outre, dans le cas où ladite fonction cible correspondant à un identifiant de fonction originelle n'est pas disponible, une action de recherche d'une fonction équivalente, réalisant les mêmes fonctionnalités, mais avec un format différent de celui de la fonction cible, et d'exécution de ladite fonction équivalente. De préférence, la fonction d'aiguillage PLUG commande en outre, dans le cas où la fonction correspondant à un identifiant de fonction n'est pas disponible, une action de localisation d'une ressource informatique correspondant à ladite fonction non disponible, et de l'exécution de la fonction résultant de ladite recherche. 2857471 10 Par ailleurs, lesdits identifiants de fonction cible comportent une première information correspondant au composant logiciel implémentant ladite fonction cible et une deuxième information correspondant au numéro de la fonction cible dans ledit composant. Préférentiellement, la fonction d'aiguillage PLUG est réalisée à partir d'au moins une table de correspondance entre l'identifiant de fonction cible, et l'adresse de la fonction cible. En outre, ladite table de correspondance est subdivisée en une première table de correspondance entre ladite information correspondant au composant logiciel et le composant implémentant ladite fonction cible, et, pour chacun desdits composants, une deuxième table de correspondance entre ledit numéro de la fonction et l'adresse de ladite fonction cible dans le composant correspondant. De préférence, lesdites deuxièmes tables sont générées lors de la création du composant. Avantageusement, lesdites deuxièmes tables sont 25 enregistrées en mémoire morte. De préférence, caractérisé en ce que ladite première table est enregistrée en mémoire vive. De préférence, l'installation dudit composant est conditionnée à une autorisation préalable. Avantageusement, l'exécution dudit composant est conditionnée à une autorisation préalable. 2857471 11 De plus, l'autorisation préalable est conditionnée par l'adéquation entre une clé détenue par le système embarqué (clé système) et une clé détenue par le composant à exécuter (clé composant), la clé système pouvant être calculée à partir d'une information spécifiant de manière unique le dit système embarqué. En outre, ,lorsque le composant doit être exécuté par le système embarqué, une notification est fournie à une autre ressource informatique et en ce que cette autre ressource informatique, suite à cette notification, transmet une autorisation ou un refus d'exécution dudit composant au système embarqué. De préférence, ladite autre ressource informatique suite à ladite notification, transmet une autorisation ou un refus d'exécution dudit composant au système embarqué. De plus, l'autorisation transmise par l'autre ressource informatique inclut une clé (clé externe) qui est combinée à la clé composant et à la clé système afin d'autoriser l'exécution dudit composant sur le système embarqué. De préférence, l'autorisation transmise par l'autre ressource informatique est liée au bon déroulement d'une transaction financière au niveau de l'autre ressource informatique. Avantageusement, lesdites clés externes sont sauvegardées dans le système embarqué avant son déploiement commercial, éventuellement suite à une transaction financière. 2857471 12 De préférence, lesdites clés externes sont sauvegardées dans le système embarqué suite à une transaction financière. De plus, ledit composant inclut au moins une information de qualité de service. De préférence, ladite information de qualité de 10 service est utilisée par le système embarqué pour allouer des ressources avant l'exécution dudit composant. Avantageusement, ladite information de qualité de services est le besoin en mémoire vive du composant pour son fonctionnement incluant une information de besoin minimal, une information de besoin moyen et une information de besoin optimal pour son fonctionnement, la liste des autres composants (composants associés) dont a besoin le dit composant pour son fonctionnement, une information de numéro de version souhaitée par composant associé. De préférence, le système embarqué ne lance pas l'exécution du composant si les composants associés ne répondent pas au numéro de version indiqué par ledit composant. Selon un autre mode de réalisation, le système embarqué ne lance pas l'exécution du composant si les composants associés ne répondent pas à un numéro de version supérieur à celui indiqué par ledit composant. Avantageusement, ladite information de qualité de services est le besoin en puissance processeur dudit composant. 2857471 13 De plus, le système embarqué modifie la fréquence du processeur du système embarqué en fonction dudit besoin en puissance processeur. En outre, ledit système embarqué décide sur quelle ressource informatique du système embarqué exécuter ledit composant selon les ressources disponibles des différentes ressources informatiques De préférence, ledit système embarqué décide de faire exécuter le composant sur l'une ou l'autre de ses ressources informatiques selon la disponibilité de processing de chaque ressource informatique. Avantageusement, ledit système embarqué décide de faire exécuter le composant sur une ou l'autre de ses ressources informatiques afin de minimiser la consommation en puissance du système embarqué. Selon un mode de mise en oeuvre, si le système embarqué ne peut garantir les besoins exprimés par le composant dans au moins une information de qualité de service, le système embarqué refuse l'exécution dudit composant. De préférence, ledit composant inclut au moins une information permettant de spécifier les fonctionnalités réalisées par ledit composant (nom du composant, version, les listes des fonctions implémentées par le composant...). De plus, le système embaEgihé apte à fournir la liste des composants disponibles sur ledit système embarqué ainsi que les informations composants associées à une autre 2857471 14 ressource informatique en ayant fait la demande au préalable. De préférence, le code complet devant être exécuté par ledit système embarqué est décomposé en composants afin de minimiser le nombre de fonctions cibles non implémentées par ledit composant. De plus, la décomposition en composants du système 10 initial est faite en corrélant la taille des composants avec leur probabilité d'être modifiés par la suite. L'invention concerne également un système non-embarqué simulant un système embarqué comportant au moins un moteur, caractérisé en ce que ledit moteur réalise les étapes du procédé L'invention se rapporte également à un système embarqué comportant au moins un moteur, caractérisé en ce que les composants inclus dans les mémoires sont obtenus conformément au procédé On comprendra mieux l'invention à l'aide de la description, faite ci-après à titre purement explicatif, d'un mode de réalisation de l'invention, en référence aux figures annexées: - la figure 1 illustre un mode de gestion de différents codes selon l'art antérieur et un principe de 30 linkage; la figure 2 illustre un mode de gestion de différents codes selon l'art antérieur et un système de messages; 2857471 15 - la figure 3 illustre le mode de gestion des composants selon l'invention; - la figure 4 illustre une vue générale de la structure d'un composant selon l'invention; - la figure 5 illustre les états principaux des composants selon l'invention; la figure 6 illustre l'architecture du moteur selon l'invention; - la figure 7 illustre le principe de redirection 10 grâce au PROXY ou PLUG. Selon l'invention, illustré figure 3, les 3 codes 1, 2 et 3 peuvent être gérés de façon tout à fait nouvelle, grâce aux éléments référencés sur la figure: 34: Entité en charge de l'aiguillage et du contrôle des différentes communications (PLUG) entre les composants 35: Data base contenant informations sur les différents composants 36: Manager, en charge de l'activation et de la 20 désactivation des différents composants 37: Appel procédural redirigé vers le PLUG du moteur logiciel En référence à cette figure, le principe de base de 25 l'invention est le suivant: - un code initial standard (compilable de manière autonome) est retravaillé de manière automatique (préprocessing) afin que toutes les utilisations de ressources externes à ce code initial soit remplacées par: - une redirection du processeur vers une entrée unique par composant, d'un code appelé le PROXY ou le PLUG indifféremment. La valeur de cette entrée unique pourra être modifié par la suite lors de l'activation du composant sur le système embarqué. 2857471 16 - l'ajout d'information dans le contexte du processeur avant cette redirection, information permettant de connaître la ressource externe demandé (par exemple numéro du composant demandé et le service associé). Le code ainsi généré est compilable et linkable (édition de lien) de manière autonome. A ce code, on ajoute lors de cette phase de préprocessing un certain nombre d'informations supplémentaires qui y seront accolées afin de constituer ce que l'on appelle un composant, en particulier des informations de prototypage des services fournis par le composant. Ainsi, un composant ne peut communiquer avec le reste du système que par l'intermédiaire du PLUG. - un moteur se trouve sur le système embarqué et permet d'activer les composants en conservant une information sur les services qu'ils implémentent et permet surtout leur communication via le PLUG. Le PLUG est un bout logiciel, qui, en mode standard, en quelques instructions processeur, récupère les informations de la fonction cible demandée par un composant et fait 'sauter' le processeur directement à l'emplacement du code ou cette fonction (service) se trouve. Grâce à ce mécanisme, les entités logicielles se trouvent complètement isolées du reste du système via le PLUG. Le PLUG peut, selon la configuration du système et les contraintes associées, ajouter des fonctionnalités de contrôle de flux de communication, de redirection (entre différents processeurs ou entre composants de natures différentes ou de privilèges différents), de remplacement de composants, de traduction d'un langage à un autre, de passerelle vers une autre entité d'exécution (autre tache du 2857471 17 processeur, autre zone mémoire, autre processeur, carte à puce, réseau, accessoires). Cette technologie permet ainsi de récupérer tous les avantages liés à l'utilisation d'une approche composant (facilité de portage, de test, de maintenant, stabilité, sécurité, flexibilité de la configuration logicielle, flexibilité au niveau de l'architecture hardware...) sans aucun compromis au niveau performance ni contrainte pour le développeur. D'autres part, les composants logiciels étant générés de manières indépendantes, ils peuvent être inter-changés, modifiés, mis à jour ou ajoutés sans aucun impact sur le reste du système. Avec ce principe, la décomposition en de tels composants peut par exemple être optimisée afin de minimiser le nombre de fonction cibles non implémentées ou selon une corrélation entre la taille du composant et sa probabilité d'être modifié. Cette technologie permet donc par exemple de remplacer un composant par un autre remplissant la même fonction ou d'associer des droits sur les composants directement gérés par le PLUG, pour savoir quel composant est autorisé à appeler quel autre. Le PLUG peut aussi être implémenté de façon à pouvoir connaître et éventuellement enregistrer les appels qu'il traite, avec les différents paramètres associés. Ce système d'enregistrement permet alors de simuler un composant en l'assimilant aux appels de fonctions réalisés, par exemple dans le but de détecter d'éventuelles erreurs dans le code embarqué. Une fois une erreur détectée, ces enregistrements de détection d'erreur sont ensuite transmis à une autre ressource informatique en charge de l'analyse des erreurs. 2857471 18 Ces enregistrements des appels peuvent également comporter des informations supplémentaires pour chacun de ces appels. Ces informations peuvent être des informations de temps, de contexte d'exécution, d'utilisation mémoire ou tout autre information nécessaire à la traçabilité et à la gestion des composants. Illustré figure 4, un composant logiciel selon l'invention est un bout logiciel, généré de manière à être complètement isolé, à l'exécution, du reste du système si ce n'est via les échanges de requêtes et de réponses de services vis-à-vis d'autres composants. Par exemple, dans le cas d'un composant codé en langage C, (composant BPlug), aucun échange, qu'il soit explicite (via un appel de fonction par exemple) ou implicite (via l'utilisation de variable globale, ...) n'est permis. Le composant est indépendant, c'est un bloc homogène incluant des données et des instructions processeurs, et ce, même à l'exécution. Le moyen d'accéder à un service d'un composant est appelé l'interface. L'interface peut en particulier être décrite via le langage IDL, dédié à cet usage. Selon le type des différents composants, cette interface est implémentée par un certain nombre de fonctions, de méthodes, ... Par exemple, l'interface de services fournis par un composant B-Plug est implémentée sous la forme d'un ensemble de fonction C, qui peuvent être appelées (via le PLUG) par d'autres composants (pour peu qu'ils aient les droits d'accès associés). 2857471 19 L'implémentation des services, à proprement parler, se trouve, elle, dans le corps du composant. Le corps du composant peut être amené à utiliser des services d'autres composants. Exemple: le service 'ALARME ' génère une action spécifique à un instant donné, préprogrammé. L'interface du composant Alarme permet au client de: - définir quelle action enclencher par l'alarme, - définir l'instant où cette action doit être déclenchée. En addition de l'interface et du corps du composant, un certain nombre d'information sont rajoutées au composant, lors de sa génération. Ces informations seront utilisées par la suite par le moteur, tournant sur le système. Un composant peut ainsi par exemple inclure les informations comme: - le type du composant (binaire (codé en C) , JAVA, ...), descriptif du service fourni, - liste des services et ressources nécessaires pour l'exécution du composant, - privilège, droits d'accès, manière d'être accédé (dans le contexte de l'appelant, dans le contexte du composant...). Plus particulièrement, le composant inclut un certain nombre d'informations, dites de qualité de service qui vont être utilisées par le système embarqué pour allouer aux composants des ressources avant son exécution. Ces informations de qualité de service peuvent être: 2857471 20 le besoin en mémoire vive du composant pour son fonctionnement sous forme de besoin minimal, besoin moyen et besoin optimal, les listes des autrescomposants (composants associés) dont a besoin le composant pour son fonctionnement ainsi que les numéros de version de ces composants associés. Il faut noter que le système embarqué ne lancera pas l'exécution du composant si les composants associés ne répondent pas au numéro de version supérieur ou égal à celui indiqué par le composant. - le besoin en termes de puissance processeur du composant. Il faut noter qu'éventuellement, le système embarqué modifie la fréquence du processeur du système embarqué en fonction des besoins, notamment en puissance, du composant ou des composants associés. Il peut aussi décider de faire exécuter le composant sur une ou l'autre de ses ressources informatiques selon la disponibilité de processing des ressources. D'une façon générale, le système embarqué peut décider des ressources d'exécution afin de minimiser sa consommation en puissance. Toutes ces informations de qualité de service, et la gestion effectuée par le système embarqué permettent alors à celui-ci de refuser l'exécution d'un composant s'il ne peut garantir les besoins exprimés dans les informations de qualité de service. Par ailleurs, le composant inclut un certain nombre d'informations (information composant) permettant de spécifier les fonctionnalités réalisées par le composant (nom du composant, version, les listes des fonctions implémentées par le composant...). Ces informations composant ainsi que la liste des composants disponibles peuvent être 2857471 21 fournies à une autre ressource informatique par le système embarqué, si une demande a été faite au préalable. Les principaux états des composants selon l'invention 5 sont illustrés figure 5. L'étape 51 est une étape de téléchargement où un composant peut être téléchargé dans le système. Une étiquette peut être généré par le système à ce moment pour indiquer un certain nombre de propriétés (en particulier de sécurité) liées au composant. Tout type de téléchargement peut être utilisé lors de cette étape. Il faut noter que cette étape de téléchargement n'est pas absolument nécessaire, puisque le composant peut bien sûr déjà résider sur le système embarqué. Lors de l'étape 52, le composant est ensuite installé. Un certain nombre d'actions sont réalisées afin de permettre au composant d'être activé facilement par la suite. Éventuellement, lors de cette installation du composant, ou au moment de son téléchargement, celui-ci peut-être sous forme cryptée pour des raisons de sécurité. Les étapes d'exécution du composant comprendront alors dans ce cas, en plus, une étape de décryptage. Plus précisément, l'installation ou l'exécution du composant peut être conditionnée à une autorisation préalable. Dans ce cas, l'autorisation est accordée en cas d'adéquation entre une clé détenue par le système embarqué (clé système) et une clé détenue par le composant à exécuter (clé composant). La clé système peut par exemple être 2857471 22 calculée à partir d'une information spécifiant de manière unique le système embarqué. Au moment de l'exécution du composant par le système embarqué, une notification est fournie à une autre ressource informatique. Suite à cette notification, celle-ci transmet alors une autorisation ou un refus d'exécution du composant au système embarqué. Les autorisations peuvent par exemple être sous la forme d'une clé externe à combiner avec la clé système et la clé composant. Elles peuvent être délivrées gratuitement, ou sont liées à une transaction financière, avant ou après la commercialisation du système embarqué. Lors de l'étape 53, lorsqu'un des services fournis par un composant est demandé par une partie du système ou quand l'utilisateur souhaite activer un certain service, le composant associé est activé. Le composant est exécuté dans un conteneur, dont la forme dépend du type du composant. Le PLUG est quant à lui en charge de l'aiguillage des différents échanges de services entre les composants. Le PLUG peut aussi être connecté au code résiduel, non compilé sous forme de composant selon l'invention. La base de données 54 enregistre les états des différents composants (installable, installé, activé, ...) ainsi qu'un certain nombre d'autres informations (descriptifs des services, des versions associées, des paramètres de sécurité, de la localisation du service...). Une fois installé, un composant est toujours enregistré auprès de la base de données de son unité de process. 2857471 23 Il faut noter par exemple que la table de droit d'accès est modifiable par l'utilisateur final ou à distance, par une autre ressource informatique. Lors d'une étape 55, un composant peut aussi être désinstallé ou remplacé. Le remplacement peut se faire de manière statique (c'est-à-dire alors que le composant n'était pas actif) ou de manière dynamique (pendant l'activation). Par ailleurs, il faut noter que lors de la création du composant à partir du code originel, si des fonctions cibles ont comme paramètre l'adresse d'une fonction définie dans le composant lui-même, ce paramètre est remplacé par l'appel d'une fonction spécifique appelée fonction de callback. Cette fonction fournit un identifiant de la fonction initiale et appelle comme précédemment la fonction d'aiguillage PLUG. De la même façon, à la création du composant logiciel, on identifie toute information non définie dans le code originel et dont le composant à besoin afin de pouvoir être exécuté. Ces informations sont alors rajoutées dans le composant lors de sa génération. Une fois que les informations manquantes peuvent être fournies par le système, le code du composant est modifié afin de le rendre exécutable. D'autres composants peuvent être liés au composant 30 logiciel. En particulier: Un conteneur est responsable de l'exécution d'un composant, un même conteneur pouvant être partagé par tous les composants d'un même type; 2857471 24 Un loader est un composant spécifique permettant de faire un transfert (copie) d'un composant d'une localisation à une autre (exemple: copie d'une mémoire à une autre) ; Un provisionner est en charge de vérifier un certain nombre de paramètre d'un composant afin de pouvoir le télécharger dans le système; Un verifier vérifie l'intégrité du composant, ses droits, ... Illustré figure 6, le moteur selon l'invention est architecturé en quatre parties distinctes. Le downloader est en charge du téléchargement d'un composant logiciel dans le système. Il interagit avec: - les couches de transports du système quelles qu'elles soient, - le provisionneur qui accepte ou refuse le 20 téléchargement, - le ou les systèmes de stockage disponibles dans le système. Le manager inclut: - l'installeur: en charge de l'installation et de la désinstallation des composants logiciels, - l'activateur: en charge d'activer ou de désactiver des composants. La base de données est en charge de rassembler les informations sur les composants installés et activés dans le système. 2857471 25 Enfin, le PLUG est en charge de la communication entre les différents composants. Son implémentation est décrite plus largement par la suite. Le principe de redirection grâce au PLUG est illustré figure 7. Tout d'abord, le composant est installé en mémoire. Une partie de la mémoire du système est réservée au moteur. Le manager du moteur est en charge d'installer les composants dans cette zone réservée. Les composants sont stockés les uns après les autres. De plus, lors de son exécution, le composant est placé dans une zone mémoire du système embarqué différente de la zone mémoire dans laquelle il se trouvait initialement, dite zone mémoire d'exécution. Cette zone mémoire d'exécution possède des propriétés spécifiques en termes de vitesse d'exécution, de consommation et d'accessibilité particulièrement adaptées au composant. Les composants peuvent être aussi désinstallés. Le manager peut ainsi être amené à faire des opérations de défragmentation de la zone de mémoire réservée. Les composants sont ensuite connectés au PLUG. Lors de la génération du composant, tous les accès externes de ce composant ont été redirigés vers une adresse unique sans signification (par exemple OxFFFFFFF). A l'installation, le composant se voit attribué une adresse d'entrée dans le PLUG qui va être substituée à l'adresse sans signification. Ainsi, tout appel externe du composant est transformé en fait à un appel de l'adresse d'entrée au PLUG dédiée au composant. 2857471 26 A l'activation, le manager du moteur fournie une table d'aiguillage au PLUG indiquant où se trouve les composants et où se trouvent leurs informations (en particulier les différents services fournies par chaque composant). Lorsqu'un service externe est demandé par un composant, le processeur est ainsi redirigé vers l'adresse d'entrée du PLUG lié au composant, alors que deux informations ou identifiants ont été rajoutées, grâce à la génération du composant, selon l'invention: le numéro du composant souhaité ainsi que le numéro du service voulu, ou fonction cible. Grâce à ces deux informations et aux informations fournies par le manager, le PLUG va rediriger (via une instruction du type JUMP et non CALL c'est-à-dire sans aucun nouvel appel de fonction ni aucune copie d'information liée au service demandé) le processeur vers l'endroit où se trouve le service désiré. La fonction d'aiguillage prend donc en paramètre au moins les deux identifiants ci-dessus correspondant à des fonctions cibles non implémentées ou aux fonctions de call-back dans le composant initial. Ces identifiants sont stockés dans la pile ou dans un registre du processeur, utilisée par la fonction d'aiguillage PLUG pour la redirection vers les fonctions correspondantes. Cette fonction d'aiguillage PLUG est réalisée à partir d'une table de correspondance Root Table entre les identifiant des fonctions cibles et les adresses des fonctions cibles. Ceci est réalisé par exemple sous la forme de deux sous-tables, une première faisant correspondre l'information associée au composant logiciel et le composant implémentant la fonction cible, et une deuxième, faisant correspondre le numéro de la fonction et son adresse dans le composant associé. 2857471 27 Ces sous-tables sont générées lors de la création du composant et enregistrées dans la mémoire morte avec le code du composant, alors que la table principale Root Table est enregistrée en mémoire vive. Ainsi, supposons qu'un composant A souhaite appeler la fonction DrawLine d'un composant graphique 2D. Lors de la génération du composant, l'appel de la fonction DrawLine du code initial du composant est remplacé par l'appel, avec les mêmes paramètres que si on appelait DrawLine, du PLUG. En plus, l'information du composant souhaité (composant graphique 2D) ainsi que le numéro du service voulu (service DrawLine) sont ajoutés. A l'exécution, l'appel de la fonction DrawLine sera en fait remplacé par un aiguillage d'abord vers le PLUG, qui, grâce au numéro du composant et du service pourra rediriger le processeur vers la fonction DrawLine. La fonction d'aiguillage PLUG réalise en outre un certain nombre d'actions dépendant de la fonction cible appelée. La liste des actions par fonction cible est préalablement définie et stockée sur le système embarqué. Les actions pourront être par exemple le passage d'un contexte du processeur à un autre, l'installation et l'exécution d'un autre composant, la notification d'un ou de plusieurs composants de l'appel de la fonction cible, la notification de l'utilisateur du système embarqué ou la notification d'une autre ressource informatique. Grâce au PLUG, et ce de manière statique ou dynamique, il est ainsi possible de: - rediriger le flot de communication d'un composant à un autre, 2857471 28 - de remplacer un composant par un autre (débuggé, ou mis à jour, ou correspondant à une autre implémentation), - de traduire la demande de service d'un langage à un autre (dans l'exemple précédent, le PLUG pouvait traduire la demande de la fonctionnalité DrawLine dans un autre langage et envoyer cette demande, traduite, au composant adéquat), de rediriger la demande vers un autre processeur (par exemple, la fonction DrawLine pourrait être implémentée sur un processeur graphique dédié. A ce moment-là, le PLUG est relié, via un transport quelconque à un autre PLUG résidant sur le processeur graphique, et le deux PLUG peuvent se passer de manière transparente les demandes et réponses de service), dans le système embarqué, ou hors du système embarqué. Notons que dans le cas de gestion dynamique, les modifications pourront par exemple provenir d'indication d'une autre ressource informatique ou de l'utilisateur du système embarqué sous forme de configuration. Par ailleurs, si le composant appelé par le PLUG n'est pas disponible, celui-ci génère une action spécifique, déterminée par l'identifiant du composant non disponible. Ces actions pourront être la création d'un message d'alerte, ou la recherche d'un composant réalisant la même fonction, au même format ou dans un autre format que celui de la fonction cible initiale. Il faut noter que la communication entre les composants peut se faire selon une couche de transport (transport layer) quelconque. La couche de transport peut ainsi être la voie radio dans le cas d'un téléphone mobile (à ce moment-là, un composant peut se trouver sur le réseau, au niveau de l'opérateur, alors que l'autre se trouve dans 2857471 29 le téléphone mobile) ou encore un lien type Bluetooth ou Wifi permettant: - de gérer des Personal Area Network (par exemple, l'écran se trouve sur un autre appareil relié au téléphone 5 via un lien radio type Bluetooth), - de contrôler les droits d'accès entre les différents composants, - d'ajouter de la visibilité en explicitant toutes les communications ayant lieu via le PLUG, pour des raisons 10 d'aide au développement, - de rediriger une partie des communications afin d'émuler les services associés sur un émulateur type PC, - ou tout autre application utilisant le fait que tout le flot de communication transitant entre un composant et le reste du système peut être manipulé très facilement au niveau du PLUG. Notons enfin que la décomposition en composants de l'invention peut être également utilisée par un système non-20 embarqué, si celui-ci simule un système embarqué. L'invention est décrite dans ce qui précède à titre d'exemple. Il est entendu que l'homme du métier est à même de réaliser différentes variantes de l'invention sans pour autant sortir du cadre du brevet. REVENDICATIONS 1. Procédé de gestion d'un système embarqué comprenant: - au moins un code originel associé à un équipement informatique, au moins un code embarqué associé audit système embarqué, au moins un processeur associé audit système 10 embarqué, caractérisé en ce qu'il comprend les étapes consistant à : É la création d'au moins un composant logiciel autonome consistant: à analyser ledit code originel pour identifier les fonctions cibles appelées par ledit code originel et non implémentées dans ledit code originel, et à déterminer pour chacune desdites fonctions non implémentées un identifiant de fonction correspondant, - à remplacer les appels desdites fonctions non implémentées par l'appel d'au moins une fonction d'aiguillage PLUG implémentée par ledit code embarqué, É l'exécution dudit composant sur le système embarqué, ladite fonction d'aiguillage PLUG commandant la redirection du processeur vers l'adresse de la fonction cible non implémentée correspondant audit identifiant de fonction. 2. Procédé de gestion d'un système embarqué selon la 30 revendication 1, et comprenant les étapes suivantes supplémentaires: É à la création du composant logiciel autonome: 2857471 31 à analyser ledit code originel pour identifier les fonctions cibles appelées ayant comme paramètre l'adresse d'une fonction originelle définie dans le composant, et à remplacer ce dit paramètre de call-back par l'appel d'une fonction spécifique, - à générer automatiquement ladite fonction spécifique associée, fonction fournissant un identifiant de ladite fonction originelle et appelant au moins une fonction d'aiguillage PLUG implémentée par ledit code embarqué. 3. Procédé de gestion d'un système embarqué selon la revendication 1, et comprenant les étapes suivantes supplémentaires: É à la création du composant logiciel autonome: - à analyser ledit code originel pour identifier toute information non définie dans le code originel et dont le composant à besoin afin de pouvoir être exécuté, - à ajouter la liste de ces informations manquantes dans ledit composant lors de sa génération, É à l'exécution dudit composant, à modifier le code du dudit composant une fois que la (ou les) information(s) initialement manquante(s) peut (peuvent) être fournie(s) par le système, ce afin de rendre le composant exécutable sur ledit système embarqué. 4. Procédé de gestion d'un système embarqué selon la revendication 1, caractérisé en ce que ledit composant réside sur ledit système embarqué. 5. Procédé de gestion d'un système embarqué selon la revendication 1, caractérisé en ce que ledit composant est téléchargé par ledit code embarqué. 2857471 32 6. Procédé de gestion d'un système embarqué selon la revendication 1, caractérisé en ce que ledit composant est sous forme cryptée au moment de sa création. 7. Procédé de gestion d'un système embarqué selon la revendication 6, caractérisé en ce qu'il comporte en outre une étape de décryptage dudit composant. 8. Procédé de gestion d'un système embarqué selon la 10 revendication 1, ledit composant est remplacé par un autre composant remplissant la même fonction. 9. Procédé de gestion d'un système embarqué selon la revendication 1, caractérisé en ce que ledit composant est placé à l'exécution dans une zone mémoire du système embarqué, zone mémoire dite d'exécution, zone différente de la zone mémoire dans laquelle il se trouvait initialement. 10. Procédé de gestion d'un système embarqué selon la revendication 9, caractérisé en ce que ladite zone mémoire d'exécution est accessible par ledit processeur et possède des propriétés spécifiques en termes de vitesse d'exécution, de consommation, d'accessibilité ou en termes de droits d'accès. 11. Procédé de gestion d'un système embarqué selon la revendication 1, caractérisé en ce que ladite fonction d'aiguillage PLUG implémente une fonction de visualisation des différents appels traités avec les paramètres associés. 12. Procédé de gestion d'un système embarqué selon la revendication 1, caractérisé en ce que ladite fonction d'aiguillage PLUG implémente une fonction d'enregistrement des différents appels traités avec les paramètres associés. 2857471 33 13. Procédé de gestion d'un système embarqué selon la revendication 12, caractérisé en ce que lesdits enregistrements des appels comportent au moins une information additionnelle pour chacun desdits appels. 14. Procédé de gestion d'un système embarqué selon la revendication 13, caractérise en ce que ladite information additionnelle est une information de temps. 15. Procédé de gestion d'un système embarqué selon la revendication 13, caractérise en ce que ladite information additionnelle est une information de contexte d'exécution. 16. Procédé de gestion d'un système embarqué selon la revendication 13, caractérise en ce que ladite information additionnelle est une information d'utilisation mémoire. 17. Procédé de gestion d'un système embarqué selon la revendication 12, caractérisé en ce que lesdits enregistrements des appels liés au composant sont utilisés pour simuler ledit composant de manière autonome. 18. Procédé de gestion d'un système embarqué selon la revendication 12, caractérisé en ce que lesdits enregistrements des appels liés au composant sont utilisés pour la détection d'erreurs dans le code embarqué. 19. Procédé de gestion d'un système embarqué selon la revendication 18, caractérisé en ce que lesdits enregistrements de détection d'erreur sont transmis à une autre ressource informatique en charge de l'analyse des erreurs, une fois une erreur détectée. 2857471 34 20. Procédé de gestion d'un système embarqué selon la revendication 1, caractérisé en ce que les identifiants de fonctions cibles non implémentées constituent des paramètres de la fonction d'aiguillage PLUG. 21. Procédé de gestion d'un système embarqué selon la revendication 1, caractérisé en ce qu'il ne comporte aucune opération de copie des paramètres de la fonction cibles non implémentées. 22. Procédé de gestion d'un système embarqué selon la revendication 1, caractérisé en ce que l'identifiant de la fonction non implémentée est stocké dans une pile du processeur avant l'appel de la fonction d'aiguillage PLUG, l'identifiant ainsi stocké étant ensuite utilisé par ladite fonction d'aiguillage pour réaliser la commande de la redirection vers la fonction correspondant audit identifiant. 23. Procédé de gestion d'un système embarqué selon la revendication 1, caractérisé en ce que l'identifiant de la fonction non implémentée est stocké dans un registre du processeur avant l'appel de la fonction d'aiguillage PLUG, l'identifiant ainsi stocké étant ensuite utilisé par ladite fonction d'aiguillage pour réaliser la commande de la redirection vers la fonction correspondant audit identifiant. 24. Procédé de gestion d'un système embarqué selon la revendication 1, caractérisé en ce que les fonctions cibles sont implémentées sur un autre processeur de l'équipement embarqué 2857471 35 25. Procédé de gestion d'un système embarqué selon la revendication 1, caractérisé en ce que les fonctions cibles sont implémentées sur une autre ressource informatique, autre que ledit système embarqué. 26. Procédé de gestion d'un système embarqué selon la revendication 1, caractérisé en ce que ladite fonction d'aiguillage PLUG réalise un ensemble d'actions spécifiques associées à la fonction cible appelée, l'ensemble des actions par fonction cible ayant été préalablement définie et stockée sur le système embarqué. 27. Procédé de gestion d'un système embarqué selon la revendication 26, caractérisé en ce que ledit ensemble d'actions spécifiques comprend le passage d'un contexte du processeur à un autre. 28. Procédé de gestion d'un système embarqué selon la revendication 26, caractérisé en ce que ledit ensemble d'actions spécifiques comprend l'installation et l'exécution d'un autre composant. 29. Procédé de gestion d'un système embarqué selon la revendication 26, caractérisé en ce que ledit ensemble d'actions spécifiques comprend la notification d'un ou de plusieurs composants de l'appel de la fonction cible. 30. Procédé de gestion d'un système embarqué selon la revendication 26, caractérisé en ce que ledit ensemble d'actions spécifiques comprend la notification de l'utilisateur du système embarqué. 31. Procédé de gestion d'un système embarqué selon la revendication 26, caractérisé en ce que ledit ensemble 2857471 36 d'actions spécifiques comprend la notification d'une autre ressource informatique. 32. Procédé de gestion d'un système embarqué selon la 5 revendication 26, caractérisé en ce que ledit ensemble d'actions est modifiable dynamiquement. 33. Procédé de gestion d'un système embarqué selon la revendication 1, caractérisé en ce que ladite fonction d'aiguillage PLUG réalise en outre une étape de génération d'une action spécifique dans le cas où la fonction cible correspond à un identifiant de fonction non disponible. 34. Procédé de gestion d'un système embarqué selon la revendication 33, caractérisé en ce que ladite action spécifique est déterminée par un attribut de l'identifiant de la fonction non disponible. 35. Procédé de gestion d'un système embarqué selon la revendication 1, caractérisé en ce que ladite fonction d'aiguillage PLUG réalise en outre une étape de vérification des droits du composant à appeler la fonction cible. 36. Procédé de gestion d'un système embarqué selon la revendication 35, caractérisé en ce que ladite vérification est réalisée à partir d'une table de droit d'accès indiquant quel composant peut appeler quelle fonction. 37. Procédé de gestion d'un système embarqué selon la 30 revendication 36, caractérisé en ce que ladite table de droit d'accès est modifiable par l'utilisateur final 38. Procédé de gestion d'un système embarqué selon la revendication 36, caractérisé en ce que ladite table de 2857471 37 droit d'accès est modifiable à distance par une autre ressource informatique. 39. Procédé de gestion d'un système embarqué selon la revendication 1, caractérisé en ce que ladite fonction d'aiguillage PLUG commande en outre, dans le cas où ladite fonction cible correspondant à un identifiant de fonction originelle n'est pas disponible, une action de recherche d'une fonction équivalente, réalisant les mêmes fonctionnalités mais avec un format différent de celui de la fonction cible, et d'exécution de ladite fonction équivalente. 40. Procédé de gestion d'un système embarqué selon la revendication 1, caractérisé en ce que la fonction d'aiguillage PLUG commande en outre, dans le cas où la fonction correspondant à un identifiant de fonction n'est pas disponible, une action de localisation d'une ressource informatique correspondant à ladite fonction non disponible, et de l'exécution de la fonction résultant de ladite recherche. 41. Procédé de gestion d'un système embarqué selon la revendication 1, caractérisé en ce que lesdits identifiants de fonction cible comportent une première information correspondant au composant logiciel implémentant ladite fonction cible et une deuxième information correspondant au numéro de la fonction cible dans ledit composant. 42. Procédé de gestion d'un système embarqué selon la revendication 1, caractérisé en ce que la fonction d'aiguillage PLUG est réalisée à partir d'au moins une table de correspondance entre l'identifiant de fonction cible, et l'adresse de la fonction cible. 2857471 38 43. Procédé de gestion d'un système embarqué selon les revendications 41 et 42, caractérisé en ce que ladite table de correspondance est subdivisée en une première table de correspondance entre ladite information correspondant au composant logiciel et le composant implémentant ladite fonction cible, et, pour chacun desdits composants, une deuxième table de correspondance entre ledit numéro de la fonction et l'adresse de ladite fonction cible dans le composant correspondant. 44. Procédé de gestion d'un système embarqué selon la revendication 43, caractérisé en ce que lesdites deuxièmes tables sont générées lors de la création du composant. 45. Procédé de gestion d'un système embarqué selon la revendication 43, caractérisé en ce que lesdites deuxièmes tables sont enregistrées en mémoire morte. 46. Procédé de gestion d'un système embarqué selon la revendication 43, caractérisé en ce que ladite première table est enregistrée en mémoire vive. 47. Procédé de gestion d'un système embarqué selon la 25 revendication 1, caractérisé en ce que l'installation dudit composant est conditionnée à une autorisation préalable. 48. Procédé de gestion d'un système embarqué selon la revendication 1, caractérisé en ce que l'exécution dudit 30 composant est conditionnée à une autorisation préalable. 49. Procédé de gestion d'un système embarqué selon la revendication 48 ou 47, caractérisé en ce que l'autorisation préalable est conditionnée par l'adéquation entre une clé 2857471 39 détenue par le système embarqué (clé système) et une clé détenue par le composant à exécuter (clé composant), la clé système pouvant être calculée à partir d'une information spécifiant de manière unique le dit système embarqué. 50. Procédé de gestion d'un système embarqué selon la revendication 48 ou 47, caractérisé en ce que, lorsque le composant doit être exécuté par le système embarqué, une notification est fournie à une autre ressource informatique et en ce que cette autre ressource informatique, suite à cette notification, transmet une autorisation ou un refus d'exécution dudit composant au système embarqué. 51. Procédé de gestion d'un système embarqué selon la revendication 50, caractérisé en ce que ladite autre ressource informatique suite à ladite notification, transmet une autorisation ou un refus d'exécution dudit composant au système embarqué. 52. Procédé de gestion d'un système embarqué selon la revendication 48 ou 47, caractérisé en ce que, l'autorisation transmise par l'autre ressource informatique inclut une clé (clés externe) qui est combinée à la clé composant et à la clé système afin d'autoriser l'exécution dudit composant sur le système embarqué. 53. Procédé de gestion d'un système embarqué selon la revendication 48 ou 47, caractérisé en ce que l'autorisation transmise par l'autre ressource informatique est liée au bon déroulement d'une transaction financière au niveau de l'autre ressource informatique. 54. Procédé de gestion d'un système embarqué selon la revendication 52, caractérisé en ce que lesdites clés 2857471 40 externes sont sauvegardées dans le système embarqué avant son déploiement commercial, éventuellement suite à une transaction financière. 55. Procédé de gestion d'un système embarqué selon la revendication 52, caractérisé en ce que lesdites clés externes sont sauvegardées dans le système embarqué suite à une transaction financière. 56. Procédé de gestion d'un système embarqué selon la revendication 1, caractérisé en ce que ledit composant inclut au moins une information de qualité de service. 57. Procédé de gestion d'un système embarqué selon la revendication 56, caractérisé en ce que ladite information de qualité de service est utilisée par le système embarqué pour allouer des ressources avant l'exécution dudit composant. 58. Procédé de gestion d'un système embarqué selon la revendication 56, caractérisé en ce que ladite information de qualité de services est le besoin en mémoire vive du composant pour son fonctionnement. 59. Procédé de gestion d'un système embarqué selon la revendication 58, caractérisé en ce que ledit besoin en mémoire vive du composant inclut une information de besoin minimal, une information de besoin moyen et une information de besoin optimal pour son fonctionnement. 60. Procédé de gestion d'un système embarqué selon la revendication 56, caractérisé en ce que ladite information de qualité de services est la liste des autres composants 2857471 41 (composants associés) dont a besoin le dit composant pour son fonctionnement. 61. Procédé de gestion d'un système embarqué selon la revendication 60, caractérisé en ce que ladite liste des composants associés comprend une information de numéro de version souhaitée par composant associé. 62. Procédé de gestion d'un système embarqué selon la revendication 61, caractérisé en ce que le système embarqué ne lance pas l'exécution du composant si les composants associés ne répondent pas au numéro de version indiqué par ledit composant. 63. Procédé de gestion d'un système embarqué selon la revendication 61, caractérisé en ce que le système embarqué ne lance pas l'exécution du composant si les composants associés ne répondent pas à un numéro de version supérieur à celui indiqué par ledit composant. 64. Procédé de gestion d'un système embarqué selon la revendication 56, caractérisé en ce que ladite information de qualité de services est le besoin en puissance processeur dudit composant. 65. Procédé de gestion d'un système embarqué selon la revendication 64, caractérisé en ce que le système embarqué modifie la fréquence du processeur du système embarqué en fonction dudit besoin en puissance processeur. 66. Procédé de gestion d'un système embarqué selon la revendication 64, caractérisé en ce que ledit système embarqué décide sur quelle ressource informatique du système embarqué exécuter ledit composant selon les ressources 2857471 42 disponibles et les disponibilités de processing des différentes ressources informatiques 67. Procédé de gestion d'un système embarqué selon la revendication 1, caractérisé en ce que ledit système embarqué décide de faire exécuter le composant sur une ou l'autre de ses ressources informatiques afin de minimiser la consommation en puissance du système embarqué. 68. Procédé de gestion d'un système embarqué selon la revendication 56, caractérisé en ce que, si le système embarqué ne peut garantir les besoins exprimés par le composant dans au moins une information de qualité de service, le système embarqué refuse l'exécution dudit composant. 69. Procédé de gestion d'un système embarqué selon la revendication 1, caractérisé en ce que ledit composant inclut au moins une information permettant de spécifier les fonctionnalités réalisées par ledit composant. 70. Procédé de gestion d'un système embarqué selon la revendication 69, caractérisé en ce que ladite information est le nom dudit composant. 71. Procédé de gestion d'un système embarqué selon la revendication 69, caractérisé en ce que ladite information est le numéro de version dudit composant. 72. Procédé de gestion d'un système embarqué selon la revendication 69, caractérisé en ce que ladite information est la liste des fonctions implémentées par ledit composant. 2857471 43 73. Procédé de gestion d'un système embarqué selon la revendication 69, caractérisé en ce que le système embarqué est apte à fournir la liste des composants disponibles sur ledit système embarqué ainsi que les informations composants associées, à une autre ressource informatique en ayant fait la demande au préalable. 74. Procédé de gestion d'un système embarqué caractérisé en ce que le code complet devant être exécuté par ledit système embarqué est décomposé en composants obtenus selon le procédé de la revendication 1. 75. Procédé de gestion d'un système embarqué selon la revendication 74, caractérisé en ce que la décomposition en composants du système initial est faite afin de minimiser le nombre de fonctions cibles non implémentées par lesdits composants. 76. Procédé de gestion d'un système embarqué selon la revendication 75, caractérisé en ce que la décomposition en composants du système initial est faite en corrélant la taille des composants avec leur probabilité d'être modifiés par la suite. 77. Système embarqué comportant au moins un moteur, caractérisé en ce que ledit moteur réalise les étapes du procédé selon la revendication 1. 78. Système non-embarqué simulant un système embarqué comportant au moins un moteur, caractérisé en ce que ledit moteur réalise les étapes du procédé selon la revendication 1. 2857471 44 79. Moteur embarqué, caractérisé en ce qu'il réalise les étapes du procédé selon la revendication 1.