60
CTAI CTAI CS2I Nevers CS2I Nevers 18, rue Timken 18, rue Timken 74, rue Faidherbe 74, rue Faidherbe 68000 68000 COLMAR  COLMAR 58000 NEVERS 58000 NEVERS Études et Recherches Technologiques Études et Recherches Technologiques dans le cadre du dans le cadre du Développement d'une Plateforme Développement d'une Plateforme   Collaborative de Suivi de Chantier Collaborative de Suivi de Chantier   Rapport de stage Rapport de stage Année 2008 / 2009 Année 2008 / 2009 École d'ingénierie informatique CS2I de Nevers École d'ingénierie informatique CS2I de Nevers Didier MICLO – 3 Didier MICLO – 3 ème ème  année de Master  année de Master

Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

  • Upload
    vocong

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

CTAICTAI CS2I NeversCS2I Nevers18, rue Timken 18, rue Timken  74, rue Faidherbe74, rue Faidherbe6800068000 COLMAR COLMAR 58000 NEVERS58000 NEVERS

Études et Recherches Technologiques Études et Recherches Technologiques dans le cadre du dans le cadre du 

Développement d'une PlateformeDéveloppement d'une Plateforme   Collaborative de Suivi de ChantierCollaborative de Suivi de Chantier  

Rapport de stage Rapport de stage Année 2008 / 2009Année 2008 / 2009

École d'ingénierie informatique CS2I de NeversÉcole d'ingénierie informatique CS2I de NeversDidier MICLO – 3Didier MICLO – 3èmeème année de Master année de Master

Page 2: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

2

Page 3: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

REMERCIEMENTREMERCIEMENT

  Je tiens tout d'abord à remercier Monsieur Richard KIENTZLER, Responsable Technique du CTAI, pour avoir accepté de me faire confiance pour cette mission. Il a toujours présenté un grand  intérêt à mes  remarques et m'a considéré comme un employé à part entière au sein de son service.

Je remercie ensuite Monsieur Anthony MATHIS, Développeur, qui a partagé avec moi une partie  de son savoir et qui a su me conseiller sur les orientations à prendre dans les différentes phases du projet. Il a été mon principal interlocuteur et à toujours fait preuve de disponibilité à mon égard.

Je tiens à remercier pour finir, Monsieur Michel COMPOINT, Directeur Général de la Maison  de l'artisanat, pour son respect exemplaire envers tous les stagiaires de son établissement.

3

Page 4: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

INTRODUCTIONINTRODUCTION

Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage en entreprise d'une durée de neuf mois est à réaliser durant la dernière année de formation.

Pour ma part, j'ai été accueilli par  la Maison de l'artisanat  de Colmar au sein du service  CTAI, Centre Technique d'Application et d'Innovation pour l'artisanat, dans le but de réaliser l'étude et une partie des tests nécessaires au développement d'une future plateforme de suivi de chantier destinée au secteur artisanal du bâtiment.

Durant ce stage, j'ai eu la chance de découvrir "Ruby On Rails", le nouveau framework qui fait déjà fureur aux État Unis et qui commence à émerger en France. Cet outil, résolument moderne où tout est   considéré   comme   objet,   simplifie   grandement   les   tâches   du   programmeur   mais   demande néanmoins en contrepartie un certain temps d'adaptation,  notamment du fait  de son architecture MVC (Modèle ­ Vue ­ Contrôleur).

La plateforme à développer est un projet d'envergure nationale commandité par l'État et réalisé en partenariat par la CAPEB, un syndicat pour les artisans, et le CTAI. Ce projet a été souhaité car, bien que de nombreuses solutions de suivi de chantier existent déjà à ce jour, aucune d'entre elles n'est réellement adaptée au fonctionnement des petites entreprises et par conséquent à l'artisanat.

Mon stage à été réalisé sous la tutelle commune de Monsieur Richard KIENTZLER et de Monsieur Anthony MATHIS, respectivement Responsable Technique et Développeur au sein du CTAI.

4

Page 5: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

SOMMAIRESOMMAIRE

I ­ LA MAISON DE L'ARTISANAT...................................................................................................71.1 ­ Bref historique..........................................................................................................................81.2 ­ Les corporations......................................................................................................................81.3 ­ La Maison de l'artisanat...........................................................................................................91.4 ­ Les différents services...........................................................................................................101.5 ­ L'organigramme.....................................................................................................................11

II – L'ARTISANAT, C'EST QUOI EXACTEMENT ?.......................................................................122.1 ­ L'entreprise artisanale............................................................................................................13

2.1.1 ­ L'artisan..........................................................................................................................132.1.2 ­ L'entreprise.....................................................................................................................142.1.3 ­ Le Répertoire des métiers...............................................................................................142.1.4 ­ Le conjoint d’artisan.......................................................................................................15

2.1.4.1 ­ Les différents statuts du conjoint............................................................................152.1.4.2 ­ Différence entre conjoint collaborateur et conjoint salarié.....................................16

2.2 ­ L’ artisanat en détail...............................................................................................................162.2.1 ­ Présentation....................................................................................................................162.2.2 ­ Le secteur bâtiment de l'artisanat...................................................................................17

2.2.2.1 ­ Les  différents corps d'états....................................................................................172.2.2.2 ­ Importance nationale .............................................................................................172.2.2.3 ­ Part de l'artisanat dans le CA du bâtiment  par région...........................................182.2.2.4 ­ Évolution du CA des entreprises artisanales..........................................................182.2.2.5 ­ Répartition  du CA des entreprises artisanales.......................................................18

2.3 ­ Les institutions de l’artisanat.................................................................................................192.3.1 ­ Liste des institutions artisanales.....................................................................................192.3.2 ­ Rôles et définitions de chaque institution......................................................................19

III ­ LA MISSION DU STAGE..........................................................................................................223.1 ­ Présentation du projet............................................................................................................233.2 ­ L'enquête nationale ...............................................................................................................243.3 ­ Étude du projet.......................................................................................................................25

3.3.1 ­ Résumé du cahier des charges........................................................................................253.3.1.1 ­ Contexte..................................................................................................................253.3.1.2 ­ Problématique.........................................................................................................253.3.1.3 ­ Cible.......................................................................................................................263.3.1.4 ­ Objectifs..................................................................................................................263.3.1.5 ­ Perspectives............................................................................................................263.3.1.6 ­ Ressources nécessaires et contraintes techniques...................................................27

3.1.1.6.1 ­ Humaines.........................................................................................................273.1.1.6.2 ­ Matérielles.......................................................................................................27

3.3.1.7 ­ Délais de réalisation................................................................................................273.3.2 ­ Le planning....................................................................................................................28

5

Page 6: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

3.3.3 ­ L'étude UML..................................................................................................................293.3.3.1 ­ Les diagrammes de cas d'utilisation.......................................................................293.3.3.2 ­ Le package "Gestion plateforme"...........................................................................303.3.3.3 ­ Le package "Gestion espace personnel".................................................................313.3.3.4 ­ Le package "Gestion  chantier non collaboratif"....................................................323.3.3.5 ­ Le package "Partage externe de documents".........................................................323.3.3.6 ­ Le package "Participation chantier collaboratif"....................................................333.3.3.7 ­ Le package "Gestion chantier collaboratif"............................................................34

3.4 ­ Points techniques et difficultés rencontrées...........................................................................353.4.1 ­ Ruby On Rails................................................................................................................35

3.4.1.1 ­ Introduction.............................................................................................................353.4.1.2 ­ Le langage Ruby.....................................................................................................363.4.1.3 ­ Le modèle MVC.....................................................................................................373.4.1.4 ­ Le framework Rails................................................................................................39

3.4.1.4.1 ­ Les Méthodes Agiles.......................................................................................393.4.1.4.2 ­ L'arborescence d'une application RoR............................................................403.4.1.4.3 ­ La gestion du modèle MVC............................................................................413.4.1.4.4 ­ Les gains apportés par ce framework..............................................................46

3.4.2 ­ Web Services.................................................................................................................483.4.2.1 ­ Introduction............................................................................................................483.4.2.2 ­ Le client en PHP....................................................................................................493.4.2.3 ­ Le fichier WSDL....................................................................................................493.4.2.4 ­ Le serveur en PHP..................................................................................................503.4.2.5 ­ Exemple de trame SOAP envoyée entre le serveur et le client  .............................503.4.2.6 ­ Fonctionnement du Web Services PHP dans un environnement sécurisé..............513.4.2.7 ­ Migration du Web Services PHP en Ruby.............................................................53

3.4.2.7.1 ­ Le client Ruby.................................................................................................543.4.2.7.2 ­ Installation de l'environnement Apache ­ Mongrel.........................................54

CONCLUSION...................................................................................................................................57

GLOSSAIRE......................................................................................................................................58

BIBLIOGRAPHIE.............................................................................................................................60

6

Page 7: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

I ­ LA MAISON DE L'ARTISANATI ­ LA MAISON DE L'ARTISANAT

7

Page 8: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

1.1 ­ 1.1 ­ Bref historiqueBref historique

1.2 ­ 1.2 ­ Les corporationsLes corporationsLe mot "corporation" désigne une association de personnes exerçant le même métier avec des statuts définis et des règles communes.

A   l'origine,aux   environs   du   12ème  siècle,   les   corporations   étaient   principalement   composées d'artisans et de marchands. Elles avaient pour buts, outre  leurs rôles politiques et  militaires,  de défendre l’honneur de la profession et de veiller au respect des réglementations (prix, salaires, temps de travail, qualité, litiges...).

Vers   la   période   de   la   Révolution   française,   la   mécanisation   et   l’industrialisation   modifièrent considérablement le monde du travail. Une rivalité très forte apparut alors entre les corporations et les   nouveaux   manufacturiers,   ces   derniers   prétextant   que   l'organisation   des   métiers   en   groupe constituait un frein à l'innovation et à l'investissement,. 

Suite  à   ces  querelles   et   sous   les  ordres  de  Napoléon,   l'État  a  décidé  d'interdire   totalement   les corporations et de basculer leurs savoir faire dans le domaine public. C'est d'ailleurs à cette occasion que sont apparues les premières lois concernant la propriété privée et le dépôt de brevets industriels. Cette interdiction toucha toute l'Europe et les corporations perdirent plus ou moins leur existence. 

Malheureusement, avec la suppression de ces corporations, l'organisation jugée jusque là trop rigide fut remplacée par un laxisme total  et on se rendit  vite compte que l’absence de toute structure professionnelle était encore bien plus dommageable, principalement au niveau de la classe ouvrière qui n'avait alors plus aucune protection. 

Afin de remédier à  la catastrophe provoquée par Napoléon, l'Allemagne a décidé  de rétablir les corporations pour gérer l'ensemble des métiers de l'artisanat. Il a même été décidé,via la loi du 26 juillet 1897, de rendre l'adhésion à ces corporations obligatoires. 

C'est ainsi  que  certaines corporations  de  droit  public  subsistent  encore  de  nos  jours en Alsace­Lorraine du fait de l'appartenance alternée de ces 2 régions entre la France et l'Allemagne durant ce dernier siècle.

8

18881888 Création de la Société des Artisans19021902 Construction de la Maison des Artisans (rue des Artisans à Colmar)

19071907 Transformation de la Société des Artisans en Union des Groupements Artisanaux

1930 à 19501930 à 1950 Organisation des corporations19771977 Création du CEGA service comptabilité19831983 Création du CIGAC centre de gestion agréé et habilité à tenir les comptabilités19841984 Création du CTAI, et du service formation19851985 Déménagement rue Timken19901990 Création d’ACS (Artisans Commerçants Secrétariat)

Page 9: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

1.3 ­ 1.3 ­ La Maison de l'artisanatLa Maison de l'artisanat

La   Maison   de   l'artisanat    abrite   les   principaux   services   de   l'UGA  (Union   des   Groupement Artisanaux) qui regroupent près de 30 corporations artisanales et plusieurs fédérations du bâtiment de la région Alsace. 

L’UGA Centre Alsace, créée en 1888,  est une association de droit local qui est chargée de défendre et de représenter les intérêts des professions artisanales. Elle représente également ces professions en   tant   que   partenaire   social   au   titre   de   l’UPA  (Union   Professionnelle   Artisanale)   qui   est l’organisation nationale interprofessionnelle représentative de l’artisanat.

L’UGA  compte aujourd'hui environ 65 salariés  et  son siège est  situé  18,  rue Timken à  Colmar. L’UGA possède de multiples antennes réparties sur l'ensemble de la région Alsace, plus précisément dans les villes : 

➢ Strasbourg➢ Guebwiller➢ Mulhouse➢ Belfort 

