PERT : Méthode graphique qui planifie les tâches d’un projet avec leurs dépendances
et identifie le chemin critique.
Gantt : Diagramme en barres qui représente la durée et l’ordonnancement des tâches
dans le temps.
Chemin Critique (CPM) : Suite de tâches qui détermine la durée minimale du projet,
sans marge de retard.
MPM : Variante de PERT où les tâches sont représentées par des flèches et les
événements par des nœuds.
Bug : Erreur dans le code qui cause un dysfonctionnement.
Code smell : Indication d'un problème potentiel qui pourrait nuire à la qualité ou à la
maintenabilité du code.
DevOps : Méthode qui aide les équipes de développement et d'opérations à travailler
ensemble pour livrer des logiciels plus rapidement.
CI (Intégration Continue) : Pratique où le code est fréquemment intégré et testé
automatiquement pour détecter rapidement les erreurs.
CD (Livraison Continue) : Automatisation du processus de préparation du code pour qu'il soit
toujours prêt à être déployé en production.
CD (Déploiement Continu) : Automatisation complète, où le code validé est directement
déployé en production sans intervention manuelle.
Jenkins : Outil pour automatiser les tests et déploiements de logiciels.
Sonar : Outil qui vérifie la qualité du code et détecte des erreurs ou des problèmes.
CI (Intégration Continue) est l'automatisation de l'intégration du code, tandis que .
CD (Déploiement Continu) est l'automatisation de la mise en production du code.
La MOA (client) définit les besoins du projet, tandis que la MOE (développeur) réalise
techniquement le projet selon ces besoins.
Git est un système de contrôle de version qui suit les modifications d'un projet.
Gitlab cid cd en polus .
GitHub héberge des projets Git en ligne, permettant de collaborer à distance.
1. Product Owner
2. Scrum Master
3. Product Backlog
4. Sprint Planning
5. Sprint Backlog
6. Daily Scrum (Stand-up Meeting)
7. Sprint (cycle de développement)
8. Increment (livrable)
9. Sprint Review / Retrospective
L'intégration entre Git et Jira permet de lier les commits aux tickets Jira en ajoutant l'ID du
ticket dans le message de commit. Exemple :
git config --global [Link] "Votre Nom" : Configure votre nom.
git config --global [Link] "votre_email@[Link]" : Configure
votre email.
git config --list : Affiche les configurations actuelles.
git config --unset [Link]
git config --unset [Link]
2. Initialisation et Clonage
git init : Initialise un dépôt Git local.
git clone URL : Clone un dépôt distant.
3. Informations sur le Dépôt
git status : Affiche l'état actuel des fichiers.
git log : Montre l'historique des commits.
git log --oneline : Affiche l'historique en une seule ligne par commit.
git show <commit> : Affiche les détails d'un commit spécifique.
git diff : Compare les changements non validés.
git diff <branch> : Compare votre branche actuelle avec une autre branche.
git log -5 # Affiche les 5 derniers commits
git log --author="Jean"
4. Ajout et Validation des Changements
git add <fichier> : Ajoute un fichier spécifique au staging.
git add . : Ajoute tous les fichiers modifiés au staging.
git commit -m "message" : Valide les modifications avec un message.
git commit -am "message" : Ajoute et valide les modifications directement.
5. Branches
git branch : Affiche les branches existantes.
git branch <nom> : Crée une nouvelle branche.
git checkout <nom> : Bascule sur une branche existante.
git checkout -b <nom> : Crée et bascule sur une nouvelle branche.
git merge <nom_branches> : Fusionne une branche dans la branche actuelle.
git branch -d <nom> : Supprime une branche localement.
git branch -D <nom> : Force la suppression d'une branche.
6. Synchronisation avec un Dépôt Distant
git remote add origin URL : Associe un dépôt distant.
git remote -v : Vérifie les dépôts distants associés.
git fetch : Récupère les modifications depuis le dépôt distant. Sans fusion
git pull : Récupère et fusionne les modifications depuis le dépôt distant.
git push : Envoie les commits locaux vers le dépôt distant.
git push -u origin <branche> : Pousse une branche spécifique et la lie au dépôt
distant.
7. Annulation des Changements
git reset <commit_hash> ou fichier : Réinitialise l'historique de la branche et
peut affecter le staging area et le répertoire de travail selon l'option utilisée.
git revert <commit_hash> : Crée un nouveau commit qui annule les modifications
d'un commit précédent sans affecter l'historique.
11. Collaboration et Résolution de Conflits
git fetch origin : Récupère les mises à jour du dépôt distant. Sans fusion
git pull origin <branche> : Récupère et fusionne une branche spé[Link]
fussion
git merge <branche> : Fusionne une branche dans la branche actuelle.
git mergetool : Lance un outil graphique pour résoudre les conflits.
git rebase <branche> : Rebase une branche sur une autre.
git rebase --abort : Annule un rebase en cours.
Exactement ! Voici un résumé encore plus simple :
Merge avec conflit : Deux fichiers dans deux branches ont des modifications
différentes. Lors du merge, il faut résoudre le conflit manuellement.
Merge fast forward : Le merge est simple, car une branche peut juste "avancer" pour
intégrer les changements, sans conflit.
1. Sur la branche main, créez une modification dans le fichier [Link] :
bash
Copier le code
git checkout main
echo "Modification sur main" > [Link]
git add [Link]
git commit -m "Modification sur main"
Cela remplace le contenu de [Link] par "Modification sur main".
2. Sur la branche br, faites une modification différente mais sur la même ligne
dans [Link] :
bash
Copier le code
git checkout br
echo "Modification sur br" > [Link]
git add [Link]
git commit -m "Modification sur br"
Cela remplace aussi le contenu de [Link] mais avec "Modification sur br".
3. Retournez sur la branche main et effectuez le merge de br :
bash
Copier le code
git checkout main
git merge br
À ce stade, Git générera un conflit, car les deux branches ont modifié le même fichier
([Link]), et Git ne saura pas quelle version choisir.
4. Résolution du conflit :
Ouvrez le fichier [Link] pour voir les conflits. Il ressemblera à ceci :
php
Copier le code
<<<<<<< HEAD
Modification sur main
=======
Modification sur br
>>>>>>> br
Vous devrez choisir quelle version vous voulez conserver (ou combiner les deux). Par
exemple, vous pouvez décider de garder cette version :
php
Copier le code
Modification sur main
Modification sur br
Une fois le conflit résolu, vous devez ajouter et committer le fichier :
bash
Copier le code
git add [Link]
git commit -m "Conflit résolu"
Merge : fusionne les branches et crée un commit de fusion.
Rebase : réécrit l’historique et applique les commits de la branche source directement
sur la branche cible, sans créer de commit de fusion.
.gitignore : Fichier qui spécifie les fichiers ou dossiers à ignorer par Git.
README : Fichier texte qui fournit des informations sur le projet, souvent utilisé
pour la documentation.
git fetch : Récupère les modifications du dépôt distant (nouveaux commits,
branches, etc.) et les met à jour dans votre dépôt local, mais sans affecter votre
branche locale actuelle. Vous devez ensuite utiliser git merge ou git rebase pour
intégrer ces modifications dans votre branche locale si vous le souhaitez.
git pull récupère les dernières modifications du dépôt distant et les intègre dans la branche
locale, en préservant l'historique des commits.
git clone : Crée une copie d'un dépôt distant sur votre machine locale en préservant l'historique
des commits
git merge fusionne les changements de deux branches sans réécrire l'historique des
commits. Cela crée un commit de fusion (merge commit) qui rassemble les
modifications des deux branches.
git rebase réécrit l'historique en appliquant les commits de votre branche locale
directement sur la branche cible, ce qui représente l'historique de manière linéaire.
Il n'y a pas de commit de fusion, mais les commits locaux sont modifiés pour
apparaître après les commits de la branche cible.
Voici un récapitulatif des réponses et des questions pour s'assurer qu'il n'y a rien oublié :
Partie 1 - Méthodologie Agile et Outils de Collaboration
Q4: Retour sur investissement de l’adoption de l’approche agile :
Réponse: L’approche agile peut améliorer la productivité des équipes, réduire le délai
de mise sur le marché, améliorer la satisfaction client et optimiser les coûts en
permettant des ajustements fréquents et rapides pendant le projet.
Q5: Rôle des plateformes de travail collaboratif intégré :
Réponse: Elles facilitent la communication, la gestion de projets, le partage de fichiers
et la collaboration entre équipes, en centralisant les informations et les tâches.
Exemples : Slack, Microsoft Teams, Asana.
Partie 2 - Outils de Versions (Git et GitLab)
Q1: Différence entre Git et GitLab :
Réponse: Git est un système de gestion de versions décentralisé, tandis que GitLab est
une plateforme qui héberge des projets Git avec des fonctionnalités supplémentaires
comme le suivi des problèmes, l'intégration continue et le déploiement continu.
Q2: Commande Git pour récupérer le code source du projet :
Réponse: git clone [Link]
Q3: Commande Git pour configurer l'email associé aux commits :
Réponse: git config --global [Link] "tonemail@[Link]"
Q4: Séquence de commandes pour sauvegarder un fichier '[Link]' dans le HEAD :
Réponse :
1. git add [Link]
2. git commit -m "Ajout du fichier [Link]"
3. git push
Q5: Commande Git pour pousser le contenu du dépôt local vers le dépôt distant :
Réponse: git push origin main
Commandes Git supplémentaires :
a. Télécharger le projet dans le PC local :
git clone [Link]
b. Télécharger les dernières modifications :
git pull
c. Créer et switcher vers une nouvelle branche "b1" :
git checkout -b b1
d. Supprimer une branche "b2" :
git branch -d b2
e. Afficher l'état actuel des changements :
git status
f. Afficher l'historique des commits :
git log
g. Revenir au commit N° «234040» :
git checkout 234040
Fusionner la branche "b1" dans "develop" (depuis la branche b1) :
git checkout develop
git merge b1
Partie 3 - Qualité de Code
Q1: Nom du logiciel utilisé :
Réponse: Il s'agit probablement d'un outil d'analyse statique de code comme
SonarQube.
Q2: Signification de "A" dans MANTENABILITY :
Réponse: "A" signifie une excellente maintenabilité du code.
Q3: Différence entre un Bug et un Code Smell :
Réponse: Un bug est une erreur qui affecte le fonctionnement du programme, tandis
qu'un "code smell" est un indice de mauvaise conception du code qui peut entraîner
des problèmes à long terme mais ne constitue pas une erreur immédiate.
Partie 4 - Déploiement Continu (CD)
Q1: Définition du déploiement continu (CD) :
Réponse: Il s'agit d'une pratique DevOps où les modifications de code sont
automatiquement préparées pour être publiées en production.
Partie 5 - Jira et Gestion des Sprints
Q1: Type de ticket pour chaque situation :
a. Créer un nouveau produit : Task
b. Fixer l'erreur de calcul du prix TTC : Bug
c. Gestion des Produits : Epic
d. Changer le mot de passe de l'administrateur : Task
e. Développer le design HTML : User Story
Q2: Comment choisir les tickets à ajouter dans un sprint ?
Réponse: Les tickets les plus prioritaires.
Q3: Durée du nouveau sprint ?
Réponse: En général, la durée d'un sprint est fixée en fonction de l'équipe et du projet.
Si un sprint précédent a duré 21 jours, il est probable que le sprint suivant ait la même
durée.
Définitions :
Sprint : Période de temps (généralement 1 à 4 semaines) pour travailler sur des tâches
spécifiques du projet.
Sprint Backlog : Liste des tâches à accomplir durant un sprint.
Q4: Cycle en Y et Modèle en cascade :
Réponse:
o Cycle en Y : Processus itératif avec des retours fréquents pour réajuster.
o Modèle en cascade : Méthode linéaire où chaque phase doit être terminée avant
de passer à la suivante.
Q5: Qui est responsable de la gestion des fonctionnalités ?
Réponse: Le Product Owner est responsable de la gestion des fonctionnalités et des
parties prenantes.
Partie 6 - Git et GitLab (Pratique)
Q1: Création d'un dépôt local nommé "projetweb02" :
git init projetweb02
Q2: Configurer le dépôt avec votre nom et email :
git config --global [Link] "Votre Nom"
git config --global [Link] "[Link]@[Link]"
Q3: Créer un fichier [Link] et l'indexer :
echo ‘h1 > [Link]
git add [Link]
Q4: Afficher l'état du répertoire de travail :
git status
Q5: Commit avec commentaire :
git commit -m "Votre fichier bien modifié"
Q6: Modifier le fichier [Link] :
Ajouter <h2>bienvenue</h2> au fichier.
git add [Link]
Q7: Afficher les différences entre le working directory et la staging area :
git diff (affiche les différences entre les fichiers modifiés et les fichiers indexés).
Q8: Copier le dépôt depuis GitLab :
git clone [Link]
Q9: Ajouter et valider les modifications sur [Link] :
git add [Link]
git commit -m "Modification sur [Link]"
Q10: Transférer les validations locales vers le dépôt distant :
git push origin main
Q11: Créer et basculer vers une branche "BrClient" :
git checkout -b BrClient
Q12: Modifier le message du fichier [Link] avec "Bonsoir" :
git add [Link]
git commit -m "Modification du message à Bonsoir"
Q13: Fusionner la branche "BrClient" dans "main" et gérer le conflit :
git checkout main
git merge BrClient
Résoudre les conflits manuellement dans [Link], puis valider :
o git commit -m "Fusion des messages 'bienvenue' et 'bonsoir'"
Partie 7 - Divers
1) Diagramme de PERT :
Réponse: Un diagramme de PERT est un outil de gestion de projet qui permet de
représenter les différentes tâches, leur durée et les dépendances entre elles.
2) Phases du cycle de vie d’un projet :
Réponse: Conception, planification, exécution, surveillance, clôture.
3) Deux méthodes traditionnelles de gestion de projet :
Réponse: Méthode en cascade, Méthode PMI.
4) Différence entre CI/CD :
Réponse: CI (Intégration Continue) est l'automatisation de l'intégration du code,
tandis que CD (Déploiement Continu) est l'automatisation de la mise en production du
code.
5) Différences majeures entre GitLab et GitHub :
Réponse: GitLab offre plus de fonctionnalités intégrées (CI/CD, gestion de projet,
etc.), tandis que GitHub se concentre davantage sur l'hébergement de code avec une
communauté plus large.
Tu vois, toutes les questions ont été couvertes ! Si tu as des précisions à ajouter ou des points
à approfondir, n'hésite pas à me le dire.
Exercice 01 (SCRUM) : (18 pts)
Q1 : Donner une définition de JIRA, epic, Tableau Kanban, Definition of Done
?
JIRA : Outil de gestion de projet Agile utilisé pour suivre les tâches et les sprints.
Epic : Une grande fonctionnalité ou un ensemble de besoins regroupés en plusieurs User
Stories.
Tableau Kanban : Outil visuel avec des colonnes ("À faire", "En cours", "Terminé") pour
suivre les tâches.
Definition of Done (DoD) : Ensemble de critères définissant quand une tâche ou une User
Story est considérée comme terminée.
Q2 : Différence entre un Product Backlog et un Sprint Backlog ?
Product Backlog : Liste de toutes les fonctionnalités demandées par le client. Il est géré par
le Product Owner.
Sprint Backlog : Sous-ensemble du Product Backlog, sélectionné pour un sprint spécifique.
Q3 : Quels sont les quatre événements Scrum ?
1. Sprint Planning : Planification des tâches du sprint.
2. Daily Scrum : Réunion quotidienne pour suivre l’avancement.
3. Sprint Review : Présentation du travail terminé au client.
4. Sprint Retrospective : Analyse des améliorations possibles pour le prochain sprint.
Q4 : Exemple de User Story en forme canonique ?
"En tant qu’utilisateur, je veux pouvoir trier les chaussures par prix afin de trouver rapidement
celles qui correspondent à mon budget."
Exercice 02 (Git, GitHub) : (12 pts)
Q1 : Différence entre git add, git commit et git push ?
git add : Ajoute les fichiers à l’index (préparation).
git commit : Sauvegarde les modifications localement.
git push : Envoie les modifications vers le dépôt distant.
Ordre recommandé : git add → git commit → git push.
Q2 : Différence entre .gitignore et [Link] ?
.gitignore : Liste des fichiers à ignorer dans le suivi Git (ex : fichiers temporaires, logs).
[Link] : Fichier de documentation expliquant le projet.
Q3 : Qu’est-ce qu’un conflit et comment le résoudre ?
Un conflit Git survient quand deux commits modifient la même ligne dans un fichier.
Résolution : Modifier le fichier concerné, choisir la bonne version, puis faire :
bash
CopierModifier
git add fichier_conflit
git commit -m "Résolution de conflit"
Q4 : Comment créer une nouvelle branche 'feature1' ?
bash
CopierModifier
git checkout -b feature1
Q5 : Commande pour merger 'feature1' dans 'master' ?
bash
CopierModifier
git checkout master
git merge feature1
Q6 : Différence entre git merge et git rebase ?
git merge : Fusionne les branches avec un commit de fusion.
git rebase : Applique les commits d’une branche sur une autre sans commit de fusion,
gardant l’historique linéaire.
Q7 : Ajouter un remote 'origin' à un dépôt local ?
bash
CopierModifier
git remote add origin [Link]
Q8 : Pousser la branche 'feature1' vers le remote ?
bash
CopierModifier
git push origin feature1
Q9 : Configurer le nom d’utilisateur et l’email dans Git ?
bash
CopierModifier
git config --global [Link] "Nom"
git config --global [Link] "email@[Link]"
Q10 : Différence entre git fetch et git pull ?
git fetch : Récupère les mises à jour du dépôt distant sans les fusionner.
git pull : Récupère et fusionne directement les mises à jour.
Q11 : Qu’est-ce qu’un merge request ?
Une merge request (Pull Request sur GitHub) est une demande pour fusionner une branche
dans une autre, souvent après une revue de code.
Q12 : CI/CD et deux outils utilisés ?
CI/CD (Intégration Continue / Déploiement Continu) : Automatisation des tests et du
déploiement du code.
Outils :
1. Jenkins
2. GitHub Actions
Question 9 : Identification des éléments du schéma Scrum (5
pts)
Je vais répondre aux questions du contrôle en fonction de ce que je vois sur les images. Voici
les réponses :
Partie 1 : Questions de cours (23 pts)
1. Définitions :
a. SCRUM MASTER : C'est la personne qui facilite la mise en œuvre de la méthode
Scrum en aidant l'équipe à respecter les principes agiles.
b. Méthode SCRUM : C'est une méthode agile de gestion de projet qui repose sur des
itérations appelées "sprints" et encourage la collaboration entre les membres de
l’équipe.
2. Signification des termes :
a. PERT : Programme Evaluation and Review Technique, une méthode de
planification et de gestion de projet basée sur un diagramme.
b. EPIC : Une grande fonctionnalité ou une grosse tâche qui doit être découpée en
plusieurs User Stories dans la gestion de projet agile.
c. MOA/MOE : Maîtrise d'Ouvrage (MOA) désigne le client ou le commanditaire
d’un projet, tandis que Maîtrise d'Œuvre (MOE) correspond aux équipes techniques
qui réalisent le projet.
3. Chemin critique et diagramme PERT :
o Le chemin critique est la séquence des tâches qui déterminent la durée
minimale du projet.
4. Explication la plus appropriée pour "User Story" :
Réponse : b. Un artefact documenté par les représentants métier pour aider les
développeurs et testeurs à comprendre les exigences.
5. Qui veille aux valeurs et piliers Scrum ?
Réponse : b. Scrum Master
6. Que faire si on sélectionne trop d’éléments dans un sprint ?
Réponse : d. Informer le Product Owner
7. Quand une rétrospective Sprint est-elle effectuée ?
Réponse : d. À la fin de chaque Sprint
8. Qu'est-ce que SonarQube ?
Réponse : b. Un logiciel open source qui mesure la qualité du code source.
9. Déploiement continu :
Réponse : c. Le déploiement continu est une suite de l'intégration continue.
Partie 2 : GIT (6 pts)
1. Créer un repository Git :
2. mkdir depot_local
3. cd depot_local
4. git init
5. Lier le repository local à un dépôt distant (exemple GitHub) :
6. git remote add origin <URL_du_repository>
7. Ajout de fichiers et commit :
8. touch [Link] [Link] [Link]
9. git add .
10. git commit -m "Ajout des fichiers vides"
11. Créer une branche et basculer dessus :
12. git branch Gestion_produits
13. git checkout Gestion_produits
14. Commit des modifications, retour à master et fusion :
15. git commit -am "Modification des fichiers"
16. git checkout master
17. git merge Gestion_produits
18. Afficher le log sous une seule ligne et push :
19. git log --oneline
20. git push origin master
21. Supprimer l'historique des commits et réinitialiser les fichiers :
22. git reset --hard HEAD~1
23. git push --force
Bug : Erreur dans le code qui cause un dysfonctionnement.
Code smell : Indication d'un problème potentiel qui pourrait nuire à la qualité ou à la
maintenabilité du code.