Upload
vocong
View
214
Download
0
Embed Size (px)
Citation preview
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
2
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
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
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
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
I LA MAISON DE L'ARTISANATI LA MAISON DE L'ARTISANAT
7
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 AlsaceLorraine 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)
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
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
CTAI-FormationCTAI-Formation
Le CTAIFormation 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
UGAmé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 savoirfaire 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 CDROM 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
II – L'ARTISANAT, C'EST QUOIII – L'ARTISANAT, C'EST QUOI EXACTEMENT ? EXACTEMENT ?
12
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 soidisant entreprise .
2.1.1 L'artisan
L’artisan est un entrepreneur disposant d'un statut juridique défini et qui a investit sur son savoirfaire. Toutes les appellations "Artisan", "Maîtreartisan", "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îtreartisan dans le métier exercé.
Un artisan devient "Maîtreartisan" 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
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
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 à mitemps à 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
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 savoirfaire 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 poidslourd 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
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
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
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
➢ 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
➢ 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
III LA MISSION DU STAGEIII LA MISSION DU STAGE
22
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
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
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, EEEPC, PDA, iPhone, ....
25
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
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
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
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
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
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
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
3.3.3.6 Le package "Participation chantier collaboratif"
Ce package donne accès aux fonctionnalités du package "Gestion chantier non collaboratif".
33
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
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
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
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
Voici un premier exemple qui va nous permettre de mieux visualiser ce que représente réellement le modèle MVC. Nous avons cidessous 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
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 JeanPierre 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
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
➢ /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'autoinstaller" 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, euxmêmes regroupés au sein de l'Action Pack.
41
➢ 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
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 cidessous 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
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 postfiltres (après l'action) ➢ Les périfiltres (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 entê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
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 cidessous 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' httpequiv='ContentType' /> <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 XMLRPC 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 cidessous 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
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
➢ 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
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
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
<!-- 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="UTF8"?> <SOAPENV:Envelope xmlns:SOAPENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAPENV:Body><SOAPENV:getBCCInfoResponse>
<return>essai texte sms </return></SOAPENV:getBCCInfoResponse>
</SOAPENV:Body></SOAPENV:Envelope>
50
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
=> 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/siteavailable/ " 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/siteavailable/site_securise"
NameVirtualHost *:443<VirtualHost *:443> ServerAdmin webmaster@localhost
52
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 PHP5CLI (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
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 productionp : indique le port de la première instance du serveur Mongrel, ici 8000N : indique le nombre d'instance à lancer, ici 3c : indique le chemin du site, ici /var/www/monsiteC : indique où enregistrer le fichier de config, ici /var/www/monsite/configa : 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 wwwdata–group : indique l'identité du groupe avec lequel démarrer les processus mongrel, ici wwwdata
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
=> 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 luimê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 cidessus
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
// 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
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
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
➢ 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 celuici 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
BIBLIOGRAPHIEBIBLIOGRAPHIE
➢ Ressources Web
• http://www.rubylang.org • http://www.rubydoc.org/ • http://pagespersoorange.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.ubuntufr.org • http://slainer.68.free.fr/rails/rails01.html • http://www.supinfoprojects.com/ • http://www.railsfrance.org • http://www.developpez.com/ • http://www.actinidia.net/Rubyonrails • 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.artisanatdefrance.fr/ • http://www.maisondelartisanat.fr/ • http://www.meilleurartisan.com/ • http://www.l4m.fr/ • http://www.kelformation.com/fichesmetiers/guidemetier.php • http://www.metiersbtp.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