La Maison de l'artisanat est actuellement dirigée par Monsieur Michel COMPOINT

9

Page 10: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

1.4 ­ 1.4 ­ Les différents servicesLes différents services

➢➢ UGA Corporation UGA Corporation

C'est   la   Fédération   de   corporation   :   l'UGA  regroupe   près   de   30 corporations artisanales et plusieurs fédérations du bâtiment, des services et de la production. Elle possède trois grands services : le CEGA (Centre d’Economie   et   de   Gestion   pour   Artisan),   le  CIGAC  (Centre Interprofessionnel de Gestion de l’Artisanat et du Commerce) et le CTAI (Centre Technique d'Application et d'Innovation).

➢➢ Le CIGAC / AGCEALe CIGAC / AGCEA

Créé en 1977, c'est un des centres de gestion de l’Est de la France. Il a su s'adapter et anticiper les réglementations pour devenir le premier centre habilité "Cluzel" de France ainsi que le premier centre de gestion certifié respectant  la norme NF X 50 880 (Services d’accompagnement de la petite   entreprise   par   les   centres   de   gestion   agréés   et   habilités).   De dimension régionale, il regroupe 2000 adhérents soit environ 18 % des entreprises artisanales d'Alsace.Le CIGAC porte aujourd'hui la dénomination "Association de Gestion et de Comptabilité des Entreprises d'Alsace (AGCEA).

➢➢ Le CEGALe CEGA

Initialement   créé   pour   apporter   un   appui   dans   le   domaine   de   la comptabilité, le  CEGA, lors de la mise en place des centres de gestion agréés et habilités, a progressivement modifié ses activités pour devenir au fil des ans une association de services destinée aux artisans. L’activité essentielle du CEGA vise aujourd'hui à former, accompagner et installer des   outils   informatiques   dans   l’entreprise   artisanale.     Le  CEGA  est aujourd'hui un centre spécialisé en informatique capable de répondre à tous   les   types   de   besoins   des   entreprises   artisanales.   Le  CEGA  est également, depuis 2006, partenaire agréé  APIBAT, spécialiste européen de solutions logiciels dédiés aux métiers du bâtiment.

➢➢ Le CTAI Le CTAI

Créé en 1984, le CTAI (Centre Technique d'Application et d'Innovation) est   aujourd'hui   labellisé   "Pôle   d’innovation   de   l’artisanat"   et   est spécialisé dans les domaines de l’information et de la communication. Sa mission   principale   vise   l’information   et   la   vulgarisation   de   ces technologies pour simplifier leur mise en œuvre auprès des entreprises du secteur de l’artisanat. Le CTAI est composé de plusieurs services :

10

Page 11: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

CTAI-FormationCTAI-Formation

Le CTAI­Formation organise sur toute l’Alsace des stages de formations collectifs et individuels que ce soit dans ses centres ou au sein même des entreprises   dans   les   domaines   suivants   :   informatique,   bureautique, gestion,  comptabilité,   finances,  social,  commercial  et  sécurité.   Il  aide également les entreprises à obtenir les prises en charge financières des formations  suivies  et  conçoit  des  modules  de formations  adaptés  aux besoins des entreprises.

UGA-médiaUGA-média

UGA­média est une structure de production audiovisuelle et multimédia qui a été créée en 1989, c'est "La Télévision des Entreprises". A la fois outil de production et d’expérimentation, elle est destinée à promouvoir la  culture  de   l’entreprise  et  des  métiers  auprès  du  grand public.  Son action envers les entreprises est de les aider à communiquer, à valoriser leur savoir­faire et à se faire connaître. 

Service TICService TIC

Le Service TIC (Technologie de l’Information et de la Communication) a trois domaines de compétences : 

➢ Réalisation et hébergement de sites Internet,

➢ Conception de logiciels et CD­ROM destinés à la formation des entreprises 

➢ Expérimentation   et   recherche   dans   le   domaine   des   nouvelles technologies de la communication.

1.5 ­ 1.5 ­ L'organigrammeL'organigramme

11

Page 12: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

II – L'ARTISANAT, C'EST QUOIII – L'ARTISANAT, C'EST QUOI EXACTEMENT ? EXACTEMENT ?

12

Page 13: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

2.1 ­ 2.1 ­ L'entreprise artisanaleL'entreprise artisanale

Qu'est ce qu'une entreprise artisanale? Qu'est ce qu'un artisan? Voilà deux questions qui pourront en faire sourire certains tellement elles paraissent simples.  En réalité,  hormis la réponse de tout le monde qui ressemble à : "c'est celui qui a l'entreprise X, on voit ses camionnettes circuler dans le village" , peu de personnes sauraient véritablement y répondre et pour cause, l'artisanat est devenu grâce à un slogan publicitaire de revalorisation du secteur, la plus grande entreprise de France alors qu'en réalité, aucun artisan n'est associé à un autre pour former cette soi­disant entreprise . 

2.1.1 ­ L'artisan

L’artisan est un entrepreneur disposant d'un statut juridique défini et qui a investit sur son savoir­faire. Toutes les appellations "Artisan", "Maître­artisan", "Artisan d’art" et "Maître d’apprentissage" correspondent à des qualifications précises.  

Pour avoir droit au statut "Artisan", il faut justifier soit de diplômes ou titres homologués (CAP, BEP,  Bac  Professionnel,...),   soit     d’une  expérience  professionnelle  de  plusieurs   années   sous   le contrôle d’un artisan ou maître­artisan dans le métier exercé. 

Un artisan devient "Maître­artisan" s’il est titulaire du brevet de maîtrise dans le métier exercé après 2   ans  de  pratique  professionnelle  ou   lorsqu’il   peut   justifier  de  10  années  d'immatriculation  au Répertoire des métiers.

De plus, l'artisan doit :

➢ Exercer une activité professionnelle de production, de transformation, de réparation ou de prestation   de   services   relevant   de   l'artisanat.   C'est   à   dire   que   l’entreprise   doit   générer l’essentiel de son revenu de la vente de produits et de services issus de son propre travail.

➢ Être économiquement indépendant, cela impose donc que l’entreprise doit intervenir pour son propre compte et non pour celui d’une autre personne physique ou morale.

➢ Être immatriculé au Répertoire des métiers (cette inscription peut être obtenue auprès des Chambres de métiers après constitution d’un dossier complet).

