Processus 2 Flashcards

(56 cards)

1
Q

Comprendre le contexte qui a mené à l’agilité en développement logiciel et pourquoi on a voulu l’accélérer

A

➢ Le monde des affaires opère de plus en plus dans un environnement globalisé où:
1) le logiciel est omniprésent;
2) la vitesse de réponse aux opportunités et aux conditions changeantes devient cruciale.
➢ En raison de ce nouvel environnement d’affaires en mouvance, il devient souvent impossible d’obtenir un ensemble de requis stables. Il faut parfois une première version du logiciel avant de comprendre tous les besoins des utilisateurs.
➢ Le besoin de méthodes pour un développement logiciel rapide est connu depuis 1980. Il s’agit de développer du logiciel utile rapidement.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Pouvoir expliquer les valeurs de l’agilité

A
  • Les individus et les interactions priment sur les processus et les outils: on sentait que les expertises étaient moins importantes et avant le focus était surtout sur le processus, alors qu’il est important de miser que le potentiel de créativité, l’expertise et la communication
  • Les logiciels opérationnels priment sur la documentation compréhensive: revenir au code et aux artéfacts plutôt que juste se concentrer sur la documentation
  • La collaboration avec le client priment sur la négociation d’un contrat : impliquer les clients dans le travail et ne pas les voir seulement comme ceux qui donne le travail, collaborer activement avec
  • L’adaptation aux changements priment sur le suivi d’un plan: voir les changements comme des opportunités
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Les principes de l’agilité

A
  • Satisfaire le client est la priorité (vérifier la satisfaction et être en interaction)
    • Accueillir les demandes de changement
    • Livrer le plus souvent possible des versions opérationnelles de l’application
    • Assurer une coopération permanente entre le client et l’équipe du projet
    • Construire des projets autour d’individus motivés
    • Privilégier la conversation en face à face
    • Mesurer l’avancement du projet en termes de fonctionnalités de l’application
    • Faire avancer le projet à un rythme soutenable et constant
    • Porter une attention continue à l’excellence technique et à la conception
    • Favoriser la simplicité
    • Responsabiliser les équipes: les meilleures architectures, spécifications et conceptions émergent d’équipes auto-organisées.
      Ajuster, à intervalles réguliers, son comportement pour être plus efficace
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Comprendre l’agilité par rapport à l’organisation systématique du travail et la responsabilisation des développeurs

A

En développement logiciel, les pratiques agiles mettent en avant la collaboration entre des équipes autoorganisées et pluridisciplinaires et leurs clients. Elles s’appuient sur l’utilisation d’un cadre méthodologique léger mais suffisamment centré sur l’humain et la communication. Elles préconisent une planification adaptative, un développement évolutif, une livraison précoce et une amélioration continue, et elles encouragent des réponses flexibles au changement

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

inconvénients des approches structurées

A

➢ Les approches disciplinées, à moins d’être judicieusement adaptées, impliquent un effort important de planification, de conception et de documentation.
➢ Pour les petits et moyens projets, cet effort devient trop important relativement à l’effort total de développement et peut même dominer le processus.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

inconvénients des approches agiles

A

➢ Difficultés d’application:
▪ La collaboration active du client est difficile à obtenir.
▪ Lorsque l’équipe de développement souffre d’un manque de cohésion entre ses membres.
▪ La difficulté à maintenir la continuité de l’équipe de développement.
▪ Lorsqu’il y a plusieurs intervenants et que ceux-ci priorisent des requis différents.
▪ Maintenir la simplicité demande davantage de travail.
▪ Les grandes organisations ont mis des années à implanter un processus structuré. Elles sont résistantes au changement.
▪ Les cycles d’évolution lors de projet de maintenance seront plus coûteux puisque l’absence de documentation ralentit le travail (dans le cas du document de spécification en particulier).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Droits du client en EP

A
  • Droit du client:
    ➢ Vous avez le droit de changer d’avis, de substituer des fonctionnalités et de changer des priorités.
    ▪ Pour maximiser votre investissement.
    ➢ Vous avez le droit de voir l’avancement du produit, prouvé par des tests d’acceptation répétables.
    ➢ Vous avez le droit d’être informé de changements de planification à temps pour choisir les solutions pour respecter vos échéances. Vous pouvez même annuler à tout moment le développement du produit et garder le résultat du travail reflétant l’investissement jusqu’à date.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Devoirs du client en EP

A
  • Devoirs du client:
    ➢ Faire confiance aux décisions techniques des développeurs
    ➢ Analyser les risques des récits adéquatement
    ➢ Choisir les récits ayant le plus d’impact
    ➢ Fournir des récits précis
    ➢ Travailler au sein de l’équipe
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

droit du développeur en EP

A
  • Droit du développeur:
    ➢ Vous avez le droit de dire combien de temps chaque récit vous prendra pour l’implémenter ainsi que de réviser les estimations.
    ➢ Laisser au client les décisions d’affaire.
    ➢ Vous avez le droit de produire un produit de qualité à tout moment, qui satisfait les besoins du client.
    ➢ Vous avez le droit à un travail productif, agréable et amusant, avec un horaire prévisible et sensé
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Devoirs du développeur

A

➢ Suivre les directives de l’équipe pour que le système soit simple et bien testé.
➢ Développer uniquement ce qui est demandé pour garder le projet simple et de grande valeur pour le client.
➢ Communiquer constamment avec le client pour comprendre ses enjeux et lui fournir l’information nécessaire à ses décisions.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Connaître les valeurs de la méthode agile XP

A

Les valeurs XP:
▪ Communication
▪ Simplicité
▪ Rétroaction
▪ Courage
▪ Respect (2004)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Connaître les pratiques de la méthode agile XP

