Interopérabilité des composants logiciels.

Documents pareils
pythonocc: une plateforme de développement agile d applications CAO.

Mise en œuvre des serveurs d application

Visual Paradigm Contraintes inter-associations

Introduction au langage C

Évaluation et implémentation des langages

Projet de développement

Vérifier la qualité de vos applications logicielle de manière continue

INF2015 Développement de logiciels dans un environnement Agile Examen final hiver 2015

Module BD et sites WEB

IBM Business Process Manager

Agile 360 Product Owner Scrum Master

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

WEB15 IBM Software for Business Process Management. un offre complète et modulaire. Alain DARMON consultant avant-vente BPM

C est quoi le SWAT? Les équipes décrites par James Martin s appellent SWAT : Skilled With Advanced Tools.

TP1 : Initiation à Java et Eclipse

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Bases Java - Eclipse / Netbeans

Architecture Orientée Service, JSON et API REST

Introduction à la modélisation

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Projet de développement. Introduction à Eclipse. Application à votre projet. Philippe Collet. Organisation. Cours 1 : principes généraux - svn

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

Web Tier : déploiement de servlets

Architectures web/bases de données

Environnements de développement (intégrés)

Iyad Alshabani SysCom - CReSTIC Université de Reims 17/02/2011 1

DSL. Domain Specific Language. À l'aide des technologies Eclipse Modeling. Goulwen Le Fur Le 23 novembre 2012

NOVA BPM. «Première solution BPM intégr. Pierre Vignéras Bull R&D

Intégration de l interface graphique de Ptidej dans Eclipse

Module.NET 3 Les Assemblys.NET

DotNet. Plan. Les outils de développement

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Générer du code à partir d une description de haut niveau

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

11 Février 2014 Paris nidays.fr. ni.com

Stage Ingénieur en développement logiciel/modélisation 3D

Le développement d'applications informatiques

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

Le génie logiciel. maintenance de logiciels.

ÉdIteur officiel et fournisseur de ServIceS professionnels du LogIcIeL open Source ScILab

TP1. Outils Java Eléments de correction

La reconquête de vos marges de manœuvre

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Stages ISOFT : UNE SOCIETE INNOVANTE. Contact : Mme Lapedra, stage@isoft.fr

Pentaho Business Analytics Intégrer > Explorer > Prévoir

Chapitre VI- La validation de la composition.

Programmation en Java IUT GEII (MC-II1) 1

Pourquoi R devient incontournable en recherche, enseignement et développement

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Famille IBM WebSphere Application Server

Systèmes de gestion de code source

Le moteur de workflow JBPM

Jean-Philippe VIOLET Solutions Architect

Génie logiciel (Un aperçu)

Analyse comparative entre différents outils de BI (Business Intelligence) :

Introduction à la Programmation Parallèle: MPI

Synergies entre Artisan Studio et outils PLM

openarchitectureware & transformation de modèle Yannick Lizzi Architecte Logiciel itemis France Mail: lizzi@itemis.de

Le Cloud Computing et le SI : Offre et différentiateurs Microsoft

Programmation Web. Madalina Croitoru IUT Montpellier

Programme scientifique Majeure ARCHITECTURE DES SYSTEMES D INFORMATION. Mentions Ingénierie des Systèmes d Information Business Intelligence

Vulgarisation Java EE Java EE, c est quoi?

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Composants Logiciels. Le modèle de composant de CORBA. Plan

Analyse,, Conception des Systèmes Informatiques

GESTION DE PROJET SÉANCE 2 : LES CYCLE DE VIE D'UN PROJET

RTDS G3. Emmanuel Gaudin

Objectif : Passer de l analyse métier et fonctionnelle à la définition des applications qui

TP1 : Initiation à Java et Eclipse

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

THÉMATIQUES. Comprendre les frameworks productifs. Découvrir leurs usages. Synthèse

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Alignement avec les métiers par le test fonctionnel et d acceptation en projets agiles

Introduction au génie logiciel

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

Éléments de programmation et introduction à Java