➢ Ne pas employer plus de 10 personnes lors de la création (ce seuil, qui découle du passé, peut néanmoins aujourd'hui être franchi dans quelques cas).

Les artisans contribuent largement à l’équilibre entre les villes et les campagnes du fait de leurs présences   très   importantes   dans   les   zones   rurales   (un   tiers   des   artisans   est   installé   dans   des communes de moins de 2000 habitants).

13

Page 14: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

2.1.2 ­ L'entreprise

Une  définition  précise   de   l'entreprise   artisanale   résulte   de   la   loi   du  5   juillet   1996   relative   au développement et à la promotion du commerce et de l'artisanat. 

"Exploite une entreprise artisanale et doit être immatriculée au Répertoire des métiers, toute  personne physique ou morale, qui n'emploie pas plus de dix salariés, qui exerce une activité de  production, de transformation, de réparation ou de prestation de service et figurant sur une liste  établie par décret en Conseil d'État" 

Toutefois, le critère de taille doit être relativisé par ce que l'on appelle couramment le "droit de suite".   En   effet,   toute   entreprise   créée   avec   moins  de  onze   salariés   peut   garder   son   caractère artisanal au delà de cet effectif si le chef d'entreprise ou son conjoint a la qualité d'artisan. Ainsi, l'artisanat comporte aujourd'hui des entreprises qui emploient bien plus de 10 salariés.

Enfin, il est à noter que l’activité artisanale peut être exercée à titre principal ou secondaire. Seul 60% des entreprises artisanales sont en effet   inscrites à   la fois au Répertoire des métiers  et au Registre du commerce et des sociétés.                                                                                                                                       

2.1.3 ­ Le Répertoire des métiers

Toute   entreprise   exerçant   une   activité   artisanale   est   dans   l'obligation   d'être   immatriculée   au Répertoire des métiers.  Ce répertoire est   tenu par  les Chambres de métiers  et de  l’artisanat   et constitue l'outil de recensement des entreprises artisanales. Concernant ce registre, la loi dit :

➢ Doivent   être   immatriculées  au   Répertoire   des   métiers  les   personnes   physiques   et   les personnes morales (sociétés) :

• Qui exercent à titre principal ou secondaire une activité professionnelle indépendante de production, de transformation, de réparation ou de prestation de service relevant de l’artisanat et figurant sur une liste établie par décret, 

• Qui, au moment de l’immatriculation, n’emploient pas plus de dix salariés.

➢ Pour pouvoir obtenir son immatriculation au Répertoire des métiers, le créateur : 

• Ne doit  pas   avoir   fait   l’objet   d’une   interdiction  de  diriger,   gérer,   administrer   ou contrôler soit « toute entreprise » soit « une entreprise artisanale » et ne doit pas avoir été condamnée à une peine interdisant l’exercice d’une activité professionnelle,

• Doit avoir suivi le stage de préparation à l’installation.

Dans   les   jours  qui   suivent   la  déclaration  au  Centre  de  Formalité  des  Entreprises,   l'INSEE  va attribuer à la société un numéro SIREN et un code APE. 

Dès   lors,   le  Répertoire   des  métiers,   et  éventuellement   le  Registre  du   commerce,   vont  pouvoir délivrer à cette entreprise un extrait qui lui permettra de prouver son immatriculation. Ce document s'appelle Kbis au Registre du commerce et D1 au Répertoire des métiers.

14

Page 15: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

2.1.4 ­ Le conjoint d’artisan

Dans un grand nombre d'entreprises artisanales, le conjoint participe à l'activité de l'entreprise. Pour que cette contribution soit  reconnue et qu'elle  débouche sur un  certain nombre de droits juridiques et sociaux, différents statuts ont été mis en place : 

➢ Le conjoint collaborateur, 

➢ Le conjoint salarié,

➢ Le conjoint associé. 

Depuis le 1er juillet 2007 les conjoints d’artisans doivent obligatoirement être déclarés et opter pour l’un des trois statuts. C'est  le chef d’entreprise qui doit  effectuer cette déclaration au Centre de Formalités des Entreprises afin qu’il soit mentionné au registre dont il relève.

2.1.4.1 ­ Les différents statuts du conjoint

➢ Le statut du conjoint collaborateur   

Le conjoint:

• Peut se déclarer au Répertoire des métiers à la création de l’entreprise ou par la suite,

• Peut avoir un travail à mi­temps à l’extérieur de l’entreprise,

• Bénéficie d’un mandat de gestion qui lui permet d’accomplir tous les actes de gestion et d’administration de l’entreprise sans engager sa responsabilité,

• Peut être élu et éligible aux élections de la Chambre de métiers,

• Bénéficie d’une allocation en cas de maternité . 

➢ Le statut du conjoint salarié   

Le conjoint :

• Doit travailler avec son conjoint de façon effective et habituelle, il doit percevoir un salaire et devient par conséquent un salarié de l'entreprise,

• Bénéficie de la protection sociale complète d’un salarié,

• Peut être électeur et éligible aux élections de la Chambre de métiers,

• Peut déduire son salaire des impôts.

➢ Le statut du conjoint associé   

Le conjoint :

• Doit avoir constituer une SARL, 

• Peut être électeur et éligible aux élections de la Chambre de métiers,

• Bénéficie des mêmes droits que le conjoint collaborateur en cas de maternité.

15

Page 16: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

2.1.4.2 ­ Différence entre conjoint collaborateur et conjoint salarié

Sur   le  plan   juridique,   le   statut  collaborateur  permet   au  conjoint   de  participer  à   la  gestion  de l’entreprise,  ce qui  permet  aux époux de  se  répartir   les   tâches  et  donc d'assurer  une  meilleure organisation de la vie de l’entreprise. Le conjoint  salarié  pourra lui aussi accomplir ces actes de gestion mais à condition que son contrat de travail le lui permette.

Sur le plan social, le conjoint collaborateur bénéficie d’une couverture maladie et maternité gratuite et a la possibilité de se constituer une retraite à la carte (5 formules disponibles) avec rachat possible de trimestres de cotisations. Il peut également s’offrir une protection sociale complémentaire et ses cotisations volontaires  sont   intégralement  déductibles  du bénéfice  imposable de l’entreprise.  Le conjoint  salarié, perçoit quant à lui un salaire fixe et ne peut pas choisir le montant de sa future retraite.

De plus il est important de noter que dans le cas d'un statut de conjoint  salarié, l’entreprise doit débourser une charge constante fixe ainsi que les charges sociales afférentes. 

2.2 ­ 2.2 ­ L’ artisanat en détailL’ artisanat en détail

2.2.1 ­ Présentation

L’artisanat est le dépositaire de traditions anciennes et de cultures qu’il a su enrichir et adapter aux nouveaux   besoins.   Il   est   résolument   tourné   vers   l’avenir   et   s’intéresse   en   permanence   aux innovations qui génèreront de nouveaux projets et de nouveaux métiers.

En alliant savoir­faire traditionnel et technologie de pointe, l’artisanat a su construire les conditions qui lui ont permis de devenir la “Première entreprise de France”.

L'artisanat, qui totalise environ 900 000 entreprises en France, est un poids­lourd dans l'économie français   et   est   aujourd’hui   l'un  des  principaux   employeurs.   Il   anime  également   l’une  des   plus efficaces filières de formation professionnelle,  ce qui lui  permet d'être vu comme une véritable "Université des métiers".

Les secteurs d’implantation privilégiés de l’artisanat sont : 

➢ Le bâtiment

➢ Les services

➢ La production

➢ L'alimentation

Par la proximité des populations et la diversité des services offerts, l’artisanat est un des facteurs de qualité  de vie au quotidien. Il assure une fonction de conseil et contribue au maintien des liens sociaux et des rapports humains .

16

Page 17: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

2.2.2 ­ Le secteur bâtiment de l'artisanat

Le bâtiment est le secteur le plus représentatif des métiers de l'artisanat. 

2.2.2.1 ­ Les  différents corps d'états

➢ Installation électrique➢ Installation eau et gaz➢ Installation équipements thermiques et climatisation➢ Réalisation de couvertures ➢ Travaux d'étanchéité➢ Travaux de charpente➢ Travaux d'isolation➢ Menuiserie bois et matières plastiques➢ Menuiserie métallique, serrurerie➢ Revêtement sols et murs➢ Miroiterie bâtiment, vitrerie➢ Peinture➢ Agencement de lieux de vente➢ Plâtrerie➢ Travaux de maçonnerie générale➢ Ingénierie, études techniques➢ Métreurs, géomètres➢ Paysagistes➢ Paveurs➢ Construction de maisons individuelles➢ Construction de bâtiments divers➢ Construction d'ouvrage d'art➢ Travaux souterrains

2.2.2.2 ­ Importance nationale 

L'artisanat représente :

➢ 98% des entreprises du secteur : 356000 entreprises➢ 68% de la population active : 941000 actifs➢ 61% des effectifs salariés : 698 000 salariés➢ 84% des effectifs apprentis : 75 000 apprentis

L'artisanat réalise :

➢ 61% de l'activité : 78 milliards de CA➢ 64% de la valeur ajoutée : 36 milliards d’euros➢ 60% des investissements : 1,2 milliards d’euros

17

Page 18: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

2.2.2.3 ­ Part de l'artisanat dans le CA du bâtiment  par région

2.2.2.4 ­ Évolution du CA des entreprises artisanales

2.2.2.5 ­ Répartition  du CA des entreprises artisanales

18

Page 19: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

2.3 ­ 2.3 ­ Les institutions de l’artisanatLes institutions de l’artisanat

2.3.1 ­ Liste des institutions artisanales

➢ Organismes d'état   

• Secrétariat d'état aux PME, au commerce et à l'artisanat• Réseau des Chambres de métiers et de l'artisanat• APCMA

➢ Organisations professionnelles   

• UPA• CAPEB• CNAMS• CGAD

➢ Communication   

• FNPCA

➢ Europe   

• CES Européen• UEAPME• BEAF

➢ Métiers d'arts   

• SEMA

➢ Développement technologique et formation   

• ISM

2.3.2 ­ Rôles et définitions de chaque institution

➢ Secrétariat d'état aux PME, au commerce et à l'artisanat   

Il a pour mission de traiter les questions relatives au commerce, à la consommation, à la répression des   fraudes,   à   la   coordination   avec   l'état   à   l'égard   des   professions   libérales   ainsi   qu'à   la simplification des formalités incombant aux entreprises. Il exerce la tutelle des Chambres de métiers et de l'artisanat conjointement avec le Secrétariat d'état à l'industrie.

➢ Chambres de métiers et de l'artisanat   

Les Chambres de métiers et de l'artisanat représentent les intérêts généraux de l’artisanat dans leur circonscription. Elles exercent quatre fonctions essentielles :

• La tenue du Registre d’immatriculation des entreprises,• Le conseil en matière d’investissement, réglementation,  création ou reprise d’entreprise,...,• L’apprentissage (aide à la décision, formation des apprentis,...),• La formation (stage de préparation à l’installation et formation continue).

19

Page 20: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

➢ APCMA (Assemblée Permanente des Chambres de Métiers et de l'Artisanat)   

Elle rassemble et fédère 22 Chambres de métiers régionales et 106 Chambres départementales. Fort de 4 000 professionnels élus au suffrage universel par les artisans et de quelque 9 000 collaborateurs permanents, elle représente les intérêts généraux de l’artisanat. L'APCMA est représentée au conseil d’administration du  FNPCA  et contribue à la définition et à la mise en œuvre d’une ambitieuse politique de valorisation des artisans et de leurs métiers.

➢ UPA (Union Professionnelle Artisanale)   

Créée en 1975 par les confédérations représentant les trois grands secteurs de l’artisanat (la CAPEB pour le bâtiment, la CNAMS pour la production et les services et la CGAD pour l’alimentation en détail), l'UPA  fédère tous les métiers de l’artisanat à travers 5 000 organisations professionnelles nationales et locales. C'est l’organisation professionnelle représentative de l’artisanat et ses missions principales sont :

• Défendre les intérêts des entreprises artisanales auprès des pouvoirs publics,• Participer à la négociation sociale et à la gestion des organismes paritaires,• Représenter   l’artisanat   dans   toutes   les   instances   traitant   des   problèmes  économiques   et 

sociaux de l’entreprise artisanale,• Faire connaître et promouvoir l’artisanat par des actions de communication. 

L’UPA défend les intérêts de l’artisanat français en Europe par l’intermédiaire de l'UEAPME et ses actions sont relayées par 110 antennes locales.

➢ CAPEB (Confédération de l'Artisanat et des Petites Entreprises du Bâtiment)   

Organisation professionnelle représentative de l’artisanat du bâtiment, la CAPEB défend les intérêts matériels et moraux des 316 000 entreprises du secteur. Elle assure la promotion de ses métiers et de ses professionnels auprès du grand public, des institutions, des fournisseurs et des partenaires. ➢ CNAMS (Confédération Nationale de l'Artisanat des Métiers et des Services)   

Confédération interprofessionnelle, la CNAMS a pour mission de favoriser la concertation entre ses organisations  professionnelles   nationales   adhérentes,   d’assister   les   professions  pour   la   mise   en œuvre   d’actions   de   politique   syndicales   et   économiques,   de   défendre   les   intérêts   collectifs   et d’assurer la promotion de son secteur d’activité. ➢ CGAD (Confédération Générale de l'Alimentation en Détail)   

La CGAD est l'organisation représentative du secteur artisanal des métiers de l'alimentation. Avec les 10 confédérations artisanales qui la compose et les  CGAD  départementales et régionales, elle assure la promotion et la défense des 106 000 entreprises du secteur. ➢ FNPCA (Fonds National de Promotion et de Communication de l'Artisanat )   

Le FNPCA est un établissement public administratif, placé sous la tutelle du Secrétariat d'État aux PME, au Commerce et à l’Artisanat et financé par les contributions de tous les artisans. Il a pour mission de favoriser le développement de l’artisanat français en valorisant son image par des actions de communication nationales menées vers tous les publics concernés.

20

Page 21: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

➢ CES Européen (Comité Économique et Social Européen)   

Institué par le Traité de Rome (1957) aux fins d'associer les divers groupes d'intérêts économiques et sociaux   à   la   réalisation   du   Marché   Commun,   le  CESE  a   pour   mission   de   donner   des   avis   à caractères consultatifs à l'intention de la Commission et du Conseil. ➢ UEAPME (Union Européenne de l'Artisanat et des Petites et Moyennes Entreprises)   

L’UEAPME  est   le  porte  parole  au niveau Européen de  l’artisanat  et  des  PME. Elle  compte 62 organisations membres, au nombre desquelles l'UPA  et  APCMA. Il s'agit d'une organisation non partisane à but non lucratif.  ➢ BEAF (Bureau Européen de l'Artisanat Français)   

Crée  par   l'UPA  et   l'APCMA,   il  pour  objet  de  veiller  à   la  prise   en  compte  des  orientations  de l'artisanat français face aux procédures d'élaboration des directives européennes. Il est également chargé de faciliter les interventions de l'APCMA et de l'UPA, auprès des institutions européennes. ➢ SEMA (Société d'Encouragement aux Métiers d'Art)   

Placée sous la tutelle du Secrétariat d'État aux PME, au Commerce et à l’Artisanat, la SEMA a pour but   de   dynamiser   le   secteur   des   métiers   d’art   en   France   et   à   l’international.   Elle   informe   et sensibilise les jeunes sur ces métiers et leurs débouchés. Elle gère des formations rémunérées et finance des stages de perfectionnement pour les adultes et accompagne les collectivités locales. ➢ ISM (Institut Supérieur des Métiers)   

Créé en 1990 par le ministère chargé du commerce et de l’artisanat, l’APCMA  et l’UPA, l’ISM  a pour missions principales :

• La participation au développement technologique et à l’innovation dans l’artisanat,

• La formation  des  élus  professionnels  de   l’artisanat   ainsi  que   les   responsables   et  cadres employés par les Chambres de métiers et organisations professionnelles de l'artisanat,

• La mise à disposition d’un centre de documentation et d’information,

• La réalisation des études et recherches sur l’artisanat.

Bâtiment du Comité Économique et Social Européen (CES)

21

Page 22: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

III ­ LA MISSION DU STAGEIII ­ LA MISSION DU STAGE

22

Page 23: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

3.1 ­ 3.1 ­ Présentation du projetPrésentation du projet

Face au  retard d’investissement  des  entreprises   françaises  dans   le  domaine  des  technologies  de l’information et de  la communication (TIC),  notamment  les Petites et  Moyennes Entreprises,  le gouvernement   a   lancé   fin   2005  l’opération  TIC&PME   2010  destinée   à   réduire   cette   fracture numérique.

Cette opération a permis, à travers deux appels à projets successifs en 2006 et 2007, de mobiliser une vingtaine de filières. Les projets retenus seront mis en œuvre de façon collective et aboutiront à la   réalisation  de  standards,  d’outils  ou  encore  de  plateformes  d’échanges  destinés  à   faciliter  et intégrer   le   travail  des  PME dans   l’économie  numérique.  L'État  a  mobilisé  plus  de 10 Millions d'euros pour financer les projets qui seront sélectionnés.

C'est donc dans le cadre de cet appel que la CAPEB et le CTAI ont répondus d'un commun accord en proposant  un  projet  de  plateforme  de   suivi  de  chantier  destinée  aux  entreprises   artisanales  du bâtiment. 

Ce projet peut d'abord étonner car il est vrai qu'à l'heure actuel de nombreuses solutions logicielles de suivi de chantier existent déjà, mais en y regardant de plus près, on s'aperçoit qu'aucune de ces solutions n'a été pensée ni conçue pour répondre aux besoins des très petites entreprises.

Un tel projet a immédiatement attiré l'attention de l'État qui l'a par conséquent retenu. Une condition a néanmoins été émise, il fallait que ce soit la CAPEB, de part sa envergure nationale,  qui supporte l'ensemble du projet, chose compréhensible au vu des moyens que demandent mise en œuvre d'un tel projet. La  CAPEB  est donc devenue commanditaire du projet et s'occupe de la partie étude et communication du projet tandis que le CTAI est lui chargé de la réalisation technique.

23

Page 24: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

3.2 ­ 3.2 ­ L'enquête nationale L'enquête nationale 

Afin d'intégrer les besoins et attentes des entreprises artisanales, le projet a débuté par une enquête nationale   visant   à   détecter   les   besoins   des   artisans   en   matière   de   travail   collaboratif.   Ce questionnaire a également permis de découvrir certaines autres attentes des professionnels envers les TIC. Un nom de domaine a spécialement été réservé pour la diffusion en ligne de cette enquête. 

La première bonne surprise fut le taux de participation élevé et le chiffre des 1000 réponses fut très vite atteint.  Cet enthousiasme reflète véritablement les attentes des artisans et est la preuve que l'artisanat est un des domaines encore grandement délaissé par l'outil informatique. 

Une application de dépouillement et d'analyse des données a été  développée par le CTAI et les résultats ont pu être représentés sous forme de graphes puis analysés.

24

Page 25: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

3.3 ­ 3.3 ­ Étude du projetÉtude du projet

3.3.1 ­ Résumé du cahier des charges

3.3.1.1 ­ Contexte

Le CTAI et la CAPEB ont lancés ce projet de plateforme de suivi de chantier artisanal dans le but de combler le fossé qui s'est creusé entre les métiers de l'artisanat et l'informatique. Cette plateforme aura pour but de permettre aux artisans d'effectuer le suivi de leurs chantiers grâce à des outils de travail collaboratif spécialement adaptés. 

La   raison   de   ce  projet   est   qu'aucun  outil,   même   si   de  nombreuses   solutions   existent   dans   ce domaine,  n'est   adapté   aux  méthodes  de   travail  des   très  petites   entreprises.  Ce  projet   aura  une étendue nationale.

3.3.1.2 ­ Problématique

Réussir  à   créer  une  plateforme collaborative de  suivi  de  chantier  efficace,  attrayante  et   simple d'utilisation pour des non informaticiens. 

Quatre mots ont été choisis pour résumer le projet : 

➢ Simplicité, 

➢ Convivialité,

➢ Traçabilité, 

➢ Sécurité. 

La plateforme devra également être accessible avec les nouveaux outils de mobilité   tels que les téléphones portables, EEE­PC, PDA, iPhone, ....

25

Page 26: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

3.3.1.3 ­ CibleLe principal destinataire est le chef d'entreprise, c'est à dire l'artisan lui même. Les ouvriers de cet artisan ainsi que son conjoint seront aussi des utilisateurs potentiels de la plateforme.

Cette  plateforme de   suivi  de  chantier,  bien  que  développée  en   région  Alsace,  aura  une  portée nationale. Elle sera donc à terme, utilisée par tous les artisans de France exerçant un métier dans le domaine du bâtiment.

3.3.1.4 ­ Objectifs

➢ Combler le fossé entre les métiers de l'artisanat du bâtiment et l'informatique,

➢ Développer un outil simple, intuitif et adapté à des petites structures,

➢ Permettre   à   un  artisan  de  disposer  d'un  moyen  de   stockage   et   d'archivage  des  données sécurisé, 

➢ Permettre à un artisan de gérer des plannings personnels (chantiers prévus, congés,...)

➢ Permettre à un artisan de gérer aussi bien des chantiers de petites tailles que des chantiers de tailles   importantes   avec   l'utilisation   d'outils   de   travail   collaboratif   (plannings   partagés, documents partagés, outils de communication, …),

➢ Permettre aux artisans de disposer des derniers documents à jour et en temps réel,

➢ Permettre aux artisans d'accéder en ligne aux documents officiels de suivi de chantier (fiches d'évacuation des déchets, fiches de déclaration d'accident, textes de loi,...), 

➢ Permettre  aux artisans  de  disposer  d'un espace  commun de  dépôt   et  de  consultation  de petites annonces professionnelles.

3.3.1.5 ­ Perspectives

➢ Fournir aux artisans le moyen d'informatiser leur gestion de suivi de chantier,

➢ Soulager le besoin en matériel informatique de chaque artisans en lui offrant un espace de stockage fiable et sécurisé (coffre fort numérique) avec une gestion des sauvegardes intégrée,

➢ Offrir la possibilité aux artisans d'accéder à distance à toutes leurs données,

➢ Améliorer le temps de réactivité du maître d'œuvre et des entreprises,

➢ Pallier au manque de communication entre entreprises,

➢  Faciliter la coordination des différentes phases d'un chantier,

➢ Permettre à l'artisan de disposer des derniers documents à jours (plans, comptes rendus,...),

➢ Permettre aux entreprises d'un même chantier de travailler de façon collaborative et avec des outils spécifiquement adaptés.

26

Page 27: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

3.3.1.6 ­ Ressources nécessaires et contraintes techniques

3.1.1.6.1 ­ Humaines

Le responsable technique du CTAI ainsi qu'un développeur seront initialement impliqués dans le projet. Leur travail  débutera par la réalisation et la mise en ligne et de l'enquête nationale. 

Un groupe de travail regroupant différents artisans sera créé en plus de l'enquête nationale afin de cerner au mieux tous les besoins des entreprises artisanales.

Un étudiant en informatique sera présent au sein du CTAI durant une période de neuf mois afin d'effectuer d'une part l'étude du projet et d'autre part la réalisation de divers tests et applications qui serviront à valider les technologies à utiliser lors du développement final de la plateforme.

Le   service   tout   entier  du  CTAI  restera  à   disposition  de   l'étudiant  pour   l'aider   et   le   conseiller, principalement en ce qui concerne le mode de fonctionnement des entreprises artisanales. 

3.1.1.6.2 ­ Matérielles

Le projet sera à développer en langage Ruby sur le framework gratuit "Ruby On Rails" et les postes de développement seront pour la plupart équipés du système d'exploitation lui aussi gratuit Linux Ubuntu. 

Les besoins matériels et techniques concernant la première phase de développement (réalisation et mise en ligne de l'enquête, étude du projet, tests de faisabilité,...) sont donc quasi nuls puisque le CTAI dispose déjà du matériel et des compétences nécessaires pour la réalisation de cette étape. 

Il est néanmoins nécessaire de prévoir l'achat d'un nom de domaine pour héberger l'enquête en ligne. Le domaine à acheter sera http://www.monbati.fr. Ce domaine sera réutilisé pour héberger la future plateforme.

Des   frais   complémentaires   seront  à  évaluer   lorsque   la  phase  de  développement  définitive   sera amorcée en fonction des technologies retenues et du temps de développement imparti.

3.3.1.7 ­ Délais de réalisation

Les résultats de l'enquête nationale devront être connus lors de l'arrivée de l'étudiant en charge de l'étude du projet. L'étudiant devra quant à lui avoir réalisé et remis son étude pour la fin de son stage. 

La seconde partie de développement sera planifiée avec plus de précision une fois que tous les éléments seront connus (étude réalisée, technologies à utiliser validées, ...). Néanmoins, il est estimé que la première phase de mise en route de la plateforme se déroulera au environ de la fin du premier semestre 2009.

27

Page 28: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

3.3.2 ­ Le planning

Ma mission peut se décomposer, si l'on effectue au préalable le regroupement des taches réalisées, en deux parties principales :

➢ La réalisation de tests de développement destinés à valider les futures technologies et fonctionnalités de la plateforme.

➢ L'étude du projet

Parmi les divers tests, on peut citer par exemple la réalisation d'un Web Services destiné à assurer la communication entre   la  plateforme et  un serveur  vocal,   la   réalisation d'un planning  partagé  ou encore une première version du futur espace personnel dont disposera chaque utilisateur.

L'étude du projet s'est quant à elle déroulée en deux phases. La première, plus généraliste, a   été principalement   consacrée   à   l'étude   du   secteur   artisanal   du   bâtiment,   des   différentes  étapes   de création d'un chantier et des solutions de suivi de chantier déjà existantes. La seconde phase à elle été employée pour la réalisation de l'analyse UML et pour la rédaction du rapport d'étude. 

28

Page 29: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

3.3.3 ­ L'étude UML

Présenter l'étude UML complète est impossible au sein de ce rapport, c'est pourquoi je ne  présente ici qu'un simple extrait avec les diagrammes de cas d'utilisation. 

3.3.3.1 ­ Les diagrammes de cas d'utilisation

Dans un soucis  de simplification des  schémas,  nous allons utiliser  des packages  qui vont nous permettre d'effectuer le regroupement de certaines actions ayant des points communs.

29

Page 30: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

3.3.3.2 ­ Le package "Gestion plateforme"

L'administrateur sera en charge du bon fonctionnement de l'application. Il n'intervient pas dans les différentes phases de gestion de chantiers.

30

Page 31: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

3.3.3.3 ­ Le package "Gestion espace personnel"

Ce package sera accessible à  tout utilisateur disposant d'un compte finalisé  sur la plateforme. Il donne également accès aux fonctionnalités du package "Partage externe de documents".

31

Page 32: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

3.3.3.4 ­ Le package "Gestion chantier non collaboratif"Ce package donne accès aux fonctionnalités du package "Gestion espace personnel".

3.3.3.5 ­ Le package "Partage externe de documents"

32

Page 33: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

3.3.3.6 ­ Le package "Participation chantier collaboratif"

Ce package  donne accès aux fonctionnalités du package "Gestion chantier non collaboratif".

33

Page 34: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

3.3.3.7 ­ Le package "Gestion chantier collaboratif"

Ce package donne accès aux fonctionnalités du package "Participation chantier collaboratif", c'est à dire que l'utilisateur qui aura les droits suffisants pour accéder à ce package aura accès à la totalité des   fonctionnalités   collaboratives  de   la   plateforme.   Il   est  à   noter  que  pour  pouvoir   utiliser   ce package,   l'utilisateur   devra   suivre   une   formation   préalable   de   sensibilisation   aux   risques   et responsabilités du travail collaboratif.

34

Page 35: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

3.4 ­ 3.4 ­ Points techniques et difficultés rencontréesPoints techniques et difficultés rencontrées

3.4.1 ­ Ruby On Rails

3.4.1.1 ­ Introduction

Ruby on Rails ou "RoR" pour les intimes, est un framework basé comme son nom l'indique sur le langage Ruby . Il a été développé par David Heinemeier Hansson et publié pour la première fois sur Internet en 2004 sous licence GPL (libre). 

Depuis sa première version, Rails est passé du petit jouet inconnu à celui de phénomène mondial et a   remporté   de   nombreuses   récompenses.   Il   est   même   devenu   le   framework   de   choix   pour l'implémentation des applications dite "Web 2.0".

Contrairement à Java, qui s'appuie sur une foule de fichiers de configuration XML, Rails croit lui à la convention plutôt qu'à la configuration. Il remplace ainsi cette masse de fichiers XML par des conventions d'espaces de nommage et de répertoires spécifiques. Pour donner un exemple, Rails exige que les clés étrangères de chaque tables de la base de données se termine par " _id ".

Un des principes fondamentaux de Rails est également de minimiser la duplication du code. On appelle ce principe  DRY  – Don't  Repeat Yourself  –  .  C'est  d'ailleurs  une des raisons du succès mondial de ce framework car un nombre important de développeurs estiment que des outils tels que JAVA, .NET ou PHP sont trop complexes et demandent sans cesse une réécriture de code similaire. 

Une autre raison de l'engouement porté à ce framework tient dans le fait qu'une part importante du temps,   lors   du  développement   d'une   application,   est   consacrée   aux   tests.  Rails   réussi   dans   ce domaine encore à faire des miracles car il est capable de se créer lui même, au fur et à mesure du développement, le code nécessaire à la réalisation de la majorité des tests.

Mais comment Rails procède pour simplifier à ce point les choses? Une bonne partie de la réponse réside   dans   le   fait   que   Rails   a   repris   le   modèle   MVC   (Modèle   ­   Vue   ­   Contrôleur)   comme architecture de développement, ce qui lui permet de séparer et ranger chaque bout de code à un endroit bien précis. De cette façon, le développement d'une application débute toujours autour d'une ossature déjà en place, un peu comme si vous construisiez un gratte ciel et que les poutrelles en acier étaient déjà toutes mises en place avant de débuter le chantier.

35

Page 36: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

3.4.1.2 ­ Le langage Ruby

Ruby a été créé au Japon  par Yukihiro Matsumoto en 1993 et sa première version a été publiée en 1995. Ruby est un langage de script et impose donc un environnement d'exécution sur le serveur. Sa particularité tient dans le fait qu'il est entièrement orienté objet, ce qui veut dire que pour Ruby tout est considéré comme étant un objet.

Lors de la création du langage, Yukihiro Matsumoto a mis en œuvre le principe PoLS (Principle of  Least Surprise),  c'est à dire de tout mettre en œuvre pour éviter les mauvaises surprises. Ainsi, même si Ruby peut paraître un peu déroutant au début, on est vite surpris par la cohérence et la syntaxe véritablement intuitive de ce langage. 

Pour réaliser Ruby, Yukihiro Matsumoto s'est inspiré du célèbre langage SmallTalk pour son aspect orienté objet, de Python pour sa simplicité et de Perl pour sa flexibilité. Ruby a également plusieurs points communs avec PHP et est particulièrement bien adapté au développement Web. 

Ruby se détache néanmoins des autres  langages grâce à  une syntaxe particulièrement simple et concise.   "Un code Ruby est encore plus simple à lire et à écrire que du PHP, tant la syntaxe est  épurée, notamment grâce aux points virgules facultatifs et à l'absence de caractères spéciaux. C'est  presque du langage naturel !", "Quinze lignes de code PHP peuvent ainsi être condensées en cinq  lignes de Ruby"  a même affirmé Eric Daspet, un expert du langage Ruby.

Exemple de code Ruby 

5.times { print "Hello World !" }                  // Cinq fois affiche "Hello World !"exit unless "Hello World".include? "ello"  //stop sauf si"Hello World" contient "ello"

Les principales caractéristiques du langage Ruby :

➢ Une syntaxe très simple (inspiré par Eiffel et Ada),➢ Des variables non typées dont la déclaration est facultative (inspiré de Perl ou Python),➢ Du tout objet (inspiré de SmallTalk),➢ Une gestion interne de la mémoire (comparable au Garbage Collector  de Java),➢ Un système de gestion d'exceptions,➢ La possibilité de remplacer des méthodes et de modifier des classes pendant l'exécution du 

programme (inspiré de SmallTalk),➢ L'utilisation des expressions régulières.

Pour  conclure,  même si  Ruby est  un  excellent   langage et  qu'il   a   réussi  à  percer  de   façon  très significative dans de nombreux pays, il est encore peu connu en France, du fait d'une communauté PHP particulièrement forte. 

36

Page 37: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

3.4.1.3 ­ Le modèle MVC

Le modèle MVC (Modèle ­ Vue ­ Contrôleur) a été mis au point en 1979 par Trygve Reenskaug qui travaillait alors dans les laboratoires de recherche de la société Xerox PARC.

Ce modèle est une  architecture qui  impose  une séparation  entre les  données, la présentation et les traitements. Nous obtenons ainsi trois parties fondamentales  distinctes qui sont le Modèle, la Vue et le Contrôleur:

➢ Le Modèle     représente   le  comportement  de  l'application  et   impose   les  différentes   règles métiers à appliquer aux données. Il assure également l'interaction avec les bases de données et définit les méthodes d'accès aux données manipulées. Pour donner un exemple, si une réduction est appliquée aux commandes supérieurs à 600 €, c'est le Modèle qui appliquera cette règle. Le Modèle se charge donc de maintenir l'intégrité des données de l'application.

➢ La Vue    est chargée de construire l'interface utilisateur en se basant sur les données envoyées par le Modèle. Ces données sont dénuées de toute présentation, c'est la Vue qui gèrera la façon dont ces données seront affichées à l'écran de l'utilisateur. Il est à noter que plusieurs Vues peuvent afficher les informations provenant d'un même Modèle. Les Vues sont conçues en HTML avec en complément des balises <% %> dans lesquelles seront mis les scripts Ruby nécessaires pour la récupération et l'exploitation des données envoyées par le Modèle. La Vue n'est censée effectuer aucun traitement, elle se contente en principe d'afficher les résultats des traitements effectués par le Modèle et d'interagir avec l'utilisateur.

 

➢ Le Contrôleur     est  le chef  d'orchestre de  l'application,   il  prend en charge  la  gestion des événements de synchronisation pour mettre à jour la Vue ou le Modèle. Il n'effectue aucun traitement  et  ne  modifie  aucune donnée,   il   analyse  en   réalité   la   requête  du  client  et   se contente d'appeler le Modèle adéquat puis de renvoyer la Vue correspondante sur demande. 

37

Page 38: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

Voici un premier exemple qui va nous permettre de mieux visualiser ce que représente réellement le modèle MVC. Nous avons ci­dessous une simple application graphique que nous allons décomposer en modèle MVC. Dans un premier temps, nous avons une étiquette initiale "Texte", un champ de saisie vide et un bouton. Nous allons   écrire "nouveau texte" dans le champ de saisie, valider, et obtenir notre étiquette "texte" modifiée par "nouveau texte". 

• La vue  => La fenêtre, le champ de saisie, l'étiquette et le bouton. • Le contrôleur => L'événement associé au bouton. • Le modèle => La chaîne affichée par l'étiquette. 

Voici un second exemple détaillant le fonctionnement du modèle MVC. Prenons la réaction d'une page Web dynamique suite à un clic de l'internaute sur un bouton. La page envoie, suite au clic du bouton, une requête qui sera transmise au Contrôleur pour analyse. Le Contrôleur demande ensuite au   Modèle   approprié   d'effectuer   les   traitements,   éventuellement   en   interrogeant   une   base   de données, puis renvoi le résultat à la Vue adaptée (si le Modèle ne l'a pas déjà fait). 

 

Le Contrôleur sait quoi faire, le Modèle sait comment le faire et la Vue sait comment présenter le résultat à l'utilisateur.

38

Contrôleur

Vue Modèle

3 2

4

4

3

2

Le navigateur envoi la requête

       BDD

1

1

Le contrôleur intéragit avec le modèle

Le contrôleur invoque la vue

La vue construit la page à afficher

Page 39: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

3.4.1.4 ­ Le framework Rails

3.4.1.4.1 ­ Les Méthodes Agiles

Au début de années 80, James Martin élabore une nouvelle méthode de travail, appelée RAD (Rapid Application Development),  qui  consiste  à  effectuer  des  gestions de projets  courtes basées  sur 3 phases (Cadrage, Design et Construction) et dans un délai compris entre   90 et 120 jours. Cette méthode fut à l'origine des méthodes dites Agiles.

 http://   www.rad.fr ­ Jean­Pierre Vickoff    

En 2001, les promoteurs des principales méthodes RAD se sont regroupés pour former la  Agile  Alliance et ont élaborés le  Manifeste Agile, dont les 4 valeurs fondamentales sont :

➢ "Personnes et interactions plutôt que processus et outils"Il est préférable d'avoir une équipe soudée de développeurs moyens qui communiquent plutôt qu'une équipe d'individualistes brillants. La communication est une notion fondamentale.

➢ "Logiciel fonctionnel plutôt que documentation complète"Il est vital que l'application fonctionne. La documentation technique est secondaire et est une charge de travail importante qui peut être néfaste si non tenue à jour. Il est   préférable de commenter abondamment le code et de transférer les compétences au sein de l'équipe.

➢ "Collaboration avec le client plutôt que négociation de contrat"Le client doit être impliqué dans le développement. On ne peut se contenter de négocier un contrat   au  début   du  projet,   puis   négliger   les   demandes  du   client   ensuite.  Le   client   doit collaborer avec l'équipe et fournir un retour par rapport à ses attentes.

➢ "Réagir au changement plutôt que suivre un plan"La planification initiale et la structure du logiciel doivent être suffisamment flexibles pour permettre l'évolution de la demande du client tout au long du projet.

Les  Méthodes Agiles  visent donc à  réduire le temps de développement en proposant une version minimale sur laquelle on greffera les fonctionnalités désirées par le client. Le terme Agile fait donc référence à cette capacité d'adaptation qui permets enfin de répondre aux besoins du client. 

   Rails a été pensé pour répondre à l'ensemble de ces principes.    

39

Page 40: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

3.4.1.4.2 ­ L'arborescence d'une application RoR

Ruby on Rails impose au développeur l'utilisation d'une arborescence stricte qui sert à répartir les différents fichiers de l'application à développer. Chaque bout de code est à placer dans un endroit stratégique de façon à l'exploiter le plus intelligemment possible. Examinons d'un peu plus près les dossiers principaux de cette architecture :

➢  /app Ce répertoire contient la majorité du travail du développeur, c'est ici que le code de l'application est décomposé   en   Modèles,  Vues,   Contrôleur   et   Helpers.   Les  Helpers   (assistants)   sont   destinés   à accueillir  des   fonctions  éventuellement  nécessaires  à   la  Vue.   Ils  aident  à   respecter   la   règle qui consiste à ne pas mettre de code de traitement de données dans une Vue.

➢  /configDans ce répertoire est stocké la configuration d'accès à l'application et les paramètres nécessaires pour la connexion à la base de données.

➢  /dbAvec Rails, il  est possible d'intervenir dans la bases de données directement depuis des fichiers appelés "migrations". C'est le répertoire "db" qui contient ce type de fichiers. 

➢  /docCe répertoire accueille la documentation automatiquement générée par "Rdoc".

➢  /libCe   répertoire   est   utilisé   pour   placer   des   librairies   de   code   nécessaires   à   l'application.   C'est également l'endroit où l'on place le code devant être partagé par les différents Modèles, Vues ou Contrôleurs.

➢  /logCe répertoire contient des fichiers journaux très complets. 

➢  /publicLe serveur Web considère ce répertoire comme étant la racine de l'application, il représente la face visible de l'application.

40

Page 41: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

➢  /scriptCe répertoire contient tous les scripts des outils utilisés par le développeur comme par exemple la génération d'un nouveau Modèle ou la migration de la base de données.

➢  /testDans le répertoire "test" se placera tout le code nécessaire à la réalisation des tests automatiques.  

➢  /tmpIci sont placés tous les fichiers temporaires nécessaires à l'application. Des sous répertoires y sont créés pour y déposer le cache, les sessions et les connecteurs (sockets).

➢  /vendorCe   répertoire   est   destiné   à   accueillir   du   code   venant   d'autres   applications.   Ce   code   provient principalement de 2 sources. La première est les différents plugins existants et la seconde provient de  Rails   lui  même.   Il   est   en   effet   possible   de  demander  à  Rails   de   "s'auto­installer"   dans   ce répertoire afin par exemple de le figer dans une certaine version et ainsi éviter les problèmes de compatibilité lors d'un projet de développement long.

3.4.1.4.3 ­ La gestion du modèle MVC

Le Modèle, la Vue et le Contrôleur sont respectivement gérés par l'Active Record, l'Action View et l'Action Controller, eux­mêmes regroupés au sein de l'Action Pack.

41

Page 42: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

➢ Active Record   

L'Active Record gère et englobe toute la logique Métier, il constitue le cœur de l'application. Une de ses principales fonctionnalités est l'interfaçage avec la base de données, encore appelé ORM (Oject  Relationnal Mapping). L'ORM  permet d'établir automatiquement un lien entre la logique objet de l'application et  le modèle relationnel de la base de données.  Ce mapping est une fonctionnalité proposée   par   de  nombreux   framework  pour   éviter   de   manipuler   un   autre   langage   comme   par exemple le SQL mais cette étape demande souvent beaucoup de configuration.

Là encore RoR fait des miracles, notamment via la recommandation Agile  "Convention plutôt que Configuration", méthode grâce à  laquelle Rails arrive à  gérer ce mapping sans aucune étape de configuration. La seule contrainte sera de respecter les quelques règles de syntaxe imposées. 

Les données mappées seront ensuite directement utilisables dans le Modèle en tant qu'objets. 

Exemple: Création et Enregistrement d'un nouveau client dans la table "clients" 

mon_client = Client.new     //instance nouveau clientmon_client.nom = "DURAND" mon_client.prenom = "Jean"mon_client.save            //enregistement dans la base

Exemple : Requête pour rechercher le client qui a pour nom 'DURAND'

Client.find(:all, :conditions => { :nom => 'DURAND' })

Dans cet exemple, la base de données est modifiée sans avoir utilisé la moindre ligne de SQL. C'est l'ORM de l'Active Record qui permet cela. La syntaxe SQL est néanmoins tout à fait possible, mais elle est plutôt réservée aux  requêtes plus complexes difficilement formatables. 

La réalisation de requêtes complexes est tout de même grandement simplifiée par Ruby on Rails qui permet de définir au sein même des classes du Modèle la façon dont sont associées les tables entre elles.

Quatre associations de bases sont disponibles :

➢ has_one (a un)➢ has_many (a plusieurs)➢ belongs_to (appartient à)➢ has_and_belongs_to_many (a et appartient à plusieurs)

Exemple de déclaration :

Article has_many :commentairesArticle belongs_to :auteur

42

Page 43: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

Pour assurer la cohérence des données, Active Record dispose également de plusieurs contrôleurs de format  pour   les  données   saisies  dans   les   formulaires.  Les  différentes  méthodes  existantes   sont décrites ci­dessous et sont à renseigner dans le Modèle pour être utilisées :

➢ validates_presence_of ;(champ non vide)➢ validates_lenght_of ;(taille du champ)➢ validates_acceptance_of (case à cocher)➢ validates_associated  (association)➢ validates_confirmation_of (champ confirmation = champ origine))➢ validates_each (verification attributs multiples)➢ validates_exclusion_of (non appartenance)➢ validates_inclusion_of (appartenance)➢ validates_format_of (format valide)➢ validates_numericality_of (nombres valides)➢ validates_size_of (taille)➢ validates_uniqueness_of; (unique)

Active Record permet aussi au programmeur d'intervenir tout au long du cycle de vie des objets grâce à des actions pouvant être déclenchées à n'importe quel moment. Active Record définit pour cela seize procédures de rappel, sept paires "avant/après" et deux procédures "après" :

➢ before_validation / after_validation➢ before_validation_on_create / after_validation_on_create➢ before_validation_on_update / after_validation_on_update➢ before_save / after_save➢ before_create / after_create➢ before_update / after_update➢ before_destroy / after_destroy➢ after_find➢ after_initialize

➢ Action Controller   

Le Contrôleur est le chef d'orchestre de l'application, il reçoit les requêtes du client, les fait traiter par le Modèle et renvoi le résultat à travers la Vue appropriée. Pour que le processus soit amorcé, il faut  donc que   le  Contrôleur   reçoive   la  demande  du  client.  Cette  demande  est  effectuée  par   le navigateur grâce à l'URL renseignée et via un système de routage interne qui détermine dans quelle partie de l'application la requête doit être aiguillée. Lorsque le composant en charge du routage reçoit la requête entrante, il la découpe en différentes parties prédéfinies.

        http://www.mondomaine.com/verifier/form/123

  = > Ici c'est l'Action "form" située dans le Contrôleur  "verifier" qui sera executée, on passe également la variable "123" en paramètre.

43

Adresse internet Contrôleur Action

Variable éventuelle

Page 44: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

Au  sein  des   Contrôleurs   peuvent  également   être   déclarés   des   filtres   permettant   de   déclencher l'exécution de codes liés à une action à des moments précis. 

Il existe 3 types de filtres : 

➢ Les pré­filtres  (avant action)➢ Les post­filtres (après l'action) ➢ Les péri­filtres (avant et après l'action)

➢ Action View   

Pour réaliser les vues, le développeur dispose à la manière de PHP ou JSP, de balise "<% %>" pour insérer les valeurs dynamiques qui seront retournées par le Modèle ou le Contrôleur.  Ce sera alors le rôle de l'Action View d'interpréter le résultat et de l'afficher à l'utilisateur.

Pour cela,  Rails s'appuie sur un outil Ruby appelé  Erb  (Embedded Ruby)   et met à disposition de l'Action   View   deux   moteurs   de   templates  (modèles   de   présentation),  RXML  et  RHTML,  qui faciliteront la séparation du fond et de la forme.  Le moteur RXML sera capable d'interpréter du Ruby mélangé avec de l'XML alors que RHTML sera capable d'interpréter du Ruby mélangé avec de l'HTML. 

Rails fournit  également un mécanisme appelé  Helpers.    Les Helpers sont des assistants dont  la principale tâche est de limiter un maximum le code Ruby inséré dans les Vues . Ils permettent pour cela   la   réutilisation   à   volonté   de   portions   de   code  (conformément   au   DRY).   Pour   donner   un exemple, si nous écrivons une fonction de formatage de nombres appelée  number_with_delimiter dans un Helpers, il suffira pour l'utiliser d'écrire par exemple dans la Vue: 

<%= number_with_delimiter(12345678) %>  => (donnera : 12,345,678)

Un autre point intéressant est la création d'une Vue via des  Partiels. Les  Partiels  sont des petits bouts de code que l'on peut appeler dans plusieurs Vues différentes. Par exemple un formulaire d'inscription   contient   toujours   les   mêmes   informations   de   base   "nom","prénom","adresse".   On pourrait alors très bien créer un Partiel contenant ces trois champs et l'appeler à chaque fois que l'on créé un formulaire. Il suffira ensuite de rajouter des champs spécifiques au formulaire développé. Pour créer un Partiel, il suffit de créer une Vue et de la nommer avec un " _ " comme premier caractère.  Pour  l'afficher   il  suffira de faire  dans la Vue à   l'endroit  ou l'on désire que le Partiel s'affiche:

<%= render :partial => "nom_du_partiel" %>

Les  Layouts,  pour   finir,   sont  comparables  aux Partiels  à   la  différence  qu'ils  sont  appelés  dans chacune des pages. Ils sont donc très utilisés pour réaliser les menus, les en­têtes ou les pieds de page de sites internet. La porté d'un Layout se limite au Contrôleur avec lequel il interagit. Si l'on désire que la portée d'un Layout soit étendue à l'application entière, il faut le déclarer au sein du Contrôleur  nommé  "Application" car   il  est,   lui,  visible et  utilisable  dans toute  l'application.  Un Layout doit impérativement porter le même nom que le Contrôleur. Cette fonction de Layout est elle aussi issue de la règle "DRY".

44

Page 45: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

Il n'y a aucun code à insérer dans la vue pour que le Layout soit appelé, c'est d'ailleurs plutôt dans le code du Layout qu'il faut renseigner où devra s'afficher la Vue.   Voici ci­dessous un exemple de Layout basique où le résultat de la vue s'affichera à la place de la variable @content. 

<html>  <head>    <meta content='text/html' http­equiv='Content­Type' />    <title>Monbati ­ Plateforme de suivi de chantier</title>     <%= stylesheet_link_tag 'calendar/blue/style' %>  </head>  <body>    <%= @content %>  </body></html>

Remarquez que cela permet au passage d'indiquer le chemin d'une CSS dont la portée sera la même que celle  du  Contrôleur,  on  peut  donc  également   très   facilement   attribuer  une   feuille  de   style différente pour chaque Contrôleur.

➢ Action WebServices   

Comme son nom l'indique, ce module est destiné à la création de Web Services. Il supporte les protocoles SOAP et XML­RPC  ce qui permet à une application de proposer les deux interfaces si nécessaire. 

➢ Action Mailer   

Le composant Action Mailer permet à une application d'envoyer et de recevoir très simplement des emails via un navigateur. Il est également possible d'envoyer des emails sans passer par le navigateur mais il faudra dans ce cas disposer d'un serveur de messagerie opérationnel.

➢ Ajax et RJS   

L'utilisation des technologies AJAX est également grandement facilitée grâce au framework Ruby on Rails qui intègre, depuis sa version 1.1, un nouveau format de sortie appelé RJS. Le RJS permet de créer et de manipuler du Javascript à partir du code Ruby. Le principe de fonctionnement du RJS est très simple, lorsque la Vue est générée, Rails traduit le code Ruby nécessaire en Javascript  puis l'inclus dans la page. Il suffira par exemple d'écrire dans la Vue le code ci­dessous pour appeler la fonction Ajax nommée "toggle" (Elle affiche puis masque une <div> à chaque clic de souris)

<%=    link_to_function "Nom_du_lien" do |page|page.Effect.toggle('nom_de_la_div', 'slide')end  

%>

45

Page 46: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

3.4.1.4.4 ­ Les gains apportés par ce framework

➢ Un serveur Web intégré   

Dans la phase de développement, Ruby on Rails intègre un serveur Web capable d'interpréter le langage Ruby nommé WEBrick. Le serveur se lance directement depuis le framework et écoute par défaut le port 3000. Ce serveur est immédiatement opérationnel, ce qui permet au développeur de se consacrer directement au développement de l'application plutôt qu'à des réglages longs et fastidieux. Ce serveur Web ne sert par contre qu'à la phase de développement car il recharge à chaque appel de page l'ensemble des données. Pour lancer l'application en mode production, il faudra utiliser un autre serveur comme par exemple Mongrel.

➢ Conventions plutôt que configurations   

Après installation, la quasi totalité des frameworks doivent être configurés, généralement via des fichiers XML, où   l'on renseigne les   règles  à   respecter  pour communiquer  avec l'environnement d'installation.  Ruby  on   Rails   suit   lui   une   toute   autre   logique   en   privilégiant   l'utilisation   d'une convention d'écriture très stricte plutôt que ces nombreux fichiers de configuration. En réalité, les règles  d'usages  sont   très   intuitives,   les  développeurs   les   adoptes   très  vite   et  un  gain  de   temps précieux est ici encore gagné par rapport à un framework classique.

➢ Un seul langage   

Que ce soit  le script de création de la structure de la base de données, le développement de la couche métier, l'écriture des templates (modèles de présentation) de la vue ou  encore l'interactivité d'Ajax,   tout  peut  être  développé   avec  un   seul  et  même  langage  qui  est  Ruby.  Cela  permet   au développeur  d'aller  véritablement  à   l'essentiel.   Il   est  bien  entendu  tout  à   fait  possible  d'utiliser directement le langage original à la place de Ruby si l'on si sent plus à l'aise.

➢ Générateurs   

Rails est fourni avec de nombreux générateurs de code qui permettent d'élaborer rapidement une première version de l'application. Ce prototype peut être présenté très tôt et ainsi concrétiser les idées du développeur auprès du client. 

➢ Scaffolding   

Incontournable dans une application interagissant avec une base de données, les fonctions  CRUD (Create, Read, Update et Delete)  sont les phases élémentaires du cycle de vie des données. Rails mets à disposition du développeur un générateur appelé Scaffold (échafaudage) qui génère les Vues et Contrôleurs associés à ces fonctions.   L'aspect graphique et les fonctionnalités y sont réduits au minimum mais elles sont parfaitement fonctionnelles. Ici encore, un énorme gain de temps.

➢ DRY (Don't Repeat Yourself)   

Rails implémente plusieurs fonctionnalités permettant au développeur de ne pas se répéter. Ainsi les éventuelles  modifications  ne seront  à  effectuer  qu'à  un seul  et  même endroit.  Les  capacités  de réactivités face aux problèmes ou aux modifications sont ainsi véritablement améliorées.

46

Page 47: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

➢ Test   

La proportion de temps que représente la phase de test dans le cycle de vie  d'une application est toujours difficile à estimer. Dans RoR, les tests font partie intégrante du cycle de développement. La notion de test apparaît dès la configuration de l'accès à la base de données où sont indiqués trois types d'environnements :  développement, test et production. Tout au long du développement, sans que le développeur n'ait à s'en occuper, Rails complète le répertoire "test" qui contiendra les futures tests de validation de l'application. 

➢ Rdoc   

Les méthodes Agiles préconisent un "Logiciel fonctionnel plutôt que documentation complète" mais cette recommandation n'implique pas la suppression de la documentation. Grâce à la librairie Rdoc fournie avec Ruby, le développeur peut facilement créer une documentation concise de l'application au format HTML. 

➢ Sécurité contre les injections SQL   

Les injections SQL consistent à envoyer du code SQL spécifique dans les champs d'identification des   sites   internet   pour   frauder   la   phase  d'authentification  de   l'utilisateur.  Pour  éviter   ce   genre d'attaques, toutes les fonctions prédéfinies dans Active Record excluent automatiquement tous les caractères spéciaux nécessaires aux requêtes SQL.

➢ Sécurité contre les attaques XSS   

Le Cross Site Scripting, abrégé XSS (pour ne pas confondre avec les feuilles de style CSS), consiste à injecter des scripts malveillants dans les données du site internet pour dérober, par exemple, les cookies ou informations de session distribués par ce site. Pour protéger l'application, il est préconisé d'utiliser un assistant fourni par RoR : "h()" ou "html_escape()". Cet assistant "échappe" le contenu qui sera affiché par les Vues. Ainsi, le code contenu n'est pas interprété.

➢ La montée en puissance de l'application   

La résistance à   la montée en charge sont des critères déterminants pour définir la qualité  d'une application.  Face  à   cette  montée   en  charge,  RoR  intègre  un  gestionnaire   de   cache  qui   permet d'accélérer  considérablement   le  rendu des pages.  Si  cette  première  étape ne suffit  pas,  seule   la duplication des serveurs pourra résoudre le problème mais là encore Rails possède un outil nommé Capistrano qui permettra d'automatiser les tâches de déploiement, de transfert et de mise à jour de l'application. 

47

Page 48: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

3.4.2 ­ Web Services

3.4.2.1 ­ Introduction

Dans le cadre du développement de la plateforme de suivi de chantier, j'ai débuté mon stage par la réalisation de tests de fonctionnalités de diverses technologies. La première phase de tests consistait à développer, en langage Ruby, un Web Services capable d'effectuer la communication entre une plateforme Web et un serveur vocal Asterisk .

Je me suis alors retrouvé confronté à 2 problèmes majeurs:

➢ Le premier était d'ordre technique car le langage Ruby m'était encore totalement inconnu et le développement d'un Web Services, déjà complexe en soi, à réaliser dans un langage non maîtrisé s'annonçait rude.

➢ Le second était d'ordre temporel car le stagiaire chargé de l'installation et du paramétrage du serveur vocal Asterisk était déjà en stage depuis quelques semaines. Cela signifiait en effet que notre période de collaboration allait être courte et que malgré cela, le tout devait être fonctionnel avant son départ.

Au bout de quelques jours de recherche, j'ai décidé d'abandonner temporairement le langage Rubypour   me   focaliser   sur   la   réalisation   d'un   Web   Services   fonctionnel   en   PHP.   La   raison   de   ce changement a été  que le langage Ruby était vraiment trop récent et l'aide quasiment inexistante, surtout dans le domaine des Web Services.

J'ai donc opté pour un premier développement du Web Services en PHP5 pour le migrer ensuite en langage Ruby. Ce choix a d'ailleurs été judicieux et a porté ses fruits.

Schéma de principe

Nous allons maintenant voir   le  code détaillé  du Web Services en PHP et  les  différentes étapes nécessaires à sa migration en langage Ruby.

48

Envoi SMS  Asterisk

ServeurHTTP

Déclenchement fonctiond'envoi SMSRequete SOAP

Reponse SOAP

Internet

ClientWeb services HTTP

Appel fonctiond'envoi SMS

Page 49: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

3.4.2.2 ­ Le client en PHP

//on met cette ligne pour que fichier wsdl ne se mette pas dans le cache ini_set("soap.wsdl_cache_enabled", "0");

//on crée un nouveau client soap$soap = new SoapClient("http://xx.xx.xx.xx/envoi_sms.wsdl",

array("trace" => true));try {//on appelle la fonction de traitement d'envoi sms sur le serveur

$result = $soap->getEnvoiSMS($tel,$mess);//on recupere la reponse

$xmlsoap = $soap->__getLastResponse();//ici on affiche l'enveloppe soap pour pouvoir observer le résultat

echo "<p>reponse soap = ".htmlentities($xmlsoap)."</p>";}// en cas d'erreur appelle de la fonction getMessage()catch (Exception $e) {

echo '<p class="cadrewarning">Erreur : '.$e->getMessage().'</p>';}

3.4.2.3 ­ Le fichier WSDL

<?xml version="1.0" encoding="UTF-8" ?> <!-- partie 1 : Définitions --><definitions name="monServiceWeb"targetNamespace="urn:monServiceWeb"

xmlns:typens="urn:monServiceWeb" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/">

<!-- partie 2 : Types --> <types> <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"

targetNamespace="urn:monServiceWeb"> </xsd:schema> </types>

<!-- partie 3 : Messages --><message name="getEnvoiSMSRequest">

<part name="telephone_sms" type="xsd:string" /><part name="message_sms" type="xsd:string" />

</message><message name="getEnvoiSMSResponse">

<part name="sms" type="xsd:string" /></message>

<!-- partie 4 : Ports Types --><portType name="monServiceWebPort">

<!-- partie 5 : Opérations --><operation name="getEnvoiSMS">

<input message="typens:getEnvoiSMSRequest"/><output message="typens:getEnvoiSMSResponse"/>

</operation></portType>

49

Page 50: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

<!-- partie 6 : Binding --><binding name="monServiceWebBinding" type="typens:monServiceWebPort">

<soap:binding style="rpc"transport="http://schemas.xmlsoap.org/soap/http"/>

<operation name="getEnvoiSMS"> <soap:operation soapAction="monServiceWebAction"/>

<input name="getEnvoiSMSRequest"> <soap:body use="encoded" namespace="urn:monServiceWeb"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </input> <output name="getEnvoiSMSResponse">

<soap:body use="literal" /> </output>

</operation></binding>

<!-- partie 7 : Services --><service name="monServiceWebService"> <documentation> Info : Contact webmaster for more information

</documentation>

<!-- partie 8 : Ports --> <port name="monServiceWebPort"binding="typens:monServiceWebBinding">

<soap:address location="http://x.x.x.x/serveur_sms.php"/> </port></service>

</definitions>

3.4.2.4 ­ Le serveur en PHP

//on met cette ligne pour que fichier wsdl ne se mette pas dans le cacheini_set("soap.wsdl_cache_enabled", "0");

// on créer un nouveau serveur soap$srvsoap = new SoapServer('envoi_sms.wsdl');

//on ajoute la fonction qui traitera l'envoi de sms$srvsoap->addFunction('getEnvoiSMS');

// si on détecte une activité serveur on traite la demande avec handle() if ($_SERVER['REQUEST_METHOD'] == 'POST') {

$srvsoap->handle();}

//description de la fonction appeléegetEnvoiSMS { // fonction exécutée sur le serveur}

3.4.2.5 ­ Exemple de trame SOAP envoyée entre le serveur et le client  

<?xml version="1.0" encoding="UTF­8"?> <SOAP­ENV:Envelope xmlns:SOAP­ENV="http://schemas.xmlsoap.org/soap/envelope/">

<SOAP­ENV:Body><SOAP­ENV:getBCCInfoResponse>

<return>essai texte sms </return></SOAP­ENV:getBCCInfoResponse>

</SOAP­ENV:Body></SOAP­ENV:Envelope>

50

Page 51: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

3.4.2.6 ­ Fonctionnement du Web Services PHP dans un environnement sécurisé

Une fois le Web Services opérationnel, il faillait tester la possibilité de le sécuriser avec l'utilisation de certificats via SSL. Théoriquement, comme le protocole SOAP est une enveloppe encapsulée dans le protocole HTTP, il ne devait y avoir aucun problème de faisabilité à ce niveau là.

Mon choix s'est porté vers l'utilisation d'OpenSSL sur Linux Ubuntu. J'ai donc commencé par la création des certificats puis réalisé   le paramétrage du serveur Web Apache. Concernant le Web Services, les seuls changements ont été de remplacer les adresses http://"" par https://"" dans le code du client, du serveur et du fichier WSDL.

1­ Installation des paquets nécessaires

sudo apt-get updatesudo apt-get install apache2sudo apt-get install openssl

2 ­ Création du répertoire destiné à accueillir les certificats

sudo mkdir /etc/apache2/certscd /etc/apache2/certs

3 ­ Création d'un certificat de serveur

=> C réation de la clé privée

openssl genrsa 1024 > serveur.key chmod 400 serveur.key

=> Création du certificat 

openssl req -new -key serveur.key > serveur.csr

Country Name (2 letter code) [AU]:FRState or Province Name (full name) [Some-State]:68Locality Name (eg, city) []:COLMAROrganization Name (eg, company) [Internet Widgits Pty Ltd]:CTAIOrganizational Unit Name (eg, section) []:INFOCommon Name (eg, YOUR name) []:CTAIEmail Address []:...A challenge password []:ctai An optional company name []:

A ce stade nous pourrions faire signer notre clé par un organisme certifié mais comme nous sommes dans une phase de tests, nous allons créer notre propre autorité de certification qui signera cette clé. La seule différence sera que le navigateur internet nous affichera un message d'alerte pour nous demander si il faut faire confiance ou non à ce certificat.

4 ­ Création de l'autorité de certification

=> Création de la clé privée de l’autorité de certification 

openssl genrsa -des3 1024 > cert.key

Note : L’option ­des3 implique que l’on va sécuriser l’accès au certificat avec une phrase clé (ctai).

51

Page 52: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

=> Création du certificat x509 de l’autorité 

openssl req -new -x509 -days 360 -key cert.key > cert.crt

Enter pass phrase for cert.key: ctaiCountry Name (2 letter code) [AU]:FR State or Province Name (full name) [Some-State]:68 Locality Name (eg, city) []:COLMAR Organization Name (eg, company) [IWP]:CTAIOrganizational Unit Name (eg, section) []:CERTIFICATION Common Name (eg, YOUR name) []:CERT_CTAI Email Address []: 

Note : L’option ­days 360 limite la durée de validité du certificat à 360 jours. 

5 ­ Signature du certificat x509 du serveur par l’autorité de certification      

openssl x509 -req -in serveur.csr -out serveur.crt -CA cert.crt -CAkey cert.key -CAcreateserial -CAserial cert.srl

=> L’affichage doit produire 

Signature ok subject=/C=FR/ST=68/L=COLMARS/O=CTAI/OU=CERTIFICATION/ CN= CTAI Getting CA Private Key Enter pass phrase for cert.key

=> Éléments obtenus jusqu'à présent 

* Clé privée serveur : serveur.key * Certificat x509 serveur : serveur.crt * Clé privée autorité de certification : cert.key * Certificat x509 autorité de certification : cert.crt

6 ­ Paramétrage d'Apache (uniquement la partie SSL,  le reste est sous entendu fonctionnel)

=> Modification du fichier "/etc/apache2/ports.conf" pour que le serveur écoute le port 443 

Listen 80 <IfModule mod_ssl.c> Listen 443 </IfModule>

=> Création dans "/etc/apaches2/site­available/ " d'un fichier du même nom que le répertoire qui contiendra le site sécurisé ( le plus simple est de copier le fichier default et de le modifier)

cp /etc/apache2/sites-available/default /etc/apache2/sites-available/site_securise

=> Modification du fichier  "/etc/apaches2/site­available/site_securise"

NameVirtualHost *:443<VirtualHost *:443> ServerAdmin webmaster@localhost

52

Page 53: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

DocumentRoot /var/www/repertoire_site_ssl/

<Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/repertoire_site_ssl/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all //

Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory>

//fichier créer lors creation certificat SSLEngine On SSLCertificateFile /etc/apache2/certs/serveur.crt SSLCertificateKeyFile /etc/apache2/certs/serveur.key </VirtualHost>

=> Modification des premières lignes du fichier "default" de Apache

NameVirtualHost * <VirtualHost *>

7 ­ Activation du module SSL

sudo a2enmod ssl

8 ­ Activation des sites nouvellement déclarés

sudo a2ensite <repertoire_site_ssl>sudo a2ensite <repertoire_site_non_ssl>

9 ­ Redémarrage d'Apache

sudo /etc/init.d/apache2 stopsudo /etc/init.d/apache2 start

10 ­ Contrôle de fonctionnement

 http://localhost    → Devra être redirigé vers le site non sécurisé. https://localhost  → Devra être redirigé vers le site SSL avec demande de certificat.

3.4.2.7 ­ Migration du Web Services PHP en Ruby

Le Web Services maintenant fonctionnel en PHP, il était nécessaire de le migrer en Ruby.  Une des choses véritablement merveilleuse avec les Web Services est qu'ils sont totalement indépendants du langage de programmation utilisé et par conséquent, seul le client était à migrer. En effet, comme la partie serveur du Web Services a été développé en PHP5­CLI (PHP en ligne de commande), il restait toujours interprétable par la machine sur laquelle il était stocké. Quant au fichier WSDL, comme aucune information concernant les langages de programmation n'est précisée dans ce type de fichier , il est également inutile d'y effectuer le moindre changement (sauf bien sûr en cas de changement d'adresse IP du client ou du serveur). 

