back-end du calculateur leed pour bâtiment durable...

38
RAPPORT TECHNIQUE PRÉSENTÉ À L’ÉCOLE DE TECHNOLOGIE SUPÉRIEURE DANS LE CADRE DU COURS LOG795 PROJET DE FIN D’ÉTUDES EN GÉNIE LOGICIEL Back-End du Calculateur LEED pour bâtiment durable UBUBI Version 1.3 – 15/08/2017 Auteurs Gergel, Sébastien - GERS32109105 Messena Jean, Yomé - JEAY03098804 Picard, Etienne - PICE19099002

Upload: others

Post on 02-Feb-2021

4 views

Category:

Documents


0 download

TRANSCRIPT

  • RAPPORT TECHNIQUE

    PRÉSENTÉ À L’ÉCOLE DE TECHNOLOGIE SUPÉRIEURE

    DANS LE CADRE DU COURS LOG795PROJETDEFIND’ÉTUDESENGÉNIELOGICIEL

    Back-End du Calculateur LEED pour bâtiment durable

    UBUBI

    Version 1.3 – 15/08/2017

    Auteurs

    Gergel, Sébastien - GERS32109105

    Messena Jean, Yomé - JEAY03098804

    Picard, Etienne - PICE19099002

  • 2

    Suivi des changements

    *A – Ajouté M – Modifié S – Supprimé

    Numéro de Version

    Date Numéro de figure, table ou section

    *A M S

    Brève description du changement

    Numéro de demande changement

    1.0 2017/07/01 Tout *A Première version du document

    -

    1.1 2017/08/15 Tout M RevuedudocumentparProf.A.April

    1.2 2017/08/15 Tout M RevuedudocumentparMathieuDupuis

    1.3 2017/08/15 Tout M Intégrationdeschangements

  • 3

    REMERCIEMENTS

    NoustenonsàremerciermonsieurMathieuDupuispoursontempsetsesconseilstoutaulongdece projet. Sans sa contribution, il aurait été infiniment plus complexede comprendre le domained’affairesainsiquedecommuniqueravecleclient.

    NousremercionsaussileprofesseurAlainAprilpoursesconseilsetpourl’aidequ’ilnousaapportéaucoursdeceprojet.

  • 4

    BACK-ENDDUCALCULATEURLEEDPOURBÂTIMENTDURABLEUBUBI

    SébastienGergel,YoméMessenaJean,EtiennePicard

    RÉSUMÉ

    Ce rapport de projet présente la synthèse des travaux du projet de fin d’études réalisée dans lecadreducoursLOG795àl’ÉTSdurantlasessiond’été2017.Ceprojetlogicielviselaconceptiond’uncalculateurdecycledeviepourbâtimentsutilisantlesdonnéesnumériquesprovenantdelogicieldemodélisation3D.Durant la session,nousavons conçues,documentéeset implémentéesplusieursfonctionnalités, tel qu’un module de gestion des utilisateurs, un module de création de«workspaces»,l’importationdesdonnéesprovenantd’unmodèledebâtiment3D,etlagestiondeplusieursrèglesd’affaires.Ceprojetestdéveloppéencollaborationavecl’écoledePolytechniquedeMontréal sous la direction de l’étudiant en doctorat Mathieu Dupuis et de son superviseur, leprofesseurAlainApril.

  • 5

    TabledesmatièresLISTEDESTABLEAUX..............................................................................................................................7

    LISTEDESFIGURES.................................................................................................................................8

    LISTEDESABRÉVIATIONS,SIGLESETACRONYMES................................................................................9

    INTRODUCTION...................................................................................................................................10

    CHAPITRE1 Problématiqueetcontexte...............................................................................................11

    Chapitre2Objectifsduprojet............................................................................................................12

    Chapitre3Méthodologie...................................................................................................................13

    Chapitre4 Planificationduprojet......................................................................................................14

    Chapitre5Livrables............................................................................................................................15

    Chapitre6Sommairedestravauxréalisés..........................................................................................16

    6.1Conceptiondusystèmed’utilisateursetdeWorkspaces..........................................................16

    6.2Créationde«workspaces».........................................................................................................17

    6.3Changementdeworkspace.......................................................................................................18

    6.4Miseàjourdumodèle...............................................................................................................20

    6.5Créationd’unprocessusd'énergie............................................................................................21

    6.6Changementsducodeuniformatdesobjetsettypesd’objets.................................................21

    6.7Gestiondesunités.....................................................................................................................21

    6.8Ajoutd’échangeaveclesbonstypes.........................................................................................22

    6.9Empêcherlasuppressiondecertainstyped’échanges.............................................................22

    Chapitre7 Risques..............................................................................................................................23

    7.1Risquesprévus...........................................................................................................................23

    7.2RisquesEncourus.......................................................................................................................24

    Chapitre8Postmortemduprojet.....................................................................................................25

    8.1Objectifsnon-atteint..................................................................................................................25

    8.2Changementsquiauraientpuêtreapportésencoursdeprojet..............................................25

    8.3Leçonstirées..............................................................................................................................26

    Chapitre9Contributiondesmembres..............................................................................................27

    9.1Gergel,Sébastien.......................................................................................................................27

    9.2Jean,YoméMessena..................................................................................................................27

  • 6

    9.3Picard,Etienne...........................................................................................................................27

    9.4Contributionsàpartségales......................................................................................................28

    CONCLUSION.......................................................................................................................................28

    LISTEDERÉFÉRENCES..........................................................................................................................29

    AnnexeAPlandeTravail....................................................................................................................31

    AnnexeBCaptured’écrandel’application.........................................................................................36

  • 7

    LISTEDESTABLEAUXTableau1:Abréviations,siglesetacronymes........................................................................................9Tableau2:Descriptiondesartefacts...................................................................................................15Tableau3:Risquesprévus...................................................................................................................23Tableau4:Plandetravail....................................................................................................................31

  • 8

    LISTEDESFIGURES

    Figure1:Schémadelasectionusagerdelabasededonnées............................................................17Figure2:Pagedeconnexion................................................................................................................36Figure3:Paged'enregistrement.........................................................................................................36Figure4:Exempledecréationdeprocessusd’energie........................................................................37Figure5:Exempledesousprocessusd’energy...................................................................................37Figure6:Insertiondescodesunifomats..............................................................................................37Figure7:Téléchargementd’unnouveaumodèleversleserveur.......................................................38Figure8:Listedesmodèlesaprèsupload............................................................................................38

  • 9

    LISTEDESABRÉVIATIONS,SIGLESETACRONYMES

    Tableau1:Abréviations,siglesetacronymes

    Terme DéfinitionUBUBI UncertainButUsefulBuildingInformation,lenomduprojet.

    Play!2Framework Lecadricielutilisépourl’implémentationd’UBUBI.JPA JavaPersistanceAPI,uneinterfacedeprogrammationpourles

    donnéesrelationnelles.SCRUM Méthodeagilepourledéveloppementdeprojets.AutodekRevit Logicieldemodélisationdebâtiment3D.Hibernate ORMJavapourlagestiondelapersistanced’objets.OpenLCA Logicield’analysedecyclesdevie,UBUBIutilisesonpropremodèlede

    basededonnées.ORM ObjectRelationalMapping,permetdeproduireunebasededonnées

    orientéeobjetàpartird'unebasededonnéesrelationnellesendéfinissantdescorrespondancesentrecettebasededonnéesetlesobjetsdulangageutilisé.

    Plug-ins Composantlogicielquiajouteunefonctionnalitéspécifiqueàunprogrammeinformatiqueexistant.

    Workspace Environnementdetravailcrééparunutilisateurcontenantdesprojets.Datasource Nomdonnéàlaconnexionconfiguréedansunebasededonnéesàpartir

    d'unserveur.Spring Springestuncadricieldedéveloppementjava.

    Multitenancy Modedefonctionnementd’unlogicieloùplusieursinstancesindépendantesfonctionnentdansunenvironnementpartagé.

  • 10

    INTRODUCTION

    Depuisquelquesannées,laconceptiondebâtimentssefaitàl’aidedelogicielsdemodélisation3D.Ces technologies combinées à l'intérêt grandissant pour la protection de l'environnement et ledéveloppementdurabledonnentnaissanceàunbesoinpourdenouveauxoutilsquitirentavantagedecesnouvellestechnologies.LebutduprojetUBUBIestd’offrirunoutilsimplepourfairel’analysedu cycle de vie des bâtiments compatible avec les logiciels utilisés par les architectes et lesingénieursdudomainedubâtiment.

  • 11

    CHAPITRE1

    Problématiqueetcontexte

    UBUBIestunlogiciel librequiserautiliséparplusieursuniversitésetcompagniesdansledomainede la construction. Cette solution a pour but d’offrir un service infonuagique qui permettra decalculer les impacts environnementauxd’unbâtimentpour tout son cyclede vie. Les calculs sontfaitsàpartirdedonnéesexportéesde logicielsdeconceptiondebâtimentetdebasededonnéesd’impactsenvironnementaux.LeprojetUBUBIestunprojetdegrandeenvergure.Cetteéquipedeprojetdefind’études’estdoncconcentréesurunsous-ensembledesfonctionnalitésrequisesparl’équipedechercheursdelaPolytechniquedeMontréal.

    Notreéquipeavaitpourmissiond’analyseretd’implémenterlesfonctionnalitésreliéesàlagestiondes données extraites d’un bâtiment. Nous étions responsables de la création d’un module degestiondesutilisateursetdelamiseenœuvred’uncertainnombrederèglesd’affairesdictéesparleclient.

    Le module de gestion des utilisateurs permettra de gérer le travail de plusieurs utilisateursséparémentetpermettraaussidepartagerunprojetparmiplusieursutilisateursdansuneoptiquedecoopération.Lesecondmoduleestlemoduled’importationetdemodificationdesdonnéesdebâtiment. Ce module vise à importer les fichiers de type IED provenant de l’application Revit1.Finalementl’équipedeprojetdefind’étudeaeupourtâched'implémenteruncertainnombrederèglesd'affairesconcernantcetteapplication.

    Lemoduledecalculetderésultatseradéveloppéparuneautreéquipedeprojetdefind’étude.

    1http://www.openlca.org/

  • 12

    Chapitre2

    Objectifsduprojet

    Le premier objectif de ce projet de fin d’étude est de rendre le prototype UBUBI actuel plussécuritaire en ajoutant un mécanisme d'inscription et d’authentification. Le but de cettefonctionnalitéestdelimiterl’accèsauxdiversprojets.Lesdifférentsprojetscréésparlesutilisateursseront isolés dans différents environnements de travail, qui seront appelés «workspaces». Lespropriétairesdeces«workspaces»pourrontdonnerl'accèsàd’autresutilisateurs.

    Le deuxième objectif du projet est de permettre à l’utilisateur de mettre à jour l’analyseenvironnementalàpartirdefichiersIEDprovenantdulogicieldeconceptiondebâtimentRevit.Cemoduled'importationdevradétectertoutchangementeffectuédanslemodèle3Ddubâtiment,parexemple: un changementdequantité, un changementde typedemur, et biend’autres. Il devraaussipermettredemodifierl’analyseenvironnementaleenconséquence.

    Letroisièmeobjectifduprojetestdemettreenœuvredesajoutsetchangementsàdiversesrèglesd’affairesquis’appliquentlorsdelamodificationd’uneanalyseenvironnementale.Ceciapourbutdefaciliterl’utilisationdulogicielparl’utilisateuretd’empêcherl’entréededonnéeserronées.

  • 13

    Chapitre3

    Méthodologie

    Laméthodologiechoisiepourleprocessusdedéveloppementlogicieldeceprototyped’applicationestbaséesurlaméthodologieAGILE2.Nousavonseudesrencontres,detypeSCRUM3,surunebasehebdomadaire avec le promoteur et le professeur superviseur dans le but de valider notreavancement.Deplus,lepromoteuraétédisponiblepourrépondreànosquestionsparcourrielouvidéoconférence pour des questions urgentes. Chaque rencontre a porté sur le progrès de lasemaineet lesbloquants,etapermisd’établir les tâchesàréaliserpour laprochaine itération.Laprogressiondutravailetlagestionduprojetontétéeffectuéesavecl’outilTrello.

    Lesdifférentesdécisionsdeconceptionetd’analyseontétécompiléesetdocumentéestoutaulongduprojetdansunjournald'évènementsituésurlaplateformeGoogledrive.Ilaétéstatuéaveclepromoteuretleprofesseursuperviseurquelestestsautomatisésneferaientpaspartiedeceprojetà cause de contraintes de temps. Il a toutefois été déterminé qu’il sera important de testerl’application et de proposer une stratégie de test au moment où cette partie du cycle dedéveloppementseraatteinte.

    Pour la gestiondes versions, il a étédécidéd'utiliser le systèmeGitlab fourni par l'école. Chaquedéveloppeur peut, par contre, utiliser l’outil Git avec lequel il est le plus familier. Chaquedéveloppeur doit effectuer ses changements dans une branche avant d’être ajouté à la branchemaitresse.Avantlafusionàlabranchemaitresse,unevérificationseraeffectuéeparlepromoteurpours’assurerdelaqualitéducodelivré.

    L’IDEdedéveloppementaétéIntellij,carc’estl’undesseulsoutilsaccessiblesetfacilesd’utilisationquipermetl'implémentationdecodeJavaetScalasimultanément,enplusdepermettrel’utilisationduFramework«Play».Pourfaciliterledéveloppement,unemachinevirtuellecontenantlabasededonnées était fournie par le promoteur. Cette base de données accessible était modifiable avecl’outilMySQLWorkbench.

    2http://fr.wikipedia.org/w/index.php?title=M%C3%A9thode_agile&oldid=139615140

    3http://fr.wikipedia.org/w/index.php?title=Scrum_(Boite_%C3%A0_outils)&oldid=138835287

  • 14

    Chapitre4

    Planificationduprojet

    Enraisondelanatureitérativeduprojet,ilaétédifficiled’estimerdemanièreprécisel’effortetlatailledesdifférentestâches.Ainsi,leresponsabled’unetâcheadéterminésaplanificationaufuretà mesure que le projet progressait et en discutait lors de la revue SCRUM hebdomadaire.L’ensemble de la planification et les détails des tâches sont présentés à l’Annexe I suite à leuranalyse.

    Aucoursdelarévisiondelaplanificationeffectuéeaumilieuduprojetdanslerapportd'étape,nousavons comptabilisé le nombre d’heures travaillées et l’avons comparé à nos estimations initiales.Nousavonsalors remarquéunécart assez importantentre l'effort réel nécessaire à la réalisationdestâchesetcequiavaitétéprévu.Nousavionsalorsdéterminéquecelaétaitdûprincipalementaufaitqu’aucunmembredel’équipen’estunexpertenapplicationwebetqu’aucundesmembresdel’équipen’aeul’occasiondetravailleraveclecadriciel«Play».Nousavonsdoncdécidéàpartirde la mi-session et du rapport d'étape d'être plus généreux dans nos prédictions initiales pourchaqueélémentpourainsiéviterlesmauvaisessurprises.

    Deplus,toutaulongdudéveloppement,l’analyseplusenprofondeurdesfonctionnalitésaeneffetfait apparaîtredes élémentsqui n’avaientpas étédiscutés avec lepromoteur et qui ontdonceubesoind'êtreéclaircis.Parexemple, lacréationde«workspaces»,deprojetsetd’utilisateursavaitétédiscutéeetélaboréeendétails,maislamodificationdespermissionsendehorsdel’ajoutn'avaitjamais été abordée. Les fonctionnalités de recherche d’utilisateur et de projet n’avaient pas nonplusétéabordées.Iladoncéténécessairedediscuterdesélémentsquiavaientdéjàétéconsidéréscommepresqueterminésetdedéterminerladirectionquenousvoulionsprendre.Finalement,ilaaussiéténécessaired’établirunepériodedeconsolidationetdetestsdefindeprojetpours’assurerdelaqualitédelalivraisonfinale.

  • 15

    Chapitre5

    Livrables

    Tableau2:Descriptiondesartefacts

    Nomdel’artefact Description

    Update(s)SCRUM ChacunedesrencontresSCRUMcomporteseslivrableshebdomadaires.Lanaturedeceslivrablesvarieenfonctiondesobjectifsquiontétédéterminéslorsdeladernièrerencontre.

    Propositiondeprojet Documentdeplanificationinitialeduprojet.

    Rapportd’étape Documentservantàinformerdiversespartiesprenantesdelaprogressionduprojetetdel’atteintedesobjectifs.Ilpermetdedocumenterleprogrèsduprojetàlami-session.

    Présentationindividuelle Présentationdesdécisionsprisespendantleprojet,lestravauxeffectuésetlesmoyensprispouradresserlesélémentsbloquantstoutaulongduprojet.

    Rapportfinal Lerapportfinalduprojetdefind’étudescontenanttouslesélémentsdel’analyse,delaconceptionetdel’implémentationdelasolution.

    Coded’intégrationdel’authentification

    Codedumoduled’authentification.

    Coded’intégrationdel’importationdesdonnéesdubâtiment

    Codedumoduledegestiondesdonnéesetprototypefonctionnel.

  • 16

    Chapitre6

    Sommairedestravauxréalisés

    Plusieurs tâches ont été réalisées lors du projet. Ces tâches sont les suivantes: la conception dusystèmedegestiond’utilisateursetde«workspaces»,lacréationdespagesd’enregistrementetdeconnexion, l’envoi de fichiers IED par un formulaire web, la création d’un processus d’énergie,l’ajoutd’échangeavec lesbons typesde flux, lamiseà jourdumodèle, lagestiondesunités lorsd’ajout d’échanges et le changement du code Uniformat d’un objet. Certaines de ces tâches ontnécessité un plus grand effort d’analyse que d’autres, tel que présenté dans les sous-sectionssuivantes.

    6.1Conceptiondusystèmed’utilisateursetdeWorkspaces

    Pourlesystèmed’authentification,nousavonsenvisagédeuxsolutionspossibles.Lapremièreétaitdetrouverunplug-inpourlecadricielPlayquipermettraitd’ajouterunsystèmed’authentificationlocal au serveur et qui ferait une grande partie du travail et laisserait l’équipe se concentrer surd’autres tâches. Par contre, lorsdenos recherches, laplupartdesplug-insd’authentification, telsque«Play!Authenticate»4et«Play-pac4j»5,quenousavonsputrouvernous limitaitàauthentifierl’utilisateur à l’aide d’autres services, tels que Facebook et Google, ce qui ne répondait pas auxbesoins du projet. Le seul plug-in qui semblait permettre l’ajout de comptes locaux était nonfonctionnel. Le projet de démonstration inclus avec le plug-in ne permettait pas la création decomptes.Iladoncétédécidéd’implémenterunesolutionnous-même.

    Nous avons finalement convenu d’utiliser trois tables. La première table serait les utilisateurs(Users).Celle-cicontiendraitlesinformationssurl’utilisateur,leursnoms,prénoms,adressecourrielet lemot de passe. Ensuite, nous avons créé une table «workspace», qui contient son nom ainsiqu’uneréférenceverssoncréateur.Finalement,une tablecontenant la listedesutilisateursaétécréée.Chaque lignedecelle-cicontientuneréférenceversunutilisateuretuneréférenceversun«workspace».Lesmotsdepassesonthachéspar lafonctionSHA-256 inclusedans les librairiesdebase de Java. L’idée étant de permettre à des utilisateurs autres que les créateurs originauxd’utiliser les «workspaces».Nous avons réaliséque cedesign, bienque simple, serait amplementsuffisant.

    4https://joscha.github.io/play-authenticate/

    5https://github.com/pac4j/play-pac4j

  • 17

    Figure1:Schémadelasectionusagerdelabasededonnées

    6.2Créationde«workspaces»

    Afindeséparerlesenvironnementsdesutilisateurs,nousavonsidentifiéestroissolutionspossibles.Unepremièresolutionseraitdegarderlesdonnéesdetouslesutilisateursdanslesmêmestablesdelamêmebasededonnéeseteffectuer la séparationgrâceà la cléprimairedesutilisateurs sur labase de données. Il aurait donc fallu remanier un peu l'architecture de la base de données pourintégrerlescolonnes«userId»danslestablesaffectées.Celanousauraitforcéàmodifierlestablesd’OpenLCA, ce qui n’était pas permis selon nos contraintes, car le client voulait garder lacompatibilitédesonlogicielavecOpenLCA.Uneautreapprocheauraitétéd’effectuerlaséparationparbasededonnées,créantainsiunebasededonnéesparenvironnementdetravail.Finalement,pour la dernière option, on pouvait séparer par schéma, créant ainsi un nouveau schéma parenvironnementdetravaildanslabasededonnées.

    Puisqu’iln'étaitnécessairequederépliquer lastructuredestables,nousavonsdécidédeprendrel’approchedelaréplicationduschémapatronetdecréerunschémapar«workspaces».Deplus,ilaété décidé de dupliquer toute la base de données. Toute analyse utilisant lemodèle d’OpenLCAdemandeauminimumenviron80%desdonnéescontenuesdanscelle-ci,alorstenterdenecopierquelesdonnéesutilespourun«workspace»spécifiquenesauveraitpasbeaucoupd’espaceenplusde demander énormément de temps de développement. Selon les commentaires émis par lereprésentantduclient,l'espaceneserapasunproblèmeenraisondescoûtspeuélevésdestockagesurAWS.

  • 18

    Une fois la décision prise pour la méthode de création des «workspaces», la première étapeconsistait à pouvoir créer les schémas à partir d’un schéma patron. Pour se faire, on utilise lafonctionnalitéde«mysqldump»,utilelorsdel’installationdeMySqlpourtéléchargerunfichierSQLcontenantl’informationdelacopieduschémapatron.Ensuite,encoreavecunefonctiondeMySql,onutiliselescriptSQLgénérépourcréerunnouveauschémaentoutpointsimilaireavecleschémapatron.Utiliserunscriptdecopiedebasededonnéesauraitétépluscomplexe,pluslongetauraitpucauserplusdeproblèmes.Deplus,letoutseraitplusdifficileàsupporterencasdemodification.Ensuite,pourfairelacréationdunouveauschéma,onutilisel'exécutablemysqldeconcertaveclefichier créé par «mysqldump». Ce schéma est une copie sans donnée du schéma du patron. Lenouveauschémacrééalenomchoisipourle«workspace»parl’usageretcenomseraceluiquiserautilisépourchoisirle«workspace»del’utilisateur.

    6.3Changementdeworkspace

    Unefois le«workspace»créé, il fautpouvoiryaccéderàpartirde l’application.Undéfitechniques’estrévéléici,caraveclelogiciellibre«Hibernate»,iln’estpasfaciledechangerlecontextedelaconnexion.Donc,poursurmontercela,onafaitdesrecherchessurlabonnemanièred’accéderàunautre schéma lorsde l'exécution.Plusieurs solutionsontétéenvisagées, tellesque l'utilisationdeHibernateShards6,implémenterun«EntityManager»personnalisé,etle«multitenancy».

    L’approche avec HibernateShards semblait prometteuse puisque le cadriciel semblait permettred'accéderàplusieursbasesdedonnéesàl'exécutionpourmanipulerdesdonnées.Mais,cen'étaitpasexactementcedontonavaitbesoincommesolution,carcecadriciels’appliquedanslecasdepartitionnement horizontal. Le partitionnement horizontal divise une table en plusieurs tables.Chaquetablecontientalorslemêmenombredecolonnes,maismoinsdelignes.Parexemple,unetablequicontient1milliarddelignespeutêtresegmentéehorizontalementen12tables,chacunede ces tables représentant unmois de données lors d’une année. Toute requête recherchant lesdonnées d'unmois spécifique ne consulte que la table concernée. De plus le développement etsupportsemblentêtrearrêtéssurceprojetlibre.

    Ladeuxièmeapprocheenvisagéeétaitdecréerplusieursdata sources (c.-à-d.«SessionFactories»)quipermettentdemanipuler lesdonnéesdépendammentde l’utilisateurconnecté. Ilyavaitdeuxfaçons d’effectuer cette approche. Avec le cadriciel Play, selon la documentation, on pouvaitmodifier le fichierde configurationde l’applicationet ajouter autantde configurationdebasededonnéesqu’on lesouhaiteetensuitechangerdecontextedépendammentde lasituation.Spring76http://hibernate.org/others/

    7https://spring.io/

  • 19

    permetdecontournerledataSourceavecAbstractDataSourceetsefairesapropredataSourcequisera utilisée pour les transactions. Alternativement, on aurait pu aussi définir une SessionFactorypour chaque tenant. Dans la version 2 du cadriciel Play, la solution proposée pour accéder à demultiples bases de données est de créer une connexion pool qui serait écrite dans le fichier deconfigurationàl’avance8.Ensuite, ilseraitpossibledechangerleconnecteurpuisquel’informationsetrouvedans ledossierdeconfiguration.Évidemment,cettesolutionnesemblaitpasattrayantedû au manque de dynamisme de la liste de schéma qu’il faudrait créer dans le fichier deconfiguration.Maiscetteapprochen'étaitpas«scalable»etmaintenablepourplusieursutilisateurscréés dynamiquement et utilisant le système en même temps. On veut pouvoir créerdynamiquement les schémas et tout de suite pouvoir les changer sans avoir à rechargerl'application.Deplus,onveutpouvoirchangerlecontexteduconnecteurHibernatepourainsiéviterun«refactoring»majeurducode,étantdonnéquecequePlaypermetdefaireestdesimplementrajouterdanslefichierdeconfigurationlesdiversesbasesdedonnées.

    La troisième approche était de créer son propre «EntityManager» avec JPA,mais les actions quin’utilisentpasexplicitement JPAne sontpasadressées. Il pourrait servir à contourner l’utilisationusuelle de JPA. Cette approche a comme désavantage qu’il faudrait effectuer un «refactoring»importantducodeetquelesappelsdesentitésHibernateseferaientencoredanslecontextepardéfaut.

    La quatrième approche est de tenter le «multi tenancy». Le terme «multi tenancy» s’appliquelorsqu’onaunearchitectureouuneseule instanced’uneapplicationqui sertplusieursclients (del’anglais«tenants»)différents9.C’estunesolutionlogiciellecommeservicetrèscommunequandonsouhaite isoler les données par clients. Il faudrait donc changer les classes pour qu’elles soient«tenant Aware», et changer la perspective de la connexion. Il y a beaucoup de solutionsd'implémentation pour une architecture qui serait avec Spring, JPA etHibernate. En effet, Springoffre plusieurs classes qui supportent le «multi tenancy» et qui permettent le changementdynamiquedelasourcedesdonnées.Parcontre,danslecasdelaversion2ducadricielPlay,ilyapeu de classes internes qui supportent le «multi tenancy». Effectivement, les quelques exemplesdisponiblesmontrentuneapprochequeressembleàlatroisièmeapprochedesolutionproposéeouoncréeun«EntityManager»personnalisé1011.

    8https://www.playframework.com/documentation/2.5.x/ScalaDatabase

    9https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#multitenacy

    10https://alots.wordpress.com/2014/04/10/multi-tenant-approach-with-java-8-in-a-play-project/

    11https://github.com/rajendrag/play-jpa-multitenant

  • 20

    Pour terminer, bien que ce ne fût pas possible pour nous de trouver une solution dans le tempsalloué, nous croyons qu’il est possible d’atteindre l’objectif en contournant les problématiquestechnologiquesrencontrées.Ilfaudraitappliquerunedeuxièmeapprochecoupléeavecuneéditiondynamiquedufichierdeconfiguration.Cetteméthodedecontournementseraitenthéoriepossibleet nous avions discuté de son implémentation, mais à cause du besoin d’avancer d’autresfonctionnalités,letravailsurle«workspace»aétéinterrompu.

    6.4Miseàjourdumodèle

    Lebutdelamiseàjourdumodèleestdepermettreàl’utilisateurdetéléverserunesériedefichiersIEDversleserveurreprésentantlemêmebâtimentaprèsquedenouvellesmodificationsaientétéapportées aumodèle dans Revit. Ces changements proviennent du fait qu’un bâtiment changeraplusieursfoisaucoursdudesign,àlafoispourmieuxrépondreauxbesoinspourlequelcelui-ciestconçu et suite à une analyse de cycle de vie qui ne serait pas satisfaisante. L’utilisateur entrecertainesinformationsdanslelogicielavantdefairel’analyse,lebutdelamiseàjourdumodèleestdes’assurerdenepasperdrelesinformationsentréesmanuellementparcelui-ci.Quelquesoptionsontétéprisesencomptepourl’implémentationdecettefonctionnalité.

    Lapremièreaétél’utilisationdel’introspectionpourcréerunalgorithmedecomparaisondesobjetsquirequièrenttrèspeudemodificationsencasdemodificationdumodèle.Deuxraisonsontmenéàl’abandon de cette option. La première est que l’introspection requiert le changement desparamètresdesécuritéde lamachinevirtuelle Java.Demander lechangementdecesparamètresauraitpremièrementréduitlaconfiancedesutilisateursfutursenversl’application.Deplus,fairecesmanipulationsauraitdemandéunplusgrandniveaudecompétence technique, cequiaurait sansdouterepoussédesutilisateurspotentiels.

    Lasolutionchoisieaétédesimplementcréerunnouveaumodèleàpartirdunouveaufichier,sansle sauvegarder dans la base de données, et comparer celui-ci au modèle original instance parinstance. Cette solution, plus traditionnelle, a demandé beaucoup de code assez répétitif (unegrande quantité de fonctions «equals», qui ne pouvaient se retrouver dans le code des objetsOpenLCA), ce qui a donc pris énormément de temps. De plus, le mécanisme de création denouveaux modèles à partir de fichiers IED sauvegardait ceux-ci dans la base de donnéesimmédiatementlorsqueceux-ciétaientcrééscequinousaempêchéderéutilisercecode.

  • 21

    6.5Créationd’unprocessusd'énergie

    Concernantlacréationduprocessusd'énergie,ilyaeupeudechoixdeconception.Lamajoritédeladynamiqueduproblèmevenaitdufaitquelemoduled'importationetdecréationdeprocessusétait complexe à comprendre. La création d'un processus d'énergie a demandé l'implémentationd'uneentitéBIMEnergyTypequicontient lesdifférents typesd'énergiedansunénumérateurainsiqu'une méthode permettant de retourner leurs unités respectives. Il a aussi fallu modifier lacréation d'un flow pour permettre d'utiliser les nouvelles unités ainsi créées. La création desprocessusd'énergiecomprendlacréationd'unprocessusracineayantcommecléprédéterminéelalettre «G» qui est reliée aumodèle. Par la suite sont créés les sous-processus d'énergie qui sontfinalementreliésauprocessusracined'énergie.

    6.6Changementsducodeuniformatdesobjetsettypesd’objets

    PourcequiestduchangementdecodeUniformat,lechoixdeconceptionprincipalaétédedéciderlamanièredontlescodesseraientenregistrés.Nousavonslechoixentreunfichiertexte,unfichierde type XML ou encore de les ajouter à la base de données. En raison de notre méthode deréplicationdebasededonnéesexpliquéedanslasectiondes«workspaces»,nousavonsdécidédecréer une table dans la base de données et de la peupler grâce à un script d'importation. Cetteméthodenous fournituneplusgrande flexibilitépourcequiestde lamodificationdescodess'ilsdevaient changer, et cela nous permettrait potentiellement de faire l’utilisation de «trigger SQL»ainsi que d'autres fonctionnalités semblables. L'implémentation n'est pas complète à cause dumanque de temps, seule l'importation de données a été complétée. Il reste à implémenter laméthodequilimiteleschoixdecodesainsiquelastructurepermettantderefairelelienversl’arbreunefoisquecelui-ciaétébrisé.

    6.7Gestiondesunités

    Lefluxderéférencedésignelaquantitéduproduitanalyséainsiquelaquantitédeconsommablesutilisésparceproduitnécessairepourcouvrir lesbesoinsdel'unitéfonctionnelle.Danslafonctiond'ajoutd'échange,ilafficheseulementlesbonnesunitéspourletypedefluxchoisis.Parexemple,ilestpluspertinentdereprésenterunmurentermesdem³plutôtqued’utiliserdeskJ.Donc,danscecas,lalistedevraitjustecontenirdesunitésdesurfacesetnondesunitésd’énergie.

  • 22

    Il a fallu créer uneméthode qui retourne seulement les unités qui répondent à certains critères,notamment c’est l’identifiant du flux qui a été choisi. De ce fait, la liste des unités se rafraichitmaintenantquandlefluxchoisichange.

    6.8Ajoutd’échangeaveclesbonstypes.

    Pourlagestiondel’ajoutdeséchanges,deuxvalidationsontétémisesenplacepourfiltrerletyped'échange que l’on peut ajouter. Le premier filtre mis en place est la possibilité d’ajouter deséchanges(liens)àuntyped’objetversunmatérielouunprocessusbackground.Lesecondfiltremisenplaceest lapossibilitéd’ajouterdeséchanges(liens)àunmatérielversunprocessusd’arrière-plan. Dans ces deux cas, ils étaient requis de permettre l’ajout d’échanges. Pour ce faire, il fautregarderdanslabasededonnéespours’assurerqueleprocessusoulematérielverslequelonfaitlelienestbienunprocessusoumatérielbackground.Poursavoirsic’estunéchangeouprocessusbackground, on vérifie si son identifiant est présent dans la table «tbl_BIMExchange» ou«tbl_BIMProcess».Cette validation se faitdans laméthode«allowInsert»dans la classeExchangedanslemodèle.

    6.9Empêcherlasuppressiondecertainstyped’échanges.

    Encoredans leparadigmedeséchanges,unautreaspectdes règlesd’affairesétait la gestiondessuppressionsdecertainstypesd’échanges.Ilfallaitempêcherlasuppressiond’échangesdeproduitssortants. Pour savoir si c’est un échange de produit sortant on vérifie dans la colonne«quantitativeExchange» dans la table «tbl_process». Une autre validation était d’empêcher lasuppressiond’échangesoudeprocessusquiaétégénéréparBIM.OnreconnaîtunprocessusquiaétégénéréparBIM,carilestcrééàl’importationnonajoutéeparl'utilisateuretsonidentifiantsetrouvedoncdanslatable«tbl_BIMExchange».Poursefaire,ilfallutrajouterdesvalidationsaveclaBDdanslaméthode«allowDelete»danslaclasseExchangedanslemodèle.

  • 23

    Chapitre7

    Risques

    7.1Risquesprévus

    Tableau3:Risquesprévus

    Risque Impact Probabilité Mitigation/Atténuation

    Manquedetempsenraisond’unemauvaiseestimationdelachargedetravailetdel’effortrequisendébutdeprojet.

    Élevé Forte Ledéveloppementdetypeitératifetl’utilisationdelaméthodeAGILEservirontàatténuercesrisques.

    Mauvaisecompréhensiondesbesoinsinitiauxetdudomaine.

    Élevé Modéré Unecommunicationconstanteaveclepromoteuretdeslivrableshebdomadairesdepetitetailledevraientpermettredecorrigerlasituationsiellesurvient.

    Problèmedecommunicationdansl’équipeouaveclepromoteur.

    Moyen Forte L’utilisationd’outildecollaborationcommeTrelloetdesrencontresfréquentesdevraitpermettred'éviterleproblème.

    Problèmeaveclatechnologieutiliséeenraisondumanqued'expérience.

    Élevé Forte Lacompilationetlepartagedeguidesetd’informationsdansl’équipedevraientréduirelerisquedeblocage.

    Demandedechangementencoursdeprojet.

    Faible Forte L’utilisationd’uneméthodeitérativededéveloppementdevraitpermettrederéduirel’impact.

  • 24

    Ralentissementdesdéveloppementsdusàdesfacteursexternes.

    Moyen Modéré Unerévisiondelachargedetravailhebdomadaireenfonctiondesélémentsconnus(périoded’examen)devraitréduirelerisque.

    7.2RisquesEncourus

    Lorsduprojet,plusieursrisquessesontmatérialisés.Parexemple,àquelquesreprises,lesbesoinsdu domaine ontmal été compris, ce qui a typiquement requis une rencontre en personne pourréglerleproblème.Quelquesexemplesdebesoinsayantmalétécomprisontétélamiseàjourdumodèle,lacréationd’unprocessusd’énergieetlemécanismede«workspaces».

    Ensuite, nous avons eu plusieurs problèmes avec les technologies utilisées, autant à cause dumanqued’expériencequ’avecleslimitationsdecelles-ci.Parexemple,leCadricielPlayimplémenteuneinterprétationdupatrondeconceptionModèle-Vue-Controlleuraveclaquellenousn’étionspasfamiliers,cequiademandébeaucoupd’essais-erreur,carladocumentationducadricieln’étaitpasoptimale. Contrairement à d’autres cadriciels plus populaires, il est difficile d’obtenir desinformations pour des problèmes précis et il est souvent nécessaire d’utiliser la documentationgénérique et incomplète du cadriciel. C’est un problème récurrent quand on utilise une nouvelleversiond’unetechnologieexistante.

    L’ORMHibernatenousaaussiposéplusieursproblèmes lorsdudéveloppementdumécanismede«workspaces». En effet, on a passé beaucoup de temps à s’acharner pour trouver une solutionrespectantlescontraintesimposées.

    De plus, un problème de communication est survenu entre le client et le promoteur. Le client aenvoyélemauvaisfichierpourlaliaisondesdonnéesetn’apasétédisponibledepuis.Celaaforcél’abandondecettefonctionnalité.

    Finalement, en raison de conflit d'horaire et de facteurs externse comme les travaux de fin desessionetlesproblèmesreliésàl’utilisationduGitLab,unnombred’heurespluspetitqueprévuaété disponible pour avancer le travail de manière productive dans les dernières semaines dedéveloppement. Tous ces contretemps ont contribué au ralentissement du développement duprojetetquandcettepertedetempsaétécombinéeavecnotreanalyseinitialeoptimistecelanousadoncforcésd’abandonnercertainesfonctionnalitésduprojet.

  • 25

    Chapitre8

    Postmortemduprojet

    8.1Objectifsnon-atteint

    Certains objectifs n’ont pas été atteints par manque de temps et d’expertise. Les détails de cesobjectifsontdéjàétédiscutésdanslessectionsprécédentes,maisnousavonsdécidédeprendreletempsdefaireunelisteexhaustive.

    La création dynamique de «workspaces» a été implémentée, mais aucune solution n’a étéimplémentéepourcequiestduchangementdynamiqueentreles«workspaces».Cecodeseradoncmisdansunebrancheàpartpourpouvoirêtreutiliséparlesprochainsdéveloppeurs.Lacréationetlagestiondesdifférentsdétailsdescomptesdesusagersontétéimplémentées,maiscommelebutprincipal de ce module était de permettre de séparer les «workspaces», le code n’a pas encored’utilité.Cecodeseradoncmisdansunebrancheàpartpourpouvoirêtreutiliséparlesprochainsdéveloppeurs.

    Lestâchesreliéesàlaliaisonautomatiquedesdonnéesontaussiétéabandonnées,carleclientnenousapasenvoyélesbonsfichiersetnepouvaitpaslesfourniravantlafindesdéveloppements.LechangementdecodeUniformatn’apasétécomplété,ilresteàimplanterlesrèglesd’affairespourlimiter les modifications. Comme l’importation des codes Uniformat ne touche pas d’autresfonctionnalités,lescriptd’importationainsiquelastructuredetableontétéinclusdanslaversionfinale du code. La mise à jour du modèle n’a pas pu être complétée. Le mécanisme actueld’importation de fichiers est tout simplement trop complexe et a demandé trop de temps dedéveloppementpoursimplementcomprendre.Letravaileffectuéjusqu’àmaintenantseretrouveradansunebranchesurleGitlab.Finalementcertainesrèglesd’affairesn’ontpasétéimplémentéesetlagestiondesparamètres locauxetglobauxn’apasétéanalyséeou implémentéeparmanquedetemps.

    8.2Changementsquiauraientpuêtreapportésencoursdeprojet

    Certainschangementsauraientdûêtreapportésoudumoinsabordésetdiscutésendétail lorsduprojet.Nousconsidéronsquesiceschangementsavaientétéimplémentésilsauraientpuavoirunimpactpositifsurledéveloppement.

  • 26

    Parexemple,l’horairedesrencontreschoisin'étaitpasoptimalpourtouslesmembresdel’équipe.Enfonctiondenotrehorairerespectif,lameilleurejournéepourledéveloppementétaitlemercredisoitlaveilledelarencontre.Celaavaitpoureffetdenousalignerpourtravailleravecunmodèledejuste-à-temps en plus de faire en sorte que des détails de la rencontre précédente pouvaientfacilementêtreoubliés.Celacausaitaussidesproblèmesquandonatteignaitunélémentbloquantet nous a empêché d’utiliser notreméthode de développement agile aumeilleur de sa capacité.Nous aurions dû à lami-session oumême avant, proposer un horaire différent qui auraitmieuxconvenuànotreéquipesanscauserdeproblèmesauclient.

    Nouspensonsaussiqued’avoirunerencontreunefoisparsemaineàdistanceavecseulementlesmembresdel'équipepoursegarderàjoursurleresteduprojetetpourexplorerlecodeauraitétéunbonmoyend’éviterdetomberdans lesmêmespièges.L’utilisationdu«peerprogramming»ouunevariationdecelui-ciauraitpotentiellementpunouspermettred’augmenterlaqualitéducodeetauraitpunouspermettredemieuxremplirnosobjectifs.

    8.3Leçonstirées

    En plus des changements précédemment explorés, nous avons décidé de revenir sur notreexpérienceetd’essayerd’en tirer leplusde leçonspossibles.Une leçon tiréede ceprojet estdebien faire les recherches sur les technologies qui seront utilisées pour s’assurer qu’elles soientadéquatesetbiendocumentées. Il fautprendreplusde tempspour s’assurerqu’une solutionestvraimentpossibleavantdecommencerl'implémentationpouréviterdeperdredutempsprécieux.

    Une autre leçon est qu’il faut faire attention de ne pas tomber dans le piège de penser que lasolution est juste sur le point d'être découverte et de s'entêter pendant plusieurs semainesgaspillantainsidesressourcesetdutempsdedéveloppement.Ceprojetnousamontréqu’ilétaitimportant de faire preuve de débrouillardise et de considérer les solutions de contournementscommeétantdessolutionsviablesetnonsimplementdu«patching»demauvaisequalité.Quitteàrevenir travailler sur la fonctionen findeprojetoudansuneversion futurequand la technologieseraadaptéepourlerendrepossible.

    Finalement,nouscroyonsqu’ilestimportantd’adopteruneattitudeplusproactiveetdenepasselaisser abattre par les limitations et les contraintes, mais plutôt de trouver un moyen de faireressortirlespossibilitésenchangeantlesrèglesetnotrevisiondeschoses.

  • 27

    Chapitre9

    Contributiondesmembres

    Cette section décrit dans les grandes lignes les contributions personnelles de chaquemembredel’équipe.Pourchaquelivrableetchaquepartieprincipaleduprojet,l’auteurprincipalseralisté.Ilestimportant de noter que la plupart des décisions de conception ainsi que les détails del'implémentationontété longuementdiscutésengroupe, tous lesmembresde l'équipeontdonccontribuéàchacundeslivrables.

    9.1Gergel,Sébastien

    Durant lasession,Sébastiena travaillésurplusieurspartiesduprojet.Ces livrablesprincipauxontété la production de la proposition de projet initiale, ainsi que celle du rapport d’étape à la-misession. De plus, il a implémenté la création d’un processus d’énergie et a travaillé sur lechangementducodeUniformat.Ilaaussiétéresponsabledelacommunicationaunomdel'équipeets’occupaitdefairelesrésumésderencontre.

    9.2Jean,YoméMessena

    Yomé a travaillé sur la structure de la base de données pour les utilisateurs ainsi que les«workspaces». Il a travaillé sur la mécanique de fonctionnement des «workspaces» dansl'application.Cesderniersontdemandéénormémentdesontemps.Finalement,ilatravaillésurlesdifférentesrèglesd’affaireduprojet.

    9.3Picard,Etienne

    Durantlasession,Étienneacontribuéàplusieurspartiesdutravail.Ilaimplémentélesformulairesd’authentificationetd’inscription,pluslemécanismedeconnexionfinal.Ilaeffectuél’importationdesfichiersdedonnéesàtraversleclient.Cettetâchen’apasétémentionnéeplushaut,carellenecontenaitpasdevraisproblèmesd’ingénierie.IlasuffidetrouvercommentfaireuntéléversementàpartirducodeJavaScript,puisutiliséunefonctionexistantepour lestransformeretsauvegarderdans la base de données. Finalement, il a travaillé sur lamise à jour dumodèle, qui n’a pu êtrecomplétédûàunmanquedetemps.

  • 28

    9.4Contributionsàpartségales

    Cette section décrit les tâches sur lesquelles les troismembres de l’équipe ont contribué à partségales. Ces sections sont la présentation du PFE. Chaque membre a fait les sections qu’il allaitprésenter,enplusderelirecelledesautresetdedonnerdesconseilspourlesaméliorer.Chacunaécrit plusieurs sections du rapport final, qui a été relu par les autres membres de l’équipe. Etfinalement,lestroissesontmisensemblepourfairele«merge»finalducodesurGitlab.

    CONCLUSION

    Enconclusion,nousavonspuconstaterqueleprojetproposéétaitdetropgrandeenvergurepourletempsalloué.Plusieurstâchesontétéaccomplies,tellesquelagestiondesutilisateursetlacréationd’unprocessusd’énergie.Parcontre,plusieursautrestâchesn’ontpuêtreaccompliesdemanièrecomplète,tellequelacréationde«workspaces»etlamiseàjourdumodèle.Lestâchesaccompliesenpartieonttoutdemêmeétéinclusesdansunebranchepourpermettreauxfutursdéveloppeursdeprofiter du travail accompli. Il aurait donc fallu allouerplusde temps à ceprojet ou revoir demanière plus drastique nos méthodes de développement à la-mi session. Une équipe avec desconnaissancesplusapprofondiesendéveloppementweboude latechnologieutiliséeauraitpeut-êtreétécapablederemplirlesobjectifs.

  • 29

    LISTEDERÉFÉRENCESPaged'accueildulogicielOpenLCA.Pageconsultéele14août2017àpartirdehttp://www.openlca.org/

    Paged'accueildulogicielRevit.Pageconsultéele14août2017àpartirdehttps://www.autodesk.ca/en/products/revit-family/overview

    Méthodeagile.(2017,août9).Wikipédia,l'encyclopédielibre.Pageconsultéele

    14août2017àpartirdehttp://fr.wikipedia.org/w/index.php?title=M%C3%A9thode_agile&oldid=139615140.

    Scrum(Boiteàoutils).(2017,juillet10).Wikipédia,l'encyclopédielibre.Pageconsultéele14août2017àpartirdehttp://fr.wikipedia.org/w/index.php?title=Scrum_(Boite_%C3%A0_outils)&oldid=138835287.

    Paged'accueildulogicielRevit.Pageconsultéele14août2017àpartirdehttps://trello.com/

    Paged'accueildumoduleplay-authenticate.Pageconsultéele14août2017àpartirdehttps://joscha.github.io/play-authenticate/

    Paged'accueildumoduleplay-pac4j.Pageconsultéele14août2017àpartirdehttps://github.com/pac4j/play-pac4j

    Paged'accueilduprojetHibernateShards.Pageconsultéele14août2017àpartirdehttp://hibernate.org/others/

    Paged'accueilduCadricielSpring.Pageconsultéele14août2017àpartirdehttps://spring.io/

  • 30

    Multi-TenancyusingJPA,SpringandHibernateparts1and2.Pagesconsultéesle14août2017àpartirde

    https://www.ricston.com/blog/multitenancy-jpa-spring-hibernate-part-1/

    https://www.ricston.com/blog/hibernate-jpa-spring-tenants-part-2/

    SectionsurleMultitenancydeladocumentationHibernate.Pageconsultéele14août2017àpartirdehttps://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#multitenacy-intro

    Exemple d’implémentation de multi tenancy avec Play 2. Pageconsultéele14août2017àpartirdehttps://github.com/rajendrag/play-jpa-multitenant

    Documentation Play 2 pour connection sur de multiples base de données. Pageconsultéele14août2017àpartirdehttps://www.playframework.com/documentation/2.5.x/ScalaDatabase

  • 31

    AnnexeA

    PlandeTravailS:Gergel,Sébastien

    E:Picard,Étienne

    J:Jean,YoméMessena

    Tableau4:Plandetravail

    # Debut(dd/mm)

    Fin(dd/mm)

    Effortestimé

    s

    Effortréel

    Tâches/Jalon Livrable(s)/Artefact(s)

    Responsables(s)

    1 26/04 S:3,E:3,J:3

    S:3,E:3,J:3

    Premièrerencontredel’équipe

    S,E,J

    1.1 26/04 26/04 S:1,E:1,J:1

    S:1,E:1,J:1

    Rédactionducontratd'équipe

    S,E,J

    2 10/05 S:3,E:3,J:3

    S:3,E:3,J:3

    1rerencontreaveclepromoteuretprésentationduprojet

    S,E,J

    2.1 10/05 20/05 S:5,E:5,J:5

    S:6,E:4,J:3

    Créationd’unprototypedeloginetfamiliarisationaveclesoutilsdedéveloppement

    S,E,J

    3 20/05 S:2,E:2,J:2

    S:1,J:1 2erencontreaveclepromoteur

    Unprototypedumoduledeloginparmembresdel’équipe

    S,E,J

    3.1 20/05 25/05 S:3,E:3,J:3

    S:3,E:3,J:3

    Analysepréliminairedumoduledeloginetdelagestiondes«workspaces»

    S,E,J

    4 25/05 S:2,E:2,J:2

    S:1,E:1,J:1

    3erencontreaveclepromoteur

    Analysepréliminaire

    S,E,J

    4.1 25/05 01/06 S:2, S:3,E:3, Créerlestables S,E,J

  • 32

    J:5,E:3 J:3 globalesdansHibernate

    4.2 25/05 TBD S:1,J:1,E:1

    S:5,E:2,J:3

    Créationdumécanismede«workspaces»

    S,E,J

    4.3 25/05 01/06 S:5,J:1 S:7,E:2,J:1

    Propositiondeprojet

    S,P

    5 01/06 S:2,E:2,J:2

    S:1,E:1,J:1

    4erencontreaveclepromoteur

    PropositiondeprojetCréationdestablesdansHibernate

    S,E,J

    5.1 01/06 08/06 E:5 E:4 Créationdesformulairesd'authentification

    E

    5.2 01/06 TBD S:5,J:5 S:1,J:7 Créationdumécanismede« workspaces »

    S,J

    6 08/06 S:2,E:2,J:2

    E:1 5erencontreaveclepromoteur

    PrototypedumoduledeLoginetd’inscription

    E

    6.1 08/06 TBD J:5 J:15 Moduledegestionde«workspaces»

    J

    6.2 08/06 13/06 E:4 S:2,E:4 Moduled’importationdesdonnées

    S,E

    6.3 08/06 13/06 S:1 S:3 Débutdelarédactiondurapportd'étape

    S

    6.4 08/06 13/06 S:1 S:3 Débutdelaconsolidationdeschoixdeconceptionetdesartefacts

    S

    6.5 08/06 13/06 E:6 E:8 Moduled’authentification

    E

    7 13/06 S:2,E:2,J:2

    S:1,E:1,J:1

    6erencontreaveclepromoteur

    Moduled’importationdesdonnées

    S,E,J

    7.1 13/06 29/06 S:5, S:6,E:4, Rédactiondu S,E,J

  • 33

    E:2,J:1 J:1 rapportd’étape7.2 13/06 29/06 S:10 S:10 Créationd’un

    processusd’énergie

    S

    7.3 13/06 29/06 E:10 E:40,S:5

    Miseàjourdumodèle

    Miseàjourdumodèle

    E

    7.4 13/16 28/06 J:10 J:15,S:1

    Moduledegestionde«workspaces»

    Moduledegestionde«workspaces»

    J

    7.5 28/06 28/06 E:2,J:2 E:3,J:3 Consolidationdesdifférentstravauxréalisés

    E,J

    8 22/06 S:1,E:1,J:1

    S:0,E:0,J:0

    Rencontreannulée

    S,E,J

    9 29/06 S:1,E:1,J:1

    S:1,E:1,J:1

    8erencontreaveclepromoteur

    Rapportd’étape

    S,E,J

    9.1 29/06 - S:1,E:1,J:1

    S:0,E:0,J:0(annulé)

    Créationdelastructurededonnées

    -

    9.2 29/06 06/07 S:5 S:5 Créationd’unprocessusd’énergie

    S

    9.3 29/06 06/07 J:2 J:5 Moduledegestionde«workspaces»

    J

    10 06/07 S:1,E:1,J:1

    S:1,E:1,J:1

    9erencontreaveclepromoteur

    S,E,J

    10.1

    06/07 13/07 S:5 S:7 Créationd’unprocessusd’énergie

    S

    10.1

    06/07 - S:1,E:1,J:1

    S:0,E:0,J:0(annulé)

    Liaisonautomatiquedesdonnées

    -

    11 13/07 S:1,E:1,J:1

    S:1,E:1,J:1

    10erencontreaveclepromoteur

    S,E,J

    11.1

    S:1,E:1,J:1

    J:2 Ajoutd'échangesaveclebontypedeflux

    J

    11. 13/07 27/07 S:15, S:0,E:0, Préparationpour S,E,J

  • 34

    2 E:15,J:15

    J:0(annulé)

    laprésentationduprojetaureprésentantutilisateur

    11.3

    13/07 27/07 S:1 S:1 Changementduprocessusd’énergieselonfeedback

    Créationd’unprocessusd’énergie.

    S

    11.4

    13/07 27/07 S:10 S:5 ModificationducodeUniformat

    S

    12.3

    J:4 Implémentationdesrèglesd’affaires

    J

    12 20/07 S:3,E:3,J:3

    S:1,E:1,J:1

    11erencontreaveclepromoteur

    PrésentationaureprésentantusagerPascalLesage(annulé)

    S,E,J

    12.1

    20/07 27/07 S:1,E:1,J:1

    S:0,E:0,Y:0(annulé)

    GestiondesparamètresglobauxetLocaux

    -

    12.2

    20/07 15/08 S:15,E:5,J:5

    S:15,E:10,J:10

    Rédactiondeladocumentationduprojet

    S,E,J

    20/07 27/07 S:5 S:5 ModificationducodeUniformat

    ImportationdesdonnéesUniformat

    S

    12.3

    J:5 Implémentationdesrèglesd’affaires

    J

    13 27/07 S:1,E:1,J:1

    S:1,E:1,J:1

    12erencontreaveclepromoteur

    S,E,J

    13.1

    27/07 TBD S:5,E:5,J:5

    S:11,E:15:,J:15

    PréparationdelaprésentationduPFE

    S,E,J

    13.2

    27/07 15/08 S:10,E:10,J:10

    S:9,E:10,J:15

    Consolidationducodeetdestravauxréalisésetajoutdecommentaires

    Branchedecodenonutilisée

    S,E,J

    13.3

    27/07 15/08 S:10,E:10,

    S:6,E:5,J:5

    Testsexhaustifs S,E,J

  • 35

    J:1014 03/08 08/08 - - Semainede

    présentationduPFE

    PrésentationduPFE

    S,E,J

    15 09/08 15/08 - - Remisedurapportfinal+code

    S,E,J

  • 36

    AnnexeB

    Captured’écrandel’application

    Figure2:Pagedeconnexion

    Figure3:Paged'enregistrement

  • 37

    Figure4:Exempledecréationdeprocessusd’energie

    Figure5:Exempledesousprocessusd’energy

    Figure6:Insertiondescodesunifomats

  • 38

    Figure7:Téléchargementd’unnouveaumodèleversleserveur

    Figure8:Listedesmodèlesaprèsupload