• Aucun résultat trouvé

L’approche basée architecture ou l’adoption de la description architecturale joue un rôle important dans le développement de logiciels complexes et maintenables à moindre coût et avec respect des délais. Notons que l’architecture logicielle d’un système définit son organisation, à un niveau élevé d’abstraction, comme une collection de composants, de connecteurs, et de contraintes d’interactions avec leurs propriétés additionnelles définissant le comportement prévu. Les méthodes formelles s'imposent pour appréhender la complexité et la fiabilité de ces systèmes [Fei04]. Elles entraînent le développement de techniques d'analyse de systèmes et de génération automatique de tests à partir de leurs spécifications. Cela permet d'avoir une évaluation des comportements possibles d'un système au plus tôt, ce qui réduit à la fois le temps et les coûts de validation, et augmente la fiabilité du système. Pour se faire, nous avons besoin d’un formalisme capable de décrire les composants, les interactions entre les composants, et de spécifier des propriétés non fonctionnelles concernant la configuration, le déploiement …etc.

Les langages de description d’architectures (ou ADL) offrent une manière formelle de spécifier les architectures logicielles des systèmes. Un ADL est un langage informatique utilisé pour décrire les composants logiciels, ou les composants logiciels et matériels, d'un système et les interactions entre ces composants. Il peut décrire les interfaces fonctionnelles des composants (flots de contrôle et de données) et les aspects non fonctionnels (aspects temporels, sûreté, fiabilité). Cette description formelle est par la suite utilisée pour analyser les comportements possibles du système en question et de vérifier ces propriétés. Comme exemples d’ADL, nous pouvons citer : Wright [AG96], Rapid [Luc95], et ACME [GMW97]. Ces langages sont classés dans la catégorie des ADLs formels puisqu’ils supportent les notions de composants et de connecteurs de manière abstraite sans indiquer à quoi ils correspondent dans le système réel. Il y a aussi une autre catégorie de langages de description, il s’agit des ADLs concrets. Ces langages reflètent la réalité mieux que les langages formels. Ils spécialisent la notion de composants en introduisant plusieurs catégories correspondant chacune à une entité du monde réel (logiciel et matériel). Ils sont également mieux adaptés pour la génération automatique d’un système à partir de

ces modèles. Parmi les ADLs concrets, nous trouvons UNICON [Zel96], MetaH [Ves98] et par la suite AADL [SAE04].

6. Conclusion

Le développement des systèmes embarqués implique la conception d’un système dans lequel les ressources sont habituellement limitées, et lequel peut devoir s’exécuter sans intervention manuelle. En effet, les systèmes embarqués sont soumis à des contraintes techniques strictes à la fois de performance fonctionnelles mais également temporelles, de consommation énergétique et de robustesse, qui pèsent sur eux du fait de leur taille et de leurs ressources limitées. Ces contraintes imposées par les besoins du système doivent être prises en compte dés les premières phases du cycle de développement. Par exemple la plupart des systèmes embarqués doivent avoir tout leur code dans la ROM, avec des limitations sévères qui sont imposées sur la taille de ce code dans l’espace ROM. Comme ces ressources sont soumises à des contraintes, la conception des systèmes embarqués exige leurs optimisations.

Dans ce chapitre, nous avons présenté différentes approches de développement pour les systèmes embarqués. Ces approches s’accordent sur le fait que le développement de tels systèmes doit permettre une conception conjointe des composants software et hardware et doit prendre en considération les contraintes d’optimisation. Cependant, la façon de considérer ces contraintes diffère d’une approche à l’autre.

Dans l’approche classique, le système est construit de différents composants individuels, ce qui fournit une énorme quantité de différentes possibilités pour l’exécution. Si les tests indiquent que les performances du produit sont insuffisantes, alors les algorithmes doivent être réécrits, on dit qu’on fait une reconception. Le développement, dans ce cas, est basé sur le prototypage et le débogage comme il fait recours à la simulation pour confirmer le partitionnement et le choix des composants. Les optimisations des ressources sont traitées informellement, selon les cas, dans les phases et entre les phases de développement du système embarqué.

Donc, la conception des systèmes embarqués nécessite un niveau de fiabilité important. Ce besoin en fiabilité et en complexité exige l’utilisation de méthodes et langages de haut niveau pour garantir la sécurité des développements. Pour ce faire, le processus de développement a été orienté vers les approches de conception niveau système. La conception niveau système a pour objectif de générer l’implémentation du système à partie de son comportement. Nous avons présenté trois approches : l’approche synthèse niveau système, la conception basée plateforme et la conception basée modèle.

Dans l’approche synthèse niveau système, les optimisations concernant la vitesse de traitement et la taille du code sont faites au niveau de la compilation. Le compilateur, dans ce cas, doit supporter l’accès convenable aux caractéristiques particulières du matériel cible. Par contre dans l’approche de conception basée plateforme, le comportement du système est mappé sur une architecture cible. L’approche est adoptée par Sun Microsystems et son langage Java et utilise les compilateurs Java pour compiler le code source en code natif. Dans cette approche, ils élaborent souvent des expérimentations pour optimiser ce code nativement compilé par une suppression des exceptions d’exécution.

Cependant, les méthodes de conception et de vérification des systèmes embarqués sont souvent moins développées que pour le logiciel « classique ». Toutefois, la conception de ces systèmes demande des méthodes rigoureuses et fiables pour s’adapter à des contraintes en temps et coût de développement toujours plus critiques. L’adoption de la description architecturale dans le processus de développement d’un système embarqué permet de définir son organisation complète. À un plus haut niveau, la spécification d’une architecture décrit comment les composants sont combinés en sous-systèmes, comment ils interagissent (structure des flots de données et de contrôles), et comment ils sont alloués sur les composants matériels.

Le langage AADL (Architecture Analysis and Design Language) est un ADL concret permettant de spécifier une telle architecture et de générer automatiquement un système. Il a été développé pour satisfaire les besoins spéciaux des systèmes

embarqués temps réel. AADL permet également par la déclaration de propriétés d’enrichir les descriptions par des aspects fonctionnels (pointeur vers du code source ou le temps d’exécution d’un thread) et non fonctionnels (la période ou la politique de dispatch). Ce langage constitue la base de travail de cette thèse, il sera détaillé dans le chapitre suivant.

Chapitre 2

AADL : Langage de Description

d’Architecture dédié aux Systèmes