53

Page 54: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

3.4.2.7.1 ­ Le client Ruby

def resultat_client    # on récupère les variables @post_tel = params["p"]["tel_num"] @post_mess = params["p"]["message"]    # on indique l'adresse du fichier wsdl wsdl = 'http://xx.xx.xx.xx/envoi_sms.wsdl'    # on créé le client   driver = SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver    # on récupère le résultat dans la variable @result @result= driver.getEnvoiSMS(@post_tel,@post_mess)end

La réalisation du Web Services Ruby était maintenant achevée. Par contre, comme tous les tests n'ont été réalisés qu'en local sur ma machine, il fallait encore le rendre fonctionnel sur un véritable réseau. Comme Apache est le serveur majoritairement utilisé, il fallait donc, pour rendre les tests de faisabilité concluant, réussir à le faire fonctionner sur ce type de serveur,   c'est à dire qu'il fallait rendre Apache capable d'interpréter du Ruby. 

J'ai opté pour l'installation de  mongrel_cluster   qui est  un ensemble de fonctionnalités du serveur Web Mongrel, le second serveur fourni avec le framework RoR. J'ai tout d'abord fait ce choix car il est  non seulement  possible  d'interfacer  Apache avec mongrel_cluster  mais  également  parce que Mongrel,  qui  est  destiné  à  une utilisation  en mode production,  permettait  d'obtenir  un premier aperçu du fonctionnement réel de l'application.

