Programme des cours 2023-2024
BINV2090-2  
Conception d'applications d'entreprise
  • Projet d'applications d'entreprise
  • Architecture d'applications d'entreprise
  • Back-end Java
Durée :
Projet d'applications d'entreprise : 48h Pr
Architecture d'applications d'entreprise : 24h Th
Back-end Java : 12h Th
Nombre de crédits :
Bachelier en informatique, orientation développement d'applications (Bachelier en informatique, orientation développement d'application)8
Nom du professeur :
Projet d'applications d'entreprise : Raphaël BARONI, Brigitte LEHMANN, Laurent LELEUX
Architecture d'applications d'entreprise : Laurent LELEUX
Back-end Java : Raphaël BARONI, Sébastien STREBELLE
Coordinateur(s) :
Brigitte LEHMANN
Langue(s) de l'unité d'enseignement :
Langue française
Organisation et évaluation :
Enseignement au deuxième quadrimestre
Unités d'enseignement prérequises et corequises :
Les unités prérequises ou corequises sont présentées au sein de chaque programme
Contenus de l'unité d'enseignement :
Cette unité d'enseignement aborde la conception d'applications d'entreprise à travers trois axes.

Un premier propose aux étudiants de construire une architecture d'application web. De nombreux concepts y seront abordés, notamment l'injection de dépendances, les pattern DTO, DAO, Registry.

Le second propose la création d'une API en JAVA avec Jersey et Jackarta. Les principaux concepts de ces technologies y seront abordés, notamment les ressources, les annotations, les ExceptionMappers, les Filters.

Le troisième met en pratique cette architecture ainsi que ces technologies au travers d'un projet de groupe intégrateur. Celui-ci se veut une simulation de projet proche du milieu professionnel, intégrant la gestion des sources, la gestion du temps, l'intégration continue.
Projet d'applications d'entreprise
L'activité est une situation d'intégration simulant un projet informatique. Les séances présentielles ont pour fonction de :
  • Mettre en contexte les différentes activités d'intégration à mettre en œuvre au cours du semestre.
  • Permettre aux groupes de synchroniser leur travail, et de faire le point sur ce qui a été accompli afin de planifier correctement ce qu'il reste à faire.
  • Dialoguer avec les encadrants afin de fluidifier le travail des groupes, de minimiser les tensions, et de s'assurer que les obstacles seront bien surpassés comme ils doivent l'être.
  • Assurer la partie formatrice des évaluations.
Architecture d'applications d'entreprise
L'activité présente l'analyse et le développement d'un Framework d'application basé sur une architecture trois tiers. Seules les parties "Business" et "Persistance" sont abordées en détails.   Dans un premier temps, un Framework mono-thread va être construit, pour ensuite être adapté en multi-thread.   De nombreux concepts et patterns sont abordés et mis en pratique:


  • Injection de dépendances
  • Gestion des exceptions
  • Logging
  • Data Access Objects
  • Use-Case Controllers
  • Unit Of Work
  • Data Transfer Objects
  • ...
Back-end Java
Cette activité d'apprentissage se concentre sur la création d'une API REST en JAVA, qui pourra ensuite être consommée par une SPA.
Les concepts de Servlet, serveur embedded (Jetty) ou non, sérialisation JSON... y seront abordés.
Nous mettrons en pratique les concepts d'authentification avec JWT, gestion des sessions, gestion des headers/body, structure en ressources, utilisation des verbes et codes de retour... qui auront déjà été abordés dans le cours de Web2.
Acquis d'apprentissage (objectifs d'apprentissage) de l'unité d'enseignement :
Aquis d'apprentissage(s) spécifiques visé(s) :

Architecture d'applications d'entreprise :

  • Expliquer les enjeux du multi-threading, les analyser, et construire une architecture cohérente
  • Expliquer les besoins des applications d'entreprise
  • Développer un Framework d'application mono/multi-thread
Backend Java :

  • Mettre en œuvre une API avec Jakarta EE
Projet d'applications d'entreprise :

  • Développer une application utilisant une architecture d'entreprise classique en 3 couches
  • Analyser les besoins d'un utilisateur et rédiger un cahier des charges et rapport d'analyse détaillant aussi le produit à développer
  • Réaliser le développement collaboratif d'une application à l'aide d'un outil de partage de code
  • Planifier un développement à l'aide d'un outil de gestion de tâche
  • Gérer son temps à l'aide d'un outil de gestion du temps
  • Se conformer à des conventions de développement à l'aide d'un outil d'intégration continue
  • Respecter les délais lors d'un développement informatique.
 

Compétence(s) - Capacité(s):

