Vous êtes sur la page 1sur 63

Gnie Logiciel Avanc Cours 1 : Introduction

Yann Rgis-Gianas yrg@pps.jussieu.fr


PPS - Universit Denis Diderot Paris 7

29 janvier 2010

Quest-ce que le gnie logiciel ?

Le gnie logiciel est un domaine des sciences de lingnieur dont lobjet dtude est la conception, la fabrication et la maintenance des systmes informatiques complexes.

Quest-ce quun systme ?

Un systme est un ensemble dlments intragissant entre eux suivant un certains nombres de principes et de rgles dans le but de raliser un objectif. La frontire dun systme est le critre dappartenance au systme. Lenvironnement est la partie du monde extrieure au systme. Un systme est souvent hirarchis laide de sous-systmes. Un systme complexe se caractrise par :
sa dimension qui ncessite la collaboration de plusieurs personnes ; son volutivit.

Exemples : une fourmilire, lconomie mondiale, le noyau linux, . . .

Quest-ce quun logiciel ?

Un logiciel est un ensemble dentits ncessaires au fonctionnement dun processus de traitement automatique de linformation. Parmi ces entits, on trouve par exemple :
des programmes excutables ; des documentations dutilisation ; des informations de conguration.

Quest-ce quun logiciel ?

Un logiciel est en gnral un sous-systme dun systme englobant. Il peut interagir avec des clients, qui peuvent tre :
des oprateurs humains (des utilisateurs, des administrateurs, . . . ) ; dautres logiciels ; des contrleurs matriels.

Il ralise une spcication : son comportement vrie un ensemble de critres qui rgissent ses interactions avec son environnement. Le gnie logiciel vise garantir que :
1. 2. 3. 4. la spcication rpond aux besoins rels de ses clients ; le logiciel respecte sa spcication ; les cots allous pour sa ralisation sont respects ; les dlais de ralisation sont respects.

Comment spcier un logiciel ?

Que doit faire le logiciel ?

La spcication dun logiciel peut prendre de nombreuses formes. La complexit et les dimensions de la spcication peuvent varier normment en fonction de lenvironnement dutilisation du logiciel et des objectifs auxquels il rpond.

Quelques exemples de spcications


I, Precondition(I) = O, Postcondition(I, O)

Un algorithme de tri :
Entre : un tableau t. Prcondition : il existe une relation dordre sur les lments du tableau. Sortie : un tableau u. Postcondition : u est tri et contient exactement les mmes lments que t.

La partie arrire dun compilateur :


Entre : un arbre de syntaxe abstraite P. Prcondition : le programme est bien typ. Sortie : un chier excutable E . Postcondition : la smantique de E est la mme que celle de P.

Ce sont des spcications simples dont la conformit aux objectifs de leurs clients ne fait aucun doute. (Cela ne rend pas aise pour autant leur ralisation.)

Quelques exemples de spcications plus complexes

Une interface graphique : Le modle dinteraction avec le client est non dterministe. Doit-on spcier toutes les traces dexcution possibles ? Un traducteur automatique : Quest-ce quun texte anglais bien crit ? Un logiciel boursicoteur (eectuant des achats et des ventes en bourse) : Comment tablir une spcication sans y inclure un modle du systme nancier ? Un jeu vido : Comment spcier ce qui est amusant ?

Comment concevoir un logiciel de qualit ?

En plus du respect (essentiel) de sa spcication, la qualit dun logiciel dpend des 4 critres suivants :
1. 2. 3. 4. Maintenabilit : Peut-on faire voluer le logiciel ? 1 Robustesse : Le logiciel est-il sujet des dysfonctionnements ? Ecacit : Le logiciel fait-il bon usage de ses ressources ? Utilisabilit : Est-il facile utiliser ?

1 Un logiciel ne suse pas. La correction dune erreur nest pas volution mais un chec du concepteur.

Comment fabriquer un logiciel de qualit ?


