Generateur de code java (GenJAVA)

Preview:

Citation preview

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

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

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

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

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

Les 13 diagrammes UML

6

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

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

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

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

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)

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

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

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

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

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

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

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

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:

Diagramme de classes

20

Exemple complet

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>

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)

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

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

Implémentation des relations en Java

25

26

Implémentation des relations en Java (2)

27

Implémentation des relations en Java (3)

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.

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

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

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

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)

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)

Fonctionnement de GenJava

34

Icone GenJava

Changer le Workspace

Chemin de Workspace

validation de projet

Nom projet

La page d’accueil de GenJava

Fonctionnement de GenJava (2)

35

Interface de travaille

On clic sur le Botton(StarUML) pour ouvrir

StarUml et crier le diagramme de classe

Fonctionnement de GenJava(3)

36

Exemple

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

Fonctionnement de GenJava (5)

38

Fichier XMI

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

propre

Fonctionnement de GenJava (6)

39

Résultat de la class1 (code Java propre)

Fonctionnement de GenJava (7)

40

Résultat de la class2 (code Java propre)

Fonctionnement de GenJava (8)

41

Résultat de la class3 (code Java propre)

Fonctionnement de GenJava (9)

42

Résultat de la class4 (code Java propre)

Fonctionnement de GenJava (10)

43

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

Fonctionnement de GenJava (11)

44

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

Fonctionnement de GenJava (13)

45

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

46

Recommended