Академический Документы
Профессиональный Документы
Культура Документы
29 janvier 2010
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.
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.
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.
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.
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.
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.
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.)
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 ?
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.
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.
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.
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.
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.
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, . . .
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. . .
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.
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.
Vous devez avoir en tte ces principes : ils se retrouvent dans toutes les mthodes et outils que nous allons aborder.
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.
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.
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
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.
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.
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.
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.
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.
Dveloppement et intgration
Validation du systme
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.
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
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
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 . . .
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 . . . ).
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.
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.