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.

La décomposition des problèmes en sous-problèmes<br />

◮ Exemp<strong>le</strong> 1 :<br />

Comment acheminer un email de façon sûr à travers un réseau <br />

⇒ Décomposition en couches utilisée sur Internet :<br />

◮ STMP : protoco<strong>le</strong> de la couche application qui suppose une couche de<br />

transport de pa<strong>que</strong>t sûr.<br />

◮ TCP : protoco<strong>le</strong> de la couche transport permettant de s’assurer <strong>que</strong> tous <strong>le</strong>s<br />

pa<strong>que</strong>ts arrivent, même si <strong>le</strong> réseau peut perdre des pa<strong>que</strong>ts.<br />

La modularité<br />

◮<br />

◮ Contrô<strong>le</strong>ur : son rô<strong>le</strong> est de n’autoriser <strong>que</strong> <strong>le</strong>s modifications correctes.<br />

◮ Exemp<strong>le</strong> 2 :<br />

Comment créer dynami<strong>que</strong>ment une page internet pour visualiser et modifier<br />

<strong>le</strong> contenu d’une base donnée sans la corrompre <br />

⇒ Décomposition en trois composants :<br />

◮ Modè<strong>le</strong> : son rô<strong>le</strong> est gérer <strong>le</strong> stockage des données.<br />

◮ Vue : son rô<strong>le</strong> est formatter <strong>le</strong>s données.<br />

◮ C’est une instan<strong>ce</strong> crucia<strong>le</strong> du principe de décomposition des problèmes.<br />

◮ Il s’agit de partitionner <strong>le</strong> logiciel en modu<strong>le</strong>s qui :<br />

◮ ont une cohéren<strong>ce</strong> interne (des invariants) ;<br />

possèdent une interfa<strong>ce</strong> ne divulgant sur <strong>le</strong> contenu du modu<strong>le</strong> <strong>que</strong> <strong>ce</strong> qui est<br />

strictement né<strong>ce</strong>ssaire aux modu<strong>le</strong>s clients.<br />

◮ L’évolution de l’interfa<strong>ce</strong> est indépendante de <strong>ce</strong>l<strong>le</strong> de l’implémentation du<br />

modu<strong>le</strong>.<br />

◮ Les choix d’implémentation sont indépendants de l’utilisation du modu<strong>le</strong>.<br />

◮ Ce mécanisme s’appel<strong>le</strong> <strong>le</strong> camouflage de l’information (information<br />

hiding).<br />

L’abstraction<br />

L’anticipation des évolutions<br />

◮ C’est encore une instan<strong>ce</strong> du principe de décomposition des problèmes.<br />

◮ Il s’agit d’exhiber des con<strong>ce</strong>pts généraux regroupant un <strong>ce</strong>rtain nombre de<br />

cas particuliers et de raisonner sur <strong>ce</strong>s con<strong>ce</strong>pts généraux plutôt <strong>que</strong> sur<br />

chacun des cas particuliers.<br />

◮ Le fait de fixer la bonne granularité de détails permet :<br />

◮ de raisonner plus effica<strong>ce</strong>ment ;<br />

◮ de factoriser <strong>le</strong> travail en instanciant <strong>le</strong> raisonnement général sur cha<strong>que</strong> cas<br />

particulier.<br />

◮ Exemp<strong>le</strong>s en programmation : <strong>le</strong>s classes abstraites dans <strong>le</strong>s langages à<br />

objets, <strong>le</strong> polymorphisme de Caml, <strong>le</strong>s fonctions d’ordre supérieur.<br />

◮ Un logiciel a un cyc<strong>le</strong> de vie plus comp<strong>le</strong>xe <strong>que</strong> l’habituel cyc<strong>le</strong><br />

« commande-spécification-production-livraison ».<br />

◮ La maintenan<strong>ce</strong> est la gestion des évolutions du logiciel.<br />

◮ Il est primordial de prévoir <strong>le</strong>s évolutions possib<strong>le</strong>s d’un logiciel pour <strong>que</strong> la<br />

maintenan<strong>ce</strong> soit la plus effica<strong>ce</strong> possib<strong>le</strong>. Pour <strong>ce</strong>la, il faut s’assurer <strong>que</strong> <strong>le</strong>s<br />

modifications à effectuer soient <strong>le</strong> plus loca<strong>le</strong>s possib<strong>le</strong>s.<br />

◮ Ces modifications ne devraient pas être intrusives car <strong>le</strong>s modifications du<br />

produit existant remettent en cause ses précédentes validations.<br />

◮ Con<strong>ce</strong>voir un système suffisamment riche pour <strong>que</strong> l’on puisse <strong>le</strong> modifier<br />

incrémenta<strong>le</strong>ment est l’idéal.

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

Saved successfully!

Ooh no, something went wrong!