• Aucun résultat trouvé

Dans la figure 5.5, nous présentons deux propriétés de ce type déclarées dans la section properties de la description d’une implantation du composant

ABAReL et les Propriétés AADL Sommaire

Exemple 5. Dans la figure 5.5, nous présentons deux propriétés de ce type déclarées dans la section properties de la description d’une implantation du composant

systeme_ABS. La première propriété est Compute_Execution_Time assignée à la valeur 7 ms.

system systeme_ABS

end systeme_ABS;

system implementation systeme_ABS.Impl

subcomponents

capteur_pedal: device capteur_pedal;

controleur_abs: system controleur_abs.impl; actuateur_frein: device actuateur_frein;

properties

Compute_Execution_Time => 7ms applies to

controleur_abs.actionner_frein.calcul_glissement;

Required_Connection => false applies to

controleur_abs.tester_entrees.test_vitesse.out_port ;

end systeme_ABS.Impl;

system implementation controleur_abs.impl

subcomponents

tester_entrees: process tester_entrees.Impl actionner_frein: process actionner_frein.Impl;

end controleur_abs.impl;

process actionner_frein

features

etat_pedal: in event port; vitesse_r: in data port;

cmd_frein: out event data port;

end actioner_frein;

process implementation actionner_frein.Impl

subcomponents

calcul_glissement: thread calcul_glissement.impl; calcul_cmd_frein: thread calcul_cmd_frein.impl;

end actioner_frein.Impl;

thread implementation calcul_glissement.impl

end calcul_glissement.impl;

Figure 5.5 : Exemple d’une assignation de propriétés par propagation test_vitesse

Required_Connection => false applies to

controleur_abs.tester_entrees.test_vitesse.out_port ;

Compute_Execution_Time => 7 ms applies to

controleur_abs.actionner_frein.calcul_glissement;

controleur_abs

tester_entrees  actionner_frein

Cette propriété s’applique au thread calcul_glissement référencié par le chemin controleur_abs.actionner_frein.calcul_glissement qui indique que le thread calcul_glissement est un sous-composant du process actionner_frein lui-même étant un sous-composant du composant system controleur_abs. La deuxième propriété assigne la valeur fausse à la propriété Required_Connection permettant au port de sortie du thread test_vitesse d’être non lié.

L’assignation par propagation concerne également les propriétés de déploiement. Le déploiement est spécifié par les propriétés AADL: Actual_Connection_Binding, Actual_Memory_Binding et Actual_Processor_Binding pour indiquer respectivement par quel bus, mémoire ou processeur est porté une connexion, une donnée ou un processus. La valeur assignée à de telles propriétés est spécifié par une référence, via le mot clé reference, à un composant de la plateforme d’exécution (à savoir : bus, memory, processor) suivi par applies to pour désigner le chemin relatif à l’endroit de la hiérarchie auquel l’association de propriété est indiquée.

system implementation systeme_ABS.Impl

subcomponents

controleur_abs: system controleur_abs.impl; cpu1: processor cpu1.impl;

actuateur_frein: device actuateur_frein;

properties

Actual_Processor_Binding => reference cpu1 applies to

controleur_abs.actionner_frein.calcul_glissement;

end systeme_ABS.Impl;

system implementation controleur_abs.impl

subcomponents

tester_entrees: process tester_entrees.Impl actionner_frein: process actionner_frein.Impl;

end controleur_abs.impl;

process implementation actionner_frein.Impl

subcomponents

calcul_glissement: thread calcul_glissement.impl; calcul_cmd_frein: thread calcul_cmd_frein.impl;

end actioner_frein.Impl;

thread implementation calcul_glissement.impl

end calcul_glissement.impl;

Figure 5.6 : Exemple de propriété de déploiement

5.3.3 Analyse et vérification des propriétés AADL

A chaque entité architecturale AADL, nous pouvons ainsi associer des propriétés présentant des valeurs les caractérisant. Les propriétés constituent donc un aspect fondamental et important dans la description du comportement des entités AADL. Cependant, leur description reste textuelle et aucune sémantique ne leur a été proposée. Certains travaux dans la littérature [SLN+04] [Axl07] ont accordé une

Actual_Processor_Binding => reference cpu1 applies to controleur_abs.actionner_frein.calcul_glissement;

controleur_ab

actionner frein

calcul glissement

certaine importance à la prise en charge des valeurs de quelques propriétés d’exécution pour simuler le comportement des threads, ou celui d’architectures de systèmes décrit par AADL. Jusqu’à présent, aucune recherche n’a abordé la formalisation de la sémantique d’une propriété rattachée à un composant donné quelque soit son type. Nous contribuons à travers la section suivante à la solution de ce problème, en montrant la capacité du modèle proposé (ABAReL) pour d’une part, formaliser la sémantique d’une propriété AADL déclarée et d’autre part, l’analyser et la vérifier formellement en exécutant le comportement du composant auquel elle se rattache.

