I.5.4. Implémentation des applications de
contrôle-commande
Le développement d'une application informatique selon
le concept du génie logiciel peut être découpé en
plusieurs activités. Ces activités constituent le cycle de vie
d'une application. Il existe plusieurs méthodes et outils qui prennent
en compte les aspects techniques qui sont proposés pour la maitrise du
processus de développement d'un logiciel.
Le modèle en V considéré comme le plus
complet des modèles de développement logiciel grâce
à l'intégration des tests à chaque étape du
développement. Cependant ce modèle s'avère non
approprié pour le développement des applications temps
réel. D'où la création du modèle W qui est en fait
la combinaison de deux modèles en V qui se suivent. Le premier V
consiste à mettre en place la spécification, la conception
unitaire et détaillée, les codages, les tests unitaires et
d'intégration et le second V décrit tout ce qui est
matériel pour permettre au système développé
d'interagir avec le procédé.
La notion de spécification d'une application dans un
système temps réel revient à décrire comment le
système doit gérer les aspects suivants:
· La concurrence
· La synchronisation
· Manipulation du temps
I.5.4.1. Inconvénients des applications de
contrôle-commande
Etant donné que le développement d'une
application temps réel et embarqué n'est pas assez aisé,
cela pose un sérieux problème pour la maintenance des
applications déjà développée : la maintenance est
presque impossible et les conséquences d'une application mal
développée sont souvent tragiques. C'est pourquoi l'usage d'une
bonne méthode pour le développement est très important.
I.5.4.2. Les langages de développement des
applications de contrôle-commande
Les langages de développement des applications
contrôle-commande sont très divers et cela dépend de
l'environnement d'exécution. Pour des applications temps réel,
l'environnement d'exécution est le noyau temps réel qui a trois
fonctionnalités (la gestion des interruptions, l'ordonnancement,
relation entre les tâches). C'est par rapport à ces
fonctionnalités qu'il faudra choisir un langage de programmation
approprié.
a. Besoins : le langage de programmation choisi
doit respecter les besoins suivants :
· Expressions des contraintes temps ;
· Expressions et gestion du parallélisme ;
· Spécification et gestion des
périphériques de bas niveau (entrée/sortie) ;
· Modularité ;
· Interfaces avec d'autres langages.
T.F.E 2015 | Benito Lubuma L2 Génie info
T.F.E 2015 | Benito Lubuma L2 Génie info
18
b. Famille de langages : il est possible de
décliner les langages en trois familles distinctes selon leurs
spécifications ; nous avons :
? Langages assembleurs ;
? Langages séquentiels liés à des librairies
système ;
? Langages concurrents de haut niveau ; cette famille de langages
concurrents est subdivisé en deux groupes : langages synchrones et
langages asynchrones.
Langages assembleurs : d'une manière
historique, ces langages furent longtemps les seuls utilisés pour le
contexte des systèmes temps réel. Ils dépendaient
extrêmement de la nature de l'architecture cible (matériel et
système d'exploitation) mais leurs plus grands inconvénients
étaient de ne pas offrir une abstraction possible : difficulté de
développement de la maintenance et l'impossibilité
d'évolution. Actuellement, ces langages sont considérés
comme proscrits d'une manière générale, sauf pour le
développement des petites fonctionnalités très
spécifique apportant des améliorations des performances.
Langages séquentiels liés à des
librairies système : ce sont des langages
considérés comme étant de standard tels que le C, C++,
fortran... Ces langages offrent un grand pouvoir d'abstraction et une certaine
indépendance du matériel mais, ils doivent faire appel à
des librairies systèmes spécifiques pour une bonne manipulation
des processus. Souvent ces langages posent un problème de
standardisation des appels système. Le noyau temps réel qui
supporte ce type des langages doit être complet car ces langages
n'intègrent aucune spécificité multitâche.
Langages concurrents de haut niveau : ce sont
des langages généralistes qui permettent de décrire une
application en termes de tâches. Ces langages ont les avantages d'un haut
pouvoir d'abstraction, d'une indépendance totale des architectures et
systèmes cibles. Parmi ces langages nous pouvons citer Java et Ada qui
sont les plus aboutis. Ainsi, le noyau temps réel peut être
réduit en ne comportant que la partie gestion des interruptions et
l'ordonnancement. Ces langages sont à privilégier lorsque
d'autres contraintes ne rendent pas leurs choix impossibles.
En ce qui concerne les langages concurrents de haut niveau
d'abstraction de type synchrone, nous pouvons dire que ce sont
des langages qui donnent non seulement la possibilité de décrire
les fonctionnalités du programme mais aussi l'enchaînement de
différentes parties. Ces types de langages sont souvent associés
à des langages standards pour pallier au problème de manque
d'aspect fonctionnel. Pour ces langages, le noyau peut ne comporter qu'une
seule couche, celle de la gestion des interruptions qui est liée du
côté matériel. De ces langages nous pouvons citer Lustre,
Esterel, Signal...En ce qui concerne ceux qui sont de type asynchrone
nous pouvons dire que ce sont des langages qui ont la
difficulté de garantir le déterminisme. Parmi ces langages nous
pouvons citer SDL, UML...
T.F.E 2015 | Benito Lubuma L2 Génie info
19
|