Formation continue

CAS en Développement Logiciel 101 : Méthodologies et outils

Présentation

Ce CAS se déroule en 8 modules sous forme de cours et de travaux pratiques. Les cours permettent d'assimiler, les connaissances fondamentales des outils et des methodologies du développement logiciel, et de comprendre le fonctionnement de celles-ci. Les travaux pratiques permettent d'acquérir les compétences techniques nécessaires à la mise en application rapide des concepts vus en formation. Les discussions pendant les cours permettent aux participants d'apporter leurs expériences personnelles. La réalisation d'un projet annuel permet de mettre en pratique les différents sujets abordés.

 

Cette formation se distingue des autres formations en développement :

  • De par son format court (une année à temps partiel) qui répond à des besoins et des contraintes spécifiques du développeur informatique qui lui demandent une mise à jour régulière de ses connaissances afin d’être le plus performant possible;
  • Mais aussi parce qu’il ne vise pas l’exhaustivité, mais l’efficacité en permettant une mise en application immédiate des acquis de la formation dans l’environnement professionnel. Ainsi, il n’y aura pas un travail centré sur une recherche scientifique qui sera demandé comme par exemple dans le cadre d’un MAS, mais une mise en application de concepts et d’outils et un positionnement critique.

Certification

Le Certificat de formation continue en Développement logiciel 101 : Méthodologie et outils est obtenu lorsque le participant a suivi régulièrement tous les modules et rendu les travaux prévus pour les 8 modules ainsi que les projets de fin d'études.

Ce CAS correspond à 12 crédits ECTS (European Credit Transfer and Accumulation System).

Objectifs

  • proposer une vision globale et interdisciplinaire sur le développement logiciel.
  • mettre à jour et approfondir des compétences permettant le développement et la maintenance d’applications informatiques en s’adaptant aux évolutions technologiques
  • produire un code et un projet de qualité en suivant les différents aspects de construction du développement logiciel comme décrits dans chacun des modules
  • comprendre les enjeux du projet inhérents aux aspects métiers de l’utilisateur et proposer des solutions adéquates
  • concevoir et communiquer avec différents interlocuteurs tout au long du projet
  • mener une réflexion critique sur son propre projet au vu des compétences acquises pendant la formation

Public

Les compétences attendues d’un développeur ne sont pas seulement techniques, comme on le conçoit en général, mais aussi conceptuelles et transversales (soft skills) et s’inscrivent dans le développement d’un produit et d’un projet de qualité. Le développeur logiciel travaille dans le cadre d’une équipe, ou en tant que chef de projet ou consultant. Il doit ainsi pouvoir développer des capacités relationnelles avec différents interlocuteurs pour mener à bien le projet ou le mandat.

Ce CAS s'adresse donc aux développeurs, chefs de projet, consultants travaillant dans des entreprises, administrations, organisations internationales, associations ou sociétés de service.

Pré-requis: connaissance du langage Java

Structure

La ré-organisation du programme étant en cours les détails d'organisation seront publiés ultérieurement.

Le travail d'intégration des connaissances compte environ 30 heures, qui seront consacrées au suivi des projets.

Direction

  • Prof. Gilles Falquet, Institut de Science de Service Informationnel, Faculté d'économie et de management, Université de Genève
  • Prof. Jean-Henry Morin, Institut de Science de Service Informationnel, Faculté des sciences de la société, Université de Genève
  • Dr. Laurent Moccozet, Institut de Science de Service Informationnel, Faculté d'économie et de management, Université de Genève
  • Prof. Didier Buchs, CUI, Université de Genève
  • 2 experts du terrain à nommer. 

Coordination & Administration

Camille Tardy, Université de Genève

 

Programme détaillé

Télécharger le plan d'étude et le programme détaillé

Module 1 : Introduction

  • Software Craftmanship

Le metier de développeur. Ce cours présente le manifeste du Software Craftsmanship. Il fixe le cadre et l'esprit qui anime le développeur de métier. Il ne donne pas lieux à évaluation.

Module 2 : le cycle de vie du logiciel 

  • Cycle de vie du développement logiciel

cycle en cascade, en V, incrémental/en spirale, itératif/Agile (lien avec scrum et xp) Contenu: Historiques et évolutions des cycles de vie, Avantages et limites de chaque cycle

  • Scrum et critique de scrum (scrum vs..)

Méthode Agile de gestion de projet Contenu : présentation de la méthode, du déroulement, des rôles et des documents, mise en situation (logo4scrum)

  • Extrem Programing

Ce cours présente les buts, principes, valeurs et pratiques de la méthodologie agile la plus avancées de développement logiciel. Il ne donne pas lieux à évaluation.

  • Forfait / Régie (société de service)