CO1 - Communiquer et informer
CA1.a - Choisir et utiliser les moyens d'informations et de communication adaptés
CA1.d - Utiliser le vocabulaire adéquat
CA1.f - Utiliser une langue étrangère

CO2 - Collaborer à la conception, à l'amélioration et au développement de projets
CA2.a - Elaborer une méthodologie de travail Planifier des activités et évaluer la charge et la durée de travail liée à une tâche
CA2.e - Documenter son travail afin d'en permettre la traçabilité et le cycle de vie

CO3 - S'engager dans une démarche de développement professionnel
CA3.a - Prendre en compte les aspects éthiques et déontologiques
CA3.b - S'informer et s'inscrire dans une démarche de formation permanente
CA3.c - Développer une pensée critique
CA3.d - Travailler tant en autonomie qu'en équipe dans le respect de la structure de l'environnement professionnel

CO4 - S'inscrire dans une démarche de respect des réglementations
CA4.b - Respecter les normes, les procédures et les codes de bonne pratique

CO5 - Mobiliser les savoirs et les savoir-faire lors du développement d'applications
CA5.a - Concevoir, implémenter et maintenir des algorithmes répondant aux spécifications et fonctionnalités fournies
CA5.b - Choisir et mettre en oeuvre un standard défini ou une technologie spécifique (méthodologie, environnement, langage, framework, librairies, ...)
CA5.c - Utiliser et exploiter des méthodes de modélisation lors de la phase d'analyse pour traduire les besoins des utilisateurs, sous forme d'un cahier de charges Concevoir, implémenter, administrer et utiliser avec maîtrise un ensemble structuré de données
CA5.e - Choisir, mettre en oeuvre un processus de validation et d'évaluation et prendre les mesures appropriées

CO6 - Analyser les données utiles à la réalisation de sa mission en adoptant une démarche systémique
CA6.a - Prendre en compte les évolutions probables de la demande et envisager les diverses solutions possibles
CA6.b - Choisir les méthodes de conception et les outils de développement
CA6.f - Soigner l'ergonomie des applications



Acquis d'apprentissage(s) terminaux visé(s):

- Acquis d'apprentissage terminaux : AAT1. Concevoir des solutions informatiques efficaces qui répondent à des problèmes en maitrisant les structures de données véhiculées. CA5.a ; CA5.c ;

CA6.e * PROGRAMMATION (AAT1)
- Acquis d'apprentissage terminaux : AAT2. Traduire les besoins de l'utilisateur en modèles d'analyse en veillant à l'évolution des spécifications demandées tout en respectant les standards de formalisation utilisés. CA1.d ; CA5.c ; CA6.a * ANALYSE (AAT2)

- Acquis d'apprentissage terminaux : AAT4. Décrire les flux d'information et les processus dans une organisation ; CA3.a ; CA3.b ; CA3.c ; CA3.d * GESTION (AAT4)

- Acquis d'apprentissage terminaux : AAT5. Se conformer aux bonnes pratiques du métier tout en restant critique. CA3.c ; CA4.b ; CA5.b ; CA5.e ; CA6.b ; CA6.d ; CA6.f * QUALITE (AAT5)

- Acquis d'apprentissage terminaux : AAT6. Exploiter de façon autonome et rigoureuse les différentes ressources d'information (en français ou en anglais). CA1.f * AUTONOMIE (AAT6)

- Acquis d'apprentissage terminaux : AAT7. Communiquer (y compris documenter) une solution selon les différents canaux (oraux ou écrits) en procédant avec rigueur et en garantissant la traçabilité. CA1.a ; CA1.d ; CA2.e* COMMUNICATION (AAT7)

- Acquis d'apprentissage terminaux : AAT8. Collaborer au sein d'une équipe en s'adaptant à ses interlocuteurs, en organisant les différentes tâches d'un travail selon leur complexité et leur dépendance ainsi qu'en respectant les délais prévus. CA3.d ; CA1.d ; CA2.a * Equipe (AAT8)

- Acquis d'apprentissage terminaux : AAT9. Affronter des situations nouvelles en se formant pour intégrer les changements. CA1.d ; CA2.a ; CA3.b * FLEXIBILITE ( AAT9)

