Skip to content

instagib111/GestionCandidat

Repository files navigation

Remerciement

Ma première pensée va directement à la famille SABA sans qui l’établissement DORANCO n’existerait pas. c’est grâce à leur énergie et leur disponibilité que j’ai pu m’accomplir et prétendre à un poste que je désirais depuis maintenant plusieurs années.

Mon premier contact avec Doranco a été avec Silvya STOJANOVIC, qui m’a donné la chance de rentrer en formation pour suivre le cursus de Développeur d’Application Multimédia. Quelques mois après, j’ai obtenu ce diplôme. Deux ans après, je tente d’obtenir le diplôme de Concepteur Développeur Informatique. Silvya a été présente tout au long de ma formation pour répondre à mes questions et pour me soutenir en cas de besoin. J’ai aussi pu converser librement avec elle sur différents sujets. Merci pour tout ce temps qui m’a été consacré.

Bien évidemment, la formation n’aurait pas pu être possible sans tous les formateurs. Leur pédagogie et leur savoir m’ont permis de m'accomplir et m’ont données confiance en moi en tant que développeur. C’est grâce à eux que j’ai gagné en crédibilité face aux employeurs.

Durant ces mois de formation, j’ai rencontré beaucoup de personnes qui se trouvaient dans une situation similaire à la mienne. Mes camarades de classe, ou collègues d’aventure, m’ont aussi beaucoup apportées. C’est avec eux que j’ai le plus échangé et débattu sur des sujet qui nous passionne.

Pendant ma formation en alternance, j’ai travaillé étroitement avec Petros MAVROCORDATOS, mon patron et mon tuteur, qui m’a donné toutes les opportunitées pour que je progresse et puisse prouver mes compétences.

Pour finir, je remerci la dernière personne qui m’a aidée, pendant son temps libre, Nydia NOMEDE-MARTYR, qui a prit le temps de lire mon projet et de me donner tous les conseilles dont j’avais besoin.

Sans la participation et la coordination de toutes ces personnes tout cela n’aurait pas été possible. Le meilleur moyen pour moi de tous vous remercier est d’obtenir mon diplôme.

Sommaire

[[TOC]]

Introduction

Voilà maintenant plusieurs années que je me passionne pour le métier de développeur informatique. Étant en reconversion professionnel, j'ai eu le temps, avant de commencer mes études, de me former seul sur certaine technologie. Le premier langage sur lequel je me suis perfectionné en tant qu’autodidacte a été le C# et, ayant étudié plusieurs autres langages auparavant, j’ai pu me forger une opinion concrète des avantages que propose ce langage par rapport aux autres.

En entrant en formation chez Doranco, j’ai pu perfectionner ma compréhension de certains langages. Notamment le PHP, avec lequel j’ai réalisé un site e-commerce sans utiliser de framework associé, ce qui m'a permis d'obtenir mon diplôme de Développeur d'Application Multimédia en 2016. Cette expérience m’a conforté dans mon choix de langage pour mes futurs projets.

Par la suite, j'ai intégré une session de Concepteur Développeur Informatique dans laquelle j’étais en alternance chez Acial (Pure players du Test Logiciel). Parmi toutes les technologies que j'ai pu apprendre tout au long de la formation, il y en a, plus que d'autre, qui ont retenu tout particulièrement mon attention. Premièrement le C#, que je manipulais déjà avant mon entrée en formation. Mais aussi Angular 4 qui est une des technologies que j'ai découvert durant la formation et qui m'a absolument satisfait. Même si malheureusement, je ne l’utiliserai pas dans ce projet. Cette dernière remarque est pour moi importante puisque je suis beaucoup moins compétent lorsqu’il s’agit d’imaginer une interface graphique.

NodeJs est aussi une découverte très intéressante sur laquelle j'ai eu l'occasion de réaliser un service de traductions et de définitions intégré à une messagerie instantanée.

