46
1 1 GÉNÉRATION AUTOMATIQUE DU CODE JAVA Ministère de l'enseignement supérieur et de la recherche scientifique Préparé par : MOHAMED OULD YESLEM HERAGMI KAMEL EDDINE Centre universitaire de Souk-Ahras Centre universitaire de Souk-Ahras Dirigé par : Dr ABDELKRIM AMIRAT Soutenance en vue de l’obtention du diplôme de LICENCE EN INFORMATIQUE

Generateur de code java (GenJAVA)

Embed Size (px)

Citation preview

Page 1: Generateur de code java (GenJAVA)

11

GÉNÉRATION AUTOMATIQUE DU CODE JAVA

Ministère de l'enseignement supérieur et de la recherche scientifique

Préparé par :

MOHAMED OULD YESLEM

HERAGMI KAMEL EDDINE

Centre universitaire de Souk-AhrasCentre universitaire de Souk-Ahras

Dirigé par :

Dr ABDELKRIM AMIRAT

Soutenance en vue de l’obtention du diplôme de LICENCE EN INFORMATIQUE

Page 2: Generateur de code java (GenJAVA)

1. Introduction

2. Modélisation orientée Objet

3. Types de relation

− Héritage

− Association

− Agrégation

− Composition

− Implémentation

− Dépendance

− Classe-association

4. Document XMI

5. Approche de Génération du code

6. Implémentation des relations en java

7. Développement de l’outil(GenJava)

Plan de travail

2

Page 3: Generateur de code java (GenJAVA)

Déploiement

Système réel

RéalisationConceptionAnalyse

Introduction

Modèle d’Analyse

Modèle de Conception

Modèle de Réalisation

Modèle de Déploiement

UML (Unified Modeling Language)

3

Page 4: Generateur de code java (GenJAVA)

4

Introduction

Problématique

Objectif

La conception qui faite par UML doit être implémenter avec un langage de programmation pour réaliser un système réel , cette implémentation peut être automatiser ,a l’aide d’un modèle intermédiaire (XMI).

Model.UML Fichier.XMI Code source

1. réduire le temps de développement,

2. éviter les erreurs de programmation,

3. Facilite le développement de logiciel

Page 5: Generateur de code java (GenJAVA)

Autres méthodes Booch’91 OMT-1 OOSE Partenaires

Booch’93 OMT-2

Méthode unifiée 0.8

UML 0.9

UML 1.0

Octobre 1995

Janvier 1997

Juin 1999

UML 2.0

Historique d’UML

5

UML1.3

Page 6: Generateur de code java (GenJAVA)

Les 13 diagrammes UML

6

Page 7: Generateur de code java (GenJAVA)

Modélisation orientée Objet

Résumé• UML est une notation, pas une méthode.• UML est un langage de modélisation objet.• UML convient pour toutes les méthodes objet.• UML est dans le domaine public.

Programmation Orientée Objetmodéliser informatiquement des éléments d'une partie du monde réel en un ensemble d'entités informatiques (objets)

Intérêt d'une méthode orientée objet • définir le problème à haut niveau sans rentrer dans les spécificités du langage• définir un problème de façon graphique• utiliser les services offertes par l’objet sans rentrer dans le détail de programmation (Encapsulation)• Réutilisation du code

7

Page 8: Generateur de code java (GenJAVA)

Notion d’ObjetUne abstraction du monde réel c.-à-d.. des données informatiques

regroupant des caractéristiques du monde réel

Exempleune personne, une voiture, une maison, ...

Caractérisation d’un objetIdentité

Attributs

Méthodes

FIAT-UNO-17 : Voiture

233434 : Numéro de série1500 kg : Poids8864 YF 17 : Immatriculation133 000 : kilométrage

Démarrer ()Arrêter()Rouler()

Modélisation orientée objet(3)

8

Page 9: Generateur de code java (GenJAVA)

Notion de Classe• Structure d'un objet, c.-à-d. une déclaration de l'ensemble des entités

qui composeront l’objet• Un objet est donc "issu" d'une classe, c'est le produit qui sort d'un

moule

