ENVOL 2012 Introduction au développement avec des composants logiciels Jean-Christophe Souplet jcsouplet@lri.fr Licence CC BY-NC-SA 3.0
Constat Lors d un développement beaucoup de développeurs partent de zéro Or il existe de nombreux codes accessibles et très souvent réutilisables Alors : pourquoi réinventer la roue? ENVOL 2012 JC Souplet - Développer avec des composants logiciels 2
Les composants logiciels Tout élément logiciel pouvant être inclus dans des applications. Le lien entre l application et le composant se fait en passant par une interface qui doit être définie. Exemples obibliothèques logicielles, exécutables, bases de données, Objectifs oréutiliser du code : nombreux atouts (cf. ci-après) ofacilité les collaborations : chacun pouvant être responsable de sa brique logicielle, son rôle peut être mieux défini ovaloriser (au sens large) : le partage de plusieurs composants ne se fait pas forcement à l identique Toutefois opas de consensus strict sur la définition oici : cadre plus large e.g. réutilisation de code source ENVOL 2012 JC Souplet - Développer avec des composants logiciels 3
Des définitions Lamure Maxime / Raugi Romain (2003) o «A software component is a static abstraction with plugs» Nierstraz et Tsichritzis(95). o «A component is a piece of software small enough to create and maintain, big enough to deploy and support, and with standard interfaces for interoperability» Harris (95). o «Software component are defined as prefabricated, pretested, self-contained, reusable software modules that perform specific functions» MetaGroup (94). o «A software component is a unit of composition with contractually specified interfaces and explicit context dependencies. Software component can be deployed independently and is subject to composition by 3rd parties» Participant 1er Workshop Component Oriented Programming(97). Pascal Fradet, Alain Girault, Gregor Goessler - INRIA Rhône-Alpes o Programme informatique encapsulé dans une interface ENVOL 2012 JC Souplet - Développer avec des composants logiciels 4
Composant?? Objet Oui, c est différent o Un composant peut être programmé sans programmation orientée objet o Modifier un composant recompiler l exécutable global sauf en cas de modification de l interface o Un composant = un objet mais au niveau de l architecture du logiciel o Avantages : réutilisation du code, facilité de production, de déploiement, o Mais attention à la maintenance ENVOL 2012 JC Souplet - Développer avec des composants logiciels 5
Propriétés d un composant Sont variables o Taille : on peut presque dire d'une variable à une application o Langage : pas forcement identique à celui des autres composants de l application o Fonctions techniques : éléments d interfaces, d interconnexion,... représentatifs : description des structures à analyser, applicatifs : traitements des données (souvent propres à l application) ENVOL 2012 JC Souplet - Développer avec des composants logiciels 6
Ce que doit être un composant Documenté : la fonction rendue par le composant ET son interface d utilisation doivent être connues et décrites Fiable et robuste : le comportement doit être celui décrit (on attend aucun bogue) Générique : fonction rendue suffisamment fine et programmable (e.g. choix de paramètres) pour une adaptation rapide Abstrait : on ne doit pas avoir besoin d accéder au code du composant Il doit être Réutilisable ENVOL 2012 JC Souplet - Développer avec des composants logiciels 7
Dessine moi un composant PARAMETRES ENTREES SYNC ASYNC NOM DESCRIPTION CONTRAINTES SYNC ASYNC SORTIES Présence de documentation? Limites d utilisation connues? Si oui, qu elles sont-elles? Limites d utilisation technique (OS, langage, )? Il y a-t-il une communauté s en servant? La fiabilité est-elle assurée? ENVOL 2012 JC Souplet - Développer avec des composants logiciels 8
Les composants, 1 langage? Les composants peuvent être regroupés dans un catalogue La programmation devient o Prendre un composant et le relier aux autres o On fait de «l assemblage» Eventuellement, o Développement de nouveaux composants o Adaptation des anciens à la problématique visée ENVOL 2012 JC Souplet - Développer avec des composants logiciels 9
Les composants, 1 langage? Modèles de programmation o Java Beans composants client/ihm (assemblage visuel) Tutoriel sur : http://docs.oracle.com/javase/tutorial/javabeans/toc.html o EJB (Enterprise Java Beans) Serveur à composants Distribué / Interopérabilité o Matlab/Simulink Source : http://www.mathworks.com o CORBA components De l OGM (Object Management Group, 2002) o OLE/ActiveX, COM et.net (Microsoft) o Etc ENVOL 2012 JC Souplet - Développer avec des composants logiciels 10
La recherche de composants Je veux développer un logiciel! Où puis-je trouver les briques pour ma construction? ENVOL 2012 JC Souplet - Développer avec des composants logiciels
Les matériaux En Interne o Vous, Collègues, équipe, labo Communauté de l ESR (via PLUME) o Version classique o Fiches devesr en Licence libre Recherches Internet o Sites de développeurs Attention aux licences!!!! o Sites Catalogues (suivant communauté, e.g. dépôts Maven, plateforme CPAM, ) Création d une base? cf. liste jointe ENVOL 2012 JC Souplet - Développer avec des composants logiciels 12
Exemples Outils d analyses d images IRM cérébrale o Version recherche o Version pour diffusion Réutilisation de ces briques pour d autres applications en imagerie osseuse Prise en main très aisée d un outil de programmation d un robot ENVOL 2012 JC Souplet - Développer avec des composants logiciels 13
Introduction : segmentation de lésions Travaux de thèse effectué dans l ep Asclepios INRIA Sophia-Antipolis SEP: Maladie chronique invalidante o 2,5 millions malades (monde) Dégénérescence de la gaine de myéline Apparence des lésions ENVOL 2012 JC Souplet - Développer avec des composants logiciels 14
Très nombreuses étapes Paramètres EM Labellisation De très nombreux outils logiciels. Tous issus de travaux de thèses précédentes. Chacun résolvant une des étapes de la chaîne de traitement. ENVOL 2012 JC Souplet - Développer avec des composants logiciels 15
Script : Chaîne de traitement Chacun des outils (exécutable, scripts Matlab, scripts python, scripts perl) est issu de travaux de recherche extérieurs On peut les voir comme des composants ayant chacun leurs paramètres, leurs entrées et leurs sorties Union au sein d un script bash 750 lignes Très modulaire mais très peu diffusable et même maintenable ENVOL 2012 JC Souplet - Développer avec des composants logiciels 16
En parallèle : MedINRIA Travail par un autre thésard : Pierre Fillard Visualisation faite Menu Module (souslogiciels dans une fenêtre globale) Hello world existant Source : http://www-sop.inria.fr/asclepios/software/medinria/ ENVOL 2012 JC Souplet - Développer avec des composants logiciels 17
SepINRIA Réutilisation du cadre MedINRIA en sous package SepINRIA Création de nouveaux modules (chacun avec leur propre interface, exécutable seul ou au sein de la plateforme) Réutilisation de code (e.g. visualisation) d un module à l autre ENVOL 2012 JC Souplet - Développer avec des composants logiciels 18
SepINRIA ENVOL 2012 JC Souplet - Développer avec des composants logiciels 19
SepINRIA Chaque module est un composant de la plateforme globale Chaque module est lui-même basé sur l union de plusieurs composantsbibliothèques (externes ou internes) ENVOL 2012 JC Souplet - Développer avec des composants logiciels 20
Introduction Imagerie osseuse Travaux de post-doc Unité INSERM U658 Orléans Réutilisation des composants précédents pour développer de nouveaux logiciels Analyse de la morphologie cellulaire Analyse macroscopique du fémur Logiciel MafINSERM ENVOL 2012 JC Souplet - Développer avec des composants logiciels 21
ENVOL 2012 JC Souplet - Développer avec des composants logiciels 22
Les composants, 1 langage? Robot Nao : logiciel Choregraphe ENVOL 2012 JC Souplet - Développer avec des composants logiciels 23
Les composants, 1 langage? ENVOL 2012 JC Souplet - Développer avec des composants logiciels 24
Les composants, 1 langage? 1 composant o Des sous-composants o Eux-mêmes programmables o Eux-mêmes groupables ENVOL 2012 JC Souplet - Développer avec des composants logiciels 25
Conclusion Réutilisation de code = gain o De temps o Mais aussi de robustesse La POC = «de la POO architecturale» Important o Documentation et clarté de l interface o Limites, présence d une communauté, Existence d outils de programmation basés sur la composition de composants TP : création et utilisation de composants à l aide de l outil CMake (niveau débutant) ENVOL 2012 JC Souplet - Développer avec des composants logiciels 26
Références Compléments POO : Programmation orientée composants, Stéphane Frénot, INSA de Lyon, http://perso.citi.insa-lyon.fr/sfrenot/ Programmation par composants, Frédéric Fürst, Univ. De Picardie http://www.u-picardie.fr/~furst Introduction à la programmation par composants, Lamure Maxime et Raugi Romain, http://deptinfo.unice.fr/twiki/pub/linfo/planningdesso utenances2002/lamure-raugi.pdf Modèles et langages pour la programmation par composants, Pascal Fradet, Alain Girault et Gregor Goessler, INRIA Rhône-Alpes, http://wwwverimag.imag.fr/projects/synchrone/alidecs/r eunion1/r1-girault.pdf ENVOL 2012 JC Souplet - Développer avec des composants logiciels 27