Tout au long de mon alternance, j'ai été amené à pratiquer sur la technologie .NET avec le langage C# pour, principalement, la création d'un nouveau module de gestion des candidats à l'entreprise. Ce module a dû être ajouté à l'application déjà existante, qui a été réalisée en ASP classique avec le langage Visual Basic Script. Je me suis alors confronté à plusieurs problèmes de compatibilité entre les deux technologies afin de les faire cohabiter ensemble sur une même interface. En plus de ça, j'avais à ma charge le support de cette application. J'ai donc dû apprendre le Visual Basic Script, qui n'était pas enseigné durant la formation, afin de corriger les bugs déjà présents.

J'ai eu la chance de choisir mes instruments de travail ainsi que les technologies de développement que j'allais utiliser pour la création de, ce que j'appellerais désormais, la "Gestion Candidats". Je devais cependant être en adéquation avec l'environnement Windows server, n'aillant que cela à ma disposition. Mon choix s'est porté naturellement vers ASP.NET, et plus précisément les Web Forms. Notons qu’avec le recul, je n'aurais pas fait exactement le même choix, je me serai plutôt dirigé vers ASP.NET MVC5 qui est bien plus utilisé aujourd'hui pour de nouveaux projets. Néanmoins, Web Forms offre une simplicité de prise en main et une fluidité sur la manipulation des éléments graphique déjà très aboutie.

Pour héberger l'application en développement, j'ai à ma disposition un Microsoft Server 2012R2 couplé avec Microsoft SQL Server 2012 pour gérer les données. On notera que le serveur en production est légèrement différent puisqu'il est couplé avec un Microsoft SQL Server 2005, ce qui apporte des nuances au niveau de l'écriture T-SQL.

L'application en ASP classique est, quant à elle, hébergée sur un Microsoft Server 2003. L’une de mes missions est aussi de porter l’application existante vers un Microsoft Server 2012R2, pour des raisons de sécurité et de stabilité.

Enfin, la structure de la base de données SQL est imposée et n’est pas conforme à un développement orienté objet, ce qui est une difficulté supplémentaire lors des phases d’écriture du programme.

Ceci n’est évidemment pas le sujet de ce cahier des charges, mais je me permets de le préciser puisque cela m’a permis de comprendre plus en détail comment fonctionne un serveur Windows. Par exemple, le système de permission d’accès des utilisateurs est géré avec l’Active Directory du serveur Intranet à l’entreprise, cette méthode de connexion est très intéressante puisqu’elle permet de n’avoir qu’un seul compte utilisateur pour plusieurs actions. Je dois me servir de cette base de données pour l’authentification, mais elle sert aussi à la connexion sur un poste se trouvant dans le réseau Intranet ainsi qu’à la boite mail jusqu’au système de messagerie instantané.

Je vais m’inspirer de ce travail pour réaliser mon projet. En retirant la contrainte de l’active directory. En démarrant avec un projet vierge, je retire aussi la contrainte de la cohabitation avec toutes autres modules de quelconques natures, et je partirai d’une structure de base de données orientée objet. Je gagnerai avec cela une plus grande liberté sur mes choix de développement.

Tout au long de ce cahier des charges, je tenterais de vous expliquer en détail la réponse que j'ai fournis à la demande de départ. Je parlerais des problèmes que j'ai rencontré en apportant des solutions et je passerais en revue les différentes étapes de conception.

Problématique

Acial est une PME ayant connu une rapide évolution au cours des deux dernières années. En effet, la société a réussi à doubler son nombre de salariés au cours de l’année 2016, passant d’une centaine d’employées à plus de deux-cents. Cette société n’a jamais connu une expansion aussi rapide durant sa carrière et en connaîtra plusieurs autres dans les années à venir. Les outils utilisés par l’entreprise n’ont pas évolué depuis maintenant plus de dix ans et, jusqu’à aujourd’hui, le besoin d’en changer ne se faisait pas ressentir.

Néanmoins, leurs utilisations deviennent de plus en plus difficiles à cause de leur expansion récente. Le bureau de recrutement a à sa disposition un serveur Exchange couplé avec le service de mail Outlook. Une interface Exchange, créée par les utilisateurs eux même, permet de remplir une fiche d’un potentiel candidat à l’entreprise puis est sauvegardée dans la base de données chiffrées de Microsoft. La base de données est ensuite consultable depuis l’application Outlook ou exchange.

