pubAchetez de l'or en Suisse en ligne avec Bullion Vault


Home | Publier un mémoire | Une page au hasard

Conception et Developpement d'un logiciel de gestion commerciale


par Mchangama Ismaila
ISIMM - Maitrise 2007
Dans la categorie: Informatique et Télécommunications
   
Télécharger le fichier original

Disponible en mode multipage

Ministère de l'Enseignement Supérieur

Université de Monastir

*-*-*-*-*

Institut Supérieur d'Informatique et de Mathématiques de Monastir

Projet de Fin d'Etudes

En vue d'obtention du

Diplôme de Maîtrise en Informatique

Conception et développement d'un logiciel de gestion commercial

Réalisé par
ISMAILA Mchangama

Sous la direction de
Encadreur interne :

DIMASSI Sonia

Encadreur externe :

NCIR Mohamed

Année universitaire : 2006/2007

Dédicaces

À mes regrettés grands parents : ce mémoire vous est dédié en souvenir de ce que vous avez fait pour moi durant votre existence. Que Dieu vous élève au rang de ses illustres amis.

À mes parents : mon père MCHANGAMA Mdjassiri et ma mère ZAINABA Mdahoma, qui m'ont inculqué un esprit de combativité et de persévérance et qui m'ont toujours poussé et motivé dans mes études. Sans eux, certainement je ne sériai pas à ce niveau.

À ma grande soeur Mounira, pour ses encouragements incessants.

À mes frères Hamidou, Ousseine et Ahmada, qui m'ont toujours soutenu au prix des sacrifices inoubliables.

À mon oncle MDAHOMA Bakary et sa famille. Oncle vous étiez pour moi un père spirituel et un modèle à suivre pour être au sommet des échelons.

À ma tante Moinabaraka, vous m'avez donné trop de marque de bienveillance. Je garderai toujours un attachement profond pour vous. Je vous serai toujours reconnaissant pour l'assistance que vous avez apportée dans ma vie.

À tous mes, oncles, tantes, cousins et cousines, en souvenir de toutes les joies et forces qui unissent notre chère famille. À tous mes amis, pour votre sincère amitié, votre soutien permanent me remonte le moral et vos conseils m'incitent à relever les défis.

Aux habitants de Samba-Mbodoni. Je tiens particulièrement à dédier ce travail à ces gens qui m'ont manqué durant ces quelques années. Si mes voeux pouvaient avoir quelques pouvoirs j'en serais profondément heureux car je veux pour vous et vos familles toutes les réussites et satisfactions de ce monde.

Remerciements

Je tiens à exprimer mes remerciements avec un grand plaisir et un grand respect à mon encadreur Mme DIMASSI Sonia, Ses conseils, Sa disponibilité et ses encouragements m'ont permis de réaliser ce travail dans les meilleures conditions. J'exprime de même ma gratitude à mon encadreur de CyberParc monsieur Ncir Mohamed. Qui a cru en moi et qui n'a cessé de me faire profiter ses précieux conseils et remarques.

Je remercie infiniment Mme GUALLOUZ Sonia et M ACHOUR Wissam qui m'ont toujours encouragé dans les moments de délicatesse.

J'adresse aussi mes reconnaissances à tous les professeurs et au corps administratif de l'Institut Supérieur d'informatique et de mathématiques de Monastir (ISIMM) qui depuis quelques années leurs conseils et leurs connaissances m'ont bien servis.

Je voudrais aussi exprimer ma gratitude envers tous ceux qui m'ont accordé leur soutien, tant par leur gentillesse que par leur dévouement, en particulier SELMI Samer qui m'a souvent aidé à résoudre des difficultés techniques.

Je ne peux nommer ici toutes les personnes qui de près ou de loin m'ont aidé et encouragé mais je les en remercie vivement.

Enfin je tiens à dire combien le soutien quotidien de ma famille a été important tout au long de ces quelques années, je leur dois beaucoup.

Résumé

Dans l'entreprise, les données représentent un grand capital, à considérer au même niveau que le capital financier. Il faut les gérer donc convenablement. Maîtriser ce facteur permet aujourd'hui aux entreprises de limiter les risques.

De nos jours le défi est lancé, la gestion automatique des documents est en essor. Les produits répondants à ce domaine inondent le marché. Certains sont des sharewares tandis que d'autres sont destinés à la vente avec des prix exorbitants. Pour cela, petites voire moyennes entreprises, à cause de leurs budget réduit, ils ne peuvent pas se permettre de payer des produits pareils. C'est dans ce cadre que se situe notre projet, il consiste à concevoir et à développer un logiciel de gestion commercial sur mesure pour une société de ventes des matériels informatiques.

Table des matières

Introduction 1

Chapitre I Analyse et spécification des besoins 3

1 Analyse et spécification des besoins 4

1.1 Introduction : 4

1.2 Présentation de l'environnement du stage : 4

1.2.1 Présentation de CRISTAL Info : 4

1.3 Contexte et motivation du projet 5

1.3.1 Contexte 5

1.3.2 Critique de l'existant 5

1.3.3 Travail demandé 5

1.3.4 Approche de solution 5

1.4 Conclusion 6

Chapitre II Méthodes et outils 7

2 Méthodes et outils 8

2.1 Introduction : 8

2.2 Avantages de l'approche orientée objet : 8

2.3 Les architectures n-tiers : 8

2.3.1 Architecture utilisant un serveur centré : 8

2.3.2 Architectures n-tiers : 9

2.4 Model View Control (MVC) : 9

2.5 Nuance entre MVC et 3-Tiers : 9

2.6 Méthodes et outils pour l'application : 10

2.6.1 Choix des outils de conception : 10

2.6.1.1 Choix du principe et du logiciel de modélisation : 10

2.6.2 Choix des outils de développement : 11

2.6.2.1 Choix du langage de programmation : 12

2.6.2.2 Choix de l'outil de développement : 13

2.6.2.3 Choix du SGBD : 14

2.6.2.3.1 Oracle Database 15

2.6.2.3.2 Access 17

Chapitre III La conception 18

3 La conception 19

3.1 Introduction : 19

3.2 La modélisation dynamique : 19

3.2.1 Diagramme des cas d'utilisation : 19

3.2.2 Diagramme de séquence : 24

3.3 Modélisation Statique : 27

3.3.1 Diagramme de classes : 27

3.3.2 Modèle conceptuel des données (modèle physique) : 30

Chapitre IV La réalisation 32

4 La réalisation : 33

4.1 Introduction : 33

4.2 Modèles de cycles de vie d'un logiciel : 33

4.2.1 Modèle de cycle de vie en cascade 33

4.2.2 Modèle de cycle de vie en V 33

4.2.3 Modèle de cycle de vie en spirale 35

4.2.4 Modèle par incrément : 36

4.2.5 Modèle de prototypage : 36

4.3 Présentation de l'application développée : 37

4.3.1 Fenêtre d'accueil : 38

4.3.2 Itinéraire suivi pour l'édition d'une commande : 38

4.3.3 Quelques interfaces. 43

4.4 Déroulement du projet : 49

4.5 Conclusion : 49

Conclusion et perspectives 50

Bibliographie 52

Annexes 54

Liste des tableaux

Tableau 1. Partage des cas d'utilisation en catégories 24

Tableau 2. Tableau des transformations. 29

Tableau 3. Tableau du déroulement 49

Liste des figures

Figure 1. Relation entre les langages 12

Figure 2. Diagramme global des cas d'utilisation 21

Figure 3. Diagramme des cas d'utilisation d'un agent 22

Figure 4. Diagramme des cas d'utilisation pour administrateur 23

Figure 5. Diagramme de séquence de l'authentification 25

Figure 6. Diagramme de séquence de l'ajout d'un produit 25

Figure 7. Diagramme de séquence de l'édition d'une facture 26

Figure 8. Diagramme de séquence de l'ajout d'un agent 27

Figure 9. Diagramme de classes 28

Figure 11. Modèle du cycle de vie en cascade 34

Figure 12. Modèle du cycle de vie en V 34

Figure 13. Modèle de cycle de vie en spirale 35

Figure 14. Modèle de prototypage 37

Figure 15. Fenêtre d'accueil (authentification) 38

Figure 16. Fenêtre principale 39

Figure 17. Fenêtre principale : click sur ventes 40

Figure 18. Bon de commande 41

Figure 19. Ajout ligne de commande 42

Figure 20. Ajout d'une ligne et calcul automatique du prix. 43

Figure 21. Ajout/mettre à jour un produit. 44

Figure 22. Liste des articles 45

Figure 23. Liste des clients 46