3.4.2.7.2 ­ Installation de l'environnement Apache ­ Mongrel

1 ­ Installation de  Mongrel –    Mongrel_cluster   

sudo gem install mongrelsudo gem install gem_plugin mongrel mongrel_cluster --include-dependencies

2 ­ Création du fichier de configuration de mongrel_cluster 

sudo mongrel_rails cluster::configure ­e production  ­p 8000 ­N 3 ­c /home/didier/NetBeansProjects/monsite/ ­C /home/didier/NetBeansProjects/monsite/config/mongrel_cluster.yml ­a x.x.x.x 

­e : indique le type d'environnement du serveur, ici production­p : indique le port de la première instance du serveur Mongrel, ici 8000­N : indique le nombre d'instance à lancer, ici 3­c : indique le chemin du site, ici /var/www/monsite­C : indique où enregistrer le fichier de config, ici /var/www/monsite/config­a : indique à Rails d'écouter l'interface de l'adresse IP x.x.x.x–user : indique l'identité de l'utilisateur avec lequel démarrer les processus mongrel, ici www­data–group : indique l'identité du groupe avec lequel démarrer les processus mongrel, ici www­data

3 ­ Création d'un lien symbolique du fichier précédent vers  "/etc/mongrel_cluster" 

=> Création du répertoire /etc/mongrel/cluster