La technologie apporte certains avantages non négligeables. Son utilisation est relativement simple et un développeur n’a pas besoin d’intervenir sur la création d’un module Exchange en raison de sa simplicité. Cependant, les contraintes sont multiples et s'avère de plus en plus gênante avec le temps.

La base de données n’est pas exploitable en dehors de Exchange ou Outlook, l’interface est limitée dans sa personnalisation, les documents épinglés sur la fiche ne sont pas récupérables autrement que par son téléchargent individuel et pour finir, le système de recherche n’est pas, lui non plus, personnalisable et ne permet pas les recherches dans les documents.

Pour la nouvelle version, les documents doivent être réutilisables dans d’autres contextes que celui de l’application. Ils devront, par exemple, servir pour des statistiques ou des recherches uniquement dans les documents des candidats.

C’est pour répondre à tous ces points que j’interviens pour apporter des solutions pertinentes. En me servant des technologies actuelles, je vais mettre au goût du jour leur méthode de travail tout en l’intégrant à l’intranet de l’entreprise. J’aurais l’opportunité d’y répondre et en plus d’apporter des nouveautés comme un système de favoris intégré à l’application.

Pour finir, je ferais mon propre système de recherche de candidat en me basant sur l’attente qu’un utilisateur a sur la volonté de changement par rapport au système Exchange actuel.

Cible

Mon application aura pour but d’en remplacer une autre. Avant de la commencer, je dois comprendre ce qu’était l’application en profondeur. Les avantages qu’elle avait pour les garder et les perfectionner, ainsi que ses inconvénients pour les corriger ou les supprimer.

J’ai alors eu une présentation sommaire de ce qui existait, puis j’ai procédé à une enquête auprès des utilisateur tout au long de mon développement pour ne pas reproduire les erreurs existantes.

Fort heureusement pour moi, tous les utilisateurs de mon application son dans la même entreprise que la mienne. C’est pour le service de recrutement et des responsables hiérarchique que le besoin a été énoncé. Je travaillerai en étroite collaboration avec eux tout au long de mon projet.

I Cahier des charges

Exigences

Ergonomiquement, l’application devra être ISO conforme avec celle existante et son comportement devra être reproduit à l’identique. Ceci pour ne pas être obligé de former toute l’équipe sur un nouvel environnement de travail.

Un utilisateur doit avoir la possibilité de:

  • créer un nouveau candidat en renseignant une fiche d’informations,

  • modifier un candidat existant et visible pour lui,

  • supprimer un candidat uniquement s’il a le droit associé,

  • envoyer des tâches aux autres utilisateurs,

  • consulter sa liste de tâches,

  • stocker des pièces jointes par candidat,

  • répertorier les événements par candidat,

  • rechercher par mots clé un candidat,

  • consulter les candidats avec des listes définis,

  • ajouter un candidat à sa liste de favoris,

  • consulter sa liste de favoris.

Voici les principales exigences que l’application devra fournir. Je ne ferai pas la liste ici de toutes les exigences. Dans les prochaines versions, on devra avoir la possibilité de créer un nouveau contrat à partir d’une fiche candidat pour ensuite créer un nouveau consultant.

Rôles

On peut trouver quatre rangs principaux dans la hiérarchie de la société. Dans l’application Gestion Candidat, les rôles serviront principalement à filtrer les fiches de liste des candidats, comme suit :

  • un consultant ne peut voir que les candidats pour un poste de consultant,

  • un commercial a les même droits qu’un consultant,

  • un responsable de département peut voir les commerciaux et les consultants,

  • un associé peut voir tout le monde (consultants, commerciaux, responsable, associé)

Le rang associé lui apporte aussi le privilège de supprimer une fiche d’un candidat

Stories

Pour répondre à ses exigence j’ai réalisé des profils différent pour créer mes "stories". Les utilisateurs (salariés) ont un trigramme pour s’identifier, je procéderai donc ainsi :

  • CAD, associé

  • GGH, commercial

  • DGM, commercial

  • HAM, responsable

  • PTT, responsable

  • JML, consultant.