A

Pratique:
Vue Client :
➢Équipe tout entière
▪ S’asseoir ensemble – On travaille dans un espace ouvert qui peut contenir toute l’équipe.
▪ Client présent – Le client est assis avec l’équipe à plein temps. C’est un membre de l’équipe.
▪ Espace de travail ouvert et informatif – L’espace de travail devrait être consacré au projet. .

➢Tests client
▪ Récit utilisateur – Une fonctionnalité que le client désire avoir.
▪ Tests client – Tests conçus par le client qui lui permettent de vérifier le progrès du développement.

➢Jeu de planification - Le client décide le but et la planification des livraisons en se basant sur les évaluations fournies par des développeurs. Ceux-ci font l’implémentation seulement de la fonctionnalité exigée par les récits de cette itération.
1) Release planning
2) Iteration planning: features -> tâches

➢Livraisons fréquentes - Le système est mis en production immédiatement, l’ensemble minimal de requis offrant une valeur marchande est implémenté. Le système peut être intégré une ou plusieurs fois par jour. Un livrable est remis au client à toutes les deux semaines environ.

Vue Équipe :
➢Intégration continue - Le nouveau code est intégré avec le système très rapidement. Tous les tests doivent être réussis sinon les fonctionnalités sont éliminées.
➢Propriété collective - Les programmeurs améliorent n’importe quelle section du code, n’importe où dans le système, à tout moment, s’ils en voient l’occasion.
➢Métaphores - Le système est défini par une métaphore ou par un jeu de métaphores partagées entre le client et les programmeurs. Une métaphore est une histoire que chacun peut raconter en se référant au système.
➢Standard de programmation – Pour faciliter la compréhension du code.
➢40-heures semaine (rythme soutenable) - Personne ne peut travailler d’heures supplémentaires.

Vue Programmeur
➢Développement piloté par les tests (TDD) - Les programmeurs écrivent les tests unitaires avant de coder. Les clients écrivent les tests fonctionnels pour les récits de l’itération.
➢Programmation en paire - Tout le code de production est écrit par deux personnes à un écran / clavier / souris
➢Réusinage - La technique de transformation de code pour l’améliorer sans modifier le comportement. Cette pratique est concourante à l’implémentation.
➢Conception simple – On fait juste assez de design pour implémenter les requis de l’itération courante. Pas plus. On reporte les décisions pour lesquelles on n’a pas d’information

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Définir ce qu’est un récit utilisateur

A

3 aspects aux récits utilisateur:
- Une description écrite du récit
- Des conversations à propos des récits qui servent à fournir les détails
- Des tests qui documentent les détails et qui servent à déterminer si l’implémentation du récit est complétée

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Avantages des récits utilisateur

A
  • Encouragent la communication verbale plutôt qu’écrite
    • Sont très faciles à comprendre
    • Ont une taille parfaite pour l’estimation et la planification
    • Conviennent très bien à du développement itératif rapide
      Encouragent d’attendre qu’on soit rendu à leur implémentation avant d’obtenir trop de détails
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Connaître les attributs de bons récits utilisateur (INVEST)
Attributs de bons récits

A
  • Indépendant: éviter d’introduire des dépendances entre les récits
    • Négociable: les récits ne sont pas des contrats
    • A de la valeur pour le client/utilisateur: il faut éviter les récits orientés vers les développeurs, le client peut être à l’origine de contrainte quand meme
    • Estimable: effort estimé par l’équipe
    • Petit
    • testable
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Connaître les méthodes pour obtenir les récits utilisateur et comprendre les conseils d’écriture des récits

A

➢ Les techniques pour obtenir les récits (trawling selon Cohn) sont les mêmes que pour le processus unifié.
▪ Des entrevues avec des utilisateurs
▪ Des questionnaires
▪ De l’observation
▪ Des ateliers d’écriture de récits
1. Commencer par les buts des récits Dans les grands projets, il est parfois difficile de savoir par quoi commencer. On suggère alors de considérer chacun des types d’utilisateur et de déterminer leurs motivations (leurs objectifs) à utiliser le logiciel
2. Couper une tranche du gâteau Il existe plusieurs façons différentes de diviser un récit trop vaste. La tendance des développeurs est de diviser un récit selon les frontières techniques. Les récits doivent avoir de la valeur pour le client. La fonctionnalité doit passer à travers toutes les couches
3. Écrire des récits fermés Le récit doit pouvoir se fermer, c’est-à-dire que le récit se termine en ayant atteint un ou des objectifs significatifs. Savoir quand c’est terminé et on peut donc le tester
4. Spécifier les contraintes Une catégorie spéciale de récits sont les contraintes. Celles-ci correspondent aux spécifications supplémentaires.
5. Se tenir loin du GUI aussi longtemps que possible.
6. Ne pas être dogmatique. Certaines exigences (comme des détails d’interface) se communiquent mal par récit utilisateur.
7. Écrire un récit pour un seul utilisateur. (ne pas utiliser le pluriel)
8. Utiliser le style actif plutôt que passif.
9. Insister pour que le client écrive les récits.
10. Ne pas numéroter les récits.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Savoir comment utiliser les récits utilisateur pour estimer et planifier un projet de développement logiciel

A

➢ Les récits sont estimés par les développeurs en termes de points. Ces points sont des valeurs relatives qui se réfèrent à la complexité, à l’effort et à la durée d’un récit.
➢ Les estimations sont faites par l’équipe et sont la responsabilité de l’équipe entière et non des individus.
➢ L’ordre de grandeur se compare à la vélocité. La vélocité correspond au nombre de points que l’équipe peut ou planifie compléter en une itération.
➢ En considérant les estimations, le client priorise les récits en fonction des livraisons et des itérations.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Connaître le fonctionnement de la méthodologie Scrum

