ExpertSystems
Transcription
ExpertSystems
EXPERTSYSTEMS ExpertSystems Embarcadero All-Access EUVRARD Cédric 3è trimestre 2010 I. Cadre du stage ................................................................................................................................. 2 A. L’entreprise.................................................................................................................................. 2 B. L’équipe de travail ....................................................................................................................... 3 C. L’environnement ......................................................................................................................... 3 II. Tâches effectuées ............................................................................................................................ 5 A. Installation et découverte d’All-Access ....................................................................................... 6 B. Développement de démonstrations ........................................................................................... 7 III. Connaissances technologiques.................................................................................................... 8 A. Delphi 2010 ................................................................................................................................. 8 B. C++Builder 2010 .......................................................................................................................... 9 C. Delphi Prism 2010 ..................................................................................................................... 10 D. JBuilder 2008 ............................................................................................................................. 10 E. 3rdRail........................................................................................................................................ 11 F. Delphi for PHP ........................................................................................................................... 12 G. Autres modules (relatifs aux bases de données, à l’optimisation de code Java et à la modélisation des processus métiers) ................................................................................................ 12 IV. Droit du travail........................................................................................................................... 13 V. Conclusion ..................................................................................................................................... 14 A. Embarcadero/Open Source ....................................................................................................... 14 B. Choix du langage et du Système de Gestion de Bases de Données Relationnelles .................. 15 C. 1. Choix du langage ................................................................................................................... 15 2. Choix du SGBDR ..................................................................................................................... 15 Système expert ou requêtes sur bases de données .................................................................. 16 VI. Bibliographie.............................................................................................................................. 16 VII. Annexes ..................................................................................................................................... 18 1 I. Cadre du stage A. L’entreprise ExpertSystems est une entreprise individuelle (auto-entreprise) fondée par Fabien QUANTIN, ingénieur en génie civil, à Nice en juillet 2010. Les locaux de l’entreprise sont situés sur les hauteurs de la ville. Le but du stage est d’aider à la mise en place de la cellule de production de l’entreprise en testant des outils logiciels acquis (Embarcadero All-access, moteurs de bases de données) et en commençant l’exploitation de ces logiciels. ExpertSystems a plusieurs objectifs commerciaux: Développer des applications desktop, client/serveur et web sur commande à l’aide de la suite logicielle Embarcadero All-Access sous différents langages (PHP, Delphi ou Pascal Objet, C++, Java, .Net, Ruby) ; Modéliser et concevoir des bases de données : o dans un 1er temps: dBase, Paradox, MySQL, SQL Server, InterBase, Firebird, BlackFishSQL, PostGreSQL ; o dans un 2° temps : Oracle, IBM, Sybase, Informix ; Administrer et optimiser de bases de données : MySQL, SQL Server, InterBase, Firebird, PostGreSQL ; Regrouper l’administration de plusieurs SGBD avec DBArtisan ; Développer des projets spécifiques : o des systèmes experts destinés à différents domaines d’application dans les secteurs divers (ingénierie, informatique, électronique, RH, économie, finance, banque, assurance, médecine, biologie, agriculture, agronomie, géologie, chimie, biochimie, production, ateliers flexibles) diagnostic et maintenance (45% des applications); conception et planification (20% des applications) ; contrôle, pilotage et surveillance (15% des applications) Exemples : analyse du risque client, contrôle de dossier, analyse de bilans, contrôle des procédés (pétrole, ciment), rédaction de contrats standards tel que des contrats d’assurances, analyse de dossier de prêt. Intérêt : rapidité, fiabilité et évolutivité des traitements 2 o des outils de management de projet destiné à un usage interne (management des projets informatiques) et externe (projets de génie civil ou industriel) o intégration de systèmes experts dans l’outil de mangement de projet Ces objectifs sont complémentaires étant donné qu’All-Access pourra aider à décliner ces projets spécifiques en différentes versions (web, client/serveur, monoposte, mobile) et plateformes (Windows, UNIX, Linux, Apple). B. L’équipe de travail L’équipe est composée de : Fabien QUANTIN : ingénieur senior en génie civil bénéficiant d’une expérience en développement : langage Delphi (Pascal Objet), C++ et PHP ; Florent PICARD : ingénieur développeur senior multi langages responsable de la transposition du système expert sous différents environnements ; Cédric EUVRARD : étudiant en 3° année à SUPINFO, spécialiste réseau et développeur junior multi langages. Chaque membre de l’équipe est lié par un accord de confidentialité concernant le développement du système expert. C. L’environnement Au sein des locaux, le réseau informatique en place comprend: 2 PC HP avec respectivement Windows XP et un écran 17’’ et Windows Vista et un écran 22’’ (hébergeant la suite logicielle); 2 PC portables Packard Bell 12’’ et Sony 15’’ ; 1 serveur HP Mediasmart à usage grand public pour le partage de fichiers ainsi que la gestion des sauvegardes des ordinateurs sur le réseau et disposant d’un accès à distance; 3 1 serveur HP Mediasmart utilisé pour l’hébergement des bases de données ; Une imprimante réseau multifonction laser Samsung. Ce réseau informatique permet par ailleurs de réaliser les tests des applications client/serveur en conditions réelles d’utilisation. L’outil logiciel principal est la suite Embarcadero All-Access composée de modules permettant : La modélisation de processus métiers des entreprises : o La modélisation d’applications : o o Delphi ou Pascal Objet : Delphi 2010 ; o C++ : C++Builder 2010 ; o Delphi.Net : Delphi Prism 2010 ; o PHP : Delphi 2.1 for PHP ; o Ruby : 3rdRail 2.0 ; o Java : JBuilder 2008 R2 ; L’optimisation de développement Java : InterBase SMP 2009 ; La modélisation de bases de données : o JOptimizer 2009 ; L’utilisation du SGBD Interbase : o ER/Studio Software Architect 1.0 (ex EA/Studio); Le développement d’applications: o ER/Studio Business Architect 1.6.1 ; ER/Studio Data Architect 8.5.2 ; La conception de bases de données : o Rapid SQL 7.7.0 ; o Rapid SQL Developer 2.1.3 (ex Power SQL); L’administration de bases de données: o DBArtisan 8.7.4 ; o DB Change Manager 5.5.1 ; L’optimisation de bases de données : o DB Optimizer 2.5 ; 4 Pour des besoins de migration sous Delphi, une organisation spécifique (logiciels et documentation) est en place. Cette dernière comprend les versions : Turbo Pascal 5.5 ; Delphi 3 ; Delphi 7 ; Delphi 8 pour .Net ; Delphi 2005 ; Delphi 2006 ; Delphi 2007 ; Delphi 2009. D’autres outils logiciels viennent compléter la suite All-Access : Les packages Devart intégrés à RAD Studio (Delphi 2010, C++Builder) apportent des composants supplémentaires pour l’interaction avec les SGBD MySQL et SQL Server; NetBeans et Apache Tomcat ; Apache ; Turbo JBuilder 2007 ; MySQL et son outil de management : MySQL Administrator ; Microsoft SQL Server 2005 et SQL Server Management Studio ; FireBird ; DataBase Tour ; WireShark (monitoring réseau) ; Tortoise SVN. Par ailleurs, le progiciel de gestion intégré (OpenERP) a été retenu comme système d’information de l’entreprise. II. Tâches effectuées Tous les modules d’All-Access ont été pris en main à travers la réalisation d’applications concrètes. 5 Par ailleurs, une sensibilisation à l’utilisation du système expert en cours de développement a été effectuée par la rédaction d’une mini base de connaissances dédiée à l’optimisation des ressources (développeurs) en rapport avec les caractéristiques techniques des projets informatiques. L’objectif étant de déterminer les avantages d’un tel système par rapport à des requêtes SQL sur des bases de données. Les tâches suivantes ont été effectuées au cours du stage : Installation et découverte des modules All-Access (cf Paragraphe I.c) ; Développement d’applications concrètes (ci-après) ; Initiation au système expert ; Refonte du site web www.expertsystems.fr afin qu’il reflète au mieux les moyens et les compétences techniques de l’entreprise (après remise du rapport de stage). A. Installation et découverte d’All-Access Au cours du stage, tous les modules ont été installés séparément sur l’ordinateur hôte. A l’origine, les applications sont téléchargeables grâce à l’outil mis en place par Embarcadero, la ToolBox. Cette dernière permet de télécharger et d’installer automatiquement les applications sur le disque dur. La ToolBox permet de gérer le mode de fonctionnement des différents modules et même de les démarrer. On peut également y visualiser les versions des produits installées, le chemin de celles qui y sont installées et celles qu’on peut télécharger. Cependant, cela nécessite une connexion Internet très performante car chaque exécutable d’application fait plusieurs centaines de MégaOctets or il y en a 16 dans la suite All-Access. Une alternative consiste à se procurer le Media Kit (DVD d’installation des applications), solution retenue pour le stage. La ToolBox dispose du mode Instant On qui permet de faire fonctionner les applications comme des CDLive, c’est-à-dire, simuler leur présence sur l’ordinateur sans avoir à les installer. Il existe une version « Réseau » de la ToolBox permettant de gérer les licences et de déployer les outils Embarcadero auprès des utilisateurs, c’est le ToolCloud. Les logiciels doivent ensuite être activés à leur première exécution, étant donné qu’All-Access fonctionne avec un système de licences disponibles sur le compte de l’acheteur sur edn.embarcadero.com. Chaque application possède son code d’activation propre sur le compte. 6 Ces deux étapes (installation et activation) sont assez lourdes à réaliser parce que les installations sont longues et que pour chaque activation, il faut fournir l’identifiant Embarcadero, le mot de passe et le numéro de série de l’application à activer. Enfin, la découverte d’All-Access a été effectuée en testant chaque module pour avoir un aperçu de son fonctionnement et de son interface. B. Développement de démonstrations Suite à la découverte des modules, au moins une application a été réalisée, bien évidemment dans le langage propre au module. Ainsi, des applications ont été développées en PHP, puis en Delphi, C++, Java, .Net et Ruby. Les modules de base de données ont servi à modéliser, créer, administrer et optimiser une base sous InterBase, MySQL, Microsoft SQL Server et FireBird. Pour le développement des démos, le déroulement a été le même. La première étape a été une découverte de chaque langage avec ses spécificités propres et ses domaines de prédilection (ex : PHPWeb). Ensuite, un apprentissage a été nécessaire pour certains langages (Pascal, C++). Puis, des exemples ont été recherchés sur Internet pour explorer les différentes fonctionnalités. Après, le développement de l’application a été commencé. Et enfin, des tests ont été menés pour corriger les erreurs et améliorer l’ergonomie. Pour Delphi, cela a été un peu différent car des tests de compatibilité des composants ont été effectués avec des exemples livrés avec les versions antérieures de Delphi à notre disposition. Ceci a permis de retracer l’historique de l’EDI Delphi et les évolutions qu’il a connu depuis sa création en 1995. Pour les modules de bases de données, aucune application n’a été développée mais différentes tâches ont été effectuées selon la spécificité de chacun. En effet, ils ont tous des fonctions différentes et ciblent une phase spécifique de la vie des bases de données. 7 III. Connaissances technologiques Plusieurs types d’applications ont été réalisés. Selon le langage et les outils disponibles dans les modules de développement : une application de gestion d’entreprise: carnet d’adresse liée à une base de données d’abord locale puis distante. Développement réalisé en langage Pascal Objet sous Delphi, C++, PHP ; un convertisseur de devises. Développement réalisé en Pascal Objet sous Delphi, C++, PHP, Java, Pascal Objet sous Delphi Prism ; une application client/serveur (envoi de messages du client vers le serveur) en Java ; une application type « HelloWorld » déclinée en servlet (HTML encapsulé dans du Java) et en JSP (appel Java encapsulé dans du HTML). Par ailleurs d’autres applications ont été importées (voir annexe All-Access) et modifiées sous l’environnement All-Access dans le cadre de test de migration et de compatibilité (open source/AllAccess). Pour les besoins de l’application de gestion d’entreprise, une base de données a été construite pour interagir avec cette application développée en différents langages. C’est le SGBDR MySQL qui a été utilisé. La base de données contient 3 tables : la table « clients » ; la table « employés » ; la table « user ». Cette dernière contient des login et des mots de passe. Elle sert uniquement pour l’authentification pour l’application en PHP. La base de données a d’abord été crée et utilisée en local puis ensuite exportée sur un serveur distant. A. Delphi 2010 Deux applications ont été réalisées en Pascal Objet, appelé aussi langage Delphi, sur cet EDI : une application de gestion d’entreprise liée à la base de données ; 8 un convertisseur de devises. L’application de gestion permet de visualiser les tables « clients » et « employés ». On peut également ajouter, supprimer ou modifier les lignes dans ces 2 tables. Pour réaliser cette application, certains composants ont été utilisés. Ces composants sont des composants DBExpress et doivent remplacer à terme les composants BDE (Borland Database Engine). DBExpress est apparu dans la version Delphi 7 en 2002 mais est encore peu utilisé à cause de la complexité de son utilisation. En effet, cinq composants (TDatasource, TClientdataset ou TSQLQuery ou TSQLTable, TDatasetProvider, TSQLDataset, TSQLConnexion) sont nécessaires pour arriver au même résultat qu’avec trois pour le BDE (TDatasource, TTable ou TQuery, TDatabase) mais les ressources sont beaucoup moins sollicitées. Dans DBExpress, un composant TSimpleDataSet existe pour regrouper les fonctionnalités des composants TClientDataset, TDatasetProvider et TSQLDataset et ainsi rappeler l’esprit du BDE mais finalement, ce composant est plus complexe que les 3 pris séparément. Avec le BDE, les changements dans les données de la base étaient transférés directement entrainant des accès et du transfert d’informations permanents entre l’application et la base. La bande passante était donc tout le temps occupée par ces transferts. Avec DBExpress, les changements sont enregistrés dans un cache (composant TClientDataset) via la commande « post » et sont transférés via la commande « applyupdates ». Le convertisseur permet de convertir en euros, dollars US, livres Sterling et francs en affichant le taux de change. B. C++Builder 2010 Les applications développées sont les mêmes que pour Delphi. C’est-à dire une application de gestion d’entreprise et un convertisseur de devises. Cependant, l’application de gestion est plus ergonomique que sous Delphi et plus aboutie. Elle utilise différentes fenêtres plutôt que des onglets corrigeant ainsi l’absence de rafraichissement automatique des pages après modification. Les composants sous C++Builder 2010 sont identiques aux composants sous Delphi 2010. 9 C. Delphi Prism 2010 Seul le convertisseur a été développé mais en 2 versions. Delphi Prism est un plugin de Visual Studio 2008, 2010 et MonoDevelop et permet de développer pour les OS Windows et Mac. Une version pour chaque OS a été réalisée. Les développements pour Mac nécessitent une compilation en langage natif (Mono) et le respect de la charte graphique Apple disponible sous AppleStore. Le passage par MonoDevelop permet de développer pour MacOS X et iPhone OS. La syntaxe du Pascal Objet sous Delphi Prism présente quelques différences par rapport à celle sous Delphi. Par exemple, les méthodes de « cast » des variables (chaîne de caractèresentiers) sont différentes (cf code source). Les noms changent également : méthode remplace procédure et fonction. Sous Delphi Prism, la syntaxe se rapproche des langages totalement orientés objet comme Java ou C#. D. JBuilder 2008 Java offre également de nombreuses possibilités, il permet de développer des applications monoposte, web ou client/serveur. Aussi, différentes types d’applications sont présentées : un convertisseur de devises (monoposte); un programme de calcul de matrice en mode console a été récupéré et la classe matrice qu’il utilise a été adaptée (monoposte); une application client/serveur où le client envoie des messages au serveur ; un annuaire téléphonique qui interroge un fichier texte contenant les données (client/serveur) ; un jeu simulant de l’intelligence artificielle (monoposte) ; une application type « HelloWorld » en servlet et JSP (web). Il est possible d’exporter des projets Java sous différents formats selon les besoins : 10 les fichiers JAR (Java ARchive) est un fichier ZIP utilisé pour distribuer un ensemble de classes Java. Ce format est utilisé pour stocker les définitions des classes, ainsi que des métadonnées, constituant l'ensemble d'un programme. les fichiers WAR (Web Application aRchive) sont des archives JAR contenant des fichiers XML, des classes Java, des JSP (Java Server Page) et d'autres objets pour les applications Web ; les fichiers EAR (Enterprise Application aRchive) sont des archives JAR contenant des fichiers XML, des classes Java et d'autres objets pour les applications d'entreprise ; les fichiers RAR (Resource Adapter aRchive) sont des archives JAR contenant des fichiers XML, des classes Java et d'autres objets pour l'architecture de connecteurs (JCA) de la plateforme J2EE ; les fichiers AAR (Axis ARchive) sont des archives JAR spécifiques pour le déploiement de service web sous Axis 2. Les fichiers WAR, EAR, RAR, AAR sont également des fichiers JAR mais de structure différente. Tous les outils Java Embarcadero (JBuilder2008, RapidSQL Developer, J Optimizer) reprennent l’EDI Eclipse. E. 3rdRail 3rdRail est un EDI destiné à faire du Ruby, un langage uniquement pour faire du web. Des difficultés rencontrées lors de la configuration ne permettent pas d’exploiter l’ensemble des fonctionnalités de ce module. Une alternative à 3rdRail consiste à utiliser l’EDI NetBeans. Ainsi, sous 3rdRail, il n’est actuellement pas possible de réaliser des projets Rail toutefois des projets Ruby restent envisageables. Pour mémoire, Ruby on Rail est un framework open source, c’est-à dire des bibliothèques de classes, qui se greffe sur l’interpréteur Ruby. 3rdRail est son équivalent en Embarcadero. Attention, Delphi On Rails n’est ni un framework, ni un module lié à 3rdRail mais un modèle d’architecture basé sur MVC (Modèle Vue Contrôleur) et REST (Representational State Transfert). 11 F. Delphi for PHP PHP est un langage orienté web. Ainsi les pages php obtenues sont destinées à être hébergées sur un serveur web. Il est impossible de créer des fichiers exécutables. Deux applications ont été développées en PHP : une application de gestion d’entreprise similaire à celle réalisée sous Delphi et C++Builder avec une fonction d’authentification supplémentaire pour accéder à la page d’administration ; un convertisseur de devises. Dans le cadre de la refonte du site web www.expertsystems.fr, Delphi for PHP sera utilisé pour créer des pages web pouvant accéder à la base de données du système expert. G. Autres modules (relatifs aux bases de données, à l’optimisation de code Java et à la modélisation des processus métiers) Nous avons abordé précédemment (points A, B, C, D, E, F) les modules relatifs au développement d’applications pour lesquels des exemples concrets ont été réalisées. Les autres modules relatifs à la modélisation, à la conception, à l’administration et à l’optimisation de bases de données ou applications Java et également de modélisation de processus métiers faisant partie d’All-Access sont détaillés dans le cadre de l’annexe All-Access jointe au présent rapport. 12 IV. Droit du travail ENVIRONNEMENT JURIDIQUE (DROIT SOCIAL) : OIT: Organisation Internationale du Travail -> www.ilo.org JURIDICTION COMPETENTE: CONSEIL DES PRUD'HOMMES -> www.justice.gouv.fr DDTEFP : Direction départementale du travail et de la formation pro DDTEFP -> www.travail-solidarite.gouv.fr INSPECTION DU TRAVAIL: inspecteur du travail, contrôleur du travail, médecins-inspecteurs -> www.travail-solidarite.gouv.fr CONVENTION COLLECTIVE -> www.ma-convention-collective.com MEDECINE DU TRAVAIL ->www.travail-solidarite.gouv.fr ->www.inrs.fr HIERARCHIES DES SOURCES DROIT COMMUNAUTAIRE (REGLES, TRAITES BILATERAUX) ET DROIT INTERNATIONAL CONSTITUTION DE 1958 LOIS ET ORDONNANCES REGLEMENTS ET DECRETS JURISPRUDENCES CONVENTIONS COLLECTIVES, REGLEMENT INTERIEUR CONTRAT DE TRAVAIL CODES www.legifrance.gouv.fr CODE DU TRAVAIL CODE DE LA SECUTITE SOCIALE 13 Exemples : L1221-1 L: partie législative (loi) R: partie réglementaire (décrets en Conseil d'Etat) D: partie réglementaire (décrets simples) 1: partie 2: livre 2: titre 1: chapitre -1: article ANNEXE : CODE DE TRAVAIL CDT ENTREE PAR THEMES CDT ENTREE PAR ARTICLES V. Conclusion A. Embarcadero/Open Source Bien qu’All-Access soit un environnement propriétaire, les outils de développement qu’il intègre sont assez proches d’EDI disponibles en open source. Seul Delphi et Delphi Prism restent des environnements propriétaires propres à Embarcadero. Ces derniers utilisent le langage Pascal Object avec des modifications mineures sous Delphi Prism. Delphi Prism ouvre aux développeurs Pascal Object des possibilités de réaliser aisément des applications pour des plateformes différentes (Windows, Linux, MacOS, UNIX). En effet, Delphi Prism n’est pas un EDI mais un plugin intégré à Visual Studio et MonoDevelop. All-Access permet un développement d’applications plus rapide en apportant des bibliothèques de composants fournies et des interfaces graphiques conviviales. 14 B. Choix du langage et du Système de Gestion de Bases de Données Relationnelles 1. Choix du langage Le choix d’un langage est conditionné par les paramètres suivants : type d’application : web, client/serveur, monoposte ; type de plateforme : Windows, Linux, MacOS, UNIX ; fonctionnalités spécifiques (unicode, gesture, multitouch…). Java et Pascal Object (sous Delphi Prism) permettent de réaliser tous les types d’application sur toutes les plateformes. Java restant un langage interprété s’adapte plus facilement à différentes plateformes grâce à la JVM (Java Virtual Machine). Par contre, Pascal Object doit être écrit et compilé de manière spécifique pour chacune des plateformes. PHP et Ruby sont uniquement destinés à développer des applications web. Delphi et C++ restent des langages très performants pour des applications monoposte et client/serveur. 2. Choix du SGBDR L’histoire des SGBDR est mouvementée (cf http://fadace.developpez.com/sgbdcmp/story/) Le choix des SGBDR est vaste (cf http://fadace.developpez.com/sgbdcmp/). Le classement 2005 Winter TopTen Award Winners représente les plus gros volumes de données et leur SGBDR (cf www.wintercorp.com/VLDB/2005_TopTen_Survey/2005TopTenWinners.pdf). Les SGBDR compatibles avec les outils de développement Embarcadero sont les suivants: Open Source Oracle MySQL ; Oracle Database ; Microsoft SQL Server ; Sybase ASA/ASE ; IBM DB2 ; IBM Informix ; Embarcadero BlackFish ; Embarcadero InterBase ; 15 Open Source FireBird. Les caractéristiques propres à ces SGBDR (embarqué, volume, fiabilité, prix, plateforme) déterminent le choix d’un de ces SGBDR. Les SGBDR compatibles avec les outils de bases de données Embarcadero sont : Open Source Oracle MySQL ; Oracle Database ; Microsoft SQL Server (licence retenue) ; Sybase ASA/ASE ; IBM DB2 ; IBM Informix ; Embarcadero BlackFish ; Embarcadero InterBase ; Open Source FireBird. C. Système expert ou requêtes sur bases de données La refonte du site web www.expertsystems.fr aura pour objectif de présenter les apports en terme de fonctionnalités (et non de développement) d’un système expert par rapport à une application effectuant des requêtes sur des bases de données. VI. Bibliographie Documentation interne http://www.developpez.com/ http://www.codes-sources.com/ http://www.commentcamarche.net http://edn.embarcadero.com/ http://cc.embarcadero.com/ 16 Delphi: http://docwiki.embarcadero.com/CodeSamples/en/Category:Delphi http://delphi.dev-dz.com/codesource.php Delphi Prism : http://www.codeproject.com/KB/net-languages/delphiPrismDemo.aspx http://delphi.dev-dz.com/codesource.php http://www.prestwoodboards.com/ASPSuite/KB/CrossRef.asp?LangID=13 JBuilder : http://b.kostrzewa.free.fr/java/ http://download.oracle.com/javase/tutorial/index.html http://www.cui.unige.ch/java/exemples/index.html http://www.eclipsetotale.com/ http://www.jmdoudoux.fr/accueil_java.htm http://www.jgoodies.com/downloads/ http://triton.towson.edu/~schmitt/server/servlet/ http://www.objis.com/formation-java/ http://www.courses.coreservlets.com/ Delphi for PHP : http://www.delphi-php.net/ http://paul.versayo.free.fr/ 3rdRail : http://www.opensourcerails.com/projects/upcoming http://snippets.dzone.com/tags/rails 17 VII. Annexes Annexe All-Access Annexe Code du Travail Applications 18