Figure 24. Ajout d'un Client 47

Figure 25. Ajouter/supprimer/chercher un agent 47

Figure 26. Clique sur le bouton utilitaire 48

Figure 27. Calendrier 48

Figure 28. Relation extend 58

Figure 29. Relation include 59

Figure 30. Relation généralisation/spécification 59

Figure 31. Table et clé primaire. 61

Figure 32. Relation binaire (...,*) - (...,1). 61

Figure 33. Relation binaire (0.1) - (1.1). 62

Figure 34. Relation binaire et ternaire (...,*) - (...,*). 62

Liste des annexes

Annexe 1 cas d'utilisation 55

Annexe 2 Règles de passage du modèle conceptuel au modèle physique (MCD vers MLD) 61

Annexe 3 Ingénierie et retro-ingénierie 63

Introduction

De l'âge de la pierre à nos jours, l'esprit perfectionniste de l'homme n'a cessé de lui permettre d'améliorer sa vie quotidienne. Le passage de la mécanique aux domaines d'informatique, d'électronique, d'automatique et de domotique a révolutionné la vie journalière de l'être humain. Les nouvelles technologies de l'information et de communication illustrent ce phénomène.

Aujourd'hui, vu l'intérêt croissant de vouloir gagner en temps, de conserver les données, de limiter le nombre d'employés et pas mal d'autres raisons, ont poussé petites, moyennes et grandes entreprises à chercher des solutions informatiques capables de répondre à leurs besoins.

Dans ce cadre s'inscrit notre projet de fin d'études qui consiste à réaliser une application sur mesure de gestion commerciale pour une société de ventes des matériels informatiques.

Ce travail est réalisé en vue d'obtention du diplôme de maîtrise en informatique à l'Institut Supérieur d'Informatique et de Mathématiques de Monastir (ISIMM).

Pour atteindre notre objectif on a partagé le travail comme suit :Le premier chapitre s'agit d'une prise de connaissance de l'existant pour savoir de ce que doit être capable de faire et de quoi va servir notre futur application en d'autres termes il s'agit d'une analyse et spécification des besoins. Dans le second chapitre on va faire notre choix sur les méthodes et outils à utiliser pour réaliser l'application. Le troisième chapitre sera consacré à la conception de l'application il s'agit d'une phase de modélisation théorique de l'application. Avant de clore on va essayer de présenter les résultats obtenus dans le quatrième chapitre.

1 Chapitre I
Analyse et spécification des besoins

2 Analyse et spécification des besoins

2.1 Introduction :

Il s'agit d'une étape cruciale dans la réalisation d'une application donnée. Le futur d'un logiciel dépend beaucoup de cette phase, elle nous permet d'éviter le développement d'une application non satisfaisante. Pour cela le client et le développeur doivent être en étroites relations, voire avoir un intermédiaire entre eux s'il le faut.

Pour arriver à nos fins il nous faut prendre connaissance de :

· L'analyse et la définition des besoins : permet de trouver un commun accord entre les spécialistes et les utilisateurs.

· L'étude de la faisabilité : Le domaine d'application, l'état actuel de l'environnement du futur système, les ressources disponibles, les performances attendues, etc.

· Etablissement du cahier des charges.

Le présent chapitre va nous donner un aperçu global de l'application.

1.2 Présentation de l'environnement du stage :

1.2.1 Présentation de CRISTAL Info :

CRISTAL Info est une société informatique basée à Monastir plus précisément dans les locaux de CYBERPARC, elle fournit plusieurs services informatiques.

1.2.2 Activités de CRISTAL Info :

Les activités de CRISTAL Info sont très variées, on peut mentionner quelques unes :

· Conception et développement des sites web

· Conception, sécurisation et audit de réseaux.

· Conception et mise en place des bases de données.

· Développement d'applications.

· Rédaction des cahiers de charges.

2.3 Contexte et motivation du projet

2.3.1 Contexte

Comme on l'a cité précédemment, CRISTAL Info n'est pas une société consommatrice, elle est plutôt productrice. Toutes les applications développées sont destinées alors à la vente.

L'application en question s'agit d'une commande d'une boutique de vente des matériels informatiques. Il s'agit donc d'une application de gestion commerciale spécialisée dans le domaine de vente informatique cette solution doit être capable d'automatiser les taches qui sont faites à l'heure actuelle manuellement.

2.3.2 Critique de l'existant

La solution actuelle est manuelle :

· L'abondance des documents dans l'entreprise peut ralentir les services.

· On peut en avoir besoin de plus d'employés pour se partager les taches.

· Risque de mélanger les documents : ce qui peut être fatal.

· La suivie des clients et des fournisseurs peut rencontrer beaucoup de problèmes.

· La perte de la clientèle est possible au cas où le traitement de leurs demandes traine.

2.3.3 Travail demandé

Notre travail consiste à concevoir et à développer une application informatique qui permettra la gestion automatique des clients, des fournisseurs, du stock, etc.

Autrement dit notre but est de concevoir et développer un logiciel de gestion commercial adaptable aux conditions citées précédemment (gestion des clients, des fournisseurs, du stock,...).

2.3.4 Approche de solution

En tenant compte des critiques et des besoins d'informatiser les services cités ci-dessus la solution est de concevoir et développer une application permettant de satisfaire au maximum possible le client.

Pour cela l'application doit répondre aux besoins suivants :

· Avoir un logiciel performant

· Avoir un logiciel qui respecte les principes des Interfaces Homme/Machine (IHM) tels que l'ergonomie et la fiabilité.

· Réduire les taches manuelles qui nous permettraient de gagner en spatio-temporel

· Archiver les informations

· Avoir un logiciel évolutif et paramétrable

2.4 Conclusion

L'étude préalable appelée techniquement ingénierie des exigences ou analyse et spécification des besoins, constitue une phase capitale dans le cas où toute la suite du projet dépend d'elle, elle doit être faite avec beaucoup de rigueur et plus d'attention pour que le projet réussisse avec un grand succès.

Dans ce chapitre, on a exposé les problèmes de la société et de l'existant, puis nous avons fait les critiques du travail manuel et enfin on a fait une approche de solution qui consiste à concevoir et à développer une application qui facilitera les services énumérés précédemment.

Après avoir fixé nos objectifs, pour atteindre notre but on doit suivre plusieurs étapes ces dernières constituent une partie du cycle de vie de tout projet informatique. Ainsi dans l'étape suivante on va se consacrer sur le choix des méthodes et outils de la réalisation.

Chapitre II
Méthodes et outils

3 Méthodes et outils

3.1 Introduction :

Il est évident que les méthodes et les outils choisis pour concevoir et développer une application doivent être en fonction de l'environnement et du domaine d'application de celle-ci. Cela est bien expliqué par le génie logiciel..

Dans ce chapitre on va mettre l'accent sur les avantages de l'approche orienté objet, les architectures n-tiers et l'approche du Model View Control (MVC) et en dernier lieu justifier notre choix sur les méthodes et outils à appliquer pour faciliter notre tache.

3.2 Avantages de l'approche orientée objet :

Parmi les avantages de cette approche, on peut citer : la réutilisabilité des éléments (objets), l'avantage d'utiliser un objet de base afin de produire un autre qui peut être une amélioration de cet objet (phénomène d'héritage), etc.

L'objet est le coeur de cette approche. Tout objet donné possède deux caractéristiques :

· Son état courant (attributs)

· Son comportement (méthodes)

En approche orientée objet on utilise le concept de classe, celle-ci permet de regrouper des objets de même nature.

Une classe est un moule (prototype) qui permet de définir les attributs (champs) et les méthodes (comportement) à tous les objets de cette classe.

3.3 Les architectures n-tiers :

L'informatique est une science évolutive. A nos jours avec l'arrivée des nouvelles technologies de l'information et de la communication (NTIC), en occurrence l'Internet. L'architecture logicielle ne peut pas rester indemne, elle doit suivre l'évolution raison pour laquelle on trouve plusieurs architectures sur le marché qu'on peut subdiviser en deux catégories :

· Architecture utilisant un serveur centré

· Architecture n-tiers

3.3.1 Architecture utilisant un serveur centré :

Il s'agit de la première génération : l'ensemble des traitements et de données se trouvent dans un serveur et les utilisateurs des applications utilisent des terminaux pour appeler les fonctions se trouvant dans le serveur. Les terminaux ont uniquement une fonction d'affichage.

3.3.2 Architectures n-tiers :

Comme son nom l'indique cette architecture est un prototype de plusieurs architectures. Commençant du 2-tiers (appelée régulièrement Client/serveur) qui est la base de notre application allant du 3-tiers voire 4-tiers.

D'une manière générale les architectures n-tiers suivent les mêmes principes qui sont l'affichage (User interface), le traitement (Business logic) et la partie accès et stockage des données (Data Access Object).

On peut regrouper les deux (Client/serveur) ou de les séparer carrément (3-tiers et plus).

En ce qui nous concerne on a besoin de développer une application qui sera utilisé localement.

3.4 Model View Control (MVC) :

Le modèle vue contrôleur est souvent décrit comme simple design pattern (motif de conception) mais c'est plus un architectural pattern (motif d'architecture) qui donne le ton à la forme générale d'une solution logiciel plutôt qu'à une partie restreinte.

