« Méthodes de génie logiciel avec Ada/Première partie » : différence entre les versions

Contenu supprimé Contenu ajouté
JerePff (discussion | contributions)
JerePff (discussion | contributions)
Ligne 152 :
 
==Méthodes de conception et langages==
 
Comme nous l'avons vu précédemment, il est nécessaire d'abaisser graduellement le niveau sémantique de la description de la solution jusqu'au point où l'on peut la décrire au moyen du langage de programmation. La comparaison avec l'escalier montre bien comment définir de façon optimale le nombre et le niveau de ces étapes :
 
* Il y aura d'autant plus d'étapes intermédiaires que la distance entre le niveau du problème et celui du langage sera plus grande.
* Les étapes seront optimales si elles correspondent à des sauts sémantiques d'égale hauteur.
 
Ces constatations, qui semblent évidentes, ont pourtant des conséquences qui ne sont pas toujours comprises. En particulier, on a longtemps dit que les méthodes de conception devaient être indépendantes du langage de codage utilisé. Si l'on utilise un langage de plus haut niveau, la répartition optimale des «marches» sera différente, certaines pouvant même être appelées à disparaître (Fig. 7). C'est ainsi que s'il est fondamental de décrire des algorithmes au moyen de pseudo-code si l'on programme en FORTRAN, c'est totalement inutile lorsque l'on utilise Ada, car le langage de codage est alors de même niveau sémantique (si ce n'est supérieur !) que le pseudo-code.
 
[[Image:MGLA-figure7_p47.png|center|360 px|Figure 7 : Niveau relatif des méthodes et des langages]]
<center>Figure 7 : Niveau relatif des méthodes et des langages</center>
 
Retenons donc que l'utilisation d'un langage de haut niveau comme Ada va permettre une ''remontée du niveau sémantique'' de toutes les étapes intermédiaires. C'est donc tout le processus de développement qui est remis en cause.
 
Ne peut-on aller plus loin, inventer un langage de niveau si haut qu'il nous dispenserait totalement de l'utilisation d'une méthode ? En un sens oui : à partir d'une méthode comme HOOD, il existe des outils qui produisent (presque) automatiquement le code Ada correspondant. Dans l'idéal, il n'existerait plus d'intervention manuelle entre la méthode et l'exécution par l'ordinateur ; c'est la méthode qui serait devenue langage de très haut niveau.
 
En pratique, il existe une limite à la remontée de niveau sémantique des langages de programmation conventionnels. Ceux-ci se veulent en effet «universels», donc permettant de réaliser des applications de domaines, et de contraintes, très variés. Or contrôler, c'est nécessairement restreindre. Certaines possibilités offertes par un langage sont impératives pour un
domaine d'application, et dangereuses pour d'autres : on n'utilisera pas l'héritage dans des applications temps réel, ni la manipulation directe d'interruptions dans une application de gestion. Notons au passage qu'il est par conséquent ''normal'' qu'aucune application n'utilise l'intégralité des possibilités d'un langage.
 
Tout langage est donc un compromis entre puissance d'expression (pouvoir tout faire) et sécurité (tout contrôler). Un langage à vocation universelle sera limité dans ses possibilités de contrôles par la nécessité d'offrir les services requis par diverses classes d'applications. La méthode en revanche est généralement spécifique d'un domaine particulier : personne ne songerait à utiliser Merise en temps réel, ni Buhr en gestion ! Etant plus spécifique, elle peut donc exprimer des contraintes supplémentaires.
 
''En plus de sa fonction d'orientation et de guidage du processus de développement,''
''le rôle d'une méthode est d'imposer des restrictions supplémentaires, au-delà de''
''ce qui peut être vérifié au niveau du langage de programmation.''
 
=Rôle et principes d'un langage de programmation=