GenDbg : un débogueur générique. Didier Eymery Jean-Marie Borello Jean-Marie Fraygefond Odile Eymery Philippe Bion

«Clustering» et «Load balancing» avec Zope et ZEO

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Dafoe Présentation de la plate-forme UIMA

Construire des plug-ins pour SAS Management Console SAS 9.1

Exemple d Application des Méthodes Agiles au Développement d un Produit Software. Jean-Marc Bodart, Océ Software Laboratories Namur SA

Bénéfices pour votre organisation : une solution pouvant supporter vos besoins d affaires

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Plan du cours. Historique du langage Nouveautés de Java 7

IBM Power Systems - IBM i IBM Rational

Industrialiser la chaîne complète de fabrication 1ère partie - Les bénéfices de la solution logicielle IBM VisualAge Pacbase / Rational

DES SYSTÈMES D INFORMATION

INGÉNIEUR LOGICIEL JAVAEE / GROOVY 8 ANS D EXPÉRIENCE

1 JBoss Entreprise Middleware

Objets et Programmation. origine des langages orientés-objet

1. Développement embarqué. André KPOZEHOUE DOMAINES DE COMPETENCES CONNAISSANCES TECHNIQUES

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Développer une stratégie SIG Entreprise efficace avec ESRI et ArcGIS

Cursus Sage ERP X3 Outils & Développement. Le parcours pédagogique Sage ERP X3 Outils et Développement

L Orchestration de Services Web avec Orchestra. Goulven Le Jeune Orchestra Project Manager

Transcription:

Interopérabilité des composants logiciels. Application à la modélisation des plantes C. Pradal EPI INRIA VirtualPlants

Plan Contexte Interopérabilité Langage de programmation Composants logiciel Plateformes Application OpenAlea, plateforme de modélisation des plantes

Interopérabilité entre logiciels Interoperabilité entre logiciels Possibilité qu on deux logiciels de fonctionner et de communiquer ensemble Pourquoi? Partage des données et des logiciels Accroitre la vitesse de développement Qualité (fiabilité, maintenance) Difficultés: Hetrogénéité (OS, languages, licenses, ) Abscence de standardisation (éléctronique, )