Historiquement, il y a eu une prise de conscience dans les annes 70, appele la crise du logiciel, d un tournant dcisif : cest cette poque que le cot de construction du logiciel est devenu plus important que celui de la construction du matriel. The major cause of the software crisis is that the machines have become several orders of magnitude more powerful ! To put it quite bluntly : as long as there were no machines, programming was no problem at all ; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming has become an equally gigantic problem. Edsger Dkstra, The Humble Programmer (EWD340)
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD03xx/EWD340.html

Comment fabriquer un logiciel de qualit ?

Pour rpondre cette crise, on a essay dappliquer les mthodes connues de lingnieur au domaine du logiciel, pour tablir des mthodes ables sur lesquelles construire une industrie du logiciel. Il sagit de se donner un cadre rigoureux pour :
Guider le dveloppement du logiciel, de sa conception sa livraison. Contrler les cots, valuer les risques et respecter les dlais. tablir des critres dvaluation de la qualit dun logiciel.

Les spcicits du logiciel

Cependant, la construction dun logiciel dire de celle dun pont car :


une modication inme peut avoir des consquences critiques ; les progrs technologiques trs rapides peuvent rendre un logiciel caduque ; il est dicile de raisonner sur des programmes ; les domaines des entres des logiciels sont trop grands pour le test exhaustif ; les dfaillances des programmes sont en gnral dues des erreurs humaines ; on ne sait pas trs bien rutiliser les programmes existants ; chaque logiciel a son organisation et sa logique propre ; ...

Comment fabriquer un logiciel de qualit ?

Le gnie logiciel est un domaine en pleine volution qui ore une grande palette doutils et de mthodes pour parvenir construire du logiciel de qualit. Aucune de ses mthodes ne sest impose ce jour : il faut donc prendre du recul sur les concepts et les conseils quelles prconisent et utiliser son bon sens pour les adapter chaque situation. Ces mthodes se distinguent principalement par :
leur degr de formalisme ; leur champ dapplication ; les contraintes de qualit quelles ambitionnent.

Comment fabriquer un logiciel de qualit ?

Les approches formelles utilisent des outils mathmatiques et des mthodes de preuve pour construire un logiciel correct par construction dont la vrication est automatise ou assiste. Mthodes : mthode B, Model-checking, Logique de Hoare . . . Outils et notations : Coq, Z, VHDL, Atelier B, CASL, Why, Frama-C, . . . Ces mthodes sont utilises pour dvelopper des logiciels critiques. Elles correspondent au niveau le plus lv de certication.

Comment fabriquer un logiciel de qualit ?

Les approches semi-formelles visent introduire un langage normalis pour dcrire le logiciel et sa spcication. Cependant, la smantique du langage de spcication nest pas formalise. Bien que ces approches prcisent le discours du concepteur si on le compare celui dcrit laide du langage naturel, elles contiennent certaines ambiguts et norent aucune garantie sur la qualit des rsultats. Mthodes : Rationale Unied Process, Merise, . . . Outils et notations : UML, AnalyseSI, . . . Ces mthodes sont utilises aujourdhui par lindustrie du logiciel.

Comment fabriquer un logiciel de qualit ?

Les approches empiriques mettent en avant un ensemble de bonnes pratiques qui ont fait leur preuve par lexprience. Mthodes : relecture de code, extreme programming, programmation dfensive, . . . Outils : gestionnaire de versions, outil de documentation automatique, . . .

Les grands principes du gnie logiciel

Un certain nombre de grands principes (de bon sens) se retrouvent dans toutes ces mthodes. En voici une liste propose par C. Ghezzi :
1. 2. 3. 4. 5. 6. 7. La rigueur. La dcomposition des problmes en sous-problmes indpendants. La modularit. Labstraction. Lanticipation des volutions. La gnricit. La construction incrmentale.

La rigueur

