Ecole Numérique Ardéchoise

Développer des composants métier coté serveur

Description de la compétence – processus de mise en œuvre

À partir des fonctionnalités décrites dans le dossier de conception technique, et dans le respect des

A partir du dossier de conception, développer les traitements de l’application coté serveur avec
des composants métier sécurisés, dans un style défensif, et éventuellement en asynchrone.
Respecter les bonnes pratiques de la programmation orientée objet et les règles de nommage décrites
dans les normes de qualité de l’entreprise.
Documenter le code y compris en langue anglaise.
Vérifier la qualité du code, éventuellement à l’aide d’un utilitaire de contrôle de qualité de code.
Réaliser un jeu d’essai fonctionnel et les tests unitaires des composants.
Réaliser les tests de sécurité.
Déterminer une démarche structurée de résolution de problème en cas de découverte d’un
dysfonctionnement lors de l’analyse des résultats des tests unitaires ou de sécurité.

Contexte(s) professionnel(s) de mise en œuvre

Cette compétence s’exerce seul ou en équipe.
Le développement de composants métier coté serveur s’effectue à partir du dossier de conception et à l’aide de l’environnement de développement défini.

Critères de performance

Les traitements répondent aux fonctionnalités décrites dans le dossier de conception
Les composants métier sont sécurisés
Les bonnes pratiques de la programmation orientée objet (POO) sont respectées
Les règles de nommage sont conformes aux normes de qualité de l’entreprise
Le code source est documenté, y compris en anglais
La qualité du code est vérifiée, éventuellement à l’aide d’un utilitaire de contrôle de qualité de code
Un jeu d’essai fonctionnel et les tests unitaires ont été réalisés pour les composants concernés
Les tests de sécurité sont réalisés
La démarche structurée de résolution de problème est adaptée en cas de dysfonctionnement

Savoir-faire techniques, savoir-faire organisationnels, savoir-faire relationnels, savoirs

Savoir s’adapter dans une démarche de développement de type Agile
Savoir s’adapter dans une démarche de développement de type traditionnelle
Comprendre les éléments de conception
Coder dans un langage orienté objet avec un style défensif
Développer en utilisant une architecture logicielle multicouche répartie sécurisée
Réaliser les tests unitaires, éventuellement avec des outils d’automatisation des tests unitaires
Réaliser les tests de sécurité en utilisant d’un guide de tests reconnu
Appeler des Web Services dans un composant serveur
Gérer la sécurité de l’application (authentification, permissions, validation des entrées…) dans la partie
serveur
Utiliser des composants d’accès aux données
Utiliser un service distant (Representational State Transfer Application Program Interface (API Rest)
Améliorer à fonctionnalités constantes un code existant (refactoring)
Structurer sa démarche de résolution de problème en cas de dysfonctionnement d’un composant
Utiliser les outils d’analyses statiques de code (par exemple, ceux intégrés au compilateur) et dynamiques
(par exemple débuggeur)
Mettre en place un système de veille technologique permettant de suivre les principales évolutions
technologiques et les problématiques de sécurité en lien avec les composants métier d’une application

Documenter le code
Vérifier la qualité du code, éventuellement à l’aide d’un utilitaire de contrôle de qualité de code
Planifier et suivre les tâches de développement
Travailler en équipe
Écouter, reformuler et faire la synthèse des besoins des utilisateurs
Participer à une réunion de travail avec les utilisateurs
Connaissance d’une démarche de développement de type Agile
Connaissance d’une démarche de développement de type traditionnelle
Connaissance d’une méthode de conception
Connaissance du formalisme des diagrammes de modélisation
Connaissance des bonnes pratiques de la qualité logicielle
Connaissance de la programmation orientée objet
Connaissance des architectures logicielles multicouches réparties sécurisées, y compris avec des microservices
Connaissance des frameworks des langages utilisant une architecture web
Connaissances des outils d’automatisation des tests unitaires
Connaissance de la place et de l’impact des tests dans le cycle de vie du projet
Connaissance des principes et des règles du développement sécurisé
Connaissance du guide de recommandations de mise en oeuvre d’un site Web de l’agence nationale de la
sécurité des systèmes d’information (ANSSI)
Connaissance du site du Centre gouvernemental de veille, d’alerte et de réponse aux attaques
informatiques (CERT-FR)
Connaissance des principales vulnérabilités et attaques contre les architectures multicouches réparties
Connaissance des principes et des patrons de sécurité applicables à l’architecture multicouche répartie
Connaissance du vocabulaire technique associé aux bases de données
Connaissance des différents patrons de conception (design pattern) et d’architecture
Connaissance des modèles de conception relatifs aux accès aux données relationnelles ou non
relationnelles (patrons de conception (Design Pattern), object-relational mapping (ORM), …)
Connaissance du principe de connexion à une base de données à partir d’un logiciel d’interface
(Middleware)
Connaissance des formats de données (fichiers JSON, XML, …)
Connaissance des bases de la cryptographie et des mécanismes de sécurité
Connaissance d’un guide de tests reconnu, par exemple l’Open Web Application Security Project
(OWASP) pour le web
Connaissance des principales failles de sécurité des applications web (XSS, CSRF) et de leurs parades
Connaissance du vocabulaire professionnel technique en français et en anglais
Connaissance des outils d’analyses de code statiques (par exemple, ceux intégrés au compilateur) et
dynamiques (par exemple débuggeur)
Connaissance des utilitaires de qualité de code
Connaissance des principales sources d’information sur les évolutions technologiques des composants
métier d’une application