Aller au contenu

Les 11 Compétences RNCP CDA (2023)

  1. Installer et configurer son environnement de travail en fonction du projet.
  2. Développer des interfaces utilisateur
  3. Développer des composants métier
  4. Contribuer à la gestion d’un projet informatique
  5. Analyser les besoins et maquetter une application
  6. Définir l’architecture logicielle d’une application
  7. Concevoir et mettre en place une base de données relationnelle
  8. Développer des composants d’accès aux données SQL et NoSQL
  9. Préparer et exécuter les plans de tests d’une application
  10. Préparer et documenter le déploiement d’une application
  11. Contribuer à la mise en production dans une démarche DevOps

Interactions entre les différentes compétences

Il n’y a que 2 compétences qui ne figurent pas dans ce diagramme : les n°1 et n°4

1. Installer et configurer son environnement de travail en fonction du projet

Objectif

Préparer un environnement de développement adapté au projet (Langage, IDE, Frameworks,…).

Outils

Exemple de configuration Maven

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.5.5</version>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

2. Développer des interfaces utilisateur (IHM, UI Design, maquettes)

Objectif

Concevoir des interfaces Responsives, Ergonomiques et Accessibles.

Technologies associées

Exemple avec Thymeleaf

<!-- src/main/resources/templates/accueil.html -->
<h1 th:text="'Bonjour, ' + ${nom}">Bonjour</h1>
@Controller
public class AccueilController {
    @GetMapping("/")
    public String accueil(Model model) {
        model.addAttribute("nom", "Étudiant·e CDA");
        return "accueil";
    }
}

3. Développer des composants métier

Objectif

Implémenter la logique fonctionnelle dans des services réutilisables.

Architecture recommandée

Exemple simple

@Service
public class CalculerService {
    public int addition(int a, int b) {
        return a + b;
    }
}
@RestController
@RequestMapping("/calculer")
public class CalculController {
    @Autowired
    private CalculerService service;

    @GetMapping("/add")
    public int addition(@RequestParam int a, @RequestParam int b) {
        return service.addition(a, b);
    }
}

4. Contribuer à la gestion d’un projet informatique

Objectif

Savoir organiser le travail en équipe et suivre l’avancement d’un projet web, application standalone ou autre.

Outils & méthodes

Exemple de branche Git

git checkout -b feature/gestion-utilisateur

5. Analyser les besoins et maquetter une application

Objectif

Transformer les besoins clients en maquettes et spécifications.

Outils que l’on peut utiliser


6. Définir l’architecture logicielle d’une application

Objectif

Structurer le projet et choisir les bons composants.

Architecture classique Spring Boot

/controller
/service
/dto
/model
/repository
/config

Exemple d’API REST

@RestController
@RequestMapping("/api/utilisateurs")
public class UtilisateurController {
    @Autowired
    private UtilisateurService service;

    @GetMapping
    public List<Utilisateur> getAll() {
        return service.getAll();
    }
}

7. Concevoir et mettre en place une base de données relationnelle

Objectif

Modéliser avec un MCD ou UML , créer et alimenter une base SQL.

Outils

Exemple d’entité JPA

@Entity
public class Utilisateur {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String nom;
    private String email;
}

8. Développer des composants d’accès aux données SQL et NoSQL

Objectif

Lire/écrire des données depuis des bases différentes.

Outils Spring Boot (dans notre cas)

Exemple JPA Repository

@Repository
public interface UtilisateurRepository extends JpaRepository<Utilisateur, Long> {
    List<Utilisateur> findByNom(String nom);
}

9. Préparer et exécuter les plans de tests d’une application

Objectif

Vérifier la stabilité du code grâce aux tests.

Outils

Exemple de test Spring Boot

@SpringBootTest
class CalculServiceTest {

    @Autowired
    private CalculService service;

    @Test
    void testAddition() {
        assertEquals(5, service.addition(2, 3));
    }
}

10. Préparer et documenter le déploiement d’une application

Objectif

Faciliter l’installation, le lancement et la documentation de votre projet.

Outils

Exemple Dockerfile

FROM eclipse-temurin:17-jdk
COPY target/monapp.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]

11. Contribuer à la mise en production dans une démarche DevOps

Objectif

Automatiser les tests, les build, les déploiements et la supervision.

Outils DevOps

Exemple d’un fichier .gitlab-ci.yml

stages:
  - build
  - test
  - deploy

build:
  script: mvn clean package (lancer de maven, nettoyer, compiler et empaqueter dans un jar)

test:
  script: mvn test (lancer les tests unitaires si ko, notre pipeline s'arrête)

deploy:
  script: docker build -t monapp . && docker run -d -p 8080:8080 monapp (créer une image docker nommée monapp et lance le conteneur)

Explications

C’est la liste des étapes (stages) de du pipeline CI/CD dans GitLab. Les tâches (jobs) s’exécutent dans l’ordre.

Nous verrons cela en détail dans la partie DevOps avec GitLab

Un diagramme UML d’Activités avec PlantUML pour une petite mise en bouche du premier cours sur UML…


Projet SpringBoot et Compétences validées

Un projet avec Spring Boot (sans la partie Front-end) permet de valider 8 compétences sur les 11 du titre CDA :

On peut aussi valider les 3 autres compétences partiellement ou en totalité :