DEV1 - Développement I

Appartient à l'UE Développement I

Personnes enseignantes

But

Le but de cette unité d’enseignement est de faire découvrir aux étudiants et étudiantes quelques étapes de développement d’un logiciel : la compréhension du problème, la rédaction d’algorithmes, l’écriture de tests et la traduction dans un langage de programmation et la réalisation sur différents systèmes.

Cette unité d’enseignement conscientisera l’étudiant ou l’étudiante sur ce qu’est le métier de développeur ou développeuse d’application. Elle lui permettra d’acquérir les premiers réflexes de développement.

Objectifs généraux

À la fin du cours, l’étudiante ou l’étudiant sera en mesure de :

  • mettre en œuvre un processus de développement d’une application ;

  • analyser un problème, élaborer un algorithme cohérent solutionnant ledit problème et écrire une solution dans le langage de programmation Java ;

  • s’approprier différentes représentations d’un algorithme en vue de les implémenter dans le langage de programmation Java ;

  • reconnaitre et se servir de structures de données classiques ;

  • connaitre et utiliser les types et les structures de contrôle tant dans ses algorithmes que dans le premier langage de programmation ;

  • manipuler les environnements de travail Microsoft Windows et GNU/Linux pour un usage classique d’un utilisateur ou d’une utilisatrice avec un profil de développeur ou développeuse ;

  • se servir d’un IDE (Integrated Development Environment) tout aussi bien que d’un terminal et d’un éditeur de texte pour rédiger et exécuter ses programmes ;

  • utiliser un outil de gestion de version de code pour les tâches habituelles de développement ;

  • travailler sur une machine distante ;

  • gérer son calendrier en fonction des échéances, y compris lorsque les détails sont donnés oralement ;

  • être autonome dans sa recherche documentaire (API Java, pages de manuel…) ;

  • être autonome dans son apprentissage.

Dans son ensemble, la formation tend à développer des compétences comme : l’autonomie dans l’apprentissage en permettant à l’étudiant ou à l’étudiante d’avancer à son rythme dans les laboratoires et le *peer learning (l’apprentissage par les pairs) ainsi que le peer programming (la programmation par les pairs) voire le pair programming (la programmation en binôme)1.*

Objectifs spécifiques

Cours de développement

Au terme des séances, l’étudiante ou l’étudiant sera en mesure de :

  • nommer les différents types de données, les illustrer en donnant des littéraux et les utiliser dans ses algorithmes et ses programmes par le biais des variables ;

  • utiliser les structures de données élémentaires ainsi que les tableaux ;

  • utiliser et manipuler les chaines de caractères et différencier, un entier, un caractère ou une chaine ;

  • nommer les principales structures de contrôle, notamment les structures alternatives et répétitives, et les utiliser à bon escient dans ses programmes ;

  • convertir un énoncé écrit en langage naturel en un algorithme pour le traduire dans un langage de programmation. Il ou elle sera capable de décrire quelles sont les données d’un problème en ce compris l’identification et la distinction entre les paramètres, les constantes et quels sont les résultats attendus. Il ou elle choisira les actions qui mènent à une solution ;

  • donner un ensemble de valeurs de test pertinentes pour un problème donné, qui permette une validation a posteriori de l’algorithme ou du programme ;

  • décomposer un problème complexe en sous-problèmes plus simples ;

  • reproduire et adapter des algorithmes classiques — principalement de parcours, de recherche et de tri — à des problèmes spécifiques ;

  • tracer un algorithme pour montrer son fonctionnement et illustrer graphiquement l’utilisation et la portée des variables à chaque étape de l’algorithme ;

  • montrer dans ses programmes certaines bonnes pratiques de programmation et notamment le respect des conventions d’écriture du langage ;

  • expliquer l’environnement dans lequel s’inscrit l’activité de programmation : compilation, interprètation, déverminage, tests, analyse, déploiement…

Laboratoire d’environnement

Au terme des séances, l’étudiante ou l’étudiant sera en mesure de :

  • analyser l’environnement dans lequel s’inscrit l’activité de programmation : compilation, interprètation, déverminage, analyse, déploiement…

  • implémenter — éditer, compiler, tester et exécuter — un programme Java tant en ligne de commande que dans un environnement graphique ;

  • utiliser un gestionnaire de versions — git — pour les tâches habituelles de développement — pour un développeur ou une développeuse travaillant seule — telles qu’enregistrer l’état de son travail et consulter l’historique. Il ou elle sera capable de se rappeler et choisir les commandes et paramètres éventuels adéquats de ce gestionnaire de version ;

  • se rappeler, choisir et utiliser les commandes GNU/Linux en ligne de commandes et Microsoft Windows utiles à l’utilisation de ces systèmes pour les tâches courantes d’un utilisateur ou d’une utilisatrice sans droits particuliers ;

  • utiliser un éditeur de code ;

  • se connecter en ssh à une machine distante.

  • comprendre le mécanisme des permissions GNU/Linux sur les fichiers et les répertoires. Citer et utiliser les commandes GNU/Linux permettant de changer ses permissions.

Laboratoire de langage Java

Au terme des séances, l’étudiante ou l’étudiant sera en mesure de :

  • utiliser un IDE (Integrated Development Environment) pour l’écriture des programmes et préciser les tâches effectuées silencieusement par l’IDE ;

  • mémoriser les raccourcis claviers les plus utilisés de son IDE et les utiliser ;

  • utiliser un gestionnaire de versions — git — pour les tâches habituelles de développement tant en ligne de commande avec bash sous GNU/Linux et Git Bash sous Microsoft Windows que dans son IDE ;

  • élargir sa connaissance du langage Java (API Java) par la consultation de la documentation du langage, comprendre cette documentation afin de l’utiliser dans ses programmes ;

  • appliquer les bonnes pratiques de développement dans ses programmes : modularité, lisibilité, documentation, réutilisabilité…

  • rédiger un plan de tests pour un problème donné et écrire les tests JUnit correspondant en langage Java ;

  • utiliser le mécanisme des exceptions du langage Java dans ses programmes ;

  1. La programmation en binôme (pair programming) est un terme usuel dans les environnements agiles. C’est la pratique qui consiste pour deux développeurs ou développeuses de partager une même station de travail. La programmation par les pairs (peer programming) est, quant-à elle la pratique où plusieurs développeurs et développeuses apprennent les unes des autres… pendant les laboratoires et non pendant les évaluations.