sudo mkdir /etc/mongrel_cluster

54

Page 55: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

=> Création du lien pointant vers le fichier de configuration

sudo ln -s /home/didier/NetBeansProjects/monsite/config/mongrel_cluster.yml /etc/mongrel_cluster/monsite.yml

Note : Nous aurions pu enregistrer directement le fichier dans "/etc/mongrel_cluster" pour éviter la création du lien mais cette façon de faire permet de garder la configuration dans le site lui­même.  

4 ­ Démarrage de mongrel_cluster 

sudo mongrel_rails cluster::start -C /etc/mongrel_cluster/monsite.yml

Note: Pour arrêter le serveur

 sudo mongrel_rails cluster::stop ­C /etc/mongrel_cluster/monsite.yml

5 ­ Activation des modules d'Apache correspondant 

sudo a2enmod rewritesudo a2enmod proxysudo a2enmod proxy_balancersudo a2enmod proxy_http

=> Si on obtient aucun message d'erreur, on peut passer au point 6. 

=> Si un message d'erreur spécifie que les fichiers de log et de pid sont mal renseignés, il faut modifier le fichier  "/home/didier/NetBeansProjects/monsite/config/mongrel_cluster.yml"avec:

log_file =>  Mettre le chemin où seront stockés les fichiers de log pid_file =>  Mettre le chemin des répertoires temporaires contenant les pid 