Grâce à cette liste, toutes les "stories" pourront être réalisées. Nous verrons dans un autre chapitre l’avancement du projet en suivant la méthode Agile.

II Conception

Technologies

Pour la bonne réalisation de mon projet, et après avoir pesé le pour et le contre, j’ai réalisé une liste de tous les produits qui me serviront durant toutes les étapes de création..

Visual Studio 2017 Community

L’outils qui me suivra tout au long de mon projet. Il me servira à produire les diagrammes, gérer la base SQL Server, gérer mon serveur GitHub, réaliser mais campagnes de test unitaires, mon interface utilisateur et enfin à écrire mon programme.

ASP.NET MVC 5

Microsoft propose, pour faire des applications web, ASP.NET qui est une branche du .NET framework. Aussi, j’ai opté pour le patron de conception MVC pour que l’application soit maintenable plus longtemps puisque c’est devenu standard dans la création d’applications.

Langages

Dans la conception du serveur, et alors que j’avais le choix entre plusieurs langages, j’ai choisi d’utiliser C#. Pour plusieurs raisons évidentes, mais surtout pour rendre le projet maintenable si un autre développeur reprend le projet après moi.

Pour l’interface homme-machine, j’ai à ma disposition la librairie ASP (Razor) proposé par le framework apportant une multitude d’outils qui, en plus d’être agréable à utiliser, formate le résultat aux normes du web standard au moment de la compilation. De plus, il est très aisé d’ajouter des fonctionnalités créées par la communauté et de les intégrer au projet.

Le style du site sera géré avec CSS3, que je couplerais avec Bootstrap pour gérer la mise en page sur les différents écrans.

Je terminerai par le langage T-SQL que j’utiliserai pour faire la création de la base de données, les vues, les procédures stockées. Dans le programme, j’utiliserai LinQ pour faire mes requêtes.

Draw.IO

C’est l’outils que j’ai choisi pour construire les différents diagrammes dont j’avais besoin pour la conception de l’application. Après quelques recherches, c’est le seul éditeur de diagramme que j’ai trouvé ayant toutes les fonctionnalités qu’un développeur a besoin. Il est gratuit et Open Source, et il existe en version WEB et application de bureau.

Trello

J’ai choisi pour mon organisation Trello. Il me suivra tout au long de mon projet pour que je ne sois jamais perdu dans mon avancement. Je pourrais consulter mon tableau en ligne à partir d’une connexion internet et d’un compte dédié au projet. Une présentation du tableau détaillées se fera dans une prochaine partie.

Git

C’est, pour l’instant, le seul outil de versionning que je connaisse, ce qui m’a naturellement aidé à faire mon choix. Un serveur GitHub pour retrouver mon projet sera aussi mis en place. Je présenterai mon architecture Git dans un prochain chapitre.

IIS 8.5 (Internet Information Service)

Ce logiciel est un serveur web capable, entre autre, de prendre en charge les applications ASP, les services SMTP et FTP. On est aussi capable, en l’utilisant, de paramétrer le fichier Web.config de mon application via une interface d’administration.

Windows Server 2012 R2

Le choix de la version du serveur a été prise par le responsable du réseau informatique. D’après lui, cette version est la plus avantageuse en comparaison de tout ce qu’il y a sur le marché Microsoft.

SQL Server Management Studio 2017

Le serveur de base de données est géré par le logiciel de Microsoft. Il offre de nombreuses fonctionnalités et est très bien intégré à l’environnement sur lequel je travaille. On peut, par exemple, se connecter à une base de données en spécifiant l’ID que l’on a dans l’Active Directory de l’Intranet, à la condition d’avoir les droits.

Diagrammes

Diagrammes UML

Dans ce chapitre nous allons voir les différents diagrammes UML que j’ai produit pour comprendre l’application que j’ai réalisé.

Je commencerai par vous présenter le diagramme de cas d’utilisation pour comprendre plus en détails ce que fait l’application, puis je passerai sur tous les autres diagrammes utile à la compréhension de chaque couche de conception.