5.4 Prise en charge des propriétés AADL par ABAReL

ABAReL modélise les aspects syntaxiques du langage AADL ainsi que la sémantique de comportement de ses composants en particulier celle d’un thread. Ce modèle formel est extensible et permet de prendre en charge la formalisation de toutes ces propriétés AADL grâce à l’expressivité et la flexibilité de la logique de réécriture. Donc, formaliser la sémantique d’une propriété déclarée dans une description AADL implique d’une part, un enrichissement de la signature d’ABAReL (aspects syntaxiques) et d’autre part, associer une interprétation sémantique à chaque concept syntaxique introduit (aspects sémantiques). L’implémentation du modèle mathématique étendu obtenu sous RT-Maude, permettra l’analyse et la vérification de ces propriétés en tirant profit des outils qui existent autour du système Maude. Nous nous restreignons dans le cas de notre étude à la formalisation de trois types de propriétés, les plus utilisées dans le cas de l’exécution d’un thread. Notre démarche est assez générique et pourra s’appliquer à n’importe quelle déclaration de propriété.

5.4.1 Sémantique d’une propriété de type Period

Dans la déclaration AADL ci-dessous de cette propriété, nous recensons les éléments les plus importants qui peuvent être pris en charge de façon assez naturelle par notre modèle pour procéder à sa formalisation.

thread implementation Nom du composant Thread

properties

Dans une première étape, nous proposons une extension [BB+09, BBB10] de la signature du modèle mathématique ABAReL pour la prise en charge des valeurs assignées à cette propriétés, dans ce cas il s’agit des valeurs de type temps. Ces valeurs sont alors spécifiées par la théorie équationnelle TIME [ÖM96]. Dans cette théorie qui sera importée par la théorie de réécriture orientée objet temps réel ℜTh

formalisant le comportement du thread spécifié, nous retrouvons des opérations et des équations spécifiques pour gérer l’aspect temps (telles que delta et mte pour l’interprétation de l’écoulement du temps sur la configuration d’un thread).

Dans une seconde étape, nous enrichissons la spécification des configurations de ce thread par un paramètre dit Clock-P modélisant sa période capturée à partir de la déclaration de la propriété associée (Period). Toutes les règles de réécriture modélisant le comportement concurrent de ce thread doivent prendre en considération l’évolution de ce paramètre.

5.4.2 Sémantique d’une propriété de type Compute_Execution_Time

De façon assez similaire, le modèle étendu d’ABAReL traite la formalisation de la sémantique d’une propriété AADL du type Compute_Execution_Time associée à un composant de type thread. Le paramètre à rajouter dans la configuration d’un thread donné est nommé Clock-C, il sert à modéliser son temps d’exécution. Evidemment, l’évolution de ce paramètre doit également être prise en considération par toutes les règles de réécriture modélisant le comportement concurrent de ce thread.

5.4.3 Sémantique d’une propriété de type Latency

Cette propriété AADL est déclarée pour une connexion établie entre deux threads, contraignant ainsi le passage de flux de données et/ou d’événements (transmission de messages) entre ces threads. Dans une théorie de réécriture formalisant une description architecturale constituée de plusieurs threads reliés par des connexions, nous introduisons alors la sorte DlyMsg qui modélise le temps de latence du flux (récupéré de la déclaration de la propriété Latency). Nous définissons aussi

l’opérateur dly(m,t) qui indique qu’il reste t unité de temps pour l’arrivée du message m à destination [BBB10, BB10].

Notons que pour cette étude, les valeurs des trois types de propriétés considérées sont déclarées dans la description des composants où elles sont exploitées. Il s’agit d’une assignation directe, les valeurs des propriétés sont donc capturées directement par la spécification. Quand la valeur d’une propriété nécéssite une référence à une autre partie dans la hiérarchie du modèle, on parle de la propagation des propriétés. Pour capturer les valeurs de ces propriétés et les affecter ensuite à la spécification du composant où elles doivent être exploitées, il faut expliciter leur chemin de propagation. Pour ce faire, nous proposons une extension du modèle mathématique d’ABAReL par une théorie de réécriture spécifiant le chemin de propagation pour pouvoir assigner la valeur déclarée à l’entité AADL référenciée. Le chemin de propagation doit être spécifié en fonction des sous composants déclarés dans la section subcomponents de chaque composant dans la hiérarchie.

Exemple 6. Pour clarifier la formalisation des propriétés à valeurs de type temps,