Comme l'architecture 3-tiers il possède trois parties qui sont :

· Model : le modèle défini les données de l'application et les méthodes d'accès. Tous les traitements sont effectués dans cette couche.

· View : la vue prend les informations en provenance du modèle et les présente à l'utilisateur.

· Controller : le contrôleur répond aux événements de l'utilisateur et commande les actions sur le modèle. Cela peut entrainer une mise à jour de la vue.

3.5 Nuance entre MVC et 3-Tiers :

MVC et 3-Tiers sont des mots souvent cités dans les cours de génie logiciel. Souvent les gens ont tendance à les confondre mais ils n'ont pas tord car ces deux pratiques sont à la fois différentes et similaires.

La différence fondamentale se trouve dans le fait que l'architecture 3-Tiers sépare la couche Business logic (couche métier) de la couche Data Access (accès aux données).

Pour qu'une application MVC soit une vraie application 3-Tiers il faut lui ajouter une couche d'abstraction d'accès aux données de type DAO (Data Access Object).

Inversement pour qu'une application 3-Tiers respecte MVC il faut lui ajouter une couche de contrôle entre User interface et Business logic.

Loin d'être antagonistes, ces deux pratiques se comblent et sont la fondation de la plupart des frameworks de création d'application web.

3.6 Méthodes et outils pour l'application :

3.6.1 Choix des outils de conception :

En Génie Logiciel (GL) la conception constitue une phase fondamentale dans le cycle de vie d'un logiciel. La réussite de ce dernier dépend beaucoup de cette étape. Dans notre application on va se baser sur deux conceptions : la conception architecturale et la conception détaillée.

Conception globale (architecturale) :

Cette conception consiste à scinder les taches de l'application en différentes petites parties afin de mieux organiser et développer le logiciel. Ça se base sur la technique « Diviser pour mieux régner ».

Les retombés directs de cette technique ne sont pas négligeables, on peut mentionner quelques uns :

· Le développement de l'application peut être partagé par plusieurs groupes de travail.

· La possibilité de réutiliser les composantes dans d'autres applications.

· La portabilité de l'application.

Dans notre cas, on va utiliser entre autre le MVC et une architecture client/serveur. On va essayer de scinder cette dernière en trois partie une partie de présentation (représentée par les interfaces), une partie qui permet l'accès à la base et une dernière partie composée par la base même.

Mieux encore le partage de l'application en sous systèmes va nous permettre de faire une conception détaillée de chaque partie.

Conception détaillée :

3.6.1.1 Choix du principe et du logiciel de modélisation :

Merise et UML sont deux grands principes de « traduction » ou modélisation d'un système d'information. Néanmoins, ils ne sont pas aussi proches qu'on pourrait le penser.

Le choix de l'un ou de l'autre se fait selon trois axes à savoir l'accessibilité, la précision et l'exploitabilité.

Pour le premier axe (accessibilité) MERISE présente l'intérêt d'avoir des modèles logiques moins détaillés facilement compréhensibles par un utilisateur moins avisé.

Tandis qu'UML conçu pour s'adapter à n'importe quel langage de programmation orientée objet (POO), présente plusieurs modèles (diagrammes) dont leurs compréhensions nécessitent une grande attention.

En ce qui concerne le deuxième critère (précision), MERISE est décevant. Malgré sa clarté, il la manque une précision du fait qu'elle est éloignée du langage donc difficile à implémenter alors qu'UML intègre les éléments communs des différents langages, sa volonté est d'être fidèle à la réalisation finale. Elle est beaucoup plus complète avec ses différents diagrammes.

Pour en finir avec l'exploitabilité, MERISE est une méthode plus généraliste. Elle donne une vue globale de la solution sans autant rentrer dans les petits détails. Contrairement à UML qui est conçu pour l'implémentation objet avec ses différents détails et sa portabilité (s'adapte à n'importe quelle plateforme) elle est donc plus exploitable.

L'une ou l'autre présente des avantages et des inconvénients. Il est réservé au concepteur de choisir la méthode la mieux adaptée pour son cas. Si on cherche la précision et l'exploitabilité comme dans notre cas UML devance de loin MERISE. Tandis que, si c'est la clarté et l'accessibilité qui sont en question MERISE est préférable.

La conception de notre application mérite bien une grande précision et une exploitabilité maximale. C'est la raison pour laquelle on va retenir UML. Les différences entres les logiciels de modélisation UML sont infimes. N'empêche de mentionner quelques logiciels qui sont à notre connaissance : Agro UML (open source), Poseidon UML et le plus célèbre Rational Rose.

La facilité dotée au dernier (Rational Rose) de pouvoir faire une « ingenierie » et une « retro-ingenierie » a influée sur notre choix.

3.6.2 Choix des outils de développement :

Un parmi les avantages qui nous ont permis de choisir UML comme méthode de modélisation est l'orienté objet. Cette approche influe aussi sur le choix du langage à adopter on peut rajouter quelques uns à savoir la portabilité, la facilité, la multidisciplinarité et pas mal d'autres comme la sécurité.

3.6.2.1 Choix du langage de programmation :

Le schéma suivant nous fait un bref aperçu concernant quelques langages. Il montre le domaine principal d'application, de l'année de l'essor du langage ainsi que l'interdépendance entre les différents langages.

Figure 1. Relation entre les langages

Comme on l'avait dit, le schéma ci-dessus nous donne une vue globale de l'évolution des langages. La plupart des langages présents dans ce schéma sont développés par des sociétés privées et sont donc destinés pour le marché ils subissent alors la loi du marché (des hauts et des bas).

Souvent la sortie d'un nouveau langage n'est pas un fruit du hasard mais il s'appuie sur les anciens en profitant de leurs qualités et en essayant de remédier les défauts.

Ici on va essayer de faire une étude comparative sur les langages de programmation orientés objets qui sont en vogue sur le marché et essayer d'en sélectionner un qui répondra bien les besoins d'implémentation de notre application.

On va s'intéresser surtout sur les langages Java, C++ et Visual Basic.

Ø Java :

Java est pourvu d'une grande sécurité, la richesse de ses bibliothèques, son adaptation à plusieurs plateformes, la qualité présentée par ses composantes graphiques (Swing) qui suivent le modèle MVC, sa facilité de déploiement en réseau (RMI) et le fait qu'on peut avoir plusieurs « Look And Feel », en font de lui un langage redoutable puissant et performant. Une grande partie de sa syntaxe est empruntée de C et C++. La lenteur de sa machine virtuelle (JVM) constitue son principal défaut.

Ø Visual Basic (VB) :

VB fait parti des langages suivant le concept orienté objet il a un environnement de développement intégré (EDI) qui permet de développer facilement des interfaces graphiques.

En appliquant quelques propriétés à ces dernières et en écrivant quelques petits bouts de codes on obtient des résultats satisfaisants.

VB est facilement accessible et assimilable

Ø C++ :

Comme on l'a dit précédemment Java puise une grande partie de ses sources dans le C++ ce qui fait que les défauts rencontrés par le deuxième sont améliorés voire éliminés par le premier.

Les comparaisons faites ci-dessus nous permettent de choisir Java comme langage d'implémentation de notre application. Avec ses multiples avantages en comparaison avec VB qui peut servir un début pour l'apprentissage des Langages Orientés Objets (LOO), Java s'impose. Quant à C++, que Java a essayé de supprimer ses erreurs et d'améliorer quelques points parait plus difficiles à développer surtout les interfaces graphiques. Or ces dernières constituent une grande partie de notre logiciel.

3.6.2.2 Choix de l'outil de développement :

Vu la multidisciplinarité et sa domination croissante, plusieurs outils de développement de Java ne cessent de voir le jour. On peut rencontrer pas mal d'Environnement de Développement Intégré (EDI) Java. Certains sont en open source et d'autres commerciaux.

Citons quelques uns :

Ø Borland de JBuilder :