Diagramme de cas d’utilisation

Le salarié est un acteur faisant partie de la société et disposant des droits nécessaires pour l’accès à l’application. Pour rappel, la suppression d’un candidat n’est possible que si le salarié est identifié comme étant associé.

image alt text

Diagramme de cas d’utilisation

Diagramme d’activité

Ce diagramme présentera les étapes nécessaires à l’ajout d’un fichier à une fiche candidat. L’ajout d’un tâche ou d’un évènement se fait d’une manière similaire mise à part la sélection du fichier par l’utilisateur.

image alt text

Diagramme d’activité - ajout d’un fichier

Diagramme de séquence

Ce diagramme montre les étapes pour l’ajout d’un nouveau candidat. On commence par la connexion, puis par la recherche de ce candidat, puis pour finir l’ajout d’un nouveau candidat. Les étapes se veulent être le plus simple possible pour l’utilisateur.

image alt text

Diagramme de séquence

Diagramme de classes

Dans ce diagramme de classe j’ai volontairement décidé de ne pas mettre les propriétés inutiles à la compréhension du diagramme. Vous retrouverez toutes les propriétés dans la partie *dictionnaire de données *ci-dessous.

image alt text

Diagramme de classes - Gestion Candidat

Dictionnaire de données

Candidat
PK CdCandidat (Int, NOT NULL)
FK

FK FK FK FK

FK

FK

CdHumain (Int, NOT NULL) DtDisponibilite (datetime, NULL) LbDisponibilite (varchar(50), NULL) Remuneration (varchar(40), NULL) Mobilite (varchar(50), NULL) TypAction (Int, NULL) TypStatut (Int, NULL) TypPriorite (Int, NULL) TypOrigine (Int, NULL) InfCom (bit , NULL) MCEntreprise (nvarchar(1000), NULL) MCFonctionnel (nvarchar(1000), NULL) MCTechnique (nvarchar(1000), NULL) DtCreation (datetime, NOT NULL) CreePar (nvarcher(4), NOT NULL) DtModification (datetime, NOT NULL) ModifiePar (nvarcher(4), NOT NULL)
EvenementCandidat
PK CdEvenement (Int, NOT NULL)
FK FK FK CdCandidat (Int, NOT NULL) CdResp (nvarchar(4), NOT NULL) TypEvenement (Int, NULL) CommentaireEvenement (varchar(1000), NULL) DtEvenement (varchar(50), NULL) DtCreation (datetime, NOT NULL)
FichierCandidat
PK CdFichier (Int, NOT NULL)
FK FK CdCandidat (Int, NOT NULL) TypFichier (Int, NOT NULL) Nom (varchar(50), NOT NULL) LienPath (varchar(250), NOT NULL) DtModification (datetime, NOT NULL) DtCreation (datetime, NOT NULL)
FavorisCandidat
PK CdFavoris (Int, NOT NULL)
FK FK CdCandidat (Int, NOT NULL) CdSalarie (nvarchar(4), NOT NULL)
Humain
PK CdHumain (Int, NOT NULL)
Civilite (varchar(10), NULL) Prenom (varchar(255), NULL) Nom (varchar(255), NULL) NomPatronymique (nvarchar(40), NULL) Adresse (varchar(250), NULL) AdresseComplement (varchar(250), NULL) CodePostal (varchar(5), NULL) Ville (varchar(50), NULL) Pays (varchar(50), NULL) TelMobile (varchar(25), NULL) email (varchar(150), NULL) DtCreation (datetime, NOT NULL) DtModification (datetime, NOT NULL)
IDENTIFIANTSALARIE
PK CdId (Int, NOT NULL)
FK CdSalarie (nvarchar(4), NOT NULL) Key (varchar(2000), NOT NULL) DtModification (datetime, NOT NULL) DtCreation (datetime, NOT NULL)

Role
PK CdRole (Int, NOT NULL)
FK FK FK

FK