Note: Il faut créer les répertoires manuellement et gérer les problèmes de droits d'écriture éventuels

Exemple de    fichier    de configuration de mongrel_cluster   

cwd: /home/didier/NetBeansProjects/web_service1 log_file: /var/log/mongrel/mongrel.log port: "8000" environment: test address: 127.0.0.1 pid_file: /tmp/pids/mongrel.pid servers: 3

=> Relancer les 4 commandes ci­dessus

sudo a2enmod rewritesudo a2enmod proxysudo a2enmod proxy_balancersudo a2enmod proxy_http

6 ­ Configuration d'Apache

=> modifier le fichier de configuration du site     monsite   

sudo gedit /etc/apache2/sites-available/monsite

55

Page 56: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

// contenu du fichier une fois terminé

<VirtualHost *> ServerName monsite ServerAdmin [email protected]

DocumentRoot /var/www/monsite <Directory /var/www/monsite/> Options FollowSymLinks AllowOverride none Order allow,deny allow from all </Directory><Proxy balancer://mongrel_cluster> BalancerMember http://xx.xx.xx.xx:8000 BalancerMember http://xx.xx.xx.xx:8001 BalancerMember http://xx.xx.xx.xx:8002</Proxy>

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} -fRewriteRule (.*) $1 [L]