Doté d'un EDI, il est placé parmi les logiciels les plus performants pour le développement des applications en java. Ecrit en Java 2 permet ses applications d'être exécutés sous plusieurs plateforme.

Ø IBM Visual Age for Java :

Il s'agit d'un EDI développé par IBM. Il est trop puissant avec son ergonomie. L'utilisation au début est difficile mais sa persévérance est intéressante.

Ø NetBeans:

NetBeans est un environnement de développement en java open source écrit en java. Le produit est composé d'une partie centrale à laquelle il est possible d'ajouter des modules tel que Poseidon pour la création avec UML.

Ø JCreator :

JCreator existe en deux versions : la version "LE" est en freeware et la version "PRO" est en shareware. Il est particulièrement rapide car il est écrit en code natif.

Ø Le projet Eclipse :

Eclipse est un projet open source à l'origine développé par IBM pour ces futurs outils de développement. Le but est de fournir un outil modulaire capable non seulement de faire du développement en java mais aussi dans d'autres langages et d'autres activités. Cette polyvalence est liée au développement de modules réalisés par la communauté ou des entités commerciales.

Dans un esprit de défi, et vouloir mettre en oeuvre les connaissances qu'on a acquis durant notre formation, on a opté JCreator Pro pour le développement de notre application. Ce logiciel est dépourvu d'un EDI donc pour arriver à nos fins on était obligé d'écrire ligne par ligne le code de notre application ce qui est fait malgré plusieurs problèmes rencontrés.

3.6.2.3 Choix du SGBD :

De nombreux SGBD sont disponibles sur le marché, partant des SGBD gratuits jusqu'aux SGBD destinés spécialement aux professionnels, comportant de plus nombreuses fonctionnalités, mais plus coûteux.

On va essayer de faire comme d'habitude une étude comparative d'une sélection de quelques SGBD et choisir un pour notre application.

En guise de cause on mentionne quelques facteurs subjectifs qui influent souvent sur le choix du SGBD :

Ø La politique sécuritaire

Ø Le budget à disposition

Ø Les compétences déjà acquises en terme de développement et d'administration et au besoin du prix de la formation

Ø Le système d'exploitation hébergeant

Ø Les architectures logicielles et matérielles

Ensuite viendront des points tels que :

Ø La richesse fonctionnelle du SGBDR

Ø Les ressources (disques, mémoire, CPUs, Transactions par secondes, nombre de connexions simultanées)

Ø L'attente que vous avez vis-à-vis du support technique

Ø Les compétences déjà acquises en termes de développement et d'administration

Ø Le type d'accès aux données (OLTP, décisionnelle, reporting, mixte)

Faisons l'étude de quelques uns qui sont connus par un grand nombre du public :

3.6.2.3.1 Oracle Database

Oracle n'est pas un SGBDR optimisé pour de petites bases de données. Sur de petits volumes de traitements (2 Go par exemple) et peu d'utilisateurs (une trentaine).

Avantage :

· Procédures stockés en PL-SQL (langage propriétaire Oracle, orienté ADA) ou ... en JAVA (depuis la 8.1.7) ce qui peut s'avérer utile pour les équipes de développement.

· Assistants performants via Oracle Manager Server, possibilité de gérer en interne des tâches et des alarmes

· Gestion centralisée de plusieurs instances

· Concept unique de retour arrière (Flashback)

· Pérennité de l'éditeur : avec plus de 40% de part de marché, ce n'est pas demain qu'Oracle disparaîtra

· Réglages fins : dans la mesure où l'on connait suffisamment le moteur, presque TOUT est paramétrable.

· Accès aux données système via des vues, bien plus aisément manipulable que des procédures stockées.

· Services Web

· Support XML

· Ordonnanceur intégré

Inconvénients

· Prix exorbitant, tant au point de vue des licences que des composants matériels (RAM, CPU) à fournir pour de bonnes performances

· Fort demandeur de ressources, ce qui n'arrange rien au point précité, Oracle est bien plus gourmand en ressource mémoire que ses concurrents, ce qui implique un investissement matériel non négligeable. La connexion utilisateur nécessite par exemple près de 700 Ko/utilisateur, contre une petite centaine sur des serveurs MS-SQL ou Sybase ASE. Gourmand aussi en espace disques puisque la plupart des modules requièrent leur propre ORACLE_HOME de par le versionning de patches incontrôlés.

· Porosité entre les schémas = difficile de faire cohabiter de nombreuses applications sans devoir créer plusieurs instances. Il manque réellement la couche "base de données" au sens Db2/Microsoft/Sybase du terme.

· Méta modèle propriétaire, loin de la norme.

· Tables partitionnées, RAC... uniquement possible à l'aide de modules payants complémentaires. Parallélisme mal géré sur des tables non-partitionnées.

