Le génie logiciel
Transcription
Le génie logiciel
Le génie logiciel Cinquième édition d’un ouvrage de Jacques Printz Martine Otter, Présidente d’ADELI La collection Que sais-je ? renferme des trésors. Parmi ceux-ci, je ne saurais trop vous recommander le numéro 2956, « Génie Logiciel » dont une 5ème édition est parue en avril 2005, soit dix ans après la première édition de 1995. Pour 8 euros, prix éditeur, vous disposerez d’une synthèse exceptionnelle sur le processus de développement du logiciel. Une vision à la fois simple et complexe L’avant-propos à lui seul justifie les huit euros que vous aurez déboursés, pour cette recommandation que je me permets de qualifier d’adélienne : « se défier des modes qui ne font souvent que passer, et du jargon qui cache souvent une vacuité de la pensée ». On ne saurait mieux dire ! Les caractéristiques du logiciel Avant de rentrer dans le vif du sujet du « génie logiciel », Jacques Printz prend la peine de se pencher sur le logiciel dans deux chapitres introductifs : Le premier chapitre, « Données économiques », nous explique que le logiciel coûte cher, que sa production devrait s’industrialiser de plus en plus, et que par ailleurs l’omniprésence du logiciel dans notre monde moderne constitue un facteur de risque énorme qui justifie le renforcement des opérations de contrôle en tout genre, validations et vérifications. La complexité croissante des logiciels entraîne une augmentation de la proportion à consacrer aux tests et validations. Le deuxième chapitre « Typologie des logiciels » présente une classification en trois types, issue des travaux de Meir Lehman, pour lesquels l’auteur nous donne des définitions et des exemples. Pour bien comprendre ces définitions, j’ai dû chercher des informations complémentaires sur le Net, ce qui m’a permis de découvrir les travaux de Lehman ainsi que les « lois de Lehman » souvent citées dans les travaux d’autres auteurs sur la complexité du logiciel. J’ai mieux compris la typologie présentée en découvrant à la signification des 3 lettres : - S comme Specified, - P comme Problem-solving, - et E comme Embedded ou Evolving. 28 Les logiciels complètement spécifiés (S_Type) correspondent à la programmation d’algorithmes mathématiques et sont d’une parfaite stabilité, une fois mis au point. Les logiciels de résolution de problème (P_Type) traitent généralement des masses de données importantes pour des types d’application comme la prévision météorologique ou la traduction automatique. Ils évoluent par nécessité d’optimisation. Le troisième type, celui des logiciels en interaction avec le monde réel (E-type), est celui des systèmes d’information. Un second critère de classement des logiciels est celui du mode de distribution : progiciel ou « clés en main ». Notons ici que l’expression « clés en main » est employé par Jacques Printz pour logiciel spécifique, alors que dans l’esprit de beaucoup d’informaticiens le « clés en main » c’est justement le progiciel, puisque, comme pour une voiture dont on vous donne les clés, vous n’êtes plus censé la bricoler. Le génie logiciel, c’est quoi ? Jacques Printz définit le génie logiciel comme : « l’ensemble des moyens techniques, industriels et humains qu’il faut réunir pour spécifier, construire, distribuer et maintenir des logiciels qui soient sûrs, …conviviaux, …évolutifs, …économiques… ». Les critères cités de « sûreté », « convivialité », « évolutivité » et « maîtrise des coûts » sont hautement recommandés, mais nous aurions sans doute préféré que la liste des caractéristiques attendues du logiciel soit plus ouverte et que l’on se préoccupe de construire des logiciels qui répondent aux besoins, exprimés ou implicites de leurs utilisateurs. Nous le savons, les logiciels contiennent de nombreuses erreurs et leur évolution est difficile. Le métier de développeur suppose des qualités intellectuelles et humaines assez considérables. La Lettre d’ADELI n° 61 – Automne 2005 Le génie logiciel est censé apporter des réponses à ces difficultés. À partir de cette définition du génie logiciel, l’auteur développe un ensemble de thèmes décrivant les pratiques en usage. Modèle de développement et cycle de vie Ce chapitre aborde le processus de développement dont il présente le vocabulaire classique et les concepts essentiels : notion de cycle de vie, principe du cycle en V, notions de maquette et de prototype, fonctionnement de la maintenance ; rétro-ingénierie ; processus d’intégration ; outils et ateliers de génie logiciel. L’auteur insiste très justement sur la nécessité de différencier les pratiques suivant le type et la taille du logiciel. Cinétique, dynamique et régulation du cycle de développement Ce chapitre, plus original que le précédent, pose la question du fractionnement des tâches : « jusqu’où peut-on fractionner une phase ? » et celle du parallélisme : peut-on démarrer une phase alors que la précédente n’est pas encore terminée ? Nous savons bien qu’un certain niveau de parallélisme est indispensable, afin de ne pas laisser les équipes en attente d’une validation qui tarde un peu. Nous connaissons également le risque de retour sur travaux terminés que ce parallélisme représente. Le mérite de Jacques Printz est de proposer ici la théorisation mathématique de ces phénomènes de fractionnement et de parallélisme. l’auteur n’ose pas donner d’avis critique sur ce modèle dont il est beaucoup question, faute de mieux, dans les ouvrages et synthèses diverses sur le sujet, mais qui n’est pas plus fiable qu’un « avis d’expert ». L’organisation des équipes projet est traitée rapidement, sans information précise sur le rôle de chacun des acteurs. Nous en retiendrons simplement qu’il est très compliqué de mettre en place une organisation adaptée… Conclusion L’ouvrage se termine par un bref chapitre sur l’avenir du génie logiciel, qui conclut à la nécessité d’une plus grande maîtrise des systèmes d’information, grâce à des méthodes et outils vraiment efficaces. À la question : « Que sais-je ? », nous répondrons que sur un sujet tel que le génie logiciel, nous ne savons que peu de choses. L’observation des pratiques passées nous laisse supposer que nous avons encore beaucoup de progrès à faire. Nous avons peu de critiques à faire à cet ouvrage, mis à part le fait que le nombre réduit de pages a entraîné des choix et quelques impasses. Il en résulte, par exemple, une place on ne peut plus modeste accordée à la gestion de configuration, citée uniquement au titre des outils et pas à celui des bonnes pratiques méthodologiques. De même, la qualité n’a été abordée que sous l’angle processus et pas sous celui de la qualité du produit. Vous laisser sur votre faim et vous donner envie d’approfondir des sujets que vous croyiez connaître et dont certains vous tiennent pour expert, on ne peut espérer meilleur résultat ! ▲ [email protected] Le thèmes de l’expression des besoins est rapidement traité. Celui de la conception et de l’architecture est traité en profondeur et l’on devine sans peine que le sujet de la « modélisation » est le thème de prédilection de l’auteur : les quelques pages traitant de ce sujet méritent à elles seules l’investissement d’achat de l’ouvrage. Programmation et Tests La description de ces activités ravira sans doute ceux dont elles constituent le métier, car elle explique en détail ce dont il s’agit, en insistant sur la complexité de ce travail dont certains s’imaginent à tort qu’il est à la portée de tout un chacun sans trop d’apprentissage préalable. Management de projets logiciels La présentation des méthodes d’estimation de charge passe par celle de Cocomo. Regrettons juste que La Lettre d’ADELI n° 61 – Automne 2005 29