Différents types d interopérabilité Interoperabilité entre Langages (C, C++, Java, Python, Fortran, C#) Composants ou objets Plateforme ou environnement logiciels Systèmes distribués (web 2.0, Grid)

0.3 0.2 0.1 0 0 20 40 0.3 0.2 0.1 0 0 20 40 p ii 0 1 0 1 2 2 3 0.3 0.3 0.3 0.2 0.2 0.2 0.1 0.1 0.1 0.3 0 0 0 0.2 0 20 40 0 20 40 0 20 40 0.1 0 0 20 40 0 0 1 1 2 0 1 0 1 2 3 4 5 Software Components for programmers Interoperable Software Components for modellers Interoperable Software Components for programmers Monolithic Software http://www.scripps.edu/~sanner/

Plusieurs stratégies 1. Construire le meilleur modèle (efficacité et simplicité) pour chaque nouvelle situation 2. Un modèle général et unifié question model platform 3. Définir les concepts et les phénomènes commun, et partager les fonctionnalités élémentaires: Commune à différentes situations Extensible

Interopérabilité en science Visualisation Biophysic Ecophysiology Statistical analysis Spatial analysis Modeling Computer science Simulation... Software engineering

Solution «classique» Visualisation Biophysic Statistical analysis Dévelopment rapide N 2 interfaces Ecophysiology Spatial analysis Modeling Simulation Faible interoperabilité Pas de réutilisation de code... Computer science Software engineering

Philosophie UNIX

«Application» centrée + Réutilisation du code par modularité Langages OO - «auto-centrée»: données, types,api Faible interopérabilité entre applications Visualisation Biophysic Ecophysiology Statistical analysis Modeling Kernel Spatial analysis Computer science Simulation Software engineering

Langage d assemblage (glue) Langage de haut-niveau comme environnement Interactif Dynamique Multi Platforme http://www.scripps.edu/~sanner/

Interoperbilité entre langages

Interoperabilté entre langages Langages compilés C vs C++ Fortran (f2c) Java (JNI).Net Langages interprétés Python, Ruby, Perl (C) Langages spécialisés R, matlab, scilab (C) // C++ code extern C { # include «c_code.h» }

Gateways to other frameworks Langage «glue» Scientific modules Very rich set of specialized generic modules Several GUI toolkits NumPy SciPy XML R PyQt GUI JEmbed Boost, SWIG f2py math shell Java Classes C++ Classes, C Code Fortran Code Very rich set of Python standard modules

Outils de wrapping Statique (C, C++, fortran) Boost.Python SWIG (Python, Java, ) SIP (PyQt) f2py Dynamique / Automatiques Ctypes Java, R,

Exemple: SWIG Fichier d interface lib.i SWIG Fichier d extension C lib_wrap.c Le développeur écrit lib.i compile Bibliothèque C *.c *.h compile Module d extension Python libmodule.so libmodule.dll

SWIG - Exemple fact.h #ifndef FACT_H #define FACT_h example.i // Définit le nom du module %module example int fact(int n); #endif fact.c #include fact.h int fact(int n) { if( n <= 1 ) return 1; else return n*fact(n-1); } #endif // Indique le code qui sera // inclut en haut du fichier // d extension %{ %} #include «fact.h» // Définition de l interface. %include «fact.h» Appel en Python >>> from example import * >>> n=fact(4) >>> print n 24

Boost.Python - Exemple World.h // C++ class class World { // hellomodule.so sous UNIX World(std::string msg): _msg(msg) // hellomodule.dll sous Windows {} void set(std::string msg) { this->_msg = msg; } Appel en python std::string greet() { return _msg; } std::string _msg; }; World.i // Boost C++ Wrapper #include <boost/python.hpp> using namespace boost::python; BOOST_PYTHON_MODULE(hello) { class_<world>("world", init<std::string>() ).def("greet", &World::greet).def("set", &World::set) ; } // Compilation + // génération d une shared library >>> import hello >>> planet = hello.world() >>> planet.set( CATI') >>> planet.greet() CATI

Exemple PlantGL (Boost.Python) Meristem simulator Python Hemispheric view

Interopérabilité entre langages Avantages Permet la réutilisation (e.g. LAPACK) Facilite l expérimentation (langage interprété) Composition dynamique de composants C++ Réutilisation des modèles existants Améliore la diffusion Limites Coûteux en temps de développement Refactoring souvent nécessaire Application -> bibliothèque

Interopérabilité entre composants

Interopérabilité entre composants Réutilisation des algorithmes => Séparation data structures / algorithmes Programmation orientée objet Classe abstraites (ABC): Polymorphisme par héritage Fonction génériques (argument: ABC) A* sum(array< A* > v) {for } Résolution lors de l execution Spécialisation des templates

Interopérabilité entre composants Programmation générique Polymorphisme paramétrique template < typename A > A sum( array<a> v) {} L héritage n est plus nécessaire Le paramètre doit adhérer à un concept: Contraintes syntaxique et sémantique Résolution à la compilation Constat Performance maximum Grande complexité (Boost, CGAL)

Interopérabilité entre composants Langage dynamique : Duck Typing Le type d un objet est déterminé par l ensemble de ses méthodes et de ses attributs La résolution se fait à l execution a, b = 1, 2 sum(a,b) == 3 a, b = [1,2], [3,4] sum(a,b) == [1,2,3,4] Constat Performance min Flexibilité max

Communication entre composants Types Python Dynamique + Copie liste, dictionnaire, tableaux multi-dimensionels (NumPy) Data Structure partagées Dynamique + no Copie Objets en Python sont des références Python Fichiers ou pipes - Statique XML, data-base,... Communication avec des applications externes (LStudio, Grogra, Lignum,...) Python Primitives (a) Viewer PlantGL (C++) MTG* (b) MTG AMAPmod (C++)

OpenAlea

Le projet OpenAlea Communauté scientifique «libre» Choix d une licence libre pour OpenAlea Développement distribué (Coding Sprint) Langage de modélisation (Python) Langage commun pour expérimentation Assemblage de composants Architecture modulaire Système à composants Composition dynamique (dataflow) Programmation visuelle Génération automatique de la GUI Réutilisation intuitive Qualité logicielle Méthode et outils de développement Portabilité MTG Statistic 3D Viewer Ecophysiology Graph Graph Graph Ligh Ligh Ligh t Biophysic ODE New Me thod Your Me thod Simulation

Deployment Tools Visualea OpenAlea Architecture GUI PyQt4 Component framework Component Package Manager Dataflow Python Library Existing Models JEmbed Numeric SciPy Boost, SWIG Python XML f2py Database math GUI GUI shell C, C++, Fortran Java Classes C++ Classes, C Code Fortran Code

Visual Programming Dataflow Package Manager Widgets Component Python Interpreter

Définition d un noeud Simple fonction Python Arguments multiples I/O (ports) Port name : nb_plants Interface : IInt Interface typée Documentation

Widgets réutilisables Générés automatiquement A partir de l interface des ports d entrés Int, Float, String, File, Color, List, Dict, Widgets spécifiques Ajout dynamique de nouveaux widgets Plot 2d, Plot3d Editeur complexe,

Environnement de dév. intégré Création de Package Edition d un noeud

Interopérabilité entre plateformes

Plateformes à composants Plateforme Propose un ensemble de services Intégration, introspection, Permet d offrir une interface unifiée Méthodologie commune Règles de diffusion, Description des composants, Composition des composants Orchestration de l activation et de la communication entre les composants

Connexion OpenAlea - DTK E. Moscardi et al. J.Wintz and Asclepios INRIA

OpenAlea - DTK

OpenAlea / GroIMP Communication Client/Serveur (http et xml) GroIMP, Kniemeyer et. al.,

OpenAlea / L-système LStudio, Prusinkiewicz et. al. L+Py, Boudon et. al.

Guidelines: Méthode agile

Guidelines Complexité inhérente Différents langages Différents outils (compilateurs, wrappers, ) Simplifier et automatiser Déploiement (compilation, installation) Intégration continue Composants et GUI Assemblage de composants hétérogènes Objectif vitesse

Communauté libre Licence libre Kernel : CeCILL-C Visualea: CeCILL Composants: Choix d une licence libre ou non Animation de la communauté «Coding sprint» pour les architectes «Modeling sprint» pour architectes / modélisateurs Développement collaboratif gforge Documentation et code accessible à tous Serveur d intégration continu

Animation - Coding Sprint Sprints Hackatons d OpenBSD (1999) Apparus dans le monde Python vers 2003 (Zope3) Méthode (XP) Salle commune Programmation en binôme Cycle TDD (Test driven development) Ecriture des tests Documentation (API) Développement svn commit Refactoring

Modeling Sprints Public Biologistes (modélisateurs et utilisateurs) et informaticiens Objectifs Intégration des modèles Test de la plateforme par des utilisateurs Pratique Entre 1 et 3 jours Présentation et formation des biologistes Utilisation de la plateforme avec des données réelles Intégration des modèles, réalisation de tutoriaux Développement et débogage d OpenAlea en fonction des retours utilisateur

Modeling Sprint (suite) Intérêts Utilisateur Certains problèmes soulevés par l utilisateur sont corrigés rapidement. L utilisateur peut agir sur le développement de son outil. Formation privilégiée. Développeur Retour concret de l utilisateur (installation, ergonomie, fonctionnalités). Expression des problèmes. Evolution de la plateforme en fonction du besoin.

Conclusions Python Intégration de composants hétérogènes Langage de modélisation Assemblage dynamique de composants Dataflow, Programmation visuelle Flexible et extensible Multi-domaine (plant architecture, meristem, ) Doit être simple d utilisation Communication entre plateformes Echange dynamique de composants