Notation un objet est une instanciation (occurrence) d'une classe

Modélisation orientée objet(4)

Nom_de_la_classe

#Atribut1: type-Attribute2: type

+Methode1()-Methode2()

9

Page 10: Generateur de code java (GenJAVA)

FIAT-UNO-17

233434 : Numéro de série1500 kg : Poids8864 YF 17 : Immatriculation33 000 : kilométrage

Renault-Clio-17

5323454 : Numéro de série1500 kg : Poids64 YFT 17 : Immatriculation23 000 : kilométrage

Modélisation orientée objet(5)

Voiture

+Numero_de_serie: int+Poids: double+Immatriculation: String+Kilometrage: double

+Demarrer()+Arreter()+Rouler()

10

3434 : Numéro de série1700 kg : Poids8634 YGG 75 : Immatriculation15 000 : kilométrage

Peugeot-206-75

Page 11: Generateur de code java (GenJAVA)

Visibilité des attributs définissent les droits d'accès aux données (pour la classe elle-même, d'une classe héritière, ou bien d'une classe quelconque)

Publique (+) les classes peuvent accéder aux données et méthodes d'une classe définie avec le niveau de visibilité public

Protégée (#): l'accès aux données est réservé aux fonctions des classes héritières

Privée (-): l'accès aux données est limité aux méthodes de la classe elle-même

Nom_de_la_classe

#Atribut1: type-Attribute2: type

+Methode1()-Methode2()

11

Modélisation orientée objet (6)

Page 12: Generateur de code java (GenJAVA)

Principe classe dérivée contient les attributs et les méthodes de sa superclasse

Spécialisation Généralisation

étendre les propriétésd'une classe, sous forme de sous-classes

factoriser les propriétésgroupe de classes sousforme de super-classe

Chaque personne de l’université est identifiée par son nom, prénomLes étudiants ont plus un noEtudiantLes enseignants ont un numéro de téléphone interne

Types de relation : Héritage

12

Page 13: Generateur de code java (GenJAVA)

13

Navigabilité Par défaut une association est navigable dans les deux sens

Chaque instance de voiture a un lien vers le propriétaireChaque instance de Personne a un ensemble de lien vers les voitures

Restriction de la navigabilitéLe service de contravention est associé à une ou plusieurs voiture(s) La voiture ne connaît pas service de contravention

Navigable

Types de relation : Association

Page 14: Generateur de code java (GenJAVA)

14

Multiplicités

1 : la classe est en relation avec un et un seul objet de l’autre classe

1..* : la classe est en relation avec au moins un objet de l’autre classe

0..* : la classe est en relation avec 0 ou n objets de l’autre classe

0..1 : la classe est en relation avec au plus un objet de l’autre classe

Une voiture est achetée par une et une seule personne Une personne peut acheter

0 ou n voitures

Types de relation : Association

Page 15: Generateur de code java (GenJAVA)

15

Type de relations A « contient » des instances de B,

Propriétés de l’agrégation La suppression de A n’implique pas la suppression de B L'élément agrégé peut être partagé

Exemples : L’enseignant est un composantd’une (ou plusieurs) équipe de recherche d’un seul département

La disparition d’une équipe derecherche n’entraine pas la disparition d’un enseignant

BA

Agrégat

Types de relation : Agrégation

Page 16: Generateur de code java (GenJAVA)

16

La suppression de A entraine la suppression de B

Exemple:

« Une présentation PowerPoint est composé de transparents »

La suppression de la présentation entraine la disparition des transparents qui la compose

Types de relation : Composition

Page 17: Generateur de code java (GenJAVA)

Types de relation : Implémentation

17

Une interface est la spécification externe (en terme d’opérations) d’une classe.

Une interface peut donc contenir des opérations. Une classe réalise une interface si elle est capable d’exécuter

toutes les opérations de l’interface. Une classe peut implémente plusieurs interfaces

Notation

Interface

Page 18: Generateur de code java (GenJAVA)

Types de relation : Dépendance

18

La notion de dépendance est plus floue que les précédentes. Il est difficile de faire une nomenclature complète des possibles relations de dépendance.

Notation:

ClassUn ClassException

Page 19: Generateur de code java (GenJAVA)

Types de relation : Classe-association

19

Une classe-association possède les caractéristiques des associations et des classes : elle se connecte à deux ou plusieurs classes et possède également des attributs et des opérations.

Notation:

Page 20: Generateur de code java (GenJAVA)

Diagramme de classes

20

Exemple complet

Page 21: Generateur de code java (GenJAVA)

21

XMLNe tient pas compte de la mise en forme, mais seulement du contenu.Un système de balises permet de décrire les éléments de structure du document, ainsi que les relations entre ces élémentsChaque balise peut disposer d'un ou plusieurs attributs

Document XMI

<EtatCivile>

<Nom>Heraguemi</Nom>

<Prenom>Kamel eddine </Prenom>

<Naicence>

<Date>

<Jour>30</Jour>

<Moi>05</Moi>

<Annee>1989</Annee>

</Date>

</Naicence>

</EtatCivile>

Page 22: Generateur de code java (GenJAVA)

22

XMI (XML Métadata Interchange)Exprimer les concepts de la modélisation objet.possible d'encoder un modèle UML dans un fichier au format XML

Document XMI (suite)

Page 23: Generateur de code java (GenJAVA)

23

1. Etapes de génération de code

Génération structurelle de code Génération comportementale du code Génération de la spécification

2. Approche Il existe 2 approches principaux:

mapping direct des modèles UML vers un langage de programmation

Génération de code avec un modèle intermédiaire

Approche de génération du code

Page 24: Generateur de code java (GenJAVA)

24

Modèle UML

Modèle JAVA

Modèle C#

Description de la Platform C#

Description de la Platform JAVA

Transfo

rmati

on

Transfo

rmati

on

Approche de génération du code (suite)

Figure 3. 2- Génération de code avec Un modèle Intermédiaire.

T

ran

sform

ati

on

Tra

nsfo

rmatio

n

Modèle UML

Modèle JAVA

Modèle Intermédiaire

Description de la Platform JAVA

Génération de code avec Un modèle Intermédiaire

Génération de code avec le mapping direct

Page 25: Generateur de code java (GenJAVA)

Implémentation des relations en Java

25

Page 26: Generateur de code java (GenJAVA)

26

Implémentation des relations en Java (2)

Page 27: Generateur de code java (GenJAVA)

27

Implémentation des relations en Java (3)

Page 28: Generateur de code java (GenJAVA)

28

Développement de l’outil (GenJava)

Environnement de développement

Environnement matériel

• « HP » avec un processeur Intel(R) Core(TM)2 Duo CPU T5870@ 2.00GHz 2.00 GHz d'une Ram de 2 G et d'un disque dur de 250 Go

• « Acer » avec un processeur Intel Pentium dual-core processor de vitesse 800 MHz, doté d'une Ram de 2 G et d'un disque dur de 160 Go.

Environnement logiciel 

• Environnement de développement : Eclipse Galileo 3.5.• Outil de conception : StarUML 5.0.2.

Page 29: Generateur de code java (GenJAVA)

29

Développement de l’outil (GenJava)(suite)

Vue dynamique de GenJava

Etat Initiale

Création de Workspace

Etat 3Etat 2

Charger XMI

Nettoyage

Traitement

Design Model.xml

Classe.java

Etat Finale

Charger StarUML

Exportation

Model. uml

File.xml

Page 30: Generateur de code java (GenJAVA)

30

Nettoyage

Design Model.xml

Ce fait a l’aide de deux classes responsable sur ce traitement sont la classe principal.java et la classe parser.java , la première recherche l’emplacement

de design model et la deuxième pour faire l’extraction de design model

Etape de nettoyage

Design Model.xml : Contient seulement tous les concepts qui concerne le diagramme de classe

Page 31: Generateur de code java (GenJAVA)

Vue statique de GenJavaLa structure interne de GenJava et Compose en 3 paquetages :

1. Classe_Interface_Pack.2. Relation.3. Interface.

31

Etape de Traitement

Cl_int_Pack

SwingInterface

Relation

USE

US

EU

SE

Diagramme de paquetage de GenJava

Le paquetage « Relation » Contient les Classes qui représentent les déférentes relations représenter par

Diagramme de classe , Comme l’héritage ,l’implémentation …

Le paquetage « CL_Int_Pack » Contient les Classes qui représentent les déférents concepts représenter par Diagramme de classe , Comme Les classes ,les

Interfaces …,

Le paquetage « Interface » Contient les Classes qui construire l’interface de GenJava

Page 32: Generateur de code java (GenJAVA)

32

Extraire les concepts qui concerne

les méthodes« UML:Operation»

Extraire les concepts qui concerne

les parametre des méthodes

« UML:Parametre»

Extraire les concepts qui concerne les attributs

« UML:Attribut»

Extraire tout les concepts qui concernant

les classes exceptions« UML:ClassException»Extraire tout les concepts

qui concerne les classes association

« UML:AssociationClass »

Extraire tout les concepts qui

concerne les classes

« UML:Class »

Extraire tous les concepts qui concerne

les interfaces« UML:Interface »

Crée les fichiers qui concerne

chaque concept

Scanner le fichier XML pour obtenue un fichier Design model.xml. et   Extraire les package

« UML:Package»

Extraire les valeurs de chaque concepts a partir de

Design Model. xmlExtraire les types

des attributs et des méthodes

«UML: DataType »

Etape de Traitement (2)

Page 33: Generateur de code java (GenJAVA)

33

Relation

Generalisation

Dependance

Association

+1

1..*

1 2 Associationend

Implementation

Multiplicite

Extraire les concepts qui concerne

les relations associations« UML:Association »

Extraire les concepts qui concerne

Les sous relation associationEnd« UML:AssociationEnd »

Extraire les concepts qui concerne

les implémentations« UML:Realization »

Extraire les concepts qui concerne

les dépendance s« UML:Dependency »

Extraire les concepts qui concerne

les généralisations « UML:Generalization »

Extraire les concepts qui concerne

les multiplicités « UML:Multiplicity 

»

Etape de Traitement (3)

Page 34: Generateur de code java (GenJAVA)

Fonctionnement de GenJava

34

Icone GenJava

Changer le Workspace

Chemin de Workspace

validation de projet

Nom projet

La page d’accueil de GenJava

Page 35: Generateur de code java (GenJAVA)

Fonctionnement de GenJava (2)

35

Interface de travaille

On clic sur le Botton(StarUML) pour ouvrir

StarUml et crier le diagramme de classe

Page 36: Generateur de code java (GenJAVA)

Fonctionnement de GenJava(3)

36

Exemple

Page 37: Generateur de code java (GenJAVA)

Fonctionnement de GenJava (4)

37

Ouvrir le fichier XMI

On clic sur le Botton(Open XMI) pour Ouvrir le fichier XMI

Précédamant crier

Page 38: Generateur de code java (GenJAVA)

Fonctionnement de GenJava (5)

38

Fichier XMI

On clic sur le Botton(Generation) pour générer les codes Java

propre

Page 39: Generateur de code java (GenJAVA)

Fonctionnement de GenJava (6)

39

Résultat de la class1 (code Java propre)

Page 40: Generateur de code java (GenJAVA)

Fonctionnement de GenJava (7)

40

Résultat de la class2 (code Java propre)

Page 41: Generateur de code java (GenJAVA)

Fonctionnement de GenJava (8)

41

Résultat de la class3 (code Java propre)

Page 42: Generateur de code java (GenJAVA)

Fonctionnement de GenJava (9)

42

Résultat de la class4 (code Java propre)

Page 43: Generateur de code java (GenJAVA)

Fonctionnement de GenJava (10)

43

Résultat de l’interface (code Java propre)

Page 44: Generateur de code java (GenJAVA)

Fonctionnement de GenJava (11)

44

Résultat de l’exception1 (code Java propre)

Page 45: Generateur de code java (GenJAVA)

Fonctionnement de GenJava (13)

45

Résultat de l’exception2 (code Java propre)

Page 46: Generateur de code java (GenJAVA)

46