Les principales sources de dfaillances dun logiciel sont dorigine humaine. tout moment, il faut se questionner sur la validit de son action. Des outils de vrication accompagnant le dveloppement peuvent aider rduire les erreurs. Cette famille doutils sappelle CASE (Computer Aided Software Engineering). Exemples : typeurs, assistants de preuves, gnrateurs de code, gnrateurs de tests. . .

La dcomposition des problmes en sous-problmes

Separation of concerns en anglais. Il sagit de :


Dcorrler les problmes pour nen traiter quun seul la fois. Simplier les problmes (temporairement) pour aborder leur complexit progressivement.

La dcomposition des problmes en sous-problmes


Let me try to explain to you, what to my taste is characteristic for all intelligent thinking. It is, that one is willing to study in depth an aspect of ones subject matter in isolation for the sake of its own consistency, all the time knowing that one is occupying oneself only with one of the aspects. We know that a program must be correct and we can study it from that viewpoint only ; we also know that it should be ecient and we can study its eciency on another day, so to speak. In another mood we may ask ourselves whether, and if so : why, the program is desirable. But nothing is gained on the contrary ! by tackling these various aspects simultaneously. It is what I sometimes have called "the separation of concerns", which, even if not perfectly possible, is yet the only available technique for eective ordering of ones thoughts, that I know of. This is what I mean by "focusing ones attention upon some aspect" : it does not mean ignoring the other aspects, it is just doing justice to the fact that from this aspects point of view, the other is irrelevant. It is being one- and multiple-track minded simultaneously.

Edsger Dkstra, On the role of scientic thought

La dcomposition des problmes en sous-problmes


Exemple 1 : Comment acheminer un email de faon sr travers un rseau ? Dcomposition en couches utilise sur Internet :
STMP : protocole de la couche application qui suppose une couche de transport de paquet sr. TCP : protocole de la couche transport permettant de sassurer que tous les paquets arrivent, mme si le rseau peut perdre des paquets.

Exemple 2 : Comment crer dynamiquement une page internet pour visualiser et modier le contenu dune base donne sans la corrompre ? Dcomposition en trois composants :
Modle : son rle est grer le stockage des donnes. Vue : son rle est formatter les donnes. Contrleur : son rle est de nautoriser que les modications correctes.

La modularit

Cest une instance cruciale du principe de dcomposition des problmes. Il sagit de partitionner le logiciel en modules qui :
ont une cohrence interne (des invariants) ; possdent une interface ne divulgant sur le contenu du module que ce qui est strictement ncessaire aux modules clients.

Lvolution de linterface est indpendante de celle de limplmentation du module. Les choix dimplmentation sont indpendants de lutilisation du module. Ce mcanisme sappelle le camouage de linformation (information hiding).

Labstraction

Cest encore une instance du principe de dcomposition des problmes. Il sagit dexhiber des concepts gnraux regroupant un certain nombre de cas particuliers et de raisonner sur ces concepts gnraux plutt que sur chacun des cas particuliers. Le fait de xer la bonne granularit de dtails permet :
de raisonner plus ecacement ; de factoriser le travail en instanciant le raisonnement gnral sur chaque cas particulier.

Exemples en programmation : les classes abstraites dans les langages objets, le polymorphisme de Caml, les fonctions dordre suprieur.

Lanticipation des volutions

Un logiciel a un cycle de vie plus complexe que lhabituel cycle commande-spcication-production-livraison . La maintenance est la gestion des volutions du logiciel. Il est primordial de prvoir les volutions possibles dun logiciel pour que la maintenance soit la plus ecace possible. Pour cela, il faut sassurer que les modications eectuer soient le plus locales possibles. Ces modications ne devraient pas tre intrusives car les modications du produit existant remettent en cause ses prcdentes validations. Concevoir un systme susamment riche pour que lon puisse le modier incrmentalement est lidal.

La gnricit

Un logiciel rutilisable a beaucoup plus de valeur quun composant ddi. Un composant est gnrique lorsquil est adaptable.

La construction incrmentale