CdCandidat (Int, NULL) CdSalarie (nvarchar(4), NULL) CdHumain (Int, NOT NULL) TypTdb (Int, NULL) isResp (bit, NULL) CdResp (nvarchar(4), NULL) isSupport (bit, NULL) isCP (bit, NULL) isBO (bit, NULL) isMO (bit, NULL) isFO (bit, NULL) isDAF (bit, NULL)
TacheCandidat
PK CdTache (Int, NOT NULL)
FK FK FK CdCandidat (Int, NOT NULL) CdCreateur (nvarchar(4), NOT NULL) CdReceveur (nvarchar(4), NOT NULL) DtAction (datetime, NULL) DtEnvoi (datetime, NOT NULL) Statut (bit, NOT NULL) Details (varchar(250), NULL)
Salarie
PK CdSalarie (nvarchar(4), NOT NULL)
FK CdHumain (Int, NOT NULL) NbEnfant (smallInt, NULL) NoSecuSocial (nvarchar(21), NULL) DtNaissance (datetime, NULL) LieuNaissance (nvarchar(40), NULL) Nationalite (nvarchar(20), NULL) Fonction (nvarchar(40), NULL) Cadre (bit, NULL) DtSortie (datetime, NULL) DtEffet (datetime, NULL) RegionContrat (nvarchar(250), NULL) SalaireAnnuel (float, NULL) SalaireAnnuelLettre (nvarchar(150), NULL) PrimeAnnuel (float, NULL) PrimeAnnuelLettre (nvarchar(150), NULL) CleRib (nvarchar(2), NULL) DtDernierVisiteMedical (datetime, NULL) NbAnneEtude (nvarchar(50), NULL) NumPoste (varchar(14), NULL) NumExt (varchar(14), NULL) DtCreation (datetime, NOT NULL) DtModification (datetime, NOT NULL)
typActionCandidat
PK CdAction (Int, NOT NULL)
libele (nvarchar(100), NULL)
typFichierCandidat
PK CdFichier (Int, NOT NULL)
libele (nvarchar(100), NULL)
typOrigineCandidat
PK CdOrigine (Int, NOT NULL)
libele (nvarchar(100), NULL)
typPrioriteCandidat
PK CdPriorite (Int, NOT NULL)
libele (nvarchar(100), NULL)
typStatutCandidat
PK CdStatut (Int, NOT NULL)
libele (nvarchar(100), NULL)
typTdbCandidat
PK CdTdb (Int, NOT NULL)
libele (nvarchar(100), NULL)

III Réalisation

Expérience utilisateur

Apparence

L’interface devra s’intégrer parfaitement au reste de l’application existante, je doit donc respecter la forme des éléments ainsi que leurs couleurs associées.

Je me permettrai, malgré cette contrainte, d’apporter du style aux éléments qui n’en ont pas encore. J’utiliserai aussi la librairie bootstrap pour organiser proprement mon interface.

Date Picker

L’intégration d’un module de récupération de date était pour moi indispensable. après plusieurs recherches et plusieurs essaies, mon choix s’est tourné vers datepicker de Bootstrap. Facile à intégrer avec les Nuget package que propose Visual Studio il a aussi l’avantage d’être simple d’utilisation et très personnalisable.

image alt text

Bootstrap 3 DatePicker (EN)

DataTable (JQuery)

Lorsque j’ai conçu l’application, je ne voulais pas reproduire à l’identique ce que j’avais fait en entreprise. C’est pour cela que j’ai utilisé une nouvelle manière d’afficher et d'interagir avec une liste de données. en effet, sur mon projet d’entreprise je n’utilise pas de rafraichissement asynchrone ce qui rend l’utilisation un peu moins fluide. Je ne voulais pas reproduire cette erreur une nouvelle fois. Pour afficher la liste des candidats, je me suis alors servi du module DataTable entièrement adapté à l’environnement ASP.NET. La documentation est lisible et de nombreuses démonstrations de projets en l’utilisant sont facilement trouvable sur le Web. J’ai alors pu le mettre en place pour l’affichage, la recherche et la pagination. Tout se fait de manière asynchrone et son utilisation et bien plus agréable que ce que j’ai déjà fait en entreprise.

Ergonomie