Deux types de contrats formalisent la collaboration entre une société de services informatiques (SSII) et une entreprise Contenu : Définition, avantages et inconvénients, domaines d'utilisation

Module 3 : les méthodologies de développements 

  • Design thinking

Présentation de la méthodologie et de ses différentes étapes; Le DT pour le développement: son intérêt et ses apports; présentation de techniques et d'outils; exercice et mise en pratique

  • UML the good parts

Ce cours présente la notion de modèle ainsi que les diagrammes d’interaction et d’etat, il vise à établir un langage commun entre les développeurs. L’évaluation est une utilisation approprié de la nomenclature UML dans le dossier de conception accompagnant le projet final.

  • Pattern (GRASP) & Bonnes pratiques d'attribution des responsabilités

Ce cours présente la notion de pattern ainsi que les patterns d’attribution de responsabilité tel que décrit par Craig Larman dans son livre “Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development” L’évaluation se base sur le design mis en oeuvre dans le projet final.

  • Spécification

Par exemple la programmation par contrat de B. Meyer

  • Architecture logicielle

Ce cours présente les différentes composant d’une architecture logiciels et explique la tendance actuelle pour les micro services. Il ne donne pas lieux à évaluation.

Module 4 : les questions éthiques

  • Codes de Conduite, éthique, responsabilité numérique, les dimensions de la conception
  • Cadres légaux, Protection des Données, GDPR, Réglementations

Module 5 : les outils de développement 

  • Versionning

Ce cours permet d'appréhender la raison d'être d'un Gestionnaire de Contrôle de Sources et d'en expliquer les fonctionnalités basiques. Après une explication sur les CVS legacy et les CVS distribués, nous aborderons le DCVS le plus répandu actuellement Git, et ses fonctionnalités. Finalement, nous décrirons deux manières diamétralement opposées pour travailler avec Git, en détaillant leur avantages respectifs.

  • Maven
  • Infrastructure as code (automatisation)

Défis posés par l'infrastructure, Servers as pets or cattles, Virtualisation, VMWare, VirtualBox, Vagrant, Puppet ou  Chef ou Ansible 

  • Nexus/Artifactory - bintray

