Développement Logiciel 101: méthodologies et outils (2020)

 
University of Geneva

LocationGeneva, Lake Geneva region, Switzerland
CategoryComputer Science
Economics / Business
Deadline28 February 2020

Les compétences conceptuelles et transversales attendues d’un développeur sont un aspect clé de notre programme. Nous présentons les méthodologies de développement, ainsi que le cycle de vie d’un logiciel. Nous fournissons les outils et les méthodes pour créer un code propre, testé et de qualité.

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

Développeur, chef de projet, consultant travaillant dans des entreprises, administrations, organisations internationales, associations ou sociétés de service

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.

Les méthodologies de développements :  Extreme programming, design patterns, design thinking, langages de spécification, etc.

Les outils de développement :  Versionning, virtualisation, outils de composition, injection de dépendances, MVC frameworks, etc.

Prof. Jean-Henry MORIN, Prof. Gilles FALQUET, Prof. Didier BUCHS et Dr Laurent MOCCOZET, Centre universitaire d’informatique (CUI), Université de Genève

Les cours permettent d'assimiler, les connaissances fondamentales des outils et des méthodologies 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.


Le métier 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.

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

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)

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.

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

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. Ce cours fait parti des sessions en un jour ouvert aux personnes extérieures au CAS (450CHF).

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.

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.

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.

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. Ce cours fait parti des sessions en un jour ouvert aux personnes extérieures au CAS (400CHF).

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.

 

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.

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.

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.

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.

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.

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 œuvre de ces pratique sera évalué à travers une analyse du code du projet final.

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

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.

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).

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 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.

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.

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.

Ce cours présente les principe de design et d’exécution énoncé par Robert Martin dans le livre Clean Code - 2008

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.

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.

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.

Les termes utilisés pour désigner des personnes sont pris au sens générique; ils ont à la fois la valeur d’un masculin et d’un féminin.

Web

 
In your contacts, please refer to myScience.ch
and reference edu.myScience.ch/id1220