Génie Logiciel Avancé Cours 1 : Introduction Qu'est-ce que le génie ...
Génie Logiciel Avancé Cours 1 : Introduction Qu'est-ce que le génie ...
Génie Logiciel Avancé Cours 1 : Introduction Qu'est-ce que le génie ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Qu’est-<strong>ce</strong> qu’un logiciel <br />
Comment spécifier un logiciel <br />
◮ Un logiciel est en général un sous-système d’un système englobant.<br />
◮ Il peut interagir avec des clients, qui peuvent être :<br />
◮ des opérateurs humains (des utilisateurs, des administrateurs, . . . ) ;<br />
◮ d’autres logiciels ;<br />
◮ des contrô<strong>le</strong>urs matériels.<br />
◮ Il réalise une spécification : son comportement vérifie un ensemb<strong>le</strong> de critères<br />
qui régissent ses interactions avec son environnement.<br />
⇒ Le génie logiciel vise à garantir <strong>que</strong> :<br />
1. la spécification répond aux besoins réels de ses clients ;<br />
2. <strong>le</strong> logiciel respecte sa spécification ;<br />
3. <strong>le</strong>s coûts alloués pour sa réalisation sont respectés ;<br />
4. <strong>le</strong>s délais de réalisation sont respectés.<br />
Que doit faire <strong>le</strong> logiciel <br />
◮ La spécification d’un logiciel peut prendre de nombreuses formes.<br />
◮ La comp<strong>le</strong>xité et <strong>le</strong>s dimensions de la spécification peuvent varier<br />
énormément en fonction de l’environnement d’utilisation du logiciel et des<br />
objectifs aux<strong>que</strong>ls il répond.<br />
Quel<strong>que</strong>s exemp<strong>le</strong>s de spécifications<br />
Quel<strong>que</strong>s exemp<strong>le</strong>s de spécifications plus comp<strong>le</strong>xes<br />
∀I, Precondition(I) =⇒∃O, Postcondition(I, O)<br />
◮ Un algorithme de tri :<br />
◮ Entrée : un tab<strong>le</strong>au t.<br />
◮ Précondition : il existe une relation d’ordre sur <strong>le</strong>s éléments du tab<strong>le</strong>au.<br />
◮ Sortie : un tab<strong>le</strong>au u.<br />
◮ Postcondition : u est trié et contient exactement <strong>le</strong>s mêmes éléments <strong>que</strong> t.<br />
◮ La partie arrière d’un compilateur :<br />
◮ Entrée : un arbre de syntaxe abstraite P.<br />
◮ Précondition : <strong>le</strong> programme est bien typé.<br />
◮ Sortie : un fichier exécutab<strong>le</strong> E.<br />
◮ Postcondition : la sémanti<strong>que</strong> de E est la même <strong>que</strong> <strong>ce</strong>l<strong>le</strong> de P.<br />
◮ Une interfa<strong>ce</strong> graphi<strong>que</strong> : Le modè<strong>le</strong> d’interaction avec <strong>le</strong> client est non<br />
déterministe. Doit-on spécifier toutes <strong>le</strong>s tra<strong>ce</strong>s d’exécution possib<strong>le</strong>s <br />
◮ Un traducteur automati<strong>que</strong> : Qu’est-<strong>ce</strong> qu’un texte anglais « bien écrit » <br />
◮ Un logiciel « boursicoteur » (effectuant des achats et des ventes en bourse) :<br />
Comment établir une spécification sans y inclure un modè<strong>le</strong> du système<br />
financier <br />
◮ Un jeu vidéo : Comment spécifier <strong>ce</strong> qui est amusant <br />
⇒ Ce sont des spécifications simp<strong>le</strong>s dont la conformité aux objectifs de <strong>le</strong>urs<br />
clients ne fait aucun doute. (Cela ne rend pas aisée pour autant <strong>le</strong>ur<br />
réalisation.)