A partir de l'expérience personnelle - et véridique de l'enseignant, nous verrons en quoi la gestion de packages (quel que soit l'écosystème) est nécessaire à un développement industriel. Puis, nous nous pencherons sur quelques uns de ces écosystèmes, ainsi que leur manière de gérer ces packages. Nous détaillerons plus particulièrement la gestion des packages sous Maven et comment les utiliser. Enfin, nous concluerons en créant notre propre package et en le déployant sur le gestionnaire de packages Artifactory.

  • Inverison de controle, Injection de dépendances

Le couplage est au centre de la conception d'un logiciel évolutif. Toutefois, la réponse traditionnelle de création d'une interface ne résoud que partiellement le problème, puisqu'il faut toujours créer l'objet-dépendance. L'instanciation dans un "module" dédié permet de répondre de manière satisfaisante au problème. L'implémentation de ce module peut aller de la simple réalisation du pattern Factory, jusqu'à l'utilisation de ressources mises à niveau par le serveur d'applications. Une de ces implémentations est l'Injection de Dépendances. Elle peut être effectuée "manuellement", ou déléguée à une plateforme (Java EE CDI), à une librairie (Guice) ou à un framework (Spring).

  • Spring

Ce cours permet de s'approprier le framework Spring : nous commencerons par détailler différentes manière de configurer la fabrique de beans Spring. Nous continuerons en décrivant la notion de scope. Finalement, après un bref rappel des concepts web en Java EE, nous étudierons comment Spring MVC les implémente.

  • Spring Boot

Spring Boot est la dernière brique de la stack Spring. Dans ce cours, nous verrons que Spring Boot simplifie l'utilisation du framework en fournissant des beans par défaut - "convention over configuration". Puis nous décrirons par quel moyen Spring Boot y parvient.

  • Spring Sécurity

La sécurisation des applications Web comprend de multiples facettes. La plateforme Java EE est loin d'implémenter l'intégralité de celle-ci. Spring Security est non seulement complètement intégrée avec le framework MVC mais permet également d'améliorer la couverture de ces facettes.

Module 6 : l’architecture web et les performances liées 

  • Rappel de développement web
  • Sécurité

Revue des vulnérabilités OWASP20

  • Architectures & Design for Performances

Ce cours présente l'évolution des architectures web et leurs impacte dans la recherche de performance tant du point de vue de l'expérience utilisateur que de la scalabilitée des plateformes L’évaluation se base sur le design mis en oeuvre dans le projet final.

Module 7 : les tests 

  • Tests unitaires

Après un bref retour sur la notion de qualité logicielle, nous définirons le concept de test unitaire. Nous démontrerons que l'Injection de Dépendances (étudiée précédemment) permet le test unitaire. Puis, nous passerons en revue les différents "Tests Doubles" disponibles : Dummy, Mock, Stub et Fake. Seuls les tests automatisés étant réellement utiles, la prochaine étape sera d'utiliser un framework de test (TestNG), puis d'intégrer ce dernier dans notre outil de build.

  • Tests d’intégrations

Les tests unitaires ne sont pas suffisants pour garantir la qualité d'un logiciel. Si on peut les assimiler au test des écrous et des boulons d'un prototype de voiture, il est nécessaire d'assembler ce prototype et de l'emmener pour un galop d'essai avant de le manufacturer à échelle industrielle - il s'agit des tests d'intégration. Il peut également s'avérer nécessaire de tester une partie plus restreinte du système : c'est la notion de System Under Test. Bien que nécessaires, les tests d'intégration posent des problématiques spécifiques : lenteur, fragilité, complexité d'analyse en cas d'échec. Il s'agit de composer avec ces problématiques, pour en diminuer l'impact. Le cours se concluera par l'implémentation des tests d'intégration avec TestNG dans un build Maven.

  • Spring test

La gestion des tests unitaires et des tests d'intégration d'une application Spring (et Spring Boot) est facilitée par l'utilisation d'outils mis à disposition par le framework lui-même. Ce cours permet de les étudier et de les mettre en oeuvre.

  • TDD (Test Driven Development)

Ce cours présente comment les framework de Test peuvent nous aider à faire émerger Spécification et Design par une recherche permanente de l'efficience et de la confiance dans le code produit. Cette pratique ne donne pas lieu à évaluation.

  • Jenkins

Module 8 : la pratique du code propre 

  • Refactoring

Ce cours présente ‘activitée de refactoring il s'appuie fortement sur les outils de manipulation ou d’analyse de code ainsi que sur les techniques décrites par Martin Fowler dans le livre Refactoring: Improving the Design of Existing Code - 1999. Il ne donne pas lieux à évaluation.

  • Clean code 

Ce cours présente les principe de design et d'exécution énoncé par Robert Martin dans le livre Clean Code - 2008. La mise en oeuvre de ces pratique sera évalué à travers une analyse du code du projet final.

Travail d'intégration des connaissances.

 

Intervenants

Prof. Gilles Falquet - Professeur Associé (cui.unige.ch/~falquet)

Prof. Jean-Henri Morin - Professeur Associé (jhmorin.wordpress.com)

Dr. Laurent Moccozet - Maitre Enseignement et de Recherche (ResearchGate)

Mme Sonia Perotte - Chargée de cours à la HEG et à l’EHB de Lausanne et cheffe de projet chez Oxial (LinkedIn)

M. Nicolas Frankel - Architecte logiciel (http://frankel.ch)

M. Guillaume Jambet - Développeur de Plateforme chez SonarSource et enseignant à l’Université de Savoie (France (LinkedIn))

M. Philippe Monteiro - Ingénieur logiciel (LinkedIn)

 

Renseignements pratiques

Lieu et horaire

La ré-organisation du programme étant en cours les détails d'organisation seront publié ultérieurement.

Finance de participation

CHF 5'250.- pour le programme complet

A verser dès réception de la confirmation de l'inscription. Ces sommes incluent la documentation et une collation servie à la pause.

Aides financières :

  • L'Etat de Genève prévoit, sous conditions, un chèque de formation jusqu'à CHF 2'250.-
    Renseignements : Office pour l'orientation, la formation professionnelle et continue www.ge.ch/caf.
  • Le canton de Vaud propose des aides aux entreprises pour la formation des employés : plus de détails sur vd.ch

Conditions d'admission

L'admission des candidats est prononcée par le conseil scientifique sur examen d'un dossier constitué du bulletin d'inscription, auquel doivent être annexés:

  1. un curriculum vitae complet
  2. une lettre de motivation (expliquant le projet de formation et l'experience déjà acquise)
  3. photocopies des diplômes
  4. une photocopie de la carte d'identité
  5. une photo passeport

Le dossier peut-être envoyé par email ou par courrier.

Aucune candidature ne sera recevable après le début des cours.

Nombre de participants

Afin de nous permettre d'organiser les travaux pratiques dans les meilleures conditions possibles, le nombre de participants par module est limité à 15. Les demandes d’inscription sont enregistrées par ordre d’arrivée.

Nous contacter