A

Il y a trois phases dans SCRUM:
1. Une première phase de planification.
2. Une série de cycles de sprint. (un peu comme une itération)
3. Une dernière phase de clôture du projet.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Connaître les rôles de Scrum et leurs responsabilités

A

Les différents rôles sont:
▪ le propriétaire du produit: chargé de maximiser la valeur du produit et le travail de l’équipe. Il gère le carnet de produit (les exigences) en: ▪ exprimant clairement les items du carnet; ▪ hiérarchisant les items du carnet afin d’atteindre les objectifs du projet; ▪ s’assurant que le travail de l’équipe est de qualité;
▪ le SCRUM master: responsable de la compréhension et de l’application de SCRUM. ▪ Il est un facilitateur qui organise les mêlées quotidiennes. ▪ Il fait le suivi du travail restant à faire. ▪ Il garde une trace des décisions d’équipe. ▪ Il mesure le progrès. ▪ Il communique avec le client et l’organisation. est un meneur au service de l’équipe (Servant leader). Il sert le gestionnaire de produit. Il sert l’équipe de développement. Il sert l’organisation.
▪ les développeurs: st structurée et habilitée par l’organisation à organiser et gérer son propre travail. ➢ L’équipe de développeurs est: ▪ Auto-organisées ▪ Pluridisciplinaires ▪ Sans titre particulier pour les individus ▪ N’est pas divisée en sous-équipes avec des responsabilités particulières. ▪ Il peut exister des spécialisations, mais la responsabilité du projet est indivisible et incombe à tous

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Connaître les événements de Scrum

A

➢ Évènement 1: La réunion de planification du sprint
▪ La réunion de planification regroupe toutes les parties prenantes du projet. On y décide de l’objectif du sprint en termes d’items du carnet de produit.
▪ L’équipe de développement assemble ensuite un carnet de sprint (sprint backlog) qui contient la liste de toutes les tâches à faire pour atteindre l’objectif du sprint
➢ Évènement 2: Le sprint ▪ 15 à 30 jours d’analyse, de conception, d’implémentation et de tests pour atteindre l’objectif du sprint. ▪ Il y a des mêlées quotidiennes à chaque jour.
➢ Évènement 3: La revue de sprint ▪ Inspection en fin de sprint de l’incrément du produit et adaptation du carnet de produit si nécessaire. ▪ C’est une analyse et une démonstration de ce qui a été fait, avec les intervenants, pour réfléchir aux prochains items à être développés.
➢ Évènement 4: La rétrospective de sprint ▪ Inspection de la manière dont s’est déroulé le dernier sprint
▪ On crée un plan pour améliorer les processus de travail de l’équipe SCRUM.
➢ Évènement 5: Les mêlées quotidiennes sont: ▪ Une réunion de 15 minutes pour planifier les prochaines 24 heures. Habituellement en stand-up. ▪ Un partage d’information où l’on décrit les problèmes rencontrés, garde trace du progrès accompli (burndown chart) et fait la planification de la journée. ▪ Un mécanisme permettant à tout le monde de participer dans la planification. Le SCRUM master n’est pas celui qui assigne le travail. Il est la personne ressource pour les problèmes.
Le SCRUM prône l’auto-organisation des équipes

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Connaitre les 3 phases du SCUM

A

Phase 1: Lancement:
Il y a deux sous-phases:
▪ Planification: * Produire la liste initiale des requis du système (carnet de produit, product backlog). * Analyser les risques associés au projet. * Estimer et obtenir les ressources nécessaires pour le projet de développement. * Déterminer le calendrier général du projet.
▪ Architecture / Conception de haut-niveau: * Déterminer une architecture minimale pour le système qui intègre les requis actuels du carnet de produit.
Phase 2: Développement
➢ Les sprints ont une durée fixe. 2 à 4 semaines
➢ Le point de départ de la planification est la liste du travail à faire. Lors de l’étape d’évaluation (assess), cette liste est revue, des items sont priorisés et des risques sont identifiés. Le client est impliqué et il peut donner de nouveaux requis.
➢ Lors de la sélection (select), toute l’équipe choisit les fonctionnalités et les features à développer lors de ce cycle de sprint. Elle les regroupe dans un carnet d’itération (sprint backlog).
➢ Lorsqu’on s’entend sur le travail à faire, l’équipe s’organise elle-même pour développer (develop) le logiciel. Il y a des mêlées quotidiennes impliquant toute l’équipe. L’équipe est isolée de l’organisation, tout passe seulement par le SCRUM master.
➢ En fin de cycle, le travail est révisé et présenté aux intervenants (review).
Phase 3: Fin du projet
➢ Travail final d’intégration des sprints si nécessaire.
➢ Derniers tests systèmes.
➢ Préparation de la documentation pour l’utilisateur.
➢ Formation des utilisateurs.
➢ Tests d’acceptation.
➢ Déploiement du système.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Connaître les artefacts de Scrum

A
  • Product Backlog
    • Sprint Backlog
    • Produit
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Connaître les forces et les faiblesse de Scrum

A

Forces:
➢ Développement rapide et économique.
➢ Processus itératif-incrémental
➢ Les requis sont évolutifs. Processus très adaptatif.
➢ Implication d’un client/utilisateur.
➢ Processus simple, sans overhead de planification
➢ Encourage les livraisons fréquentes de fonctionnalités au client.
➢ Plusieurs occasions pour identifier des problèmes et les régler en équipe.
Faiblesses:
➢ S’ajuste difficilement à des équipes au-delà de 12 personnes.
➢ Problématique si le SCRUM master est un chef de projet déguisé qui devient directif.
➢ Les communications doivent être constructives et honnêtes.
➢ Des itérations courtes peuvent mener à une négligence des tests.
➢ Facile de perdre la perspective globale du projet en se concentrant sur les détails des fonctionnalités.
➢ La qualité n’est pas toujours au rendez-vous.