Un dveloppement logiciel a plus de chances daboutir si il suit une cheminement incrmental (baby-steps). Exemple : Laquelle de ses deux mthodes de programmation est la plus ecace ?
1. crire lensemble du code source dun programme et compiler. 2. crire le code source dune fonction, le compiler et passer la suivante.

propos des principes

Vous devez avoir en tte ces principes : ils se retrouvent dans toutes les mthodes et outils que nous allons aborder.

Les processus de dveloppement logiciel

Quest-ce quun processus ?

Un processus de dveloppement logiciel est un ensemble (structur) dactivits que conduisent la production dun logiciel. Il nexiste pas de processus idal. La plupart des entreprises adapte les processus existants leurs besoins. Ces besoins varient en fonction du domaine, des contraintes de qualit, des personnes impliques. Ce qui est essentiel, cest de comprendre quel est son rle dans ce processus et den saisir les rouages. Ltude et la pratique de processus existants doit vous permettre de vous forger un regard aut (et mme critique) sur ces processus.

Activits du dveloppement logiciel

Les activits des processus de dveloppement logiciels se regroupent en 4 grandes catgories : 1. La spcication du logiciel dnit ses fonctionnalits et leurs contraintes. 2. La conception et limplmentation sont charges de raliser le logiciel, en conformit avec sa spcication. 3. La validation sassure eectivement du respect de la spcication par le logiciel produit. 4. Lvolution adapte le logiciel aux besoins futurs de ses clients.

Schma gnral dun processus de dveloppement

Il est trs rare dappliquer un processus comme une unique squence des 4 activits prcdentes. En eet, ce serait lencontre du principe dincrmentalit. En gnral, un logiciel complet est le fruit de plusieurs itrations. Chaque itration contient les 4 activits de spcication, conception, validation et volution. Il existe dirents modles de processus qui organisent de faon direntes ces activits : le modle en cascade, le modle de dveloppement volutif et le modle de dveloppement par composants.

Modle en cascade
Dnition des besoins

Conception

Implmentation et tests unitaires

Intgration et test du systme

Livraison et maintenance Chaque phase doit se terminer pour commencer la suivante. Des documents sont produits pour concrtiser la ralisation de chaque phase.

Le modle en cascade
Le modle en cascade est hrit des mthodes classiques dingnierie. Il sadapte donc bien dans un contexte o le logiciel fait partie dun systme complexe englobant. La production de documents entre chaque phase amliore le suivi du projet. Lorsquune erreur a t commise dans une phase et quelle est dtecte dans une phase suivante, il faut faire remonter cette information dans la phase incrimine et recommencer le processus partir de celle-ci. On doit alors reproduire de nouveaux documents . . . Ce modle de processus impose donc une importante rexion sur les choix faits en amont car le cot de la correction dune erreur est important. Typique dun dveloppement industriel pour lequel les cots de la construction du produit sont trop importants pour se permettre une erreur de choix de conception.

Critique du modle en cascade

Le modle en cascade rend coteux le dveloppement itratif puisque la rdaction des documents de validation de chaque phase demande beaucoup de travail. Ce modle est inadapt au dveloppement de systmes dont la spcication est dicile formuler a priori.

Modle de dveloppement volutif

Spcication

Dveloppement

Validation Ces trois activits sont entrelaces. Un prototype est crit rapidement et est confront lutilisateur. En fonction du rsultat, on rane la spcication. On reprend le prototype ou on le rcrit jusqu lobtention du systme nal.

Le modle de dveloppement volutif

Ce modle augmente les chances de rpondre aux besoins de lutilisateur car il permet de les comprendre plus rapidement. (Are we building the right product ?) Il remplit le critre dincrmentalit. Ce modle ne dispense dcrire la spcication du systme car il faut sassurer que limplmentation est correct. (Are we building the product right ?) Cest un processus particulirement adapt aux projets de taille moyenne ou importante (infrieur 100 000 lignes de code) comme par exemple les applications WEB ou encore les solutions intgres pour les petites entreprises.