- Acquis d'apprentissage terminaux : AAT10. Respecter la déontologie, les règlements et les conventions en usage dans son milieu professionnel. CA3.a * PROFESSIONNALISME (AAT10.)

 
Savoirs et compétences prérequis :
Activités d'apprentissage prévues et méthodes d'enseignement :
Activités       Intitulé de l'activité                               Volume horaire BINV2090 A    Projet d'applications d'entreprise                         48 BINV2090 B    Architecture d'applications d'entreprise               24 BINV2090 C    Back-end Java                                                     12
Architecture d'applications d'entreprise
Le cours sera donné en parallelle du projet. Les premières séances se focaliseront sur une architecture de base, qui sera ensuite développée dans le projet. Les séances suivantes permettront d'ajouter des concepts, ainsi que des structures supplémentaires sur l'architecture de base.
Back-end Java
Le cours sera donné en parallelle du projet, uniquement durant les premières séances, de sorte que les technologies puissent être mises en pratique dès le début de la phase d'implémentation du projet.
Situation d'intégration
Le projet est une activité intégrant les autres activités d'apprentissage mais aussi toutes les UEs corequises. Ce projet est une simulation d'un projet informatique tel qu'on le rencontre en milieu professionnel :
  • Travail en équipe (de 4 à 6).
  • Travail en phases d'analyse, d'architecture, de développement et de maintenance.
  • Rapports réguliers à rendre.
  • Utilisation d'outils cadrant le développement du logiciel : dépôt de code, tests unitaires automatisés, intégration continue, convention d'écriture du code, métriques liées à la qualité du code.
  • Utilisation d'outils cadrant la gestion du projet : forum de discussion et wiki, outils de suivi du temps, outils de gestion des tâches.
  • Implémentation respectant une architecture d'entreprise en couches typique des applications Web.
  • Implémentation en utilisant les technologies Jersey et Jackarta.
Mode d'enseignement (présentiel, à distance, hybride) :
Présentiel.
 
Projet d'applications d'entreprise
Aucune matière théorique n'est apportée directement dans le cadre de cette activité. Cependant, la mise en situation est accompagnée d'utilisation de divers outils informatiques (gestionnaire de dépôt de code, outils d'intégration continue, outils de gestion de temps, forum de discussion). Quand c'est relevant, le cours commence par une brève description et introduction à l'usage de ces différents outils.
Architecture d'applications d'entreprise
Chaque cours aborde progressivement une nouvelle partie du Framework, avec les concepts et patterns associés. Il est ainsi construit progressivement, en collaboration avec les étudiants.
Back-end Java
L'activité sera principalement organisée autour d'exercices pratiques.
Lectures recommandées ou obligatoires et notes de cours :
Projet d'applications d'entreprise
Slides projetés par le professeur.      
Architecture d'applications d'entreprise
Diagrammes dessinés en cours.
Modalités d'évaluation et critères :
Responsable de l'évaluation: LELEUX Laurent

Langue de l'évaluation: Français

Mode d'évaluation et pondération:

L'évaluation de cette U.E. est intégrée et constitue dès lors un tout indécomposable. Celle-ci donne lieu à une seule note ; il n'y a pas d'évaluation d'Acap ni de note pour les Acap. Cela exclut automatiquement : toute dispense partielle issue d'une année antérieure, toute dispense partielle au sein de l'année académique, toute dispense partielle acquise cette année pour les années à venir.

L'évaluation sera décomposée en plusieurs parties :

  • L'évaluation des remises intermédiaires au long du semestre. Ces remises sont composées de rapports et de dépôts de code.
  • L'évaluation de la remise finale à la fin du semestre. Cette remise implique une présentation du produit fini, l'évaluation du code du produit fini, un complément d'analyse ainsi que la possibilité de corriger des points des remises intermédiaires.
  • L'évaluation individuelle de la maîtrise de l'architecture du logiciel développé (évaluation orale hors session).
En cas d'échec à l'une de ses évaluations, le responsable de l'évaluation de l'UE décide si ce déficit est inacceptable (en fonction de l'importance du déficit, de sa gravité ou du caractère essentiel des compétences non acquises). Dans l'affirmative, il définit une note pour l'ensemble de l'UE inférieure à 10/20, représentative de l'échec.

De plus, le manque de respect des consignes des enseignants encadrant l'activité sera sanctionné de pénalités directement appliquées sur les points finaux. Les points individuels sont ajustés par le prorata de la présence au cours. Finalement, dans certains cas de manque de participation, les points individuels peuvent être ajustés pour refléter ce manque de participation.

Les deux premières évaluations sont de l'évaluation continue, il n'y a pas d'examen et et le résultat de l'évaluation de juin est pris en compte à l'identique en septembre. La dernière (évaluation individuelle) pourra être représentée lors de la seconde session.
Stage(s) :
Remarques organisationnelles :
Lors du calcul de la moyenne arithmétique pondérée du PAE d'un étudiant, ainsi que du calcul de la moyenne arithmétique pondérée globale de son cursus, le poids associé à la note de la présente UE est son nombre d'ECTS.
Contacts :