24
Q

Savoir expliquer les attitudes et les compétences attendues chez les professionnel.le.s du code (savoir dire non, savoir s’engager, connaître sa relation au code, kata, l’importance des tests dans la pratique, gestion du temps, communication des estimations, etc).

A

➢Savoir dire non.
▪ La tentation de jouer les héros et de résoudre le problème est grande. Mais abandonner ses disciplines professionnelles n’est pas une façon de solutionner les problèmes.
➢Dire oui est un engagement.
▪ Les professionnels n’ont pas à dire oui à tout, mais quand ils disent oui, ils s’engagent réellement en utilisant un langage qui ne laisse aucun doute sur leur engagement.
➢La façon d’écrire du code.
▪ Le code de 3h du matin, le code soucieux, le syndrome de la page blanche, être dans la zone.
➢TDD offre tellement d’avantages qu’il est pratiquement non professionnel de ne pas l’utiliser.
➢Un professionnel pratique sa discipline. Seul ou en groupe, il pratique des coding dojo. Exemple: kata et wasa

25
Connaître ce qu’est un praticien réflexif (définition, composantes du savoir, définition de problème, boucle de réflexion dans l’action).
➢Qu’est-ce qu’une pratique réflexive? Une pratique réflexive est l’évaluation continue de sa pratique et de son raisonnement par soi même Composantes du savoir professionnel: 1. Une fondation de science fondamentale ou une discipline sur laquelle repose la pratique. 2. Une composante de science appliquée qui sert aux procédure quotidiennes de diagnostics et à partir de laquelle on dérive les solutions aux problèmes. 3. Des aptitudes et des attitudes qui concernent la performance réelle donnée au client, en utilisant les deux composantes précédentes
26
Comprendre comment la conception logicielle est une activité réflexive
➢L’essence de l’ingénierie se situe dans la conception. Le développement logiciel étant un processus de construction d’une structure d’information, les pratiques réflexives y sont encore plus fondamentales. ▪ Comment aborder les activités d’analyse et conception du génie logiciel dans une optique réflexive? ▪ Les processus logiciel et les pratiques réflexives (qui sont nombreuses en agilité)
27
comprendre les dangers et solutions associés à la conception logiciel par rapport à l'activité réflexive
Danger: - Un développeur novice se perd dans un mode de recherche d’informations, plutôt que de progresser dans un mode de génération de solutions. - Fixation et attachement: La solution initiale exerce une influence importante sur le processus de conception. Solutions: - Génération de solutions alternatives ▪ Le processus de conception devient auto-correcteur lorsque des solutions alternatives sont imaginées. ▪ Avertissement: L’attrait de la fixation est grand. Générer des solutions alternatives est difficile - Exploiter le dialogue créatif (design conversation) ▪ Il y a co-évolution du domaine solutions-problème. ▪ Le concepteur peut interagir avec son medium qui lui réplique (backtalk) lorsqu’il y a un effet complètement inattendu à une solution, ou avec les usagers qui répliquent au design en adoptant une utilisation imprévue. Exemple en génie logiciel: Refactoring! - Esquisse ▪ Elles facilitent l’aspect exploratoire, incertain, ambigu du design conceptuel et des niveaux d’abstractions.
28
Connaître les pratiques réflexives dans la méthodologie XP et le processus discipliné.
- Refactoring - La programmation par paire:▪ Cette pratique encourage implicitement les pratiques réflexives. ▪ Un développeur, le pilote, code: il réfléchit à la meilleure façon d’implémenter une tâche - Planning game:▪ Cette pratique spécifie que l’ensemble de l’équipe participe à la planification du projet avec le client. Ainsi tous connaissent comment se déroule le processus de développement. ▪ Les facteurs qui mènent à une décision sont clairs pour tous.
29
Connaître ce qu’est le CMM
n modèle de référence et une méthode d’évaluation Le CMMI est une synthèse des meilleures pratiques du génie logiciel (normes, processus et autres) À la fois un modèle de référence avec les bonnes pratiques, ET une autre partie qui est une approche d'évaluation de qualité de processus (la maturité)
30
Connaître la structure du CMMI : domaines de processus, buts et pratiques spécifiques, buts et pratiques génériques, organisation en niveau de maturité
Domaine de processus: ▪ Ensemble de pratiques reliées qui collectivement couvrent une discipline de développement logiciel. Peut organiser en 4 catégories qui organise les 22 domaines: gestion de processus, gestion de projet, ingénierie, support Puis classé par niveau maturité But spécifiques: ▪ Caractéristique du domaine qui doit être satisfaite pour assurer sa couverture. Pratique spécifique: ▪ Tâche qui doit être réalisée afin d’assurer que la caractéristique est satisfaite. But générique: ▪ Un seul objectif par niveau de maturité, qui situe le degré d’institutionnalisation requis des domaines de processus ▪ Évalue si les pratiques spécifiques des domaines de processus sont faites de manière ponctuelle ou bien de manière systématique (i.e. tout le temps)
31
Comprendre la différence entre une évaluation de capacités et une évaluation de maturité
Maturité étagée: pyramide, il faut tout le domaine de processus 2 pour avoir le niveau 2 Capacité: évaluation continue avec une note. pour chaque domaine de processus et non globalement. Une note pour chaque domaine
32
Savoir quelle composante du développement logiciel est introduit à chaque niveau de maturité du CMMI
Niveau 1 Initial: ➢ Pas d’environnement stable de développement et de maintenance. Rien d'organisé Niveau 2 Discipliné: ➢ Les directives de gestion de projet et les procédures permettant leur application sont établies. ➢ Stabilisation de la gestion quotidienne. Niveau 3 Ajusté: ➢ Stabilisation des activités d’ingénierie. Niveau 4 Géré quantitativement: ➢ Stabilisation de l’utilisation des métriques. Niveau 5 En optimisation: ➢ Stabilisation des ajustements de processus
33
Connaître les approches d’amélioration de processus
➢Trois approches d’amélioration: ▪ Évaluer la maturité du processus (par exemple, CMMI) ▪ Optimiser le processus en le rendant plus agile ▪ Améliorer le processus par une approche empirique
34
Connaître les étapes du cycle d’amélioration de processus par une méthode empirique
1. Mesure de processus ▪ Les attributs du processus actuel sont mesurés. Les mesures servent de référence pour évaluer les améliorations. ➢3 catégories de métriques de processus: ▪ Le temps utilisé pour compléter une activité ▪ Les ressources nécessaires pour une activité ▪ Nombre d’occurrence d’événements particuliers 2. Analyse de processus ▪ Le processus actuel est analysé et les goulots d’étranglement et les faiblesses sont identifiés. ➢Étudier un processus existant pour comprendre les relations entre différentes parties du processus et la performance réelle. ➢L’analyse et la mesure de processus sont enchevêtrées. 3. Changement de processus ▪ On introduit les changements ciblés ➢Changer un processus signifie faire des modifications à un processus existant. ➢Les changements doivent être motivés par des objectifs mesurables
35
Comprendre le rôle de la modélisation de processus pour analyser un processus de développement logiciel
➢Le modèle peut servir de base pour comprendre le processus: ▪ Quelles activités sont utilisées en pratique, mais n’apparaissent pas dans le modèle? ▪ Y a-t-il des activités dans le processus que les acteurs du processus trouvent inefficaces? De quelle façon sont-elles inefficaces et comment pourrait-on les améliorer? ▪ Qu’est-ce qui arrive quand quelque chose dérape? ▪ Qui sont les acteurs impliqués dans les différentes étapes du processus et comment communiquent-ils? Quels sont les goulots d’étranglement dans les échanges d’informations? ▪ Quels outils sont utilisés pour supporter les activités modélisées? Comment les outils pourraient-ils être améliorés?
36
Connaître les obstacles au changement de processus
1. Résistance au changement ▪ Les développeurs ou les chefs d’équipe peuvent résister à l’introduction de changements de processus, argumenter en sa défaveur ou même en retarder la mise en application. Dans certains cas, ils peuvent même faire obstruction au changement. 2. Persistance du changement ▪ Il est très commun qu’une innovation initialement acceptée régresse et finisse par être invalidée ou rejetée après un certain temps.
37
DORA : connaître ce qu’est cette étude, son objectif d’observation, les métriques utilisées, les liens entre culture organisationnelle et performance de livraison.
- Une demarche empirique avec sondage un très grand nombre de données - Métriques pour évaluer la performance de livriason logicielle - Comprendre les statistiques démontrées - Modifier les pratiques en adoptant des pratiques agiles Ø L’étude DORA (DevOps Research and Assessment) a utilisé une analyse empirique quantitative pour comprendre ce qui améliorait la performance en livraison logicielle. Ø L’équipe de recherche a identifié quatre métriques des équipes DevOps: 1. La fréquence de déploiement: Des déploiements fréquents, par petits incréments, réduisent le nombre de changements introduits et donc diminuent le risque d’un déploiement. 2. Le délai de mise en œuvre d’un changement: Temps de réponse entre la décision de réaliser un changement et sa livraison 3. Le taux d’échec des changements: Pourcentage de déploiements qui causent des échecs en production. 4. Temps moyen de récupération: À la suite d'un problème, quel est le temps de résolution Types de culture organisationnelle: en utilisant les travaux du sociologue Ron Westrum, 3 types de culture organisationnelle sont distinguées: 1. Pathologique : orientée vers le pouvoir, l’information est retenue, la peur et les menaces sont fréquentes 2. Bureaucratique: orientée vers les règles 3. Générative: orientée vers la performance, l’atteinte d’objectifs prime sur le reste Ø Déterminé à l’aide de questionnaires § Partage d’informations, réaction aux mauvaises nouvelles, partage de responsabilités, collaboration multidisciplinaire, accueil de nouvelles idées, etc Le type de culture détermine la performance. Plus la culture est générative plus elle donne de meilleurs performances
38
Savoir ce qu’est une norme dans le domaine du développement logiciel.
* Regrouper les meilleures pratiques (best practices). Éviter la répétition des erreurs passées. * Encadrer l’assurance-qualité. Décrire toutes les activités, artéfacts et rôles impliqués. - cible un domaine précis du développement logiciel -encadre les pratiques -fournit un standard de base
39
Connaître les avantages et les inconvénients de l'approche de standards et normes
Avantages: * Assurer la continuité. Il est plus facile d’intégrer les nouveaux développeurs quand l’organisation utilise des standards reconnus. * Améliorer la gestion des projets logiciels. Prévenir les crises. * Obtenir une certification. Peut attirer de nouveaux clients ou être requise par ceux existants. * Facilite le partenariat. Surtout pour le développement distribué sur plusieurs sites, dans plusieurs pays. Inconvénients Ø Peu adoptés par les petites organisations. § Les standards sont perçus comme applicables seulement aux grandes organisations. Ø Craintes au niveau des coûts associés. § Coût du standard lui-même. § Ressources nécessaires pour maintenir la documentation. § Perception négative d’une bureaucratie associée aux standards. Ø Difficultés inhérentes aux standards. § De relier les standards aux besoins de l’organisation. § Dans la compréhension des standards.
40
Connaître la méthode d’adoption des standards ISO
1. Rencontre des délégations nationales. § Pour discuter, débattre et argumenter jusqu’à ce qu’un consensus soit atteint sur une première version. 2. Évaluation du Draft International Standard. § Distribué à tous les groupes ISO pour être voté et commenté. 3. Émission du Final Draft International Standard (FDIS). § Après un vote favorable. § Le document modifié est distribué aux membres ISO
41
Connaître la signification du nom DevOps, l’objectif de la méthode et les méthodes à son origine.
DevOps est une des principales méthodologies actuelles en développement logiciel. § Son nom: Dev + Ops * Une collaboration intense et une meilleure communication entre les équipes de développement logiciel et des opérations TI. Cette dernière est responsable de maintenir et gérer l’infrastructure et les environnements nécessaires pour le développement, les tests et les déploiements en cours d’opération. Ø L'objectif de DevOps est de rationaliser le cycle de vie du développement logiciel, de la planification et du codage aux tests, au déploiement et à la maintenance, en favorisant une culture de collaboration, d'automatisation et d'amélioration continue.
42
Définir le concept de flux de valeur technologique
Ø Focus important de la méthode DevOps: le flux de valeur technologique (technology value stream) est le processus requis pour convertir une hypothèse d’affaire en un service technologique offrant de la valeur à un client. § DevOps cherche à accélérer ce flux sans causer davantage de chaos, comme des pannes de service, des défaillances, des échecs de sécurité et de conformité.
43
Connaître les trois principes de la méthode DevOps et pouvoir les définir brièvement
Flux: Ø L’objectif du premier principe est de maintenir un flux de travail rapide et fluide du développement, en passant par les opérations, jusqu’au client. Le flux s’accélère lorsque: § On rend le travail visible § On limite la quantité de travail en cours (WIP) § On réduit la taille des tâches § On limite le nombre de transferts § On livre un produit où la qualité est une préoccupation à chaque étape (built in quality). § On identifie continuellement les contraintes, les difficultés et le gaspillage dans le flux Ø Les pratiques essentielles: § Un pipeline complet de déploiement automatisé § Des tests automatisés fiables et rapides § La mise en place de l’intégration continue § Des livraisons à faible risque, en partie grâce à une architecture de qualité Rétroaction: Ø L’objectif du deuxième principe est de mettre en place une série de mécanismes qui permettent de la rétroaction rapide et constante pour rendre le développement plus sécure et résilient. La rétroaction devient possible lorsque: § On travaille de façon sécuritaire dans un système complexe. § On implémente des mécanismes d’observabilité et de surveillance pour suivre comment le produit opère dans l’environnement de production. § Affluer pour résoudre un problème et en tirer de nouvelles connaissances § On utilise le feedback pour augmenter la qualité à la source. Apprentissage et expérimentation en continu: Ø L’objectif du troisième principe est de créer une culture générative, de grande confiance qui supporte une approche scientifique, disciplinée et dynamique à l’expérimentation et à la prise de risque et qui facilite la mise en place d’une organisation d’apprentissage continu, tant dans la réussite que l’échec.
44
En vous inspirant des droits et devoirs de la méthodologie XP, décrivez trois différences entre XP et l’approche unifiée pour ce qui est des rôles de client et de développeur ?
Le rôle du client est central à XP. Il travaille au sein de l'équipe. Dans l'approche unifié, il est le signataire du contrat et externe à l'équipe Le communication entre le client et les développeurs est beaucoup plus présente dans XP que l'approche unifiée. Dans la première, les développeurs doivent constamment communiquer avec le client pour comprendre ses enjeux et lui fournir l'information nécessaire pour ces décisions. Dans la seconde, le client reçoit habituellement l'information minimale pour connaître l'état du projet. Les développeurs, dans la méthodologie XP, sont au coeur du projet avec leur expertise technique. Ils ont les moyens de produire de la qualité. Dans l'approche unifiée, l'expertise technique des développeurs n'est pas au coeur du processus.
45
À quoi sert le récit utilisateur dans la méthodologie XP (identifiez toutes les pratiques XP pertinentes pour une réponse complète)?
Le récit utilisateur dans la méthodologie XP (Extreme Programming) sert à capturer les exigences du client de manière simple et compréhensible. Voici comment il est utilisé en lien avec les pratiques XP pertinentes : Jeu de planification: Les récits utilisateurs sont utilisés pour planifier les itérations. Le client et l'équipe de développement priorisent les récits en fonction de leur valeur et de leur complexité. Tests d’acceptation: Chaque récit utilisateur est accompagné de tests d'acceptation définis par le client pour vérifier que les fonctionnalités développées répondent aux besoins spécifiés. Petites livraisons: Les récits utilisateurs permettent de diviser le travail en petites portions livrables fréquemment, facilitant ainsi les retours rapides et les ajustements. Équipe soudée: Les récits utilisateurs favorisent une compréhension commune des objectifs entre le client et l'équipe, renforçant la collaboration et la communication. En résumé, les récits utilisateurs sont essentiels pour structurer le développement, garantir la satisfaction du client et maintenir une qualité élevée du produit.
46
Comment est-ce que la pratique de développement piloté par les tests peut participer à la création d’un faux sentiment de sécurité dans un projet ?
Le développement piloté par les tests (TDD) peut parfois créer un faux sentiment de sécurité dans un projet pour plusieurs raisons : Couverture de tests limitée: Si les tests ne couvrent pas tous les cas d'utilisation ou les scénarios possibles, les développeurs peuvent croire que le code est entièrement testé et fiable, alors qu'il reste des zones non vérifiées. Qualité des tests: Des tests mal conçus ou trop simples peuvent passer sans détecter des erreurs ou des bugs complexes, donnant l'impression que le code est robuste alors qu'il ne l'est pas. Dépendance excessive aux tests: Les développeurs peuvent se reposer trop sur les tests automatisés et négliger d'autres formes de vérification, comme les revues de code ou les tests manuels, ce qui peut laisser passer des problèmes non détectés par les tests automatisés.
47
Identifiez trois différences entre le rôle du gestionnaire de projet dans un processus structuré comme le processus unifié et le rôle de Scrum master.
Voici trois différences entre le rôle du gestionnaire de projet dans le processus unifié et le rôle de Scrum master : 1. Responsabilité de la planification: Gestionnaire de projet (Processus unifié): Le gestionnaire de projet est responsable de la planification détaillée du projet, y compris la définition des tâches, des échéances et des ressources nécessaires. Scrum master: Le Scrum master facilite la planification des sprints, mais la responsabilité de la planification détaillée est partagée avec l'équipe Scrum, qui s'auto-organise pour atteindre les objectifs du sprint. 2. Gestion des tâches et des ressources: Gestionnaire de projet (Processus unifié): Le gestionnaire de projet attribue les tâches aux membres de l'équipe et gère les ressources pour assurer le respect du plan de projet. Scrum master: Le Scrum master ne gère pas directement les tâches ou les ressources. Il aide l'équipe à s'auto-organiser et à éliminer les obstacles qui pourraient entraver leur travail. 3. Approche de la gestion des équipes: Gestionnaire de projet (Processus unifié): Le gestionnaire de projet dirige l'équipe et prend des décisions importantes concernant le projet, souvent de manière hiérarchique. Scrum master: Le Scrum master agit comme un facilitateur et un coach, encourageant l'équipe à prendre des décisions collectives et à s'améliorer continuellement .
48
Qu’est-ce que le carnet de produit et le carnet de sprint ? Comment sont-ils utilisés dans la méthodologie Scrum?
Carnet de produit (Product Backlog) Définition: Le carnet de produit est une liste priorisée de toutes les fonctionnalités, améliorations, corrections de bugs et autres exigences nécessaires pour le produit. Utilisation: Le Product Owner gère le carnet de produit, ajoutant et priorisant les éléments en fonction de la valeur pour le client et les parties prenantes. Il est constamment mis à jour pour refléter les besoins et les priorités changeantes. Carnet de sprint (Sprint Backlog) Définition: Le carnet de sprint est une liste des tâches et des éléments du carnet de produit sélectionnés pour être réalisés durant un sprint. Utilisation: L'équipe de développement crée le carnet de sprint lors de la réunion de planification du sprint. Elle décompose les éléments en tâches spécifiques et s'engage à les compléter durant le sprint. Le carnet de sprint est mis à jour quotidiennement pour suivre l'avancement du travail.
49
Quelle est la fonction de la mêlée quotidienne dans la méthodologie Scrum ?
a mêlée quotidienne (Daily Scrum) est une réunion courte, généralement de 15 minutes, qui se tient chaque jour pour permettre à l'équipe de développement de synchroniser ses activités et de planifier le travail pour les prochaines 24 heures. Voici ses principales fonctions : Coordination: Les membres de l'équipe partagent ce qu'ils ont accompli depuis la dernière mêlée, ce qu'ils prévoient de faire aujourd'hui, et identifient les obstacles qui pourraient entraver leur progression. Transparence: La mêlée quotidienne assure une visibilité constante sur l'avancement du sprint et permet de détecter rapidement les problèmes. Adaptation: L'équipe peut ajuster ses plans et ses priorités en fonction des retours et des défis rencontrés, garantissant ainsi une progression continue vers les objectifs du sprint. Cette réunion favorise la communication et la collaboration au sein de l'équipe, contribuant à maintenir un rythme de travail soutenable et efficace.
50
Quelle est la fonction de la rétrospective de sprint dans la méthodologie Scrum ?
La rétrospective de sprint est une réunion qui se tient à la fin de chaque sprint dans la méthodologie Scrum. Voici ses principales fonctions : Réflexion sur le processus: L'équipe Scrum examine ce qui a bien fonctionné, ce qui n'a pas bien fonctionné, et identifie les opportunités d'amélioration pour les futurs sprints. Amélioration continue: La rétrospective permet à l'équipe de proposer et d'adopter des changements pour améliorer la qualité du travail, la collaboration et l'efficacité des processus. Renforcement de l'équipe: En discutant ouvertement des défis et des succès, l'équipe renforce sa cohésion et sa capacité à travailler ensemble de manière plus harmonieuse. Cette réunion est essentielle pour favoriser une culture d'amélioration continue et de transparence au sein de l'équipe.
51
En quoi est-ce que Scrum est une méthodologie agile ? (on vous demande deux éléments de réponse)
Scrum est une méthodologie agile pour plusieurs raisons, dont voici quelques éléments clés : Flexibilité et adaptation: Scrum permet de répondre rapidement aux changements grâce à des sprints courts et des révisions fréquentes. L'équipe peut ajuster les priorités et les tâches en fonction des retours du client et des besoins évolutifs du projet. Collaboration et communication: Scrum favorise une communication continue et directe entre les membres de l'équipe et avec le client. Les réunions régulières, comme la mêlée quotidienne et la rétrospective de sprint, assurent une transparence et une coordination constante. Livraisons fréquentes: Scrum encourage des livraisons régulières de fonctionnalités utilisables à la fin de chaque sprint. Cela permet de fournir rapidement de la valeur au client et de recevoir des retours fréquents pour améliorer le produit. Amélioration continue: Scrum intègre des pratiques comme la rétrospective de sprint, qui permet à l'équipe de réfléchir sur son travail et de mettre en place des améliorations pour les prochains sprints, favorisant ainsi une culture d'amélioration continue. Autogestion de l'équipe: Le pouvoir décisionnel est réparti à travers toute l'équipe. La responsabilité est donc aussi répartie entre tous les membres de l'équipe.
52
Pourquoi est-ce que XP et Scrum sont deux méthodologies complémentaires ? (on vous demande deux éléments de réponse)
XP (Extreme Programming) et Scrum sont complémentaires pour plusieurs raisons, dont voici deux éléments clés : Focus sur la qualité et la flexibilité: XP met l'accent sur des pratiques techniques rigoureuses comme le développement piloté par les tests et la réusinage de code, assurant une haute qualité du produit. Scrum, de son côté, offre une structure flexible pour la gestion de projet, permettant des ajustements rapides en fonction des retours du client. Ensemble, ils garantissent un produit de qualité tout en restant adaptables aux changements. Collaboration et communication: Scrum favorise une communication continue et une collaboration étroite au sein de l'équipe grâce à ses réunions régulières (mêlée quotidienne, rétrospective de sprint). XP renforce cette collaboration avec des pratiques comme la programmation par paire et l'équipe soudée, assurant que les développeurs et le client travaillent ensemble de manière efficace et harmonieuse. Amélioration continue: Les deux méthodologies encouragent une culture d'amélioration continue. Scrum utilise des rétrospectives de sprint pour identifier et mettre en œuvre des améliorations, tandis qu'XP intègre des pratiques comme le réusinage de code et le développement piloté par les tests pour améliorer constamment la qualité du code. Livraisons fréquentes et feedback rapide: XP et Scrum favorisent des livraisons fréquentes de petites portions de travail. Scrum planifie des sprints courts avec des livraisons à la fin de chaque sprint, et XP encourage des petites livraisons régulières. Cela permet d'obtenir des retours rapides du client et d'ajuster le développement en conséquence. Ces éléments montrent comment XP et Scrum peuvent être utilisés ensemble pour créer un environnement de développement dynamique, collaboratif et orienté vers la qualité.
53
Robert C. Martin définit un code de conduite pour les développeurs professionnels. Celui-ci ne se limite pas à des pratiques et des aptitudes techniques. De façon générale, que propose-t-il ? Identifier 4 exemples spécifiques qui illustrent votre réponse.
1.Responsabilité personnelle: Les développeurs doivent prendre la responsabilité de leur travail, en s'assurant que le code qu'ils produisent est de haute qualité et répond aux exigences. Lorsqu'ils s'engagent, ils respectent leurs engagements. 2.Communication honnête: Il est crucial de communiquer de manière transparente et honnête avec les collègues et les clients, notamment en ce qui concerne les estimations et les progrès du projet. Ils comprennent qu'une estimation doit être communiquée comme une conjecture. 3.Engagement envers l'amélioration continue: Les développeurs doivent constamment chercher à améliorer leurs compétences et leurs pratiques, en adoptant des techniques comme le réusinage de code et le développement piloté par les tests. Ils réfléchissent à leur façon d'écrire du code et pratique leur discipline à l'aide de kata de programmation. 4.Gestion du temps et des priorités: Savoir dire "non" quand il le faut et gérer efficacement son temps (méthode de la tomate) pour éviter l'épuisement professionnel et garantir un travail soutenable.
54
Qu’est-ce qu’un kata de programmation ? À quoi sert-il?
Un kata de programmation est un exercice de codage conçu pour aider les développeurs à pratiquer et à améliorer leurs compétences techniques. Inspiré des katas dans les arts martiaux, il consiste à répéter une tâche de programmation spécifique pour perfectionner sa maîtrise et sa compréhension des concepts. Les katas de programmation servent à : 1.Améliorer les compétences: En répétant des exercices, les développeurs peuvent affiner leurs techniques et apprendre de nouvelles approches. 2.Renforcer les bonnes pratiques: Les katas encouragent l'adoption de bonnes pratiques de codage, comme le développement piloté par les tests et le réusinage de code. 3.Favoriser l'apprentissage continu: Ils offrent une opportunité de découvrir et d'expérimenter des concepts et des outils nouveaux dans un environnement contrôlé.
55
Comment un programmeur professionnel estime-t-il l’effort de développement ? Comment communique-t-il ses estimations en sachant que pour le management, celles-ci sont des engagements ?
Estimation de l'effort de développement 1.Décomposition des tâches: Diviser le projet en tâches plus petites et spécifiques pour faciliter des estimations plus précises. 2.Expérience et historique: Se baser sur l'expérience passée et les données historiques pour affiner les estimations. Utiliser une technique d'estimation par consensus en équipe (poker planning). Communication des estimations 1.Transparence et honnêteté: Communiquer clairement que les estimations sont des approximations (conjecture) et non des engagements fermes. Il est crucial de distinguer entre une estimation (une meilleure supposition) et un engagement (une promesse ferme). 2.Gestion des attentes: Expliquer les hypothèses et les risques associés aux estimations, et être prêt à ajuster les estimations en fonction des nouvelles informations.
56
Les tests jouent un rôle important dans le travail d’un programmeur professionnel. Identifier les 3 façons de tester que le programmeur professionnel doit employer.
1.Le TDD, qui encourage l'écriture de tests unitaires. 2.L'ensemble de la pyramide des tests, pour avoir une stratégie complète qui couvre tous les aspects du logiciel. 3.L'utilisation des tests d'acceptation pour formaliser les exigences du client et démontrer la réalisation des exigences.