ProxyPass / Balancer://mongrel_cluster/ProxyPassReverse / balancer://mongrel_cluster/# Deflate

//...# alert, emerg.LogLevel warnErrorLog /var/log/apache2/monsite.logCustomLog /var/log/apache2/access.log combinedServerSignature Off</VirtualHost>

=> Activation du site et    création de lien symbolique de " /var/www" vers "/   monsite"   

sudo a2ensite monsitesudo ln -s /home/didier/NetBeansProjects/monsite/ /var/www/monsite

=>  Modification de mode proxy d'Apache par défaut :

Par défaut le mode proxy est interdit à tout le monde, ce qui solde toute requête par "forbidden", il faut donc donner l'autorisation de la consultation des pages à tout le monde.

sudo gedit /etc/apache2/mods-available/proxy.conf

#Order deny,allow#Deny from allOrder allow,denyAllow from all

7 ­ Redémarrage d'Apache 

sudo /etc/init.d/apache2 restart

Le site est maintenant accessible via    :   

http://xx.xx.xx.xx.xx:8000/<nom_controlleur>/<nom_vue>

56

Page 57: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

CONCLUSIONCONCLUSION

Un stage de dernière année est une étape fondamentale dans le cursus scolaire d'un étudiant car elle lui permet, en plus de mettre en pratique les divers enseignements théoriques reçus, de se créer sa première véritable expérience professionnelle reconnue. 

Il est vrai qu'une durée de neuf mois pour un stage peut paraître inadaptée et jugée trop importante par certains. C'est d'ailleurs le sentiment que j'ai personnellement ressenti le jour de mon entrée en formation lors de l'annonce du programme des trois années à venir. Mon appréhension ne venait non pas du fait que la période de stage me paraissait trop longue mais plutôt à cause de la désagréable sensation d'être privé d'un riche enseignement théorique de presque une année entière. 

En réalité, trois années plus tard et à quelques jours de la fin de ce stage, mon opinion à totalement changé et je pense aujourd'hui que pouvoir effectuer un stage de cette durée est une véritable chance tellement l'enseignement qui en découle est riche. Il est de plus indéniable qu'un tel stage est une aubaine, autant pour les entreprises que pour les stagiaires, qui peuvent proposer et se voir proposer des  projets  beaucoup plus  ambitieux.   J'ai  d'ailleurs  eu,  pour  ma part,  l'opportunité  de  me  voir confier un projet d'envergure nationale.

Cette mission, en plus d'avoir été une projection grandeur nature de ce que sera probablement ma future vie professionnelle, m'a véritablement fait prendre conscience de la maturité qu'impose la gestion   d'un   projet   et   des   conséquences   qu'entraînent   chaque   décision,   qu'elle   soit   bonne   ou mauvaise. Elle m'a également permis de m'ouvrir et d'acquérir la confiance en moi nécessaire pour mener à bien mon entrée dans la vie active. 

Je tiens à  remercier encore une fois toutes les personnes travaillant au sein du service CTAI pour leur accueil et sans qui, ce stage n'aurait jamais pu être aussi bénéfique.

57

Page 58: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

GLOSSAIREGLOSSAIRE

➢ APE (code)

Dans le cadre de sa mission, l'INSEE attribue à des fins statistiques, pour chacun des établissements d'une   entreprise,   un   code   à   5   chiffres   dit   "Activité   Principale   Exercée"   (APE)   à   partir   de   la nomenclature d'activités française (NAF). Cette nomenclature compte au 1er janvier 2008  un peu plus de 700 classes elles même décomposées en plus de 2500 postes.

➢ INSEE

L’INSEE (Institut National de la Statistique et des Études Économiques) est l'institut national de statistique   français.   Il   est   chargé   de   la   production   et   de   l'analyse   des   statistiques   officielles (démographie   nationale,   taux   de   chômage,   etc,)   du   pays.   En   tant   qu'institut,   il   dispose   d’une indépendance de fait vis­à­vis du Gouvernement.  

➢ Maitre d'œuvre

Le Maître d'œuvre est chargé du bon déroulement des travaux et répond au programme fonctionnel fixé par le Maître d'ouvrage. Véritable bras droit du Maître d'ouvrage, il lui propose une solution technique et esthétique qui permet de réaliser le programme dans le budget et les délais impartis. Il doit à la fois conseiller le Maître d’ouvrage sur les entreprises qui vont réaliser le chantier et faire respecter les délais d’exécution et le budget. Il est souvent indispensable lorsque le client n'a pas assez de temps à consacrer au chantier et que plusieurs corps d'états sont sollicités. 

➢ Maitre d'ouvrage

Le  Maître   d'ouvrage,   aussi   appelé  Maîtrise   d'ouvrage,   est   le  donneur  d’ordre   au  profit   de   qui l’ouvrage est réalisé. Le Maître d'ouvrage est une personne morale (administration, entreprise, etc.) ou une entité de l’organisation. Il est souvent celui qui   supporte le coût financier, c'est donc en principe le client .

➢ NAF (code)

Ce code, composé de 3 chiffres et une lettre, représente la "Nomenclature des Activités Françaises". Il permet de codifier l'activité principale exercée (APE) par une entreprise et est apposé par l'INSEE dès son enregistrement auprès du Tribunal du Commerce. On parle de code APE de 1973 à 1992 et de code NAF depuis le 1er janvier 1993. On le trouve sur le bulletin de salaire, c'est un élément obligatoire. Cette nomenclature compte au 1er janvier 2008  un peu plus de 700 classes elles même décomposées en plus de 2500 postes. 

58

Page 59: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

➢ SIREN (numéro)

Le numéro SIREN est un identifiant de neuf chiffres attribué à chaque entreprise par l'INSEE. Les huit   premiers   chiffres   sont   aléatoires   et   n'ont   aucune   signification   précise,   excepté   pour   les organismes publics qui commencent obligatoirement par 1 ou 2. Le neuvième chiffre est destiné à un   contrôle   interne   de   validité.   Ce   numéro   n'a   donc   aucun   lien   avec   les   caractéristiques   de l'entreprise et est attribué de manière unique.  Ce code n'est supprimé du répertoire qu'au moment de la disparition de la personne juridique, c'est à dire en cas de décès ou cessation d'activité pour une personne physique et de dissolution pour une personne morale.

➢ SIRET (numéro)

Le numéro  SIRET est  un numéro  unique d'identification  de 14 chiffres  attribué  par   l'INSEE à chaque   établissement   qu'il   soit   principal   ou   secondaire.   Ce   numéro   n'a   aucun   lien   avec   les caractéristiques ou activités de l'établissement et disparaît quand l'activité de l'établissement cesse ou lorsque celui­ci change d'adresse. Un numéro attribué à un établissement d'une entreprise donnée n'est   jamais   réutilisé   au  profit   d'un  autre  établissement  de  cette   entreprise.     Cet   identifiant   est articulé en deux parties :

­  La première est le numéro SIREN de l'entreprise,­  La seconde se compose d'un numéro interne de classement (NIC) de 5 chiffres.

➢ Raison sociale

De manière générale et simplifiée, la raison sociale représente le nom de l'entreprise. Dans le cas des sociétés commerciales (SNC, SA, SARL, ...) ce nom est appelé "dénomination sociale" tandis que pour les sociétés civiles on fait état de "raison social". La dénomination sociale ou la raison sociale doivent impérativement figurer dans les statuts de l'entreprise et sont protégées contre toute usurpation. 

59

Page 60: Rapport de stagedidier.miclo.free.fr/documents/Rapport_stage_Master...INTRODUCTION Afin de finaliser le cursus de "Master Européen en Conception de Système d'Information", un stage

BIBLIOGRAPHIEBIBLIOGRAPHIE

➢ Ressources Web   

• http://www.ruby­lang.org   • http://www.ruby­doc.org/   • http://pagesperso­orange.fr/alain.feler/alain/ruby/ruby.html   • http://www.projectomega.org   • http://api.rubyonrails.org/   • http://fr.poignantguide.net/   • http://wiki.netbeans.org/RubyDebugging   • http://doc.ubuntu­fr.org   • http://slainer.68.free.fr/rails/rails01.html   • http://www.supinfo­projects.com/   • http://www.railsfrance.org   • http://www.developpez.com/   • http://www.actinidia.net/Ruby­on­rails   • http://railscasts.com/   • http://www.railsbrain.com/   • http://www.capeb.fr/   • http://www.upa.fr   • http://www.wikipedia.fr/   • http://www.artisanat.info/   • http://www.artisanat.fr/   • http://www.artisanat­de­france.fr/   • http://www.maisondelartisanat.fr/   • http://www.meilleur­artisan.com/   • http://www.l4m.fr/   • http://www.kelformation.com/fiches­metiers/guide­metier.php   • http://www.metiers­btp.fr   • http://www.onisep.fr   • http://www.upa.fr   • http://teriya.free.fr/   • http://www.insee.fr   • http://www.sirene.tm.fr   • http://wiki.netbeans.org/Ruby   • http://www.gotapi.com/html   • http://www.maisondelartisanat.fr/   

➢ Librairie   

• Services Web avec SOAP,WSDL,UDDI,ebXML de Jean Marie Chauvet • Ruby on Rails ­ 2ème édition de Dave Thomas, David Heinemeier Hansson • Ruby par l'exemple de Lucas Carlson, Leonard Richardson

60