Malgré la contrainte de la conformité avec l’ancienne application de gestion, j’ai souhaité apporter ma touche personnel à l’interface. Le schéma ci-dessous montre la forme de la fiche d’un candidat.

image alt text

Maquette graphique - fiche candidat

Tous les modules sont infiniment extensible. les deux modules sur le côté dispose de la propriété CSS ‘overflow-y: auto’ qui empêchera la déformation de la fiche en cas d’un grand nombre de saisi de tâche ou de document.

Trello

Voici un aperçue de l’organisation sur Trello pendant la phase de développement. Après avoir préparer les "stories" et après avoir fait la liste des tâches pour la mise en place de l'environnement de développement. Cet outil m’a beaucoup aidé à suivre le principe de la méthode Agile comme vous pouvez le voir dans le tableau ci-dessous.

image alt text

Tableau Trello

Architecture GIT

Git est un outils de versionning parmis plusieurs outils du même type. Pour la création de l’application, aucun temps de recherche m’a été accordé pour une comparaison poussée entre ces différents outils. Je suis alors obligé d’utiliser Git pour gérer les versions de mon application puisque c’est le seul que je connaisse assez.

Pour travailler avec Git et son système de branche, j’ai dû faire des recherches de bonne pratiques à son l’utilisation. Une architecture logique me permettra de ne pas me perdre entre les phase de développement et les phases de test. En utilisant le schéma ci-dessous, je suis sur de garder une trace logique de toutes mes actions.

image alt text

Architecture Git

Amélioration d’une version stable dans la branche DEV. Correction rapide de la version stable dans la branche PATCH. Dès qu’une fonctionnalité est terminé et testée, elle est envoyée en production, c’est-à-dire dans la branche MASTER.

IV Mise en production

Serveur

La mise en production de l'application se fait sur un serveur distant avec l’outils Web Deploy de Microsoft intégré à Visual Studio 2017 et IIS. Nom du serveur, ‘smarterasp.net’ qui offre une période d’essai de deux mois.

Le service est mis à disposition par l’hébergeur comme suit,

image alt text

Paramètres de connexion Web Deploy

Son utilisation se fait via le bouton Publish de Visual Studio 2017, les paramètres sont demandés au moment de la connexion.

image alt text

Paramètres de connexion Web Deploy - VS

V Test

Test-Driven Development

Il existe plusieurs façons de s’organiser pour développer des fonctionnalitées de son application. Beaucoup de développeurs ont optés pour une solution sur et rapide qui veut que l’on écrive les tests de développement avant le développement.

Dans mon cas, j’utiliserai cette méthode pour formater la requête de l’utilisateur lorsqu’il fait une recherche. La "recherche candidat" doit répondre à des exigences particulières de recherche. Je l’utiliserai aussi pour d’autres fonctionnalitées nécessitant cette procédure.

Exigences (recherche candidat)

La base de données existante comporte déjà plus de 8000 fiches représentant de potentiels candidats aux différents postes de l’entreprise. C’est pour cela que la recherche doit répondre aux attentes suivantes.

La recherche doit être capable de faire une recherche avec :

  • un mot d’au moins deux lettres,

  • deux mots et plus, séparés par un espace,

  • deux groupes de mots séparés par un signe plus (+),

  • deux groupes de mots séparés par un signe moins (-),

  • trois groupes de mots séparés par un signe plus (+) puis un signe moins (-),

  • la requête de recherche ne doit pas commencer par un signe plus ou moins.

Le formatage doit répondre ce comportement :

  • rendre les mots insensible à la casse,

  • retirer les diacritiques,

  • interpréter un espace comme l'opérateur OR,

  • interpréter le signe plus (+) comme l'opérateur AND,

  • interpréter le signe plus (-) comme une exclusion,

  • la recherche doit se faire dans tous les champs éditables de la fiche,

  • la recherche doit opérer uniquement sur le tableau affiché,

  • la requête doit être encodée au format URL pour les symboles.

Exemple

Un exemple aidera à la compréhension des exigences. Je vais définir un tableaux non représentatifs des données que l’on pourra trouver en production mais qui illustrera plus clairement les attentes.

