24.12.2014 Views

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 ...

SHOW MORE
SHOW LESS

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.)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!