Bonjour. Lors des deux derniers entretiens, on m'a posé des questions sur les méthodologies. Ce n’est pas la question la plus importante ou la plus difficile, mais ce serait bien d’avoir un aide-mémoire pour la réponse. Dans cet article je vais essayer de donner une idée de ce qu'est une méthodologie de développement et de comparer celles que j'ai personnellement rencontrées ou sur lesquelles on m'a interrogé. La méthodologie de développement logiciel est un processus de description de la manière dont un produit spécifique sera développé, c'est-à-dire l'un des moyens d'organiser le développement d'une équipe. Il existe de nombreux modèles différents d'un tel processus, chacun décrivant sa propre approche, et on ne peut pas dire que parmi eux il y en a un qui devrait être utilisé dans chaque projet, tout est purement situationnel. Je propose d'en examiner trois plus en détail.
Cascade
La cascade (cascade, cascade) est l'une des méthodologies les plus anciennes et implique la mise en œuvre strictement séquentielle de toutes les étapes, dont chacune doit être terminée avant le début de la suivante. C'est-à-dire que le passage à l'étape suivante signifie l'achèvement complet des travaux sur la précédente. L'image montre que nous analysons d'abord la tâche (documenter les tâches, discuter des difficultés), puis la conception a lieu (à ce stade, la structure du projet est formée), puis le codage et les tests. Il n'y a aucun remboursement pour les étapes suivantes. Il est recommandé d'utiliser un tel système dans les petits projets où les exigences sont connues à l'avance et où il est peu probable qu'elles changent. Avantages :- Une documentation complète et cohérente à chaque étape ;
- Facilité d'utilisation;
- Exigences stables.
- Le budget et les délais sont prédéterminés
- Une grande quantité de documentation ;
- Ce n’est pas un système très flexible ;
- Le client ne peut pas visualiser la version démo du produit ;
- Il n’y a aucun moyen de revenir en arrière.
Mêlée
Scrum est un système de développement logiciel basé sur la division de l'ensemble du processus en itérations, où à la fin de chacune d'elles, l'équipe est prête à fournir une version de démonstration du produit. La photo montre que l'équipe passe par toutes les étapes de développement en parallèle, ce qui nous permet d'avoir une partie finie du projet à la fin de chaque itération. Je vais essayer d'expliquer brièvement avec des mots simples l'essence de la méthodologie, mais il y a beaucoup de termes ici. Je pense que le plus important est d’en comprendre l’essence, et les termes seront mémorisés avec l’expérience. Tout développement est divisé en sprints (souvent 2-3 semaines). Il existe un backlog (liste de tâches) pour toute la période de développement et pour chaque sprint séparément. Chaque tâche a son propre point d'histoire (niveau de difficulté). Chaque participant au processus a un rôle :- Une équipe Scrum est une équipe travaillant sur un projet (développeurs, testeurs, designers).
- Un Scrum Master est une personne qui veille au respect des principes de Scrum.
- Propriétaire du produit – client.
- Le stand-up est une courte réunion, organisée tous les jours, à laquelle tous les membres de l'équipe participent et chaque participant répond à 3 questions : qu'avez-vous fait ? Que fera-t-il ? Et quels sont les bloqueurs ?
- Planification – organisée au début du sprint et lors de cette réunion, les tâches à accomplir lors du prochain sprint sont déterminées.
- La rétrospective a lieu à la fin du sprint et son essence est de découvrir ce qui a été bien fait et ce qui pourrait être amélioré.
- Le client peut observer le résultat pendant le processus de développement.
- Contrôle quotidien du processus de développement.
- Capacité à faire des ajustements pendant le développement.
- Communications bien établies avec tous les membres de l’équipe.
- Petite quantité de documentation.
- Difficile d'estimer la main d'œuvre et les coûts nécessaires au développement
- Il est difficile de déterminer les principaux goulots d’étranglement avant le début du développement.
- La nécessité d'impliquer chacun dans le développement des autres membres de l'équipe.
Kanban
Kanban est un système basé sur la visualisation du processus d'exécution des tâches d'équipe. L'idée principale de ce système est de réduire le nombre de tâches en cours d'exécution (dans la colonne « en cours »). Dans Scrum, l'équipe se concentre sur la réussite des sprints ; dans Kanban, les tâches passent en premier. Idéal pour les projets en phase de support, où la fonctionnalité principale a déjà été développée et où des améliorations minimes et des corrections de bogues subsistent. Dans Kanban, les tâches sont soumises individuellement. La tâche, indépendamment des autres tâches, passe par toutes les étapes indiquées sur le tableau et dès qu'elle est terminée, elle peut être montrée au client. Un tableau Kanban se compose de colonnes, chacune représentant un processus de développement distinct. Certaines colonnes (par exemple, en cours) imposent des restrictions sur le nombre de tâches pouvant s'y trouver. Cela permet de trouver facilement et rapidement les zones problématiques dans la répartition des tâches. L'image montre un exemple d'une planche aussi simple. Le nombre de colonnes et les noms peuvent varier, mais je citerai les plus courants :- À faire - une liste de tâches à effectuer
- En cours – tâches en cours d'exécution
- Révision du code – tâches qui ont été complétées et envoyées pour révision
- En test – tâches prêtes à être testées
- Terminé – tâches terminées.
- Facilité d'utilisation.
- Visualisation (aide à trouver les goulots d'étranglement, simplifie la compréhension)
- Forte implication de l'équipe dans le processus lui-même.
- Grande flexibilité dans le développement.
- Liste de tâches instable.
- Difficile à utiliser sur des projets à long terme.
- Pas de délais stricts.
GO TO FULL VERSION