Spécialisation / généralisation évolutive Comparaison de complexité avec une solution statique conventionnelle Créé: Juin 2005 Rédigé : Léonard Sandoz Modifié: Dirigé : Pierre-André Sunier Laboratoire de Génie Logiciel HEG NE Index Préambule Modélisation classique Modélisation évolutive Discussion des deux approches de modélisation o Modélisation classique o Modélisation évolutive L'application classique o Le détail de l'application Entité CONTENEUR - Cassette Entité CONTENEUR - Classeur L'application évolutive o Le détail de l'application Entité TYPE_ATTRIBUTS Entité DOMAIN Entité VALEUR_REF Entité ATTRIBUT Entité TYPE_CONTENEUR Entité TYCON_ATTRIBUT Entité CONTENEURS Entité VALEUR
Préambule Ce document traite d'une problématique courante dans le monde actuel qui est en perpétuelle mutation, l'évolutivité des systèmes d'information. Ce changement permanent entraîne la transformation, l'adaptation des systèmes d'information selon des nouveaux besoins, des nouvelles règles. Donc la qualité des logiciels ne se limite plus à leur conformité à un cahier des charges initial, mais à leur potentialité d'évolutivité, ainsi la capacité de réactivité des SII aux changements de règles de gestion devient un critère essentiel. Le but est de passer d'une solution figée de modélisation à une solution évolutive de modélisation pour répondre au besoin de réactivité des futurs systèmes d'information. Pour illustrer la capacité d'évolutivité ou non d'un modèle de donnée, nous utiliserons l'exemple du conteneur d'objet, dont ses attributs varient selon le type de conteneur défini. Par exemple un conteneur, peut être un carton avec un attribut renseignant sa dimension, ou un conteneur peut aussi être un classeur, d'un certain type ou encore une cassette avec une durée d'enregistrement variable. L'objectif de ce document est de fournir un jeu de valeurs test pour évaluer la complexité de la solution de modélisation évolutive. Voir notre projet de recherche ISNet - 72 Modélisation classique La modélisation classique permet de régler simplement certains cas discutés lors de la présentation de la problématique à résoudre. Voir le document Elaboration de systèmes d'information informatisés (SSI) évolutifs Prenons l'exemple suivant des conteneurs pour la modélisation classique.
L'entité Conteneur permet de représenter la notion de spécialisation généralisation. Nous observons que le conteneur ici considéré comme une entité "Sur-type" peut être spécialisé en plusieurs autres entités "Sous-type" comme Carton, Classeur, Recueil, Cassette ou encore CD. D'après un tel modèle la première solution consiste à ne créer qu'une seule table. Elle comportera les colonnes relatives aux attributs de l'entité Conteneur et elle comportera aussi toutes les colonnes représentant les classes enfants. Ces colonnes seront forcément optionnelles même si à la base elles avaient un caractère obligatoire. De plus les différentes entités "Sous-type" seront représentées par une colonne intégrée à la table Conteneur. Voir le chapitre 10 du document Designer - Modélisation des données, Niveau conceptuel. Modélisation évolutive Pour dépasser les cas discutés lors de la problématique à résoudre, il faut mettre sur pied une modélisation évolutive. Prenons l'exemple suivant des conteneurs pour la modélisation évolutive. Pour commencer, ce modèle permet de créer dynamiquement des spécialisations grâce à un typage et de plus il permet de créer dynamiquement des attributs spécifiques aux spécialisations. Les entités TYPE_CONTENEUR et CONTENEUR permettent de créer dynamiquement les spécialisations qui sont spécifiées de manière statique dans le modèle classique. Les entités TYPE_ATTRIBUT, ATTRIBUT et VALEUR rendent le modèle évolutif même si les entités enfants de conteneur possèdent des attributs spécifiques. Cette représentation est en fait un méta-modèle, elle permet de modéliser la structure particulière de la généralisation spécialisation.
Discussion des deux approches de modélisation Modélisation classique Le modèle de données utilisé pour la modélisation classique a été illustré précédemment. Son entité "CONTENEUR", est une entité de genre "Sur-type", permettra le stockage des objets à inventorier. La modélisation du concept des domaines de spécialisation des objets est mis en place par l'intermédiaire du concept d'entité "Sous-type". Dans l'entité de genre "Sur-type" sont introduites des entités du genre "Sous-type" qui spécialisent un genre de conteneur. Ces "Sous-type" d'entités définissent le type de conteneur. Chaque "Sous-type" d'entité possède ses propres attributs. Nous pouvons remarquer que ce modèle classique est beaucoup moins riche que le modèle évolutif, mais qu'il est plus facile à comprendre. Modélisation évolutive Le modèle de données utilisé pour la modélisation évolutive est celui présenté à la page précédente. L'entité "CONTENEUR" permettra le stockage des objets à inventorier. L'entité " TYPE_CONTENEUR " modélise le concept de spécialisation des objets. En effet, chaque objet pourra, selon sa nature, être rattaché à une spécialisation pour lequel des attributs spécifiques auront été définis. L'entité "ATTRIBUT" est prévue pour le stockage des attributs. L'entité associative " TYCON_ATTRIBUT" permet de faire le lien entre les attributs et les spécialisations. C'est à ce niveau que les attributs sont rattachés aux spécialisations. Pour chaque couple spécialisation - attribut une valeur propre à un objet pourra être définie au sein de l'entité "VALEUR". L'entité "TYPE_ATTRIBUT" permettra le stockage des différents types de données standards tels que les numériques, les chaînes de caractères ou encore les dates mais également la définition d'autres types plus évolués comme le formatage d'une adresse e-mail, d'un numéro de téléphone, etc. L'entité "DOMAIN" reprend le concept de domaine de valeurs ("Domains") prévu par Oracle Designer, car un attribut peut ou non être lié à un domaine de valeurs de référence. L'entité "VALEUR_REF" permet le stockage des valeurs de référence d'un domaine de valeurs. Pour le domaine "TY_SEXE" (Sexe), les valeurs de référence seront "Homme" et "Femme" par exemple. C'est au sein de l'entité "VALEUR" que seront stocké les valeurs des attributs pour un objet. Comme expliqué ci-avant, la nouvelle structure de données prévoit la définition de la longueur et du nombre de décimales des valeurs de référence d'un domaine de valeur au niveau de ce dernier (entité "DOMAIN"). L'association liant les entités "VALEUR_REF" et "TYPE_ATTRIBUT" est remplacée par l'association "estde" liant les entité "TYPE_ATTRIBUT" et "DOMAIN" pour que la définition du type de donnée des valeurs de référence d'un domaine se fasse au niveau du domaine.
L'application classique L'application classique, est basée comme son nom l'indique, sur la modélisation classique et le modèle proposé précédemment. Cette application est figée, elle permet à l'utilisateur de saisir des objets de type conteneur qui correspondent à un des quatre types prédéfinis soit Cassette, CD, Classeur ou encore Recueil. Par figée il faut aussi comprendre qu'il n'est pas possible de créer de nouveaux types d'attributs, ainsi que changer la structure des différents conteneurs. Nous remarquons que cette application liste les différents conteneurs dans le cadre de gauche et le détail de chacun d'entre eux est affiché dans le cadre de droite, mais avec les attributs appartenant à tous les types de conteneur, ce qui n'est pas idéal.
Lorsqu'un utilisateur veut créer un nouveau conteneur appartenant à un type de conteneur existant, voici le formulaire qui lui est proposé. Lors de la saisie des différents conteneurs, une attention particulière doit être mise sur les différents champs à remplir selon le type de conteneur auquel appartient le nouveau conteneur créé. Effectivement rien n'empêche l'utilisateur de saisir une valeur pour le champ "Taille", bien qu'il est en train de créer un conteneur de type Classeur. Nous illustrons cet exemple en créant le "Classeur 003", avec une "Epaisseur" de 8 et une "Taille" de 10, normalement ce champ est réservé pour les type des conteneur de style CD.
Le détail de l'application Pour gérer ce problème, l'application doit être modifiée pour n'afficher que les champs concernant le type de conteneur saisi. On peut remarquer qu'une modélisation classique est bien moins complexe et moins longue à mettre en œuvre, mais elle ne résout pas tous les problèmes de gestion, ce qui implique après coup la modification de l'application découlant de cette modélisation. Pour répondre à ces nouveaux besoins, il faut mettre en place un module par type de conteneur, et ainsi chaque module gérera un type de conteneur. Ensuite un menu devra permettre à l'utilisateur de choisir quel type de conteneur il veut gérer. Pour illustrer ce propos, nous avons mis au point une application de gestion de deux types de conteneurs soit les Classeurs et les Cassettes. La suite de ce chapitre illustre la gestion des cassettes ainsi que la gestion des classeurs. Pour chacune de ces spécialisations, un zoom est effectué sur chaque entité du modèle, montrant d'une manière répétitive l'entité dans son environnement immédiat, un jeu de valeurs de test, ainsi qu'une copie écran illustrant les concepts mis en place. La correspondance entre le jeu de valeurs de test et la copie écran est réalisée par la mise en gras du ou des tuples correspondants. Pour mieux saisir la fonction précise de l'entité, elle est intégrée à son environnement immédiat, mais pour ne pas perdre le lecteur, elle est toujours entourée d'un cercle.
Entité CONTENEUR - Cassette CONTENEURS COTE DESCRIPTION TYPE_ CONTENEUR CLASSEUR_ EPAIS. LARG. PROF. TAILLE CASSETTE_ EPAIS. 003.001 Cassette longue CAS 90 durée 003.002 Cassette durée CAS 60 moyenne 003.003 Cassette 003 CAS 001.001 Classeur 001 CLA 001.002 Classeur 002 CLA 5 40 Pour la gestion des différentes cassettes l'écran suivant est proposé à l'utilisateur Cet écran de saisie est propre à la saisie d'information concernant les conteneurs de type cassette et seules les informations concernant les cassettes peuvent être saisies.
Lorsque l'utilisateur presse sur le bouton nouveau, cette fenêtre de saisie apparaît, ainsi il ne peut plus se tromper de champs lors de sa saisie. Entité CONTENEUR - Classeur CONTENEURS COTE DESCRIPTION TYPE_ CONTENEUR CLASSEUR_EPAIS. LARG. PROF. TAILLE CASSETTE_ EPAIS. 003.001 Cassette longue CAS 90 durée 003.002 Cassette durée CAS 60 moyenne 003.003 Cassette 003 CAS 001.001 Classeur 001 CLA 001.002 Classeur 002 CLA 5 40
Le même concept a été déployé pour la gestion des classeurs Et voici l'écran de saisie conçu pour l'entrée d'information concernant les classeurs. Cet écran de saisie est dédié à la saisie d'information concernant les conteneurs de type classeur et seules les informations concernant les classeurs peuvent être saisies.
L'application évolutive A partir du modèle de données évolutif présenté, voici le menu de l'application qui a été développé. Depuis ce menu principal toute l'évolutivité de l'application est visible. On peut créer des nouveaux types d'attribut, donc créer de nouveaux types de données basés sur les type de données SQL Ensuite la gestion des domaines de valeurs de références permet de gérer les différents domaines de valeurs qui peuvent être utilisés par certains attributs. Dans ce même formulaire, un lien "Gestion des domaines de valeurs de références" a été introduit pour permettre à l'utilisateur de gérer les valeurs de références d'un domaine particulier. En exemple sont montrés les valeurs de références pour le domaine TY_POLITESSE.
Sinon la gestion des attributs nous permet de créer des attributs répondant à certains besoins, et de les affecter aussi avec les nouveaux types d'attributs définis précédemment. Une fois les nouveaux types d'attributs et attributs créés, ainsi que les différents domaines de valeurs, des nouveaux type de conteneurs peuvent être ajoutés, grâce à la gestion des types de conteneurs. La dernière fonctionnalité du menu permet la gestion des différents conteneurs utilisés. Le détail de l'application L'articulation de la suite de ce document se calque sur l'ordre des différentes manipulations à effectuer pour saisir un conteneur. Un zoom est effectué sur chaque entité du modèle, montrant d'une manière répétitive l'entité dans son environnement immédiat, un jeu de valeur de test, ainsi qu'une copie écran illustrant les concepts mis en place. La correspondance entre le jeu de valeurs de test et la copie écran est réalisée par la mise en gras du ou des tuples. Pour mieux saisir la fonction précise de l'entité, elle est intégrée à son environnement immédiat, mais pour ne pas perdre le lecteur, elle est toujours entourée d'un cercle.
Entité TYPE_ATTRIBUTS TYPES_ATTRIBUT CODE TYPE_SQL FORMAT EXPR_REGULIERE Caractère VARCHAR2 ^.*$ Date DATE jj.mm.aaaa ^[[:digit:]]{2}\.[[:digit:]]{2}\.[[:digit:]]{4}$ E-Mail VARCHAR2 jean.dupont@he-arc.ch ^.+\@.+\.[[:alpha:]]{2,3}$ Numérique NUMBER ^[[:digit:]]+$ ^[[:digit:]]+\.[[:digit:]]+$ ^[[:digit:]]{1,5}\/[[:digit:]]{3}\.[[:digit:]]{2}\.[[:digit:]]{2} Téléphone VARCHAR2 032/724.24.24 $
Entité DOMAIN DOMAIN TYPE_ATTRIBUT ( fk ) CODE LIBELLE LENGTH DECIMALE Caractère TY_OUINON Oui / Non 3 0 Caractère TY_POLITESSE Politesse 10 0 Caractère TY_SEXE Sexe 5 0
Entité VALEUR_REF VALEURS_REF DOMAIN ( fk ) TY_OUINON TY_OUINON TY_POLITESSE TY_POLITESSE TY_POLITESSE TY_SEXE TY_SEXE DONNEE Oui Non Famille Monsieur Madame Homme Femme
Entité ATTRIBUT ATTRIBUTS TYPE_ATTRIBUT ( fk ) CODE NOM LENGTH DECIMALE Numérique EPAISSEUR Epaisseur 5 2 Numérique LARGEUR Largeur (cm) 5 2 Numérique PROFONDEUR Profondeur (cm) 5 2 Numérique DUREE Durée (en minutes) 5 2 Numérique TAILLE Taille 5 2
Entité TYPE_CONTENEUR TYPE_CONTENEUR CODE CAS CD CLA REC LIBELLE Cassette CD Classeur Recueil
Entité TYCON_ATTRIBUT TYCON_ATTRIBUTS ATTRIBUT ( fk ) TYPE_CONTENEUR ( fk ) EPAISSEUR EPAISSEUR LARGEUR PROFONDEUR PROFONDEUR CLA REC CLA CD CLA
Entité CONTENEURS CONTENEURS TYPE_CONTENEUR ( fk ) COTE DESCRIPTION CLA 001.001 Classeur 001 CLA 001.002 Classeur 002 REC 002.001 Recueil 001 CAS 003.001 Cassette longue durée CAS 003.002 Cassette durée moyenne
Entité VALEUR VALEUR CONTENEUR ( fk ) TYPE_CONTENEUR ( fk ) TYCON_ATTRIBUT ( fk ) DONNEE CLASSEUR 001 CLA EPAISSEUR 6 CLASSEUR 001 CLA LARGEUR 3 CLASSEUR 001 CLA PROFONDEUR 1 CLASSEUR 002 CLA EPAISSEUR 5 CLASSEUR 002 CLA LARGEUR 40 CLASSEUR 002 CLA PROFONDEUR RECUEIL 001 REC EPAISSEUR