Critique du modle de dveloppement volutif


Il est plus dicile de grer un projet utilisant ce modle car la visibilit de lavancement du dveloppement est peu clair. Dans ce cadre, encore plus que dans un autre, un chef de projet doit aussi tre un bon programmeur puisquil doit tre capable de se faire une ide de ltat du systme en observant le dveloppement (possiblement chaotique) des prototypes. Il est dicile de structurer correctement le logiciel (dnir de bonnes abstractions, modulariser ecacement) car les prototypes sont par dnition des produits bricols. Le cot en termes de tests et de validation du produit nal peuvent tre trs importants. Des approches mixtes intgrant modle de dveloppement volutif pour produire un premier prototype valid et un modle en cascade pour reconstruire correctement un produit nal constituent en gnral de bons compromis.

Modle de dveloppement livraison incrmentale

Une approche mi-chemin entre le modle en cascade et le modle de dveloppement volutif sappuie sur une livraison incrmentale du produit. On hirarchise les besoins du client en termes de priorit. Chaque itration du modle vise obtenir un ensemble de fonctionnalits par ordre de priorit. Traiter les parties les plus critiques du systme en premier permet de minimiser les risques dinadquation avec le produit nal. Cependant, il se peut que les choix pris en amont, trop focaliss sur ce noyau de fonctionnalits, compromettent le dveloppement des fonctionnalits secondaires.

Modle de dveloppement par composants


Dnition des besoins

Analyse des composants

Modication des besoins

Conception par rutilisation

Dveloppement et intgration

Validation du systme

Modle de dveloppement par composants

Ce modle vise dvelopper un logiciel en grande partie laide dune base de composants gnriques pr-existants. Llaboration de la spcication est dirige par cette base : une fonctionnalit est propose lutilisateur en fonction de sa facilit lobtenir laide dun composant existant. Situation typique chez les socits de services (hbergement de serveurs, dploiement automatique de site web, etc . . . ). Ce modle permet dobtenir rapidement des produits de bonne qualit puisquils sont construits partir de composants qui ont fait leur preuve. Le travail dintgration peut sappuyer sur des outils dirigs par des descriptions de haut-niveau du systme qui gnrent le code de glue par exemple.

Critique du modle de dveloppement par composants

Le principal dfaut de ce modle est de ne pas construire un produit adapt aux besoins du client. Un travail complexe de conguration et dadaptation peut tre ncessaire.

La gestion de projet

Quel est le rle dun chef de projet ?

Les activits de gestion dun projet informatique sont trs similaires celles des autres domaines :
criture de proposition de projet Plannication du projet valuation des cots Surveillance du projet et criture de rapport dtapes Slection du personnel et valuation criture de rapport et de prsentation

crire une proposition de projet

partir dun appel dore, un chef de projet doit crire une proposition de projet dcrivant les objectifs du projet (en gnral, ses dlivrables) et les grandes lignes de sa ralisation. Une proposition doit aussi contenir une valuation des risques et des cots. La plupart du temps, cette proposition doit servir dargumentaire pour justier la mise en route du projet. Cest une activit qui requiert une importante exprience et comprhension du domaine dactivit. Le chef de projet engage sa responsabilit.

Plannier un projet

Le chef de projet doit tablir un jalonnement, cest--dire une rpartition des activits dans le temps en fonction de leurs dpendances et des ressources disponibles et dune valuation des risques lis leur ralisation. Il sagit dun travail dordonnancement qui ncessite encore une connaissance trs prcise du domaine, des quipes de dveloppement, etc . . .

Veiller sur un projet

De faon continue, le chef de projet sassure du progrs des tches et du respect des dlais. En cas de retard, il doit rvaluer la plannication et ventuellement rengocier les ressources et les contraintes du projet. La visibilit de la progression des activits est ici essentielle. Un chef de projet doit donc savoir se doter dindicateurs rvlateurs sur ltat du dveloppement.

Slectionner le personnel

