Designer et l`ingénierie du logiciel
Transcription
Designer et l`ingénierie du logiciel
Designer et l’ingénierie du logiciel Notions élémentaires P.-A. Sunier, ISNet Neuchâtel avec le concours de C. Kohler et P. Ferrara 1 Propos liminaires............................................................................................................................................. 1 1.1 Objectifs de publication .......................................................................................................................... 1 1.2 Genèse..................................................................................................................................................... 2 1.3 Version de Designer utilisée ................................................................................................................... 2 2 Notions élémentaires....................................................................................................................................... 3 2.1 Introduction............................................................................................................................................. 3 2.2 Présentation succincte de Designer ......................................................................................................... 3 2.3 Nos choix de mise en œuvre de Designer ............................................................................................... 4 2.3.1 Postulat de base ............................................................................................................................... 4 2.3.2 Cadre méthodologique .................................................................................................................... 4 2.3.3 Cible de génération.......................................................................................................................... 5 2.3.4 Démarche méthodologique.............................................................................................................. 5 2.4 Fonctionnalités de Designer par phase.................................................................................................... 6 2.4.1 1ère phase – Définition d’un projet................................................................................................... 6 2.4.2 2ème phase – Modélisation conceptuelle des données (MCD) ......................................................... 6 2.4.3 3ème phase - Transformation des objets de niveau conceptuel en objets de niveau logique............ 7 2.4.4 4ème phase – Enrichissement du modèle logique de données (MLD) .............................................. 8 2.4.5 5ème phase - Scripts SQL DDL ..................................................................................................... 10 2.4.6 6ème phase – APIs de tables ........................................................................................................... 11 2.4.7 7ème phase – Test de l’intégrité de la structure de données............................................................ 12 2.4.8 8ème phase – Modélisation logique des traitements (MLT)............................................................ 13 2.4.9 9ème phase – Test de l’application.................................................................................................. 15 3 Liens utiles .................................................................................................................................................... 17 3.1 Plus d’informations ............................................................................................................................... 17 3.2 Mise en pratique.................................................................................................................................... 17 3.3 Références............................................................................................................................................. 17 1 Propos liminaires 1.1 Objectifs de publication Sous le titre général « Designer et le génie logiciel », nous publierons une série d’articles inspirés de nos travaux de recherche appliquée menés au sein du centre de compétences « Systèmes d’information et informatique de gestion » , dénommé ISNet, de la Haute Ecole Spécialisée de Suisse occidentale, abrégée HES-SO. Nous n’avons pas l’ambition de nous substituer au constructeur Oracle et aux sociétés de conseils; nous ne traiterons pas les subtilités du produit, de son installation, de son paramétrage, des différences entre les versions mais nous nous concentrerons sur les aspects relevant de l’ingénierie du logiciel tels que la méthodologie, la normalisation et la standardisation, la qualité des applications ou encore la réutilisation de tout ou partie de projets ou sous-projets. Article 1 - 1/17- Août 2005 1.2 Genèse Les bases de cette série d’articles découlent de notre projet de recherche appliquée ISNet-14 , « Atelier de génie logiciel et génération Web ». Ce projet avait été initialisé en 1999 sur la base, entre autres, des considérations suivantes : • Le besoin de production de systèmes d’information aptes à répondre aux changements environnementaux dans des délais de plus en plus courts et à des coûts maîtrisés peut probablement être satisfait en mettant en place les concepts de l’ingénierie… • Après la déconvenue des coûts cachés du poste client de l’architecture Client/Serveur, de nombreuses organisations sont intéressées par la mise en place d’architectures à 3 niveaux. Le troisième niveau , le serveur d’application, est censé accueillir de manière unifiée l’essentiel des ressources matérielles de traitement qui sont hébergées dans chaque poste client de l’architecture Client/Serveur ; le poste client redeviendrait une ressource matérielle légère… A partir des considérations émises, nous retenions les principes suivants : • Nous voulons explorer les voies de l’industrialisation et du déploiement d’applications dans une architecture à multiples niveaux, composée de serveur(s) de données, serveur(s) d’application et de clients universels sous forme de navigateurs Web. • Pour satisfaire aux objectifs d’industrialisation, nous nous appuierons sur le concept de référentiel. Le référentiel devra être partageable et pouvoir être alimenté par des outils graphiques de modélisation de données et de traitements. Le référentiel devra contenir, d’une manière ou d’une autre, l’ensemble des règles de gestion du système d’information à produire. • Afin d’éviter toute erreur d’interprétation des spécifications lors de la production du logiciel des divers niveaux, et pour satisfaire au but d’automatisation, nous nous servirons de générateurs de code. Les générateurs devront nous permettre de générer le logiciel de chacun des niveaux indépendamment l’un de l’autre mais, toujours à partir de la même base de spécification : le référentiel. A partir des principes émis, nous retenions le choix stratégique suivant : • nous nous appuierons sur un atelier de génie logiciel (AGL) du marché. L’AGL que nous retiendrons doit satisfaire aux exigences que nous avons énoncées… de plus, il doit nous permettre de modéliser les données et les traitements sous forme de vues organisationnelles, conceptuelles, logiques ou physiques. Pour satisfaire aux objectifs d’intégration que nous nous sommes fixés, l’AGL choisi devra être homogène et inclure toutes les fonctionnalités attendues sans devoir faire appel à des services externes. Si l’AGL est propriétaire, les résultats qu’il fournira devront être exploitables selon les normes et standards existants. A partir de ce choix stratégique, nous avions retenu l’AGL Designer de l’éditeur Oracle sur la base des considérations suivantes : • il nous permet de générer des scripts SQL de création de bases de données selon la norme ANSI, le standard ODBC ou une syntaxe propre aux acteurs principaux du marché : IBM-DB2, SQL Server, Sybase, Oracle… • il nous permet de générer les applications clientes dans le cadre d’une architecture à 2 niveaux sous forme de code source C++ ou Visual Basic en plus de son format propriétaire Forms ; • dans le cadre d’une architecture à 3 niveaux, il nous permet de générer la logique du serveur d’application sous forme de code Java, LiveHTML, Perl ou PL/SQL. Le serveur d’application et les générateurs respectent les standards HTML, CORBA et EJB. 1.3 Version de Designer utilisée De manière générale, nous essayerons de nous attacher aux concepts ; de ce fait, la version de Designer n’est pas essentielle. Une grande partie du contenu de nos articles s’applique aux versions anciennes 2.1.2, 6, ou 6i. Nous utiliserons la version 9i de Designer, plus précisément 9.0.2, pour illustrer le début de cette série d’articles. Si nous devions illustrer ou baser nos propos sur des éléments d’anciennes versions de Designer nous le mentionnerons pour éviter toute confusion. Article 1 - 2/17- Août 2005 2 Notions élémentaires 2.1 Introduction Cet article initial est consacré à la présentation des notions élémentaires de Designer dans une vision d’ingénierie. Par ingénierie nous entendons une démarche méthodologique susceptible de favoriser la maîtrise de la qualité, des délais et des coûts de production des logiciels. Designer est un atelier de génie logiciel couvrant un large spectre des activités liées à l’informatisation des systèmes d’information. Designer prend en charge les activités d’analyse, de conception et de génération de code, tout en offrant des fonctionnalités de transformation entre niveaux d’abstraction, de documentation et d’analyse de dépendance ; cette liste de fonctionnalités n’est pas exhaustive mais correspond, à notre sens, aux fondements de Designer. 2.2 Présentation succincte de Designer Dans une première approche simplifiée, nous pourrions définir Designer comme un couple formé d’une base de données Oracle, nommée référentiel ou Repository, et d’une application exécutable dans un environnement Windows ; l’application exécutable est nommée : client Designer. • Le référentiel contient les spécifications du système d’information, sujet de notre analyse, conception et/ou génération. • Le client Designer regroupe les outils de modélisations, les générateurs et, sous forme d’utilitaires, les outils d’édition de rapports, d’analyse d’impact ou encore de consultation du référentiel. Figure 1 - Le référentiel et les outils de Designer (Aide en ligne de Designer 2.1) La figure 1 montre le client Designer composé des outils de modélisation qui alimentent le référentiel et de générateurs qui créent le code exécutable ou la documentation à partir du contenu du référentiel. Article 1 - 3/17- Août 2005 La figure 2 montre le panneau de commande des fonctionnalités du client Designer 9i sous Windows. • Le groupe Model System Requirements regroupe les outils de modélisation de niveau organisationnel ou conceptuel, dans le sens français du terme. • Le groupe Transform Preliminary Designs regroupe les outils de transformation des modèles de données et de traitements conceptuels en modèles logiques. • Le groupe Design and Generate contient l’outil de modélisation logique ou de conception, dans le sens anglophone du terme ; l’outil de modélisation, Design Editor, permet de concevoir les modèles logiques de données et de traitements, mais également les modèles physiques de données. • Le groupe Repository Tools contient les utilitaires d’édition de rapports, d’analyse d’impact, de consultation et d’administration du référentiel. Figure 2 - Panneau de commande de Designer 9i 2.3 Nos choix de mise en œuvre de Designer 2.3.1 Postulat de base Nous nous sommes fixés comme contrainte de ne jamais retoucher le code généré par Designer, sauf dans le cas très rare, mais existant, de correction d’un bug de générateur qui s’avèrerait fatal. Nous reviendrons plus en détail, dans un prochain article, sur les solutions offertes par Designer pour personnaliser le code en tant que spécifications en amont de la génération. 2.3.2 Cadre méthodologique Dans un premier temps, nous limitons notre utilisation de Designer aux seules fonctionnalités qui nous permettront d’atteindre, avec un maximum d’efficience, l’objectif de « génération de code dans un environnement n-tiers » que nous nous sommes fixé . Nous avons arrêté le choix suivant : Article 1 - 4/17- Août 2005 • • • au niveau de la modélisation organisationnelle ou conceptuelle, Model System Requirements, nous ne retenons que l’outil de modélisation conceptuelle des données Entity RelationShip Diagrammer. La modélisation des traitements ne débouchant pas ou peu sur des spécifications exploitables automatiquement dans la suite du processus de conception et génération de logiciels nous ne la retenons pas ; par contre, la modélisation des traitements fera l’objet d’un article futur. nous retenons Database Design Transformer pour la transformation des modèles conceptuels de données en modèles logiques ; naturellement, nous retenons Design Editor pour la modélisation logique des données et des traitements, ainsi que pour la génération des divers scripts exécutables, compilables ou interprétables. 2.3.3 Cible de génération Nous créerons notre structure de données de test en nous limitant volontairement aux seules bases de données Oracle. La génération des scripts SQL-DDL est paramétrable et permet de cibler les produits de différents constructeurs ; mais les APIs de tables qui enrichissent les définitions normalisées SQL sont propriétaires et ne s’appliquent qu’aux bases de données Oracle ou à d’éventuelles bases qui seraient compatibles au niveau des paquetages PL/SQL et des triggers. Plusieurs voies sont possibles pour générer des applications exécutables dans un environnement n-tiers comme nous nous l’étions imposé pour notre projet de recherche appliquée ISNet-14. Parmi les possibilités offertes, nous avons choisi la technologie Web PL/SQL d’Oracle. 2.3.4 Démarche méthodologique Sur la base du cadre méthodologique retenu, nous avons défini une démarche méthodologique basée sur une approche top/down. Nous proposons une méthodologie basée sur les différents niveaux d’abstraction de modélisation des données; elle intègre les fonctionnalités de Designer à mettre en œuvre. Notre démarche méthodologique est découpée en 9 phases. 1ère phase 2 ème phase Définition d’un projet Modélisation conceptuelle des données (MCD) 3ème phase Transformation des objets de niveau conceptuel en objets de niveau logique 4ème phase Enrichissement du modèle logique de données (MLD) 5 ème phase Génération et exécution des scripts SQL-DDL 6 ème phase Génération et exécution des scripts de création des APIs de tables 7ème phase 8 ème phase Test de l’intégrité de la structure de données Modélisation logique des traitements (MLT) Génération et exécution des scripts de création de modules 9ème phase Test de l’application Au chapitre suivant, nous allons montrer les fonctionnalités de Designer utilisées lors de ces différentes phases et en donner une explication succincte. Dans nos prochains articles nous expliciterons ces fonctionnalités plus complètement. Article 1 - 5/17- Août 2005 2.4 Fonctionnalités de Designer par phase 2.4.1 1ère phase – Définition d’un projet Le navigateur de contenu du référentiel, Repository Object Navigator ou RON, permet de créer des projets. Avec notre approche de Designer pour ce premier article, un projet correspond à une application à développer. Les projets, Application dans la terminologie Oracle, sont regroupés au sein d’espaces de travail, Workarea. Les espaces de travail et projets permettent de partitionner le référentiel. La figure 3 montre le projet Ex_Garage dans l’espace de travail Sunier. Figure 3 - Projets et espace de travail 2.4.2 2ème phase – Modélisation conceptuelle des données (MCD) Entity Relationship Diagrammer nous permet de créer nos modèles conceptuels de données. Les modèles sont conçus selon un formalisme propriétaire. Les associations entre entités sont binaires ; les cardinalités sont représentées graphiquement. Figure 4 – MCD / Eléments et notation Article 1 - 6/17- Août 2005 2.4.3 3ème phase - Transformation des objets de niveau conceptuel en objets de niveau logique Database Design Transformer transforme nos objets conceptuels de modélisations des données en objets logiques. Dans l’environnement de Designer, le modèle logique est de nature relationnelle, selon la définition donnée par Codd ; les entités deviennent des tables, les associations deviennent automatiquement des colonnes de clés étrangères, des contraintes de clés étrangères et des index … Cette transformation est fortement paramétrable par le concepteur. Grâce aux possibilités de paramétrage offertes, le concepteur peut effectuer de nombreux aller et retour entre les niveaux conceptuels et logiques sans altérer le contenu des différents niveaux. Figure 5 - Paramétrage de la transformation La figure 5 montre les entités que l’outil de transformation a trouvées dans le projet ; dans le cas particulier, nous pouvons observer que toutes les entités ont déjà donné lieu à une table. En respectant la méthodologie que nous préconisons, toute entité du modèle conceptuel de données est associée à une table du modèle logique de données. La figure 6 montre ce couplage, au niveau du référentiel, entre entité et table. Figure 6 - Couplage entre entité et table Article 1 - 7/17- Août 2005 2.4.4 4ème phase – Enrichissement du modèle logique de données (MLD) Design Editor nous permet d’effectuer : • la modélisation logique des données, sous forme de tables, colonnes, contraintes, etc • la modélisation logique des traitements sous forme de modules, composants, etc. Par la suite, nous parlerons de conception pour définir l’activité effectuée avec Design Editor, le terme de conception doit être compris comme la traduction littérale du terme anglais « design » ; il n’y a donc pas de lien à faire entre cette activité de conception et les modèles conceptuels qui eux réfèrent à un niveau d’abstraction. Figure 7 - MLD /Eléments et notation Conformément à la méthodologie que nous préconisons, nous ne créerons pas de tables comme nous le ferions dans une vision de développement RAD (Rapid Application Development). Nous enrichirons les tables obtenues par la phase précédente de transformation d’entités en tables. L’enrichissement portera sur des éléments comme la traçabilité des manipulations de données des utilisateurs, l’automatisation de génération de clés primaires, la dénormalisation, etc. Si nous ne créons pas de tables au niveau logique, nous créons des objets, telles les séquences, qui n’existent pas au niveau conceptuel. Le modèle logique de données supporté par Designer est nommé Server Model. De notre côté, nous utiliserons plutôt le terme de modèle relationnel. Article 1 - 8/17- Août 2005 La table GAR_CLIENTS de la figure 8 a été créée par l’outil de transformation et enrichie avec Design Editor alors que la séquence GAR_CLI_SEQ a été créée directement par Design Editor. Figure 8 - Tables et séquences du modèle relationnel Article 1 - 9/17- Août 2005 2.4.5 5ème phase - Scripts SQL-DDL Le générateur de script SQL-DDL, Server Generator, n’est pas accessible depuis le panneau de commande de Designer, il est accessible en tant qu’élément exécutable de l’outil de conception Design Editor. Le générateur de script SQL-DDL utilise, en entrée, les spécifications contenues dans le modèle relationnel, Server model, et génère, en sortie, un script respectant la norme SQL et/ou les spécificités d’un constructeur, respectivement d’un produit. Figure 9 - Générateur de script SQL-DDL La figure 10 montre le script généré pour la table GAR_CLIENTS ; nous voyons les colonness d’audit, préfixés CTRL, que nous avons ajoutées au moment de l’enrichissement pour assurer une forme de traçabilité. Figure 10 - Script de création de table Article 1 - 10/17- Août 2005 2.4.6 6ème phase – APIs de tables Tout comme pour la génération des scripts SQL-DDL, le générateur d’APIs de tables, Server API, utilise, en entrée, les spécifications contenues dans le modèle relationnel, Server model, et génère, en sortie, des scripts sous forme de procédures stockées PL/SQL et de triggers. Les APIs de tables sont une sur-couche propre à Oracle pour enrichir la sémantique mise en place par les scripts de définition de données SQL-DDL. Les APIs de tables interceptent les ordres de manipulation de données et lancent l’exécution des procédures stockées qui enrichissent les règles et contraintes mises en places par les scripts SQL-DDL. Figure 11 – Couplage entre ordres DML et APIs de tables Figure 12 - Procédure d'API de table La figure 12 montre la procédure up_autogen_columns générée pour la table GAR_CLIENTS ; dans l’extrait de code, nous voyons le calcul de la valeur de clé primaire à partir de l’interrogation de la séquence GAR_CLI_SEQ. Article 1 - 11/17- Août 2005 2.4.7 7ème phase – Test de l’intégrité de la structure de données Le but de cette phase est de s’assurer que les contraintes liées aux données soient effectivement validées par le serveur de données. Pour ce faire, il faut effectuer tous les tests de manipulations de données en passant par l’intermédiaire de SQL*Plus ou d’autres utilitaires de ce genre. Il est essentiel de procéder rigoureusement à ces tests, car lorsque nous mettons en place une contrainte avec Designer, nous pouvons définir l’endroit, serveur de données ou application cliente, où la contrainte doit être vérifiée. Figure 13 - Validation des contraintes Dans le cadre d’un développement « manuel » d’une application nous implémentons les contraintes relatives aux données sur la base de données ou au niveau du client, voire au niveau du serveur d’application. Souvent, nous mettons des contraintes au niveau de l’application pour éviter tout trafic superflu sur le réseau. Toutefois, si nous voulons garantir l’intégrité absolue des données, il est indispensable de réécrire ces contraintes au niveau du serveur de données pour éviter une violation dans le cas où les données ne sont pas manipulées par l’application « usuelle ». Tout concepteur rechigne à introduire cette redondance qui est contraire au principe d’unicité du code. Avec Designer, nous résolvons élégamment cette problématique ; la contrainte n’est définie qu’une et une seule fois dans le référentiel, mais elle peut être générée au niveau du serveur et de l’application. La génération au niveau de l’application sous-entend naturellement que nous générons l’application avec Designer. Article 1 - 12/17- Août 2005 2.4.8 8ème phase – Modélisation logique des traitements (MLT) Design Editor permet la conception « logique » des données sous forme de modèles relationnels mais aussi de traitements sous forme de modules et composants. Figure 14 - MLT / Eléments et notation Designer permet de créer des modèles conceptuels de traitements sous forme de diagrammes d’analyse ou de diagrammes de flux de données « DFD, Dataflow Diagram » ; les fonctions ou processus sont transformés, par Application Design Transformer, en modules, tout comme les entités au niveau des données sont transformées, par Database Design Transformer, en tables. Ensuite, ces modules peuvent être enrichis par Design Editor selon un processus de conception proche de celui que nous avons décrit pour les données. Toutefois, comme nous n’avons pas retenu cette possibilité dans notre choix méthodologique, nous créons les modules, modèles de traitement logiques, directement avec Design Editor. Les modules de Design Editor se partitionnent en composants. Un composant permet de « manipuler » une table dite de base ; manipuler, dans le sens d’appliquer les opérations d’ajout, de modification ou de suppression. Une table peut être associée à une ou plusieurs tables de références ; l’association est proposée automatiquement à partir de la structure du modèle relationnel de données. Les composants peuvent être liés entre eux ; les liens sont proposés à partir des relations existantes entre les tables de bases des composants respectifs. Article 1 - 13/17- Août 2005 2.4.8.1 Génération des modules Web PL/SQL Lors de la conception d’un module, nous indiquons la nature de la génération de code à produire par la propriété Language. A partir du choix du langage de génération, le concepteur disposera de propriétés spécifiques à la cible choisie ; par contre, le concepteur pourra toujours générer un module pour une cible différente. La figure 15 montre les différentes cibles possibles de génération de module. Figure 15 – Choix des générateurs de modules Le concept des modules Web PL/SQL s’apparente aux pages JSP et servlets ; il s’agit de procédures aptes à fournir des pages HTML dont le contenu est adapté dynamiquement à l’évolution des données manipulées. La particularité de Web PL/SQL concerne la manière de stocker et d’exécuter les procédures ; les procédures sont stockées sous formes de paquetages dans la base de données, elles sont exécutées sous forme d’invocation distante s’apparentant à RMI. Le générateur Web PL/SQL s’appuie sur plusieurs librairies ou paquetages installés dans la base de données cible de la génération : • la librairie HTML pour le Web d’Oracle, dénommée PL/SQL Web Toolkit ; pour l’essentiel, cette librairie encapsule les balises HTML à l’intérieur de fonctions ou procédures PL/SQL ; • la librairie du générateur Web PL/SQL, paquetages préfixés WSG, à partir de laquelle le contenu dynamique des pages HTML est généré; • les APIs des tables qui sont manipulées par les modules . Figure 16 - Générateur Web PL/SQL Article 1 - 14/17- Août 2005 2.4.9 9ème phase – Test de l’application Les modules générés sont testés à partir d’un navigateur. Pour que les modules puissent être exécutés via une adresse URL, il faut disposer d’une passerelle qui convertisse l’URL en une invocation de procédure PL/SQL se trouvant dans une base de données. Figure 17 - Formulaire Web PL/SQL Article 1 - 15/17- Août 2005 2.4.9.1 Passerelle PL/SQL La passerelle PL/SQL est installée comme service du serveur d’application Oracle , iAS. Cette passerelle doit être configurée par un DAD, Database Access Descriptor. Le DAD permet de définir la base de données qui doit être accédée pour exécuter la procédure PL/SQL qui retournera la page HTML. Le DAD peut contenir les éléments d’identification -utilisateur et mot de passe- et de connexion à la base de données pour offrir un service public dans une vision Internet ; sinon, les éléments d’identification sont demandés à l’utilisateurs et utilisés pour la connexion à la base de données pour offrir un service « contrôlé » dans une vision Intranet.. Figure 18 - Architecture n-tiers Article 1 - 16/17- Août 2005 3 Liens utiles 3.1 Plus d’informations Si vous souhaitez plus d’informations, notre site consacré à Designer est à votre disposition. Le site Designer contient plusieurs entrées ; nous n’avons pas encore publié de documents spécifiques à la version 9i, nos documents les plus récents sont consacrés à la version 6i. Le sous-site « Les bases » de la version 6i de Designer , et plus particulièrement le cahier « 01 – Prise en main » traite des notion élémentaires présentées succinctement dans cet article. 3.2 Mise en pratique Les notions que nous avons présentées dans cet article peuvent être mise en œuvre en suivant la partie pratique du cahier « 01 - Prise en main » de notre sous-site « Les bases » de la version 6i de Designer. 3.3 Références L’auteur Pierre-André Sunier [email protected] HES-SO Haute Ecole Spécialisée de Suisse occidentale www.hes-so.ch HEG-NE Haute Ecole de Gestion de Neuchâtel www.he-arc.ch ISNet Centre de compétences Systèmes d’information et informatique de gestion http://www.is-net.ch/ Génie logiciel Articles du laboratoire de génie logiciel sous la rubrique « Génie logiciel » http://lgl.isnetne.ch/ Site Designer Notre site de formation consacré à Designer et ses soussites Projet de recherche appliquée ISNet-14 Atelier de génie logiciel et génération Web http://lgl.isnetne.ch/designer6i /index.htm http://lgl.isnetne.ch/isnet14/in dex.htm Projet ISNet-14 Article 1 - 17/17- Août 2005