Université de Bretagne Occidentale (Brest) UFR Sciences et Techniques Master d Informatique Spécialité Développement à l Offshore des Systèmes d Information 1 Contexte Depuis 2007, l Université de Bretagne Occidentale (UBO) s est fortement impliquée dans le programme intergouvernemental France-Maroc FSP-ARESM «Fonds de Solidarité Prioritaire en Appui à la Réforme de l Enseignement Supérieur du Maroc» dans le domaine de l informatique. Ce volet informatique a concerné 7 universités marocaines dans 2 réseaux de Master : «Qualité Logiciel» et «Réseaux et Systèmes». Une des actions principales de cette coopération a été la mise en place par l UBO d un dispositif d insertion des étudiants marocains dans l industrie Offshore marocaine grâce à un stage de fin d études en France effectué dans des entreprises françaises avec pré-embauche dans leurs composantes marocaines. L étape suivante de cette coopération est l expérimentation de 2010 à 2012 d une formation spécifique à l offshore commune entre l UBO et 5 universités marocaines : Agadir, Kénitra, Marrakech, Rabat Agdal et Casablanca (Mohammedia). Pour l UBO, il s agit de mettre en place un parcours de Master 2 ème année spécifique au développement à l offshore des systèmes d information. Ce parcours est ouvert aux étudiants marocains ayant validé leur Master 1 ère année au Maroc et souhaitant se spécialiser dans le développement logiciel à l offshore. Ils effectuent totalement leur 2 ème année en France : un 1 er semestre d études à l UBO (Brest) suivi d un stage de fin d études de 6 mois avec pré-embauche au Maroc, ayant lieu dans n importe quelle ville de France. s scientifiques et professionnels L'objectif de cette spécialité est de former des cadres pour le secteur du développement «offshore» de logiciels informatiques : conception, production et maintenance. Ce domaine a évolué de manière prodigieuse ces dernières années sous la pression de la concurrence internationale. L'enjeu consiste à réduire le temps de mise sur le marché d'un nouveau produit, améliorer la qualité et réduire les coûts de production. Pour atteindre ces objectifs, on met en œuvre des techniques d'entreprises étendues où une partie de la conception et de la réalisation est réalisée à l offshore. Le Maroc est un partenaire privilégié pour les sociétés de services françaises grâce à sa proximité linguistique et géographique. L expérience du stage en France avec pré-embauche au Maroc a montré que l efficacité des équipes franco-marocaines est améliorée grâce à l immersion des jeunes collaborateurs marocains dans les contextes de production en France, qui permet de s imprégner de la culture et des processus en vigueur dans les entreprises françaises. L immersion de 6 mois dans une entreprise française des futurs collaborateurs marocains est un véritable atout pour les projets à l offshore mais cela n est pas suffisant pour en garantir le succès. La réussite des projets dépend aussi de la qualité des formations universitaires et de leur adéquation vis-àvis des attentes industrielles dans le cadre de l offshore. Il est donc important d adapter certaines filières M2 «Développement à l Offshore des Systèmes 01/09/2010
2 de formation françaises et marocaines en informatique à ce nouveau modèle économique : «Un seul monde, une seule équipe». La création d une formation commune de Master dans le domaine de l offshore informatique entre l UBO et les universités marocaines est une réponse possible à cet enjeu. L intérêt est double : Etendre le dispositif d immersion actuel à une année complète en permettant aux étudiants marocains en Master d Informatique d effectuer une mobilité d un semestre d études à Brest ainsi qu un stage en France avec pré-embauche au Maroc. Proposer une formation spécifique s appuyant sur les qualités respectives de chaque université partenaire et visant une insertion professionnelle dans le domaine en pleine croissance de l offshore. Organisation en termes d UE et de crédits européens Pour faciliter les aspects organisationnels (visa, transport, logement, couverture sociale), le schéma de mobilité retenu comprend une 1ère année de formation au Maroc (Master 1) suivie d une 2ème année en France (Master 2). La 2ème année de Master s effectue totalement en France : 7 mois d études à l UBO (Brest) suivi d un stage de fin d études de 6 mois avec pré-embauche au Maroc, ayant lieu dans n importe quelle ville de France. Le contenu de la 1 ère année est de la responsabilité de l université d origine de l étudiant. Comme les élèves proviennent de différents horizons, il est difficile de garantir une homogénéité complète du socle de connaissances attendues. C est la raison pour laquelle, nous proposons une période d harmonisation de 2 mois comportant des options permettant d enseigner les compléments requis en fonction du parcours individuel de chaque étudiant. Cette 1 ère période est suivie d une période d enseignements obligatoires de 5 mois, spécifique à l offshore. La dernière période est un stage de 6 mois en France avec pré-embauche au Maroc. Matières Semestre Volume et répartition CM- ECTS TD-TP Période N 1 - Septembre à octobre - Harmonisation PVP1 - Techniques d expression et anglais S9 36h (12, 24, 0) 2 Environnement de développement S9 36h (12, 12, 12) 2 options au choix 8 ECTS Systèmes d exploitation S9 36h (12, 12, 12) Développement objet en Java S9 36h (12, 12, 12) Base de données S9 36h (12, 12, 12) Période N 2 - Novembre à mars - Tronc commun Conception objet S9 60h (20, 20, 20) 5 Systèmes répartis S9 60h (20, 20, 20) 5 Langages du Web S9 60h (20, 20, 20) 5 Ingénierie de développement logiciel S9 60h (20, 20, 20) 5 PVP2 - Communication et anglais S10 60h (20, 20, 20) 5 Ingénierie des systèmes d information S10 60h (20, 20, 20) 5 Développement n-tier J2EE S10 60h (20, 20, 20) 5 Période N 3 - Avril à septembre Stage en France avec pré-embauche au Maroc Stage en entreprise S10 6 mois 15 Total étudiant 528 heures 60 M2 «Développement à l Offshore des Systèmes 01/09/2010
3 Descriptif des Unités d Enseignements UE Techniques d expression et anglais Environnement de développement s Rédiger des documents professionnels. Mise à niveau en anglais. Ce cours fournit une pratique des outils de développement open-source comme la gestion des tests (ex: JUnit), la gestion des versions (ex : Subversion), l extension des environnements de développement (ex. : plugins Eclipse) ou le déploiement d applications (ex. : Maven). Systèmes d exploitation Développement objet en Java Bases de données Ce cours fournit les fondements de technologies matérielle et logicielle du fonctionnement d un système informatique dans un environnement professionnel. On explique l architecture d un système mono-utilisateur, d un système central et d un système distribué. Ce cours fournit la compréhension des algorithmes et de la programmation objet (en Java). Les mécanismes objet de base sont mis en pratique. Ce cours inclut aussi l étude des structures de données de base et des algorithmes associés d un point de vue logique comme physique. Ce cours fournit une présentation des systèmes de gestion de base de données. On aborde les composants d une architecture de données, les organisations physiques, les langages de définition, de mise à jour, de recherche et de contrôle des données pour le modèle relationnel. Conception objet Ce cours fournit une compréhension des principes et des techniques de la conception objet : modularité, dépendances, patrons de conception, réutilisation. La notation UML est utilisée. Systèmes répartis Langages du Web Ce cours fournit une compréhension des différents modèles d'applications distribuées et permet l étude d algorithmes distribués. Une attention spéciale est portée aux plates-formes permettant de programmer des objets ou des services distribués. Ce cours fournit un panorama des principales technologies du Web qui sont exécutées sur le poste client. On y étudie les langages à balises de présentation et d échange de données, les langages de script et d animation, les approches asynchrones (ex. : HTML, XML, XSL, JavaScript, Ajax, Flex). Ingénierie de développement logiciel Ce cours fournit les bases d un développement industriel du logiciel en termes de méthodes et outils complémentaires à l activité de programmation : normes de programmation, automatisation des tests, intégration continue, gestion de versions, qualimétrie, automatisation. M2 «Développement à l Offshore des Systèmes 01/09/2010
4 Communication et anglais Ingénierie des systèmes d information Ce cours prépare à : participer à des réunions ; présenter ses travaux devant un public ; maîtriser les techniques de recherche d'emploi ; présenter, communiquer et argumenter en anglais. Ce cours fournit une compréhension et l application des processus d analyse et de conception d un système d information d un point de vue technique et organisationnel. Le premier point requiert l étude des méthodes systémiques et une introduction au Processus Unifié. Le deuxième point doit mettre l accent sur l importance de la communication écrite et orale à l intérieur de l équipe et dans la relation client-fournisseur. Développement n- tier J2EE Ce cours fournit les bases du développement des applications professionnelles n-tier principalement avec une plate-forme J2EE. Les différents tiers et leurs composants associés sont étudiés : serveur de données et couche de persistance, EJBs, serveur d application et servlets, pages de présentation et bibliothèque de balises. Description des Unités d Enseignements (UE) Les besoins en jeunes diplômés de l industrie du logiciel Offshore sont tels que ce programme de double diplôme peut concerner de nombreuses universités marocaines, ayant défini des programmes de licence et de master qui correspondent à leurs environnements locaux mais qui peuvent être assez différents les uns des autres. A ce titre, il est nécessaire d adjoindre à la 2 ème année de Master une période préliminaire d harmonisation qui permettra aux étudiants provenant des différents Master 1 ère année de compléter leur formation afin de démarrer sur un socle commun de connaissances. La période d harmonisation comprend les 4 UEs suivantes : Environnement de développement, Systèmes d exploitation, Développement objet en Java et Bases de données. Ces UEs portent sur des connaissances qui sont normalement acquises en 3 ème année de licence ou en 1 ère année de Master. Afin d avoir un référentiel commun, le contenu de ces UEs a été établi à partir du Computer Science Curriculum 2008 établi par l ACM et l IEEE Computer Society ; cf. http://www.acm.org//education/curricula/computerscience2008.pdf UE - Environnement de développement Maîtriser les principaux outils Open Source de génie logiciel utilisés dans le développement logiciel. - Fonctions de base d un environnement de développement comme Eclipse. Principe des extensions (plugins). - Principe du développement dirigé par les tests. Tests unitaires et tests de non-régression. Application avec le framework JUnit. Intégration de JUnit dans Eclipse. - Principe de la gestion de versions. Circuit de modification et espaces de références. Application avec Subversion. Intégration de Subversion dans Eclipse. - Mise au point des applications Web et débogage. M2 «Développement à l Offshore des Systèmes 01/09/2010
5 UE Systèmes d exploitation Fournir des bases solides de compréhension des systèmes d'exploitation des machines informatiques. Comprendre les services réseaux qui sont partie prenantes d un système d exploitation. Référence dans le curriculum 2008 OS/OperatingSystemPrinciples, OS/Concurrency, OS/SchedulingandDispatch, OS/MemoryManagement NC/Introduction, NC/NetworkCommunication - Système o Principes des systèmes d exploitation. o Exécution concurrente, exclusion mutuelle, verrou mortel. o Gestion de la mémoire: pagination, mémoire virtuelle. o Synchronisation et outils de communication entre processus. o Systèmes de gestion de fichiers distribués. o Sécurité et protection : authentification, droits d'accès, sauvegarde et restauration. o Langage de commandes (ex. : SHELL). - Services réseaux o Structure du réseau Internet et des réseaux TCP/IP. o Administration de réseau. Sécurité. o Les services de base d'un réseau TCP/IP. UE Développement objet en Java Savoir programmer dans un langage moderne à objet tel que Java. Référence dans le curriculum 2008 PL/VirtualMachines, PL/BasicLanguageTranslation, PL/DeclarationsAndTypes, PL/ObjectOrientedProgramming - Notions de base de la programmation Java : syntaxe, sémantique, compilation, etc. - Etude de la notion de classe et d'objets. Construction de types de données. - Mécanismes objet : Héritage et programmation par extension, spécialisation, généralisation, réutilisation, polymorphisme, généricité, etc. - Organisation du code dans l environnement : packetage, interface, librairie, documentation, etc. - Interface Homme Machine (ex. : Swing). M2 «Développement à l Offshore des Systèmes 01/09/2010
6 UE Bases de données Maîtriser l'utilisation d'un SGBD relationnel et notamment l'utilisation du standard SQL. Comprendre tous les aspects de l'architecture et du fonctionnement d'un SGBD relationnel. Référence dans le curriculum 2008 IM/DatabaseSystems, IM/DataModeling, IM/RelationalDatabases, IM/QueryLanguages, IM/RelationalDatabaseDesign - Place du système d'information dans l'entreprise. - Modélisation (type Merise) : Modèle conceptuel de données, dépendances fonctionnelles, théorie de la normalisation des relations, passage du modèle conceptuel au modèle physique. - Notions de relation, de domaine, de clé. - Responsabilité du système de gestion de base de données dans les modèles client/serveur et n- tier. - Intégrité et cohérence d'une base. Gestion des privilèges. Administration de base d'un SGBDR. - Etude du langage SQL : langage de définition, langage de manipulation, langage d'interrogation. - L'expression des contraintes : intégrités structurelles, intégrités de domaines, procédures stockées, triggers, index. - Intégration de SQL dans un langage hôte procédural (ex : PL/SQL) UE Conception objet Appréhender les concepts et techniques permettant la conception d'applications objet avec une ouverture sur les architectures distribuées sur le Web. Apprendre à identifier et utiliser les patrons (pattern) adaptés à une situation de conception, ou pour la définition d'une architecture. - Modélisation en UML. - Cas d utilisation et exigences. - Analyse objet : modèles du domaine, diagrammes de séquence système, diagramme d activité. - Conception objet : carte de responsabilités, diagrammes d interaction, diagrammes de classes. - Introduction aux patrons de conception (design patterns) et aux infrastructures logicielles (Software Framework). o Structure d'un patron de conception en langage objets. o Présentation des principaux patrons: créateurs, structuraux et comportementaux. o Introduction aux patrons pour le canevas J2EE (ex : patron Modèle-Vue-Contrôleur). - Implémentation des patrons de conception en Java. M2 «Développement à l Offshore des Systèmes 01/09/2010
7 UE Systèmes répartis Appréhender les aspects concernant les systèmes et applications coopératives ou réparties (clientserveur, "middleware"). Donner une vision globale des applications réparties, de la distribution de services et de données au travers des principales technologies existantes - Notions générales associées à la répartition. - Concepts: parallélisme, flexibilité, indépendance de localisation, sûreté et sécurité, extensibilité. - Modes de communication par appel de procédures distantes. - Introduction à l'algorithmique répartie par tolérance aux pannes (détection de panne, consensus, diffusion, synchronisation d'horloges, élection). - Les systèmes de fichiers répartis. Exemple : NFS, AFS. - Concepts associés à la notion d'objet répartis, exemple de Java RMI. - La distribution sur réseaux Internet : architecture multi-tiers, serveurs WEB, serveurs d'applications, accès aux bases de données. - Les WEB services : notions d'architecture, principes de fonctionnement et distribution. UE Langages du Web Appréhender les différentes technologies et langages qui sont exécutés sur le poste client : présentation et échange de données, langages de script et d animation, approches asynchrones. - Les langages HTML, XHTML. Validation des formulaires. Feuilles de style. - Description et manipulation des documents présentés dans un navigateur : XML, XSL, XSLT. - Programmation-script dans des langages exécutés par le client (ex : JavaScript). - Introduction aux problèmes de sécurité et d'authentification. Utilisation des cookies et des sessions. - Technologies de client riche : Ajax, Flex. Conséquences et problèmes à résoudre. UE Ingénierie des systèmes d information Maîtriser les méthodes, modèles et outils utilisés dans la conception et l'évolution des systèmes d'information. Etre sensibilisé aux techniques et outils de gestion de projet informatique - Ingénierie des besoins. - Rédaction de cas d utilisation. - De l expression de besoins à la rédaction des spécifications. - Des spécifications aux tests et à la validation. - Modélisation conceptuelle, logique et physique du système d information avec un Atelier de Génie Logiciel (AGL). - Rétro-conception de systèmes d'information. - Qualité du système d'information. - Maintenance et évolution du système d'information. M2 «Développement à l Offshore des Systèmes 01/09/2010
8 UE Développement n-tier J2EE Connaissance approfondie de l'architecture intranet Java EJB sur la base d'une pratique des APIs principales. - L architecture J2EE. - Les API J2EE : Java Naming and Directory Interface (JNDI) Java DataBase Connectivity (JDBC) Java API for XML Processing Java Message Service - Servlets : principes, mise en œuvre, partage d'information, gestion de session, délégation de traitement. - JSP (Java Server Pages) : principes et mise en œuvre. - Déploiement d'applications Web. - Persistance et mapping objet-relationnel (ex : Hibernate, JPA). - L'architecture EJB : serveur, conteneur, composant EJB, types d'ejb. - Les interfaces EJB. - Développement d'un Session Bean : structure des éléments, partie client. - Développement d'un Entity Bean : types de persistance, structure, EJB QL, partie client. - Introduction aux Message Driven Bean. UE Ingénierie du développement logiciel Appréhender et comprendre les bases d un développement industriel du logiciel en termes de démarche, méthodes et outils de bas niveau complémentaires à l activité de programmation. Ce cours doit s appuyer sur sur un environnement «type» de développement à base d outils Open-Source (Eclipse, Subversion, Junit, Ant, etc.) afin d illustrer par l exemple un processus de production industriel dans un environnement J2EE. - Conventions de nommage et normes de programmation. - Automatisation des tests unitaires, d intégration et de non régression. - Mécanismes d intégration continue. - Gestion des versions. - Outils et démarche de qualimétrie. - Automatisation de la production et des livraisons (ex. : ant, maven, ) M2 «Développement à l Offshore des Systèmes 01/09/2010