En cohrence avec la politique de gestion du personnel (projet de carrire, formation continue, sous-traitement, . . . ), le chef de projet doit aecter des activits et des rles aux direntes personnes impliques dans le projet. Des qualits relationnelles semblent donc utiles. . .

crire un rapport

Le chef de projet doit pouvoir communiquer une vue synthtique du projet dirents publics (autres chefs de projet, clients, responsables, etc . . . ).

Synthse de cette introduction

Objectifs du cours

Ce cours a pour but de vous familiariser avec les futures structures de votre vie professionnelle et de vous donner les outils de vous adapter la situation, ncessairement singulire, dans laquelle vous serez acteurs. Il a aussi pour objectif de dvelopper vos capacits danalyse de problmes de conception logiciel.

Organisation du cours

Le cours se droule le vendredi en amphi 6C de 8h30 10h30 et sera prsent par Mihaela Sighireanu et Yann Rgis-Gianas. Les travaux dirigs se droulent le vendredi de 10h30 12h30 en salle 473F et sont encadrs par Constantin Enea et Mihaela Sighireanu. La page du cours : http://www.pps.jussieu.fr/~yrg/gl/index.php Inscrivez-vous sur la mailing-list ! (voir le site).

Validation

Le cours est valid par un projet et par un examen. Le projet consiste dvelopper un logiciel en quipe, en utilisant les mthodes et outils de gnie logiciel que nous dcouvrirons.

Bibliographie

Software Engineering 8me dition Sommerville Addison Wesley Gnie logiciel J. Longchamp Cours de CNAM

QCM : Question 1

Le gnie logiciel fournit des outils et des mthodes pour : analyser les besoins dun client. crer des besoins chez un potentiel client. sassurer que les contraintes budgtaires dun projet sont respectes. raliser correctement une spcication. construire des composants logiciels rutilisables.

QCM : Question 2

Le produit appel logiciel peut tre compos : de programmes excutables. de tests. de manuels dutilisation. de scripts de conguration automatique.

QCM : Question 3

La spcication dun logiciel peut : tre dnie aprs son implmentation. tre issue de ltape de validation. ne pas exister. tre inapproprie. tre incohrente.

QCM : Question 4

La robustesse dun programme est : caractrise par sa rsistance aux chocs. proportionnelle sa stabilit. une consquence de sa correction vis--vis de sa spcication. une condition ncessaire sa correction vis--vis de sa spcication.

QCM : Question 5

La crise du logiciel tait cause par : une crise de linvestissement dans le domaine informatique ; un inversement du rapport entre les cots du logiciel et du matriel ; un dcit en informaticiens sur le march du travail.

QCM : Question 6

Une mthode de dveloppement formelle : prouve mathmatiquement la correction dun logiciel vis--vis de sa spcication. nest pas trs coteuse. rend inutile les phases de tests. est toujours applicable. peut sappuyer sur le langage UML.

QCM : Question 7

Quels sont les bons principes de dveloppement dans la liste suivante : la modularit ; le code spaghetti ; la rinvention de la roue ; le code est la spcication ; la dcomposition des problmes.

(C.f. les anti-patterns )

QCM : Question 8

Cacher les dtails dimplmentation : est une erreur de conception puisquil faut que le client dun module ait un maximum dinformation sur ce module pour lutiliser au mieux. permet de faire rendre indpendant limplmentation dun module de ses utilisations. introduit une forme dabstraction. est impossible lorsque lon programme vraiment.

QCM : Question 9

Un processus de dveloppement : xe un cadre rigoureux pour le dveloppement de projets de taille importante. est une perte de temps ! doit sappliquer la lettre. peut tre itr. peut sappuyer sur plusieurs modles de processus.

QCM : Question 10

Cest le rle dun chef de projet : de programmer les composants dun logiciel. de vrier le bon droulement des tches. dorganiser lenchanement des tches. de fournir une visibilit globale sur un projet. dcrire la spcication du logiciel.