Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

Chapitre 313 minIntermédiaire

Choisir tes deux réalisations professionnelles

Par Josselyn C., prof de BTS SIO. Mis à jour le .

À la fin de ce chapitre, tu sauras

  • appliquer les règles officielles du choix des réalisations ;
  • choisir deux réalisations qui se prêtent à une évolution ;
  • vérifier ta couverture avec une matrice.

1 exercice corrigé1 schéma

Une réalisation professionnelle, à l'E6, est une application ou une partie d'application que tu as conçue et développée pendant ta formation : en atelier de professionnalisation, en stage ou en projet. Tu en présentes deux, et la commission en choisit une pour écrire ton sujet. Ce chapitre explique les règles qu'elles doivent respecter, comment les choisir pour qu'elles couvrent tout le bloc 2, et comment les construire pour qu'elles se prêtent à une évolution le jour de l'épreuve.

Les quatre règles officielles

RègleD'où elle vientCe qu'elle implique
Deux réalisations construites au cours de la formationarrêté du 22 novembre 2024 (définition de l'épreuve)ateliers, stages et projets comptent ; un projet perso fait avant le BTS ne compte pas
Ensemble, elles mobilisent toutes les compétences du bloc 2arrêté et circulairechaque compétence doit apparaître dans au moins une des deux
Elles ont été élaborées dans un environnement conforme à l'annexe II.E du référentielarrêté et circulairejusqu'à 15 points de pénalité sinon
Leur code source est accessible dans un environnement de développement opérationnel au moment de l'épreuveannexe II.E, point 3.4ton application doit tourner le jour J, pas seulement ses captures d'écran

Les candidats qui se présentent au titre de leur expérience professionnelle construisent leurs situations à partir de leur activité en entreprise.

Seul ou en équipe

La fiche descriptive prévoit les deux modalités : « seul(e) » ou « en équipe ». Une réalisation d'équipe est acceptée. Mais l'heure de réalisation est individuelle, et la commission peut écrire un besoin qui touche n'importe quelle partie de l'application. Si ton binôme a codé le front, tu dois être capable de le lire, de le lancer et de le modifier. Sur la fiche, décris précisément ta part.

L'environnement technologique exigé

L'annexe II.E du référentiel décrit l'environnement dans lequel tes réalisations doivent être construites. Sa partie commune (service d'authentification, SGBD, sauvegarde, deux serveurs dont un libre, deux types de terminaux dont un mobile, outils de sécurité) dépend surtout de ton établissement. Sa partie SLAM dépend de tes choix :

  • un ou deux environnements de développement avec des outils de gestion de tests, un framework et au moins deux langages ;
  • une bibliothèque de composants logiciels ;
  • un SGBD avec un langage de programmation associé (procédures stockées, triggers) ;
  • un logiciel de gestion de versions et de suivi des problèmes (Git et les tickets d'une forge) ;
  • une solution pour tester les comportements anormaux d'une application ;
  • au moins deux solutions applicatives opérationnelles qui offrent un accès sécurisé à des données hébergées sur un site distant ;
  • dans leurs architectures, des appels à des services applicatifs distants et au moins trois de ces quatre situations : du code exécuté sur un poste fixe (client lourd), dans un navigateur, sur un terminal mobile, sur un serveur.

Vérifie le dernier point dès ta 1re année. Deux applications Web en PHP rendu côté serveur ne font que deux situations : navigateur et serveur. Ajoute un client lourd (C# et Windows Forms), une application mobile (Développement mobile), ou un front (React) qui appelle une API (Node.js et Express). Une application PHP rendue côté serveur, avec PDO (PHP et MySQL), reste un très bon premier projet : il lui faut seulement un compagnon d'une autre situation.

Réalisation 1 : GestParcRéalisation 2 : Sorbier FraisClient lourd C# WinForms.NET 10, poste Windows, classes DAOsituation : code sur un poste fixerequêtes SQL paramétréesavec MySqlConnectorMySQL 8.4 : base parcsur Debian, avec procédures et triggerFront Reactexécuté dans le navigateursituation : navigateurHTTPS, JSON, jeton JWTappel de service distantAPI REST Node.js et Expressexécutée sur un serveur Linuxsituation : serveurmysql2, requêtes préparéesMySQL 8.4 : base fraiscompte applicatif aux droits limitésCommun aux deux réalisationsGit et GitHub : versions et tickets · Visual Studio et VS Codetests automatisés · sauvegarde mysqldump planifiée
Deux réalisations complémentaires : client lourd, navigateur et serveur, avec un appel de service distant

Choisir les deux bonnes réalisations

Une bonne réalisation d'E6 n'est pas la plus impressionnante. C'est celle sur laquelle tu peux réussir une évolution en une heure. Passe chaque candidate à ces six questions.

QuestionPourquoi elle compte
L'as-tu codée en grande partie toi-même ?la commission écrit un besoin sur n'importe quelle partie, et tu codes seul
Démarre-t-elle en moins de deux minutes sur la machine de l'épreuve ?l'heure de réalisation ne laisse pas de place à une installation
A-t-elle de la matière pour évoluer ?des rôles, des états, des relations entre tables, des listes à filtrer : autant de prises pour un besoin réaliste
A-t-elle une base relationnelle avec des contraintes ?« Gérer les données » est évalué ; une base de trois tables sans clé étrangère donne peu à montrer
Son historique Git raconte-t-il une démarche ?40 commits clairs prouvent l'intégration des versions ; un seul commit « final » prouve le contraire
Est-elle complémentaire de l'autre ?deux langages, trois situations, des compétences différentes

Construire une réalisation qui se prête à une évolution

Tu ne sais pas ce que la commission demandera, mais tu peux rendre ton application facile à faire évoluer.

  • Une architecture en couches lisible. Routes, contrôleurs, accès aux données, vues : chaque chose à sa place. Le jour J, tu dois trouver le bon fichier en dix secondes. Le cours Architecture MVC t'aide à choisir la tienne.
  • Des requêtes préparées partout. C'est la condition pour ajouter un filtre sans ouvrir une faille (cours SQL).
  • Au moins un test automatisé qui tourne, et la commande pour le lancer dans le README. Ajouter un test pendant l'épreuve prend cinq minutes quand l'outillage existe, trente quand il n'existe pas (cours Tests).
  • Un script de création de la base et un jeu d'essai réaliste : des comptes de chaque rôle, des données dans chaque état, des cas limites (une note vide, un logiciel libre sans licence).
  • Un README qui dit comment lancer le projet de zéro, en moins de dix lignes.
  • Un historique Git propre, avec un message par étape (cours Git et GitHub).

La matrice de couverture

La matrice de couverture croise les 20 sous-compétences du bloc 2 avec tes deux réalisations. Elle te dit ce qui manque pendant qu'il est encore temps de l'ajouter, et elle prépare tes fiches descriptives. Recopie ce modèle et remplis-le dès que ta première réalisation existe.

Sous-compétenceRéalisation 1Réalisation 2Preuve (fichier, commit, document)
Analyser un besoin exprimé et son contexte juridique
Participer à la conception de l'architecture
Modéliser une solution applicative
Exploiter les ressources du framework
Identifier, développer, utiliser ou adapter des composants
Exploiter les technologies Web pour les échanges entre applications
Utiliser des composants d'accès aux données
Intégrer en continu les versions
Réaliser les tests de validation ou de mise en production
Rédiger des documentations technique et d'utilisation
Exploiter un environnement de développement et de tests
Recueillir et mettre à jour les informations sur une version
Évaluer la qualité d'une solution applicative
Analyser et corriger un dysfonctionnement
Mettre à jour des documentations
Élaborer et réaliser les tests des éléments mis à jour
Exploiter des données à l'aide d'un langage de requêtes
Développer des fonctionnalités au sein d'un SGBD
Concevoir ou adapter une base de données
Administrer et déployer une base de données

Dans chaque case, écris une preuve précise, pas une croix : « ParcDao.cs, requêtes paramétrées » vaut mieux que « oui ». Une case que tu ne sais pas justifier est une case vide.

Exercice corrigé : la matrice de Lina

Exercice Remplir la matrice et trouver les trous Réussi À revoir

Lina, étudiante en 2e année SLAM, présentera ces deux réalisations, faites pour l'entreprise fictive Sorbier Logistique.

Réalisation 1, GestParc (1re année, atelier de professionnalisation, d'avril à juin, seule). Application de bureau C# WinForms (.NET 10) pour le service informatique. Elle gère les postes, les logiciels et leurs installations. Base MySQL 8.4 de 7 tables, modélisée en MCD puis en MLD. Accès aux données par MySqlConnector, avec des requêtes paramétrées dans des classes DAO. Une procédure stockée affecte un poste à un employé. Un écran de recherche filtre les postes. Tests : un cahier de recette manuel de 15 cas. Un guide utilisateur de 6 pages. Dépôt Git de 48 commits.

Réalisation 2, Sorbier Frais (2e année, ateliers de professionnalisation, d'octobre à février, en binôme : Lina a fait l'API et la base, son binôme le front). Application web de notes de frais : API REST Node.js 24 et Express 5, front React, base MySQL 8.4. Authentification par jeton JWT, deux rôles (salarié, comptable). 31 tests Vitest et supertest lancés par GitHub Actions à chaque push. README technique et documentation de l'API. Version 1.1 : correction d'un bug de filtre par date signalé dans le ticket n° 12, notée dans le CHANGELOG. Un compte MySQL applicatif limité à SELECT, INSERT et UPDATE. Une sauvegarde mysqldump chaque nuit.

  1. Remplis la matrice de couverture de Lina.
  2. Trouve les sous-compétences mal couvertes et propose, pour chacune, un ajout réaliste d'ici le dépôt du dossier.
  3. Ses deux réalisations respectent-elles le point 3.2 de l'annexe II.E (trois situations, appel de service distant) ?
  4. Quel risque crée le travail en binôme, et comment le réduire ?
Voir la réponseMasquer la réponse de l'exercice

1. La matrice. R1 = GestParc, R2 = Sorbier Frais.

Sous-compétenceR1R2Preuve
Analyser un besoin et son contexte juridiqueouipartielcahiers des charges ; rien n'est écrit sur les données personnelles de R2
Participer à la conception de l'architectureouiouischéma 3 tiers de R2
Modéliser une solution applicativeouiouiMCD et MLD de R1, MLD de R2
Exploiter les ressources du frameworkouiouiWinForms ; Express et React
Identifier, développer, utiliser ou adapter des composantsouiouiclasses DAO ; middleware d'authentification, bibliothèques bcrypt et jsonwebtoken
Échanges entre applications par les technologies WebnonouiAPI REST JSON appelée par le front
Utiliser des composants d'accès aux donnéesouiouiMySqlConnector ; mysql2
Intégrer en continu les versionspartielouiGitHub Actions lance les tests à chaque push
Réaliser les tests de validationouiouicahier de recette ; 31 tests automatisés
Rédiger des documentationsouiouiguide utilisateur ; README et doc de l'API
Exploiter un environnement de développement et de testsouiouiVisual Studio ; VS Code, Vitest
Recueillir et mettre à jour les informations sur une versionnonouiticket n° 12, CHANGELOG 1.1
Évaluer la qualiténonnonaucune trace
Analyser et corriger un dysfonctionnementnonouicorrection du ticket n° 12
Mettre à jour des documentationsnonpartielCHANGELOG oui, README pas mis à jour
Tester les éléments mis à journonà vérifierun test de non-régression a-t-il accompagné la correction ?
Exploiter des données avec un langage de requêtesouiouirequêtes de recherche, jointures
Développer des fonctionnalités au sein d'un SGBDouinonprocédure stockée d'affectation
Concevoir ou adapter une baseouiouibase parc ; base frais
Administrer et déployer une basenonpartielcompte limité et sauvegarde, mais aucun test de restauration

2. Les trous et les ajouts.

  • Évaluer la qualité : rien. Ajouter ESLint à R2, corriger ses alertes et noter dans le CHANGELOG ce que la refactorisation a changé (une fonction de calcul dupliquée dans deux contrôleurs, regroupée dans un module testé).
  • Administrer et déployer une base : la sauvegarde existe, sa restauration n'a jamais été testée. Restaurer le dump de la nuit sur une base frais_test, compter les lignes des tables, écrire la procédure dans la documentation.
  • Contexte juridique : ajouter à R2 une page sur les données personnelles (qui voit quelle note, durée de conservation des justificatifs, comptes supprimés au départ du salarié). Le cours Droit et RGPD donne les règles.
  • Tester les éléments mis à jour : si la correction du ticket n° 12 n'a pas de test, en écrire un qui échoue avec l'ancien code et passe avec le nouveau, et mettre le README à jour.

Après ces ajouts, chaque sous-compétence a au moins une preuve.

3. L'annexe II.E. Oui. GestParc est un client lourd, Sorbier Frais a du code dans le navigateur (React) et sur un serveur (l'API) : trois situations sur quatre. L'appel du front à l'API REST est un appel à un service applicatif distant. Les deux applications accèdent à des données hébergées sur un serveur, avec des comptes et des droits. La procédure stockée de GestParc montre un SGBD avec langage de programmation.

4. Le binôme. La commission peut demander une évolution qui touche le front React, que Lina n'a pas écrit. Elle doit lire tout le code du front, savoir le lancer, et refaire seule une petite évolution d'écran avant l'épreuve, par exemple un filtre sur la liste des notes. Sur la fiche, elle coche « en équipe » et précise sa part.

Tu avais trouvé ?

Chapitre terminé !

Fais l'exercice avant de passer à la suite : c'est en t'entraînant que tout se fixe.

chapitres
–
de série
–
du cours
–
Chapitre suivant : Le dossier E6 : fiches descriptives et éléments techniquesRevoir le sommaire du cours