· Gestion des verrous mortels mal conçue (suppression d'une commande bloquante sans roll back)

· Pauvreté de l'optimiseur (ne distingue pas les pages en cache ou en disque, n'utilise pas d'index lors de tris généraux, statistiques régénérées par saccade...)

· Pas de prise directe sur les tables système (vues système)

· Une quantité de bugs proportionnels à la richesse fonctionnelle, surtout sur les dernières versions

· Gestion erratique des rôles et privilèges (pas possible de donner des droits sur des schémas particuliers sans passer par leurs objets, désactivation des rôles lors d'exécution de packages...)

· Nombreuses failles de sécurités liées à l'architecture elle-même

3.6.2.3.2 Access

Access est aussi bien un outil grand public que professionnel, selon les besoins qu'on a. Il est assez performant en tant que SGBD allié à un outil de développement intégré qui en facilite l'utilisation. Access peut, en tant qu'outil de développement, être utilisé conjointement avec un véritable Serveur de base de données SQL pour bénéficier des avantages du Client/serveur, sous certaines conditions. Un néophyte peut facilement utiliser Access et se créer une base de données complète, grâce à de nombreux assistants pour l'aider à remarquer son intégration dans Office.

Le problème est qu'Access en tant que format de données n'est pas un SGBD client/serveur mais seulement un SGBD fichier. Le trafic qu'il génère sur le réseau en utilisation réseau multiposte peut fortement perturber ses performances. Les performances chutent rapidement lorsque plusieurs utilisateurs sont connectés ou si la base dépasse les 100000 lignes. Cependant Access en tant qu'outil de développement peut être utilisé conjointement avec un véritable Serveur de base de données SQL pour bénéficier des avantages du Client/serveur.

MS-Access reste un bon choix si vous souhaitez avoir une base de donnée de petite taille mais facilement gérable, ou que vous ne connaissez pas grand chose aux SGBD.

En se référant du domaine d'application du logiciel à développer et de l'étude comparative faite entre les deux SGBDs cités ci-dessus on a choisi Access.

Rappelons que le logiciel sera utilisé dans une boutique de vente informatique donc il n'y aura pas une trop grande quantité de données. D'autre part l'agent qui travail dans cette société n'est pas censé d'être un informaticien donc un SGBD comme Access sera mieux adapté pour lui à cause de sa facilité d'utilisation.

Chapitre III
La conception

4 La conception

4.1 Introduction :

La plupart des nouveaux langages sont orientés objet. Le passage de la programmation fonctionnelle à l'orienté objet n'était pas facile. L'un des soucis était d'avoir une idée globale en avance de ce qu'on doit programmer.

L'algorithmique qui était utilisé dans la programmation fonctionnelle ne pourrait pas suffire à lui seul. Le besoin d'avoir des méthodes ou langages pour la modélisation des langages orientés objet se faisait sentir. Ainsi plusieurs méthodes ou langages on vu le jour. En occurrence UML qui nous a permis de faire la conception de notre application.

De nos jours UML2 possède treize diagrammes qui sont classés en deux catégories  (dynamique et statique).

Pour ce faire on a commencé par les diagrammes de cas d'utilisation (Use Case) qui permettent de donner une vue globale de l'application. Pas seulement pour un client non avisé qui aura l'idée de sa future application mais aussi le développeur s'en sert pour le développement des interfaces.

En deuxième lieu on va présenter la chronologie des opérations par les diagrammes de séquences.

Et finir par les diagrammes statiques qui sont celles des classes et le modèle physique.

4.2 La modélisation dynamique :

Comme on l'a dit UML2 possède treize diagrammes. Quant à la catégorie dynamique à elle seule est associée huit diagrammes.

Dans notre application on va s'en servir des deux seulement énoncés ci-dessus.

On ne peut pas aller directement à la conception sans faire une petite description du fonctionnement de l'application.

4.2.1 Diagramme des cas d'utilisation :

Le but de ces diagrammes et d'avoir une vision globale sur les interfaces du futur logiciel. Ces diagrammes sont constitués d'un ensemble d'acteurs qui agit sur des cas d'utilisation.

Les acteurs :

UML n'emploi pas le terme d'Utilisateur mais d'acteur.

Les acteurs d'un système sont les entités externes à ce système qui interagissent avec lui.

Suivant les besoins de notre système on peut présenter deux acteurs. Il s'agit d'un administrateur et un agent travaillant pour la société. La manière d'accéder aux services de l'application pour l'un et pour l'autre est la même. La différence réside sur les droits d'accès et les limites de chacun.

Ø L'agent :

Celui-ci s'agit d'un simple employeur mais pour restreindre l'accès à notre application personne ne peut y accéder sans s'authentifier.

L'agent a comme rôle de :

· Gérer les ventes.

· Gérer les achats.

· Gérer les fournisseurs.

· Gérer les clients.

· Gérer le stock.

Ø L'administrateur :

« Qui paye le plus paye le moins », comme l'administrateur se place en dessus de l'agent celui-ci peut faire à part les taches de l'agent mais aussi gérer ces derniers. Ceci est intéressant car UML présente le critère d'héritage entre les acteurs. Donc on pourra faire l'administrateur un héritier de l'agent et on va lui ajouter la particularité de pouvoir gestion des agents.

Présentation globale des cas d'utilisation :

Figure 2. Diagramme global des cas d'utilisation

En observant la figure ci-dessus on a presque l'idée complète de l'application (interface).

Dans les parties qui suivent on va essayer de détailler le diagramme de chaque acteur agissant sur le système

Diagramme des cas d'utilisation de l'agent :

Dans les paragraphes précédents on a décrit ce que peut de chaque acteur ici on ne va pas réécrire la même chose. Juste on va donner un schéma qui montre l'interaction de l'agent aux interfaces de l'application.

Figure 3. Diagramme des cas d'utilisation d'un agent

Diagramme des cas d'utilisation de l'administrateur :

L'administrateur est un héritier de l'agent (Figure 2). Il peut gérer les agents comme il peut faire les autres gestions.

Figure 4. Diagramme des cas d'utilisation pour administrateur

Les cas d'utilisations. Avec ses multiples relations (extend, include, etc.), nous donne une vue presque réelle de l'application. (Pour des informations complémentaires voir Annexe 1).

Cette richesse nous montre une vue globale de l'application mais pour voir réellement la succession des actions des acteurs il nous faut un autre modèle (diagramme) qui nous détaille le séquencement des opérations ce diagramme s'agit du diagramme des séquences.

Ce dernier comme son nom l'indique il développe un cas d'utilisation en montrant les différentes opérations permettant de réaliser l'action du cas en question.

Vu le grand nombre de cas de notre application, en tenant compte du nombre limite de pages imposées pour la rédaction de ce présent mémoire, on a choisi quatre qu'on donnera leurs diagrammes de séquences.

Ce choix n'est pas un fruit du hasard mais on a essayé de regrouper les cas en différentes catégories qu'on a classées selon l'importance et les ressemblances des cas et enfin prendre dans chacune un pour illustrer.

Ces quatre catégories sont :

Catégorie

Cas choisi

Authentification

agent

Gérer les fournisseurs/clients/produits 

ajouter un produit

Gestion des ventes/achats

éditer une facture

Gérer les agents

ajouter un agent

Tableau 1. Partage des cas d'utilisation en catégories

4.2.2 Diagramme de séquence :

Il s'agit d'une explication détaillée d'un cas d'utilisation. Les principales informations contenues dans un diagramme de séquence sont les messages échangés entre les lignes de vie, présentés dans un ordre chronologique.

Authentification :

Figure 5. Diagramme de séquence de l'authentification

Ici on est entrain de décrire la manière de s'authentifier. Elle est similaire pour l'agent que pour l'administrateur du fait que ce denier hérite du premier.

Ajouter un produit :

Figure 6. Diagramme de séquence de l'ajout d'un produit

Ci-dessus on a montré les différents processus suivis pour ajouter un produit. Dans ce qui suit on va présenter les étapes suivies pour éditer une facture.

Editer une facture :

Figure 7. Diagramme de séquence de l'édition d'une facture

Diagramme pour l'ajout d'un agent :

Figure 8. Diagramme de séquence de l'ajout d'un agent

La figure 8 montre La différence d'accessibilité aux services fournis par l'application.

Il est bien évident qu'un administrateur peut gérer les agents alors que la réciproque est fausse.

4.3 Modélisation Statique :

Précédemment on a parlé des deux grandes catégories de diagrammes UML (statique et dynamique) l'un des diagrammes statiques nous intéresse beaucoup pour pouvoir implémenter le code, il s'agit du diagramme de classes

4.3.1 Diagramme de classes :

Ce modèle nous permet d'avoir une vue statique de l'application. Il nous montre les relations entre les différentes entités (classes) composant notre application. Il nous mène vers la solution finale. À partir de ce diagramme on retrouve les corps des différentes classes de notre application. Mieux encore en utilisant la technique de l'ingénierie (voir Annexe 3) on obtient une grande partie du code finale.

Figure 9. Diagramme de classes

Le schéma ci-dessus nous donne une vue globale de notre application. On a les classes principales qui vont nous servir à réaliser l'application.

Pour avoir de plus amples informations sur l'autre partie de notre application on peut penser à représenter le modèle conceptuel de données (modèle physique) il s'agit de représenter les données et les différentes relations entre elles. Ce modèle nous a permis de construire notre base de donnée, car chaque entité est associée à une table dans la base de donnée.

Faisons un feed-back sur le diagramme des classes et faisons quelques détails :

Ø Client :

Un client peut avoir plusieurs factures comme il peut avoir plusieurs commandes et plusieurs devis, et quand il reçoit un produit il doit avoir un bon de livraison.

Ø Fournisseur :

Il reçoit un ou plusieurs commandes de la société, donc il va donner une facture et un bon de livraison au moment de la livraison

Ø Facture, bon de commande, Devis, bon de livraison:

Ici il s'agit du coté vente, donc ils doivent posséder chacun une référence, un code client, une date et un ou plusieurs produits.

On peut avoir des transformations comme l'indique la table suivante :

Peut être transformé(e)

Facture

BL

BC

Devis

Facture

*******

Oui

Non

Non

BL

Non

*******

Non

Non

BC

Oui

Oui

*******

Non

Devis

Oui

Oui

Oui

*******

Tableau 2. Tableau des transformations.

Peut être transformé(e)

A B

Ø Facture, bon de commande, bon de livraison:

Ici il s'agit du coté achat, donc ils doivent posséder chacun une référence, un code fournisseur, une date et un ou plusieurs produits. Ici on n'a pas besoin des transformations.

Ø Produit :

Un produit est caractérisé par sa référence, sa désignation, sa catégorie, son type, la quantité, sa marque, tva et son prix d'achat.

Ø Administrateur/agent :

C'est seulement les deux personnes qui ont accès physiquement à l'application. Ils gèrent les clients, les fournisseurs, les factures, les commandes et les bons. Il est évident que l'administrateur hérite de l'agent, car c'est lui seul qui peut gérer les agents.

4.3.2 Modèle conceptuel des données (modèle physique) :

On a utilisé MERISE pour pouvoir implémenter notre base de données, ce modèle nous permet d'avoir une idée sur les tableaux qui composent notre base. Evidemment il y'a des règles qui permettent de passer d'un modèle à un autre. (Pour plus d'informations voir Annexe 3).

Figure 10. Modèle physique des données

Chapitre IV
La réalisation

5 La réalisation :

5.1 Introduction :

Arrivé à ce stade nous pouvons nous estimer heureux, il ne reste qu'à commencer à écrire notre code en se basant sur les résultats obtenus des chapitres précédents. Mais cela se fait en suivant des critères. On doit passer par plusieurs jalons pour avoir un produit de bonne qualité.

Ces techniques qu'on les appelle modèles de cycles de vie d'un logiciel sont bien expliquées par le génie logiciel. Ces modèles nous ont accompagnés du début du projet jusqu'à l'implémentation de celui-ci.

Ainsi dans ce chapitre on va essayer de donner un bref aperçu sur quelques modèles et choisir le modèle à adopter, présenter les résultats de notre travail et finir par une petite conclusion.

5.2 Modèles de cycles de vie d'un logiciel :

5.2.1 Modèle de cycle de vie en cascade

Le modèle de cycle de vie en cascade a été mis au point dès 1966, puis formalisé aux alentours de 1970. Dans ce modèle le principe est très simple : chaque phase se termine à une date précise par la production de certains documents ou logiciels. Les résultats sont définis sur la base des interactions entre étapes, ils sont soumis à une revue approfondie et on ne passe à la phase suivante que s'ils sont jugés satisfaisants. Le modèle original ne comportait pas de possibilité de retour en arrière. Celle-ci a été rajoutée ultérieurement sur la base qu'une étape ne remet en cause que l'étape précédente, ce qui est dans la pratique s'avère insuffisant. (Voir Figure 11)

5.2.2 Modèle de cycle de vie en V

Le modèle en V demeure actuellement le cycle de vie le plus connu et certainement le plus utilisé. Le principe de ce modèle est qu'avec toute décomposition doit être décrite la recomposition, et que toute description d'un composant doit être accompagnée de tests qui permettront de s'assurer qu'il correspond à sa description.

Ceci rend explicite la préparation des dernières phases (validation-vérification) par les premières (construction du logiciel), et permet ainsi d'éviter un écueil bien connu de la spécification du logiciel : énoncer une propriété qu'il est impossible de vérifier objectivement après la réalisation. (Voir Figure 12).

Figure 11. Modèle du cycle de vie en cascade

Figure 11. Modèle du cycle de vie en V

Figure 12. Modèle du cycle de vie en V

5.2.3 Modèle de cycle de vie en spirale

Proposé par B. Boehm en 1988, ce modèle est beaucoup plus général que le précédent. Il met l'accent sur l'activité d'analyse des risques : chaque cycle de la spirale se déroule en quatre phases :

· détermination, à partir des résultats des cycles précédents, ou de l'analyse préliminaire des besoins, des objectifs du cycle, des alternatives pour les atteindre et des contraintes.

· Analyse des risques, évaluation des alternatives et, éventuellement maquettage.

· Développement et vérification de la solution retenue, un modèle « classique » (Cascade ou en V) peut être utilisé ici ;

· Revue des résultats et vérification du cycle suivant.

L'analyse préliminaire est affinée au cours des premiers cycles. Le modèle utilise des maquettes exploratoires pour guider la phase de conception du cycle suivant. Le dernier cycle se termine par un processus de développement classique.

Figure 13. Modèle de cycle de vie en spirale

5.2.4 Modèle par incrément :

Dans les modèles précédents un logiciel est décomposé en composants développés séparément et intégrés à la fin du processus.

Dans les modèles par incrément, un seul ensemble de composants est développé à la fois : des incréments viennent s'intégrer à un noyau de logiciel développé au préalable. Chaque incrément est développé selon l'un des modèles précédents.

Les avantages de ce type de modèle sont les suivants :

· chaque développement est moins complexe.

· les intégrations sont progressives.

· il est ainsi possible de livrer et de mettre en service chaque incrément.

· il permet un meilleur lissage du temps et de l'effort de développement grâce à la possibilité de recouvrement (parallélisation) des différentes phases.

Les risques de ce type de modèle sont les suivants :

· Remettre en cause les incréments précédents ou pire le noyau.

· Ne pas pouvoir intégrer de nouveaux incréments.

Les noyaux, les incréments ainsi que leurs interactions doivent donc être spécifiés globalement, au début du projet. Les incréments doivent être aussi indépendants que possibles, fonctionnellement mais aussi sur le plan du calendrier du développement.

5.2.5 Modèle de prototypage :

Un prototype : Un modèle exécutable d'un système logiciel, qui souligne des aspects spécifiques

· Caractéristiques :

Un degré élevé de participation du client

Une représentation tangible des exigences du client

Très utile quand les exigences sont instables ou incertaines

· Avantages: participation du client :

Le client participe activement dans le développement du produit

Le client reçoit des résultats tangibles rapidement

Le produit résultant est plus facile à utiliser et à apprendre

· Applicabilité :

Pour des systèmes interactifs de petite et moyenne taille

Pour des parties de grands systèmes (par exemple l'interface utilisateur)

Pour des systèmes avec une vie courte

Figure 14. Modèle de prototypage

Il existe pas mal de modèles, mais ici on a essayé d'expliquer les plus connus et les plus utilisés actuellement. Le choix du modèle est à prendre au sérieux puisque il n'y a pas un modèle parfait et c'est difficile de se baser sur un seul modèle, n'empêche d'avoir un modèle de référence. Cependant, un ou plusieurs modèles peuvent bien s'adapter à un cas donné par rapport à d'autres. En ce qui concerne notre application, il s'agit d'un logiciel destiné à la vente donc on doit être en relations étroites avec le client. Il lui faut temps en temps des maquettes d'essai. Raison pour laquelle on a choisi le modèle de prototypage qui nous permet de présenter au client un prototype et l'améliorer jusqu'à avoir un produit fini satisfaisant. On peut faire ici des feed-back.

5.3 Présentation de l'application développée :

Notre application s'agit d'un logiciel commercial sur mesure permettant de gérer les achats, les ventes, le stock et d'offrir à l'utilisateur quelques accessoires à savoir un calendrier et une aide sous fourme FAQ (Foire Aux Questions). La multitude des taches que notre application est capable de faire engendre un grand nombre de fenêtres. Pour des effets esthétiques on a essayé d'utiliser deux types de container (JFrame et JDialog) selon les informations à afficher. On va essayer de sélectionner quelques unes qui nous paraissent important pour les intégrer dans ce présent mémoire.

5.3.1 Fenêtre d'accueil :

C'est la première fenêtre qui s'affiche si on exécute l'application toute personne qui veut bénéficier des services du logiciel doit s'authentifier (on rappelle que l'application est livré avec un pseudo Administrateur et un mot de passe). Après authentification une fenêtre principale s'affiche et les boutons sont activés selon les droits d'accès de la personne authentifiée.

On a le choix entre Admin et agent

Figure 15. Fenêtre d'accueil (authentification)

5.3.2 Itinéraire suivi pour l'édition d'une commande :

Cette fenêtre (Figure 16) gère presque toute l'application la plupart des fenêtres qui vont s'ouvrir y prennent source. La fenêtre est divisée en quatre grandes parties :

La partie inferieure qui est composé par les taches de gestion des ventes, des achats, du stock, et des utilitaires. En cliquant sur une parmi ces taches, son icône est activé et un panel contenant les boutons représentant les différentes sous taches s'ouvre à droite. Au milieu on a deux boutons qui gèrent respectivement les fournisseurs et les clients. Quant à gauche, on a la gestion du personnel (ajout agent) et ce bouton n'est activé que si l'administrateur s'est authentifié. Pour être objectif, traitons le cas d'enregistrement d'une commande d'un client :

Après authentification de l'administrateur on a l'interface suivante :

Gestion des Achats

Gestion des produits

Figure 16. Fenêtre principale

Maintenant en cliquant sur le bouton vente on obtient :

(1) Click sur le bouton vente

(2) Les sous taches de vente

Figure 17. Fenêtre principale : click sur ventes

Maintenant on peut cliquer sur le bouton commande à droite (premier bouton).

Après click on obtient le bon de commande vide suivant:

Ajouter une ligne dans le BC

Supprimer une ligne du BC

Les clients en base et on peut y ajouter d'autres

Figure 18. Bon de commande

Cette fenêtre possède une barre d'outils dont ses icones sont reconnaissables à part les symboles et signifient respectivement, ajouter une ligne de commande et supprimer une ligne sélectionnée de la commande. Tous les clients sont dans le Combobox si on veut ajouter un nouveau client, il suffit de le saisir dans le combo et appuyer Entrée.

On suppose qu'on veut ajouter une ligne de facture en cliquent sur on obtient :

(1) Click

(2) fenêtre de saisie d'une ligne

(3) Remplir les champs

Figure 19. Ajout ligne de commande

Ici on choisi la quantité et le produit, si la différence entre la quantité restante et celle demandée est inferieure à1 (qtéRestante - qtéDemandée <= 1). Un message nous indique une insuffisance de stock.

Sinon après avoir validé la ligne est ajouté comme suit :

(1) ligne ajoutée

(2) Le calcul se fait automatiquement

Figure 20. Ajout d'une ligne et calcul automatique du prix.

Et le processus continue comme ça. Pareil pour les factures et devis.

De la même chose du coté achat.

Maintenant si on s'intéresse plutôt aux matériels, dans la page principale on click sur matériel.

5.3.3 Quelques interfaces.

Dans cette interface on va voir toutes les possibilités associées à nos produits. On peut ajouter un nouveau matériel (sa référence est générée automatiquement), mettre à jour un matériel existant, consulter le stock, voir le catalogue de produits existants dans l'entreprise, etc.

Ci-dessous l'interface d'ajout/de mise à jour d'un produit dans la base. En donnant la marge, ici le prix de vente (HT) sera calculé automatiquement et ajouté dans la table produit (PvHT=Pachat*(1+marge)). Lors de l'édition d'une facture par exemple, c'est le prix de vente hors taxe qui sera chargé dans la colonne prix unitaire (PU)

Ajouter ou mettre à jour un produit

Saisir les champs

Figure 21. Ajout/mettre à jour un produit.

En cliquant sur le bouton liste des articles, on a les différentes informations des articles existants dans la base, il s'agit en fait d'un catalogue des produits. Ci-dessous on a une maquette.

Liste des articles existant dans la base

Figure 22. Liste des articles

Liste des clients

(2) Actualiser pour que le client ajouté soit dans la liste

(1) Permet d'ajouter un client

En cliquant sur le bouton client l'interface suivante contenant la liste des clients s'affiche et on peut ajouter un client, imprimer la liste, etc.

Figure 23. Liste des clients

On a presque les mêmes interfaces pour les clients que pour les fournisseurs. Pour un gain d'espace on omet de présenter les interfaces fournisseurs. De même pour l'achat et la vente.

Supposons si on clique sur nouveau client : l'interface de la Figure 24 s'affiche. On rempli les champs et puis on valide.

Si on revient dans la fenêtre principale (Figure 16) et on clique sur gérer les agents la Figure 16 s'affiche et on peut soit supprimer, soit ajouter ou chercher un agent.

Figure 24. Ajout d'un Client

Choix de l'action

Figure 25. Ajouter/supprimer/chercher un agent

Pour finir avec les interfaces on va revenir à la fenêtre principale (Figure 16) et on clique sur le bouton utilitaire comme suit :

(1) Click

(2) cliquer pour avoir (3)

Figure 26. Clique sur le bouton utilitaire

Calendrier

Figure 27. Calendrier

Remarque :

Dans la plupart des interfaces il y'a un message d'information qui nous indique le résultat de l'exécution de l'action demandée par l'utilisateur.

5.4 Déroulement du projet :

Tache

Durée

Pourcentage

Etude préalable

5 jours

10%

Conception

15 jours

30%

Développement

20 jours

40%

Rédaction du rapport

10 jours

20%

Tableau 3. Tableau du déroulement

5.5 Conclusion :

Dans ce chapitre on a présenté en premier lieu quelques modèles du cycle de vie d'un logiciel. On a justifié notre choix sur le modèle de référence qu'on a choisi (prototypage).

Vu le grand nombre des interfaces composant notre application, en second lieu on s'est contenté de donner quelques unes qui nous paraissent plus importantes. On a essayé au maximum possible présenter une seule interface s'il y' a plusieurs ayant des similarités. Et à la fin, on a donné un tableau résumant le déroulement du projet.

Conclusion et perspectives

Ce projet était bénéfique pour nous dans plusieurs sens. Il nous a permis :

o de nous perfectionner en améliorant nos connaissances en programmation et en conception.

o De bien comprendre et mettre en oeuvre le déroulement d'un cycle de vie d'un logiciel.

o De découvrir le monde de l'entreprise (fonctionnement).

Nous avons essayé de réaliser ce projet pour le but de faciliter l'entreprise en question, d'améliorer la gestion et le suivi de ses clients, de ses fournisseurs et de son stock.

On a appliqué au maximum possible les règles de bases permettant d'avoir une application performante. Nous avons appliqué UML pour concevoir une grande partie de notre travail. Nous avons utilisé aussi Java et Access pour implémenter notre application.

Grâce aux architectures que nous avons utilisé (MVC et client/serveur) et du fait que Java est un langage adaptable dans plusieurs domaines, notre application peut avoir des extensions ou des modifications dans le futur. Citons quelques unes :

o On peut lier cette application à un site web dynamique qui nous permettra le suivi des clients et des fournisseurs en ligne.

o On peut changer le SGBD au cas où l'entreprise aura des données volumineuses à stocker.

o Dans l'avenir quand l'entreprise aura besoin de plusieurs agents travaillant en même temps en réseau, on peut utiliser le concept Remote Method Invocation (RMI) : appels des méthodes à distant

Bibliographie

Ouvrages électroniques

KELLER, Nicolas ROUQUET, Maxime. - KellerRouquet [ FORMTEXT en ligne ], 03/03/2006.

AUDIBERT, Laurent - Cours-UML.[en ligne]

GOLLOT, Eric - les cas utilisation.

DI SCALA, Robert - Initiation à la programmation.

http://www.developpez.com

Wikipédia : http://fr.wikipedia.org

LATIRI Chiraz.-Cours Génie logiciel.

M.DIMASSI Jamil.- Méthodologie de conception UML.

Travaux universitaires

GHARSALLI Alia et BEN AMMAR Amel. - Conception et développement d'une application de gestion de société de services. - Projet de fin d'études, ISIMM.

Annexes

Annexe 1 cas d'utilisation

Le diagramme des cas d'utilisation qui fait partie des modèles dynamique d'UML2 sert entre- autre un moyen de communication entre les spécialistes et le client, et d'un outil nous permettant d'avoir une idée sur les principales interfaces de l'application.

Utilisateurs - Acteurs

UML n'emploi pas le terme d'Utilisateur mais d'acteur. Les acteurs d'un système sont les entités externes à ce système qui interagissent avec lui. Quand on dit « qui interagissent », on veut dire qui envoient des évènements comme, cliquer sur un bouton OK ou encore envoyer un fichier de données ou une trame XML. On veut aussi dire qui reçoivent des informations de la part du système comme, recevoir une facture, mettre à jour un référentiel de données ou encore mettre à jour une application back-office.

Les acteurs sont donc à l'extérieur du système et dialoguent avec lui. Ces acteurs permettent de cerner l'interface que le système va devoir offrir à son environnement. Oublier des acteurs ou en identifier de faux conduit donc nécessairement à se tromper sur l'interface et donc la définition du système à produire. On fera attention à ne pas confondre acteurs et utilisateurs d'un système. Non pas que cela soit faux car tout dépend du sens donné au mot utilisateur mais trop souvent, le mot utilisateur est vu comme un raccourci pour désigner ceux qui vont cliquer dans les fenêtres de l'application. Les acteurs sont plus que les « simples » utilisateurs humains d'un système. D'une part parce que les acteurs inclus les utilisateurs humains mais aussi les autres systèmes informatiques ou hardware qui vont communiquer avec le système.

Pour trouver les acteurs d'un système, on va identifier quels sont les différents rôles que vont devoir jouer ses utilisateurs. Car les acteurs sont en fait les rôles joués par ces différents Utilisateurs (ex : Responsable clientèle, Responsable d'agence, Administrateur, Approbateur,...). On regardera ensuite quels sont les autres systèmes avec lesquels le système va devoir communiquer soit en mode réception soit en mode émission d'évènements (ex : Hardware d'un distributeur de billet, Système d'information partenaire, ERP,...).

Un biais classique dans l'identification des acteurs est dû au fait que les acteurs peuvent aussi être d'autres systèmes. Aussi, il est fréquent de vouloir identifier comme acteur les référentiels de données existant dans le système d'information. Effectivement, le

Système à produire aura sûrement à récupérer ou à mettre à jour des données issues de ces référentiels, mais le risque d'identifier ces systèmes comme acteur est qu'ensuite, lors de la rédaction des cas d'utilisation, on risque de rentrer trop tôt dans la solution et oublier l'expression première du besoin. Je ne dis pas qu'identifier ce type d'acteur est une erreur fondamentale mais l'expérience montre que l'intérêt est minime et que les biais induits sont néfastes : une description des cas d'utilisation plus proche de la solution que du besoin.

Les cas d'utilisation

Les cas d'utilisation vont ici nous aider à décrire ces attendus. On entend souvent que les cas d'utilisation permettent de décrire les fonctionnalités attendues du système de point de vue des acteurs. Ce n'est pas faux mais attention car «fonctionnalités» se transforme souvent en « fonctions ». On en arrive donc à utiliser les cas d'utilisation pour faire un découpage fonctionnel au sens procédures des langages procéduraux. Et là, on se trompe complètement d'objectif.

Ces fonctionnalités que l'on documente avec les cas d'utilisation doivent avoir un sens pour le métier des acteurs. Pour identifier les cas d'utilisation, il faut donc se poser les questions :

?? « Mais que va faire cet acteur avec le système en arrivant le matin au boulot ? »

?? « Pourquoi démarre t-il le système, avec quel objectif métier ? »

En se posant ce type de question, on verra que généralement des cas d'utilisation comme «Rechercher client » ou « Imprimer facture » ne sont pas des cas d'utilisation mais plutôt des fonctions du système. L'important avec les cas d'utilisation est de bien décrire ce que l'on pourrait désigner savamment par « unité d'intention complète ». C'est-à-dire une série d'envois d'évènements de la part de l'acteur au système et de réponses du système pour atteindre un objectif métier précis. Et non les différentes fonctions du système qui seront en fait déduites des différents cas d'utilisation.

Un cas d'utilisation est donc composé des éléments suivants :

· Un nom : Utiliser un verbe à l'infinitif (Ex : Réceptionner un colis)

· Une description résumée permettant de comprendre l'intention principale du cas d'utilisation. Cette partie est souvent renseignée au début du projet dans la phase de découverte des cas d'utilisation.

· Des acteurs déclencheurs : ceux qui vont réaliser le cas d'utilisation (la relation avec le cas d'utilisation est illustrée par le trait liant le cas d'utilisation et l'acteur dans un diagramme de cas d'utilisation)

· Des acteurs secondaires : ceux qui ne font que recevoir des informations à l'issue de la réalisation du cas d'utilisation (Ex : client ou autre système informatique. La relation avec le cas d'utilisation est illustrée par le trait liant le cas d'utilisation et l'acteur dans un diagramme de cas d'utilisation)

· Des pré-conditions qui décrivent dans quel état doit être le système (l'application) avant que ce cas d'utilisation puisse être déclenché (Ex : un contrat existe avec le client).

· Des scénarii. Ces scénarii sont décrits sous la forme d'échanges d'évènements entre l'acteur et le système. On classe les scénarii en : Un scénario nominal (celui qui est déroulé quand il n'y a pas d'erreur, celui qui est principalement réalisé dans 90% des cas), des scénarii alternatifs qui sont les variantes du scénario nominal et enfin les scénarii d'exception qui décrivent les cas d'erreurs.

· Des post-conditions qui décrivent l'état du système à l'issue des différents scénarii (Ex : un contrat est créé et le système back-office est mis à jour avec le nouveau contrat créé)

· Des informations sur l'utilisation du cas d'utilisation comme : le nombre de personnes exécutant ce cas d'utilisation dans une journée type, le nombre d'objets

(métiers !) traités par le cas d'utilisation dans une journée type (Ex : 120 contrats créés

entre septembre et novembre, 2000 consultations des contrats par jour).

Eventuellement une description des besoins en termes d'interface graphique. Ce chapitre étant réservé à des cas simples car généralement traité en dehors de la description même du cas d'utilisation. Dans ce cas une cohérence doit d'ailleurs être assurée entre l'IHM et la description du cas d'utilisation.

Les relations entre cas d'utilisation

UML définit 3 grands types de relations entre cas d'utilisation : généralisation/spécialisation, include, extends.

Il est important de noter que l'utilisation de ces relations n'est pas primordiale dans la rédaction des cas d'utilisation et donc dans l'expression du besoin. Ces relations peuvent être utiles dans certains cas mais une trop forte focalisation sur leur usage conduit souvent à une perte de temps ou à un usage faussé, pour une valeur ajoutée, au final, relativement faible.

Extends :

La relation « d'extend » est probablement la plus utile car elle a une sémantique qui a un sens du point de vue métier au contraire des 2 autres qui sont plus des artifices d'informaticiens.

On dit qu'un cas d'utilisation X étend un cas d'utilisation Y lorsque le cas d'utilisation X peut être appelé au cours de l'exécution du cas d'utilisation Y comme :

Figure 28. Relation extend

Ce type de relation est primordial pour l'écriture de l'application. Imaginer dans le cas précédent que l'on n'ait pas mis la relation « extends ». Cela signifierait que lors de la prise de commande pour un nouveau client, le processus de prise de commande devrait être annulé au moment de la saisie des informations client, pour d'abord exécuter « Enregistrer client » afin que le client soit connu puis ensuite, reprendre le processus de prise de commande depuis le début ; pas cool pour notre responsable clientèle et bonjour l'image commerciale donnée au client !

Include :

La relation d'include n'a pour seul objectif que de factoriser une partie de la description d'un cas d'utilisation qui serait commune à d'autres cas d'utilisation. Le cas d'utilisation inclus dans les autres cas d'utilisation n'est pas à proprement parlé un vrai cas d'utilisation car il n'a pas d'acteur déclencheur ou receveur d'évènement2. Il est juste un artifice pour faire de la réutilisation d'une portion de texte.

Une erreur classique est d'utiliser la relation « d'include » pour faire du découpage fonctionnel d'un cas d'utilisation en plusieurs « sous cas d'utilisation » qui s'enchaînent en fonction de certains critères. On en arrive alors à se demander : Comment documenter l'enchaînement des sous cas d'utilisation avec UML ? Mais cette question n'a en fait pas lieu d'être, tout simplement.

Figure 29. Relation include

Généralisation / spécialisation

Cette relation est de mon point de vue la relation la plus discutable du point de vue de son utilité pratique. Elle consiste à dire que l'on a un cas d'utilisation dit « de base », générique, qui décrit des séquences d'évènements et d'autres cas d'utilisation qui héritent de ce comportement de base et le spécialise suivant différents critères (le comment de la chose reste nébuleux). On pourra par exemple avoir une situation comme

Figure 30. Relation généralisation/spécification

Conclusion

On espère vous avoir un peu éclairé sur cette espèce que sont les cas d'utilisation et surtout sur leur bon usage. On espère aussi que vous aurez compris qu'il est inutile de compliquer leur utilisation en introduisant la notion de relation et que les cas d'utilisation deviennent « simples » si on s'en tient à répondre à la question : Mais est ce que ce cas d'utilisation à un sens du point de vue métier pour l'acteur, n'est ce pas une vision informaticienne de son besoin ? Les détails d'informaticiens seront abordés lors des activités d'analyse et de conception.

Ne soyons pas pressé et exprimons d'abord le besoin et ensuite la solution.

Annexe 2 Règles de passage du modèle conceptuel au modèle physique (MCD MLD)

Table et clé primaire :

Toute classe ou entité (=objet de gestion) est transformée en table. Les attributs de l'entité deviennent les attributs de la table. L'identifiant de la classe/entité devient la clé primaire de la table.

 

Figure 31. Table et clé primaire.

Relation binaire (...,*) - (...,1) :

La clé primaire de l'entité reliée par (..., 1) devient clé étrangère de l'entité reliée par (...,*).

 

Figure 32. Relation binaire (...,*) - (...,1).

Relation binaire (0.1) - (1.1) :

La clé primaire de l'entité reliée par (0, 1) devient clé étrangère de l'entité reliée par (1, 1).

 

Figure 33. Relation binaire (0.1) - (1.1).

Relation binaire et ternaire (...,*) - (...,*) :

On crée une table supplémentaire ayant comme clé primaire une clé composée des clés primaires des deux entités. Lorsque la relation contient elle-même des propriétés, celles-ci deviennent attributs de la table supplémentaire.

 

Figure 34. Relation binaire et ternaire (...,*) - (...,*).

Annexe 3 Ingénierie et retro-ingénierie

Aujourd'hui les concepts ingénierie et rétro-ingénierie, jouent un rôle important en informatique plus particulièrement dans le domaine de génie logiciel. Les développeurs de logiciels ne peuvent pas s'empêcher de profiter d'un tel marché. Les logiciels répondants à ces deux concepts commencent à inonder le marché. Le principe de base est simple : en ayant une conception on peut retrouver le corps du programme à développer (ingénierie), et inversement on peut trouver la conception (retro-ingénierie). En voici ce qu'on peut lire dans Wikipédia :

La rétro-ingénierie (traduction littérale de l'anglais Reverse engineering), également appelée rétro-conception, est l'activité qui consiste à étudier un objet pour en déterminer le fonctionnement. L'objectif peut être par exemple de créer un objet différent avec des fonctionnalités identiques à l'objet de départ sans contrefaire de brevet. Ou encore de modifier le comportement d'un objet dont on ne connaît pas explicitement le fonctionnement.

La démarche utilisée peut être celle de l'étude d'une boîte noire : on isole l'objet à étudier, on détermine les entrées et les sorties actives. On essaie ensuite de déterminer la réponse du système en fonction du signal d'entrée. Mais il est également possible de démonter le système jusqu'à un certain point pour en analyser les constituants.