*Base de *données
Id Text
1 JAVA
2 JAVA C#
3 C++, Python, Visual Adélia
4 C#, VBScript, PowerShell, SQL
5 Transact-SQL Scala C#
Cas de tests

Je présenterai ici les entrées après formatage, puis les sorties en me servant des Id.

Entrées Sorties
java 1 2
java c# 1 2 4 5
java c# + sql 4 5
adelia sql - scala 3 4
sql java py scala + c# - shell 2 5

Pour que ma fonction de recherche soit terminée, elle devra répondre à ces cas de tests. Je les utiliserai en plus de tests plus approfondis.

Conclusion

Je me suis fortement inspiré de mon travail en entreprise pour créer cette application. Elle est, dans son utilisation, similaire au projet décrit dans ce cahier des charges mais complètement différente dans sa conception. En effet, ce projet se base sur une conception orienté objet et, autre point important, la méthode agile est utilisée, alors que mon projet d’entreprise est conçu de manière procédurale. J’ai alors pu comparer les différences majeur entre les deux projets.

C’est la première fois que j’utilise la méthode agile pour un projet et, avant de le commencer, je ne mesurais pas encore assez l’importance de cette méthode. En effet cela permet une grande structuration dans son organisation. Nous pouvons à tout moment savoir où nous en somme dans notre projet et estimer le temps restant à sa réalisation. L’obligation de terminer une tâche avant d’en commencer une autre permet de se concentrer pleinement sur le problème en cours. Malheureusement, je n’ai pas pu exploiter les capacitées de la méthode en équipe, mais il ne fait aucun doute pour moi que c’est un outils indispensable pour s’accorder avec ses équipier.

La conception orienté objet apporte une certaine aisance à la compréhension de l’application. J’ai pu expérimenter les limites de EF6 (Entity Framework 6) pour les liaisons entre mon model et la base de données. On réalise rapidement que EF6 est en plein développement, et après quelques recherches, les futures mises à jours ajouterons encore plus d’options utiles aux développeurs.

Ma préférence pour le C# s’est renforcée après la découverte approfondie de LinQ. Ecrire un programme claire et facile à lire est une de mes principales priorité lorsque je travaille et LinQ devient incontournable. Le langage SQL n’est alors pas présent et mon programme est par conséquent plus agréable à lire. L’architecture MVC 5 proposée par Microsoft offre une structuration des fichiers cohérente. Je n’ai jamais eu le sentiment d’être perdu dans mon projet, je n’ai jamais perdu de temps à réfléchir aux emplacements des dossiers et fichiers.

Cela ne fait aucun doute à présent, ces techniques de développement sont indispensable pour mener correctement un projet. La maintenance se voit elle aussi grandement simplifiée pour tout développeur connaissant l’architecture MVC. La communauté est très active et suivit de près par Microsoft. Un large choix de modul open source est présent sur le gestionnaire de paquet de Visual Studio.

Vous l’aurez compris, j’ai prit un certain plaisir à développer cette application. J’ai découvert une multitude d’astuces et compris plusieurs concepte pendant mon apprentissage que j’ai pu mettre en oeuvre tout au long de mon projet.

Annexe

Applications en ligne

  • draw.io ( éditeur de diagrammes )

  • docs.google.com ( pour la rédaction du cahier des charges )

  • trello.com ( gestion de projet )

  • github.com

Sites utiles

  • docs.microsoft.com ( documentation complète de toutes les technologie microsoft )

  • openclassroom.com ( pour des rappeles et des cours + forum )

  • codeproject.com ( pour consulter des projets entier avec explications fait par la communauté )

  • uml.org ( pour consulter les bonnes pratiques à utiliser en conception UML )

  • creately.com ( pour trouver des exemple et explications UML )

  • datatable.net ( documentation add-on datatable )

  • brunildo.org/test ( expérimentations CSS et JavaScript, recommendé )

  • developper.com ( pour des rappeles et des cours + forum )

  • nvie.com ( blog de Vincent Driessen, article "A successful Git branching model" )

About

Projet d'étude

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published