Modèles de cycle de vie du développement logiciel : choisir une façon de faire avancer les choses
Publié: 2021-10-05La philosophie « planifiez votre travail et travaillez votre plan » a prouvé son efficacité à maintes reprises dans l'histoire. Une bonne planification définit le succès de toute initiative sérieuse, y compris le développement de logiciels. L'industrie du développement de logiciels a mis au point plusieurs approches pour répondre aux besoins de l'entreprise.
Le cycle de vie du développement logiciel ou SDLC définit la manière dont un produit prend vie et est maintenu. Il vous aide à transformer les idées créatives et les exigences du marché en fonctionnalités et fonctionnalités du produit.
En bref, un modèle de cycle de vie de développement logiciel est un moyen de faire avancer les choses en termes de développement d'un produit et de sa transformation en entreprise.
Teneur:
- Modèles SDLC
- Modèle cascade
- Modèle en V
- Modèle Big Bang
- Modèle de prototypage
- Modèle itératif et incrémental
- modèle RAD
- Modèle de développement en spirale
- Modèle agile
Modèles SDLC
En fonction de votre marché, du contexte de votre projet et des exigences de votre entreprise, vous pouvez choisir un modèle de cycle de vie de développement logiciel établi ou créer le vôtre.
Modèle cascade
Premier modèle SDLC de l'histoire du développement logiciel, Waterfall est le plus simple. Dans le modèle Waterfall, le processus de développement est linéaire. Les tâches et les phases sont exécutées une par une dans un ordre strict. La progression s'écoule régulièrement vers le bas, comme de l'eau au-dessus d'une cascade.
Les phases traditionnelles du modèle Waterfall sont :
- Rassemblement des exigences
- Concevoir
- Mise en œuvre
- Intégration et test
- Déploiement
- Maintenance
Le modèle Waterfall ne permet pas de revenir aux étapes précédentes du développement pour corriger les choses ou mettre en œuvre des changements. Cela ne peut être fait que dans la prochaine itération de Waterfall.
Avantages :
- Facile à expliquer au client et facile à comprendre pour l'équipe
- Structure évidente avec des étapes et des activités bien définies
- Planification et planification faciles avec des jalons clairs
- Phases terminées une à la fois
- Les erreurs et les désagréments sont faciles à vérifier à chaque étape
- Chaque étape est facile à analyser et à évaluer
- Des processus bien documentés
Désavantages:
- Fonctionne uniquement avec des exigences non flexibles
- Impossible de revenir aux étapes terminées
- Difficile à régler
- Le coût de développement est généralement élevé
- Risque élevé de bugs et autres inconvénients
- Difficile de mesurer les progrès au cours des étapes
Idéal pour les projets avec :
- Exigences stables et non ambiguës
- Une définition et une vision claires du produit
- Des technologies bien connues et une pile technologique stable
- Assez de ressources pour la mise en œuvre et le soutien
- Un court laps de temps
Modèle en V
Également connu sous le nom de modèle en V ou modèle de vérification et de validation , le modèle en forme de V est une extension de l'approche Waterfall SDLC. Avec le modèle V, la progression ne se fait pas en ligne droite mais monte vers le haut après la mise en œuvre et le codage.
La planification des tests précoces est typique des projets SDLC V-Model, ce qui constitue la principale différence par rapport au modèle Waterfall. Chaque étape de développement a une phase de test parallèle, qui permet de vérifier et de valider chaque étape avant de passer à la suivante.
Avantages :
- Facile à utiliser et à expliquer
- Des livrables clairs pour chaque phase, ce qui signifie une plus grande discipline
- De meilleurs résultats que dans le modèle Waterfall grâce à des tests précoces
- Vérification et validation claires à chaque étape
- Suivi des défauts en douceur, car les bogues sont détectés dès les premiers stades
- Suivi des progrès plus facile, du moins par rapport au modèle Waterfall
Désavantages:
- Faible flexibilité sans prise en charge des itérations
- Difficile et coûteux à faire des ajustements en raison de l'absence de gestion des événements parallèles
- Risques commerciaux et de développement élevés
- Pas de premiers prototypes disponibles
- Pas de solution claire pour les problèmes détectés lors des tests
Les phases du projet dans le modèle en V sont les mêmes que dans Waterfall, mais avec une vérification et une validation pour chaque phase via des tests . Ainsi, le modèle V est bon pour des types de projets similaires à Waterfall.
Modèle Big Bang
Ce modèle de cycle de vie de développement logiciel ne suit généralement pas de processus ou d'instructions spécifiques.
Le développement commence avec les ressources et les efforts disponibles pour le moment, avec très peu ou pas de planification du tout. En conséquence, le client obtient un produit qui peut même ne pas répondre aux exigences. Les fonctionnalités sont implémentées à la volée.
L'idée clé du modèle Big Bang SDLC est d'affecter toutes les ressources disponibles au développement du produit lui-même, principalement en termes de codage, sans se soucier de respecter les plans.
Avantages :
- Modèle dramatiquement simple
- Presque aucune planification nécessaire
- Simple à gérer
- Ne nécessite pas beaucoup de ressources
- Flexible pour l'équipe de développement
Désavantages:
- Risque élevé et incertitude ; l'ensemble du projet peut avoir besoin d'être refait à partir de zéro
- Ne convient pas aux projets compliqués, à long terme ou orientés objet
- Forte probabilité de gaspillage de ressources en raison d'exigences incertaines
Meilleur pour:
- Petites équipes ou développeurs uniques
- Projets académiques
- Projets sans certaines exigences ou date de sortie prévue
- Petits projets répétitifs et à faible risque
Modèle de prototypage
L'approche de prototypage SDLC consiste à créer un prototype fonctionnel du produit logiciel avec des fonctionnalités limitées, puis à transformer rapidement le prototype en produit complet. Le prototype peut ne pas contenir la logique exacte du produit fini.
Cette approche du cycle de vie du développement logiciel est bonne pour permettre au consommateur de visualiser le produit. La collecte et l'analyse des commentaires des clients aident l'équipe de développement à mieux comprendre les besoins des clients dès les premiers stades du développement.
Consultez cet article pour savoir pourquoi les exigences sont importantes en génie logiciel.
Le prototypage est également valorisé car il implique moins d'itérations que le modèle traditionnel en cascade. En effet, les tests sont effectués sur (et des modifications sont apportées) sur le prototype, et non sur le produit entièrement développé.
Bien sûr, la création d'un prototype de valeur nécessite une compréhension de base des exigences du produit et du marché, en particulier en termes d'interface utilisateur.
Avec le modèle de prototypage, les commentaires des utilisateurs jouent un rôle déterminant dans la planification du développement ultérieur.
Le prototypage permet aux utilisateurs d'évaluer les propositions des développeurs pour les fonctionnalités supplémentaires des applications et de les essayer avant leur mise en œuvre.
Chaque prototype de ce modèle SDLC prend généralement vie au cours des phases suivantes :
- Identifier les exigences
- Développer le prototype initial
- Revoir
- Réviser et améliorer
Dès que le prototype final est terminé, les exigences du projet sont considérées comme immuables .
Il existe également un certain nombre de types traditionnels de prototypage :
Prototypage jetable — L'équipe développe un certain nombre de prototypes différents et rejette ceux qui sont manifestement inacceptables. Les fonctionnalités utiles de chaque prototype passent aux phases de développement suivantes.
Prototypage évolutif — L'équipe montre le prototype à des groupes de discussion d'utilisateurs potentiels, recueille leurs commentaires et met en œuvre les modifications par itérations jusqu'à ce que le produit final soit terminé.
Prototypage incrémentiel — L'équipe crée divers prototypes et les fusionne éventuellement en une seule conception.
Prototypage extrême — L'équipe crée un prototype en trois parties : un prototype statique, un prototype de simulation de fonctionnalité et un prototype de services implémentés. Ce type de prototypage est principalement utilisé dans le développement d'applications Web.
Avantages :
- Participation accrue des utilisateurs avant la mise en œuvre du produit
- Possibilité de réduire le temps et les coûts de développement (en cas de prototype réussi)
- Meilleure compréhension des fonctionnalités par les utilisateurs lorsqu'ils participent au processus de développement
- Détection précoce des défauts
- Retour rapide
- Des analyses simples et précieuses
Désavantages:
- Risque élevé d'analyse incomplète en raison de la dépendance au prototype
- Les utilisateurs peuvent considérer un prototype comme un produit fini et rester insatisfaits
- Risque de coût élevé de mise en œuvre du prototype
- Le développement de plusieurs prototypes peut prendre trop d'itérations et par conséquent trop de temps
Meilleur pour:
- Utilisation en parallèle avec tout autre modèle SDLC
- Produits avec beaucoup d'interactions avec les utilisateurs
- Produits qui doivent être approuvés par les utilisateurs à un stade précoce
Modèle itératif et incrémental
Le modèle SDLC itératif et incrémentiel associe une conception et un flux de travail itératifs à un modèle de construction incrémentiel. Dans ce cas, l'équipe développe un produit par cycles, en construisant de petites pièces de manière évolutive .
Le processus de développement commence par la mise en œuvre simple d'un petit ensemble d'exigences produit strictement limité. Le produit est ensuite amélioré et transformé en versions plus complètes de lui-même jusqu'à ce qu'il soit complet et prêt pour le déploiement. Chaque itération peut contenir des mises à jour de conception et de nouvelles fonctionnalités.
Une caractéristique précieuse du modèle itératif et incrémental est que le développement peut être démarré sans connaître toutes les exigences . Ce modèle contient les étapes d'autres modèles SDLC - collecte des exigences, conception, mise en œuvre et test - mais au cours de plusieurs versions. L'équipe de développement tire parti de ce qui a été réalisé dans les versions précédentes pour améliorer la prochaine version.
Le modèle SDLC itératif et incrémentiel peut ressembler à un ensemble de mini modèles en cascade ou en mini V.
Avantages :
- Produit de la valeur commerciale tôt, car un produit fonctionnel est livré à chaque incrément
- Peut être fait en utilisant des ressources rares
- Offre de l'espace pour la flexibilité
- Permet de se concentrer davantage sur la valeur utilisateur
- Fonctionne bien avec le développement parallèle
- Détecte les problèmes à un stade précoce
- Évaluer facilement les progrès du développement
- Utilise beaucoup de commentaires des clients
Désavantages:
- Nécessite une documentation lourde
- Suit un ensemble prédéfini de phases
- Les incréments sont définis par les dépendances de fonction et de fonctionnalité
- Nécessite plus d'implication de l'utilisateur de la part des développeurs que Waterfall ou d'autres SDLC linéaires
- Peut être difficile d'intégrer des fonctionnalités entre les itérations si elles ne sont pas planifiées à l'avance
- Des problèmes d'architecture ou de conception peuvent survenir en raison d'exigences incomplètes au début
- Compliqué à gérer
- Difficile de prévoir la fin du projet
Meilleur pour:
- Projets complexes et critiques comme les systèmes ERP
- Projets avec des exigences strictes pour le produit final mais avec un espace pour des améliorations supplémentaires
- Projets où des exigences majeures sont définies mais certaines fonctionnalités peuvent évoluer ou des améliorations peuvent être apportées
- Projets où la technologie requise est nouvelle et n'a pas encore été maîtrisée ou n'est prévue que pour une partie du produit
- Produits avec des caractéristiques à haut risque qui peuvent avoir besoin d'être changées
modèle RAD
Le modèle de développement rapide d'applications (RAD) est basé sur le prototypage et le développement itératif sans planification spécifique. Avec ce modèle, la planification passe au second plan par rapport au prototypage rapide.
Les données primaires nécessaires dans le modèle RAD sont collectées via des ateliers, des groupes de discussion et des premières démonstrations de prototypes , ainsi qu'en réutilisant des prototypes existants.
Les modules fonctionnels du modèle de cycle de vie de développement logiciel RAD sont développés en parallèle sous forme de prototypes et sont intégrés pour fournir rapidement le produit complet. Les prototypes développés sont susceptibles d'être réutilisables.
Le modèle RAD répartit les phases d'analyse, de conception, de construction et de test en une série de cycles de développement courts et itératifs.
Phases du modèle RAD :
Modélisation commerciale : modélise le flux d'informations et la distribution des informations entre les différents canaux commerciaux. Cette partie est nécessaire pour trouver des informations vitales pour l'entreprise et définir comment elles peuvent être obtenues, comment et quand les informations sont traitées et quels facteurs sont à l'origine de la réussite du flux d'informations.
Modélisation des données — Les données de la phase précédente sont traitées afin de former les ensembles de données nécessaires avec des attributs identifiés et établis.
Modélisation de processus — Les ensembles de données de l'étape précédente sont convertis en modèles de processus pour atteindre les objectifs commerciaux et reçoivent des descriptions de processus pour ajouter, supprimer, récupérer ou modifier chaque objet de données.
Génération d'applications - Le système est construit et le codage est effectué à l'aide d'outils d'automatisation pour convertir les modèles de processus et de données en prototypes réels.
Tests et chiffre d'affaires — La majorité des prototypes sont testés indépendamment à chaque itération. Les développeurs ne testent que le flux de données et les interfaces entre tous les composants pendant cette phase.
Avantages :
- Peut s'adapter à des exigences changeantes
- Des progrès faciles à mesurer
- Possibilité de réduire le temps d'itération avec de puissants outils RAD
- Meilleure productivité avec moins de membres de l'équipe impliqués, par rapport aux autres SDLC
- Développement plus rapide
- Meilleure réutilisation des composants
- Examens initiaux antérieurs
- Meilleure chance d'obtenir les commentaires des clients
Désavantages:
- Nécessite de solides équipes techniques et de conception
- Seulement bon pour les systèmes qui peuvent être modularisés
- Beaucoup de dépendance à la modélisation
- Coût élevé de la modélisation et de la génération de code automatisée
- Gestion compliquée
- Convient uniquement aux systèmes basés sur des composants et évolutifs
- Une grande implication des utilisateurs est nécessaire tout au long du cycle de vie
Meilleur pour:
- Systèmes modularisés livrés de manière incrémentale
- Projets basés sur la conception avec beaucoup de modélisation forte
- Projets avec fonctionnalité de génération de code automatisée
- Projets avec des exigences changeant dynamiquement pour lesquels de petites itérations doivent être présentées tous les 2 à 3 mois
Modèle de développement en spirale
Le modèle Spiral SDLC est une combinaison des approches de prototypage et de cascade . Il se synchronise bien avec le processus naturel de développement logiciel. Le modèle Spiral présente les mêmes phases que Waterfall dans le même ordre (collecte des exigences, conception, mise en œuvre et test), séparées par la planification, l'évaluation des risques et la construction de prototypes et de simulations à chaque étape.
Avantages :
- Les estimations (budget, échéancier, etc.) deviennent plus réalistes au fur et à mesure de l'avancement des travaux puisque les problèmes importants sont découverts plus tôt
- Implication précoce de l'équipe de développement et des utilisateurs
- Meilleure qualité de la gestion des risques à chaque phase
- Meilleure flexibilité que dans les modèles linéaires
- Utilisation étendue de prototypes
Désavantages:
- Plus d'argent et de temps requis pour obtenir le produit fini
- Plus compliqué à exécuter en raison du besoin accru de gestion des risques
- Réutilisabilité limitée en raison des résultats hautement personnalisés des spirales de développement
- Nécessite une documentation lourde
Meilleur pour:
- Projets compliqués avec beaucoup de petites fonctionnalités intégrées
- Projets avec des budgets stricts (la gestion des risques aidera à économiser de l'argent)
- Projets à haut risque
- Projets de développement à long terme
- Projets sans exigences claires au début, ou avec des exigences qui doivent être évaluées
- De nouvelles gammes de produits destinées à être lancées par phases
- Projets où des modifications importantes du produit sont susceptibles de se produire au cours du développement
Modèle agile
Le modèle Agile SDLC est un mélange d'approches itératives et incrémentielles, axées sur l'adaptation à des exigences flexibles et la satisfaction des utilisateurs et des clients en fournissant un logiciel fonctionnel dès le début .
Les exigences et les solutions des projets Agile peuvent évoluer au cours du développement.
Avec le développement Agile, le produit est divisé en petites versions incrémentielles et livré en itérations . Toutes les tâches sont divisées en petits délais afin de préparer les fonctionnalités de travail avec chaque build. La version finale du produit contient toutes les fonctionnalités requises.
En Agile, les approches de développement existantes doivent être adaptées aux exigences de chaque projet spécifique. Lisez le site officiel du Manifeste Agile pour en savoir plus sur la philosophie Agile.
Avantages :
- Moins de temps nécessaire pour fournir des fonctionnalités spécifiques
- Ne laisse aucune place aux conjectures grâce à la communication en face-à-face et à la contribution continue du client
- Des résultats de haute qualité dans les plus brefs délais
- La valeur commerciale peut être livrée et démontrée rapidement
- Nécessite un minimum de ressources
- Hautement adaptatif aux exigences changeantes
Désavantages:
- Nécessite qu'un client réalise l'importance de l'approche centrée sur l'utilisateur
- La livraison tardive de la documentation entraîne un transfert de technologie plus difficile aux nouveaux membres de l'équipe
- Présente des exigences strictes en termes de portée, de fonctionnalités fournies et d'améliorations à apporter à temps
- Pas facile de gérer des dépendances complexes
- Nécessite beaucoup de soft skills de la part de l'équipe de développement
Meilleur pour:
- Presque tout type de projet, mais avec beaucoup d'engagement du client
- Projets avec un environnement en constante évolution
- Clients qui ont besoin que certaines fonctionnalités soient exécutées rapidement, par exemple en moins de 3 semaines
Pourquoi Agile ?
Selon le rapport annuel State of Agile, Agile reste le modèle de cycle de vie de développement logiciel le plus utilisé dans l'industrie technologique. Chez Mind Studios , nous utilisons principalement le modèle Agile SDLC pour développer des produits logiciels pour nos clients. Voici pourquoi.
La principale chose qui distingue Agile des autres modèles SDLC est qu'Agile est adaptatif , tandis que les autres modèles sont prédictifs. Les modèles de développement prédictifs dépendent étroitement d' une analyse et d'une planification adéquates des besoins . À cause de cela, il est difficile de mettre en œuvre des changements dans les méthodologies prédictives – le développement colle très étroitement au plan. Et si quelque chose doit être modifié, il devra faire face à toutes les conséquences de la gestion des contrôles et de la hiérarchisation.
Le développement de logiciels modernes nécessite la capacité d'apporter des modifications immédiatement . Le développement adaptatif Agile ne repose pas autant sur une planification détaillée que sur des méthodologies prédictives. Ainsi, si quelque chose doit être modifié, il peut être modifié au plus tard lors du sprint de développement suivant.
Une équipe de développement axée sur les fonctionnalités peut s'adapter dynamiquement aux changements d'exigences. Aussi, la fréquence des tests en Agile permet de minimiser le risque de pannes majeures .
Lire la suite : Comment gérer les risques dans le développement de logiciels .
Bien sûr, Agile signifie beaucoup d'interaction client et utilisateur pour fonctionner correctement. Les besoins de l'utilisateur, et non du client, définissent les exigences finales du projet.
Scrum et Kanban
Il existe de nombreuses approches établies du cycle de vie du développement logiciel Agile. Deux des plus populaires sont Scrum et Kanban .
Scrum est un framework de workflow utilisé pour fournir des logiciels dans des sprints, qui sont généralement des périodes de deux semaines. Scrum se concentre sur la façon de gérer les tâches dans un environnement de développement et contribue à améliorer la dynamique d'équipe.
Il n'y a pas de méthode unique pour exécuter Scrum en raison de sa grande adaptabilité. Mais en général, une équipe doit organiser les rôles, événements, artefacts et règles associés au sein d'un certain projet.
Un sprint est une période de deux à quatre semaines au cours de laquelle l'équipe crée un logiciel utilisable. Un nouveau sprint démarre juste après la fin du précédent.
Voici les éléments typiques d'un sprint :
Planification de sprint , où l'équipe planifie la quantité de travail à faire dans le sprint donné
La réunion quotidienne de mêlée une courte réunion quotidienne pour que l'équipe discute de ce qui a été fait, de ce qu'elle prévoit de faire aujourd'hui et des problèmes survenus depuis la dernière réunion
Sprint Review , un meetup à la fin du sprint au cours duquel l'équipe revient sur le travail accompli et apporte des modifications au backlog produit, si nécessaire
Une rétrospective de sprint a lieu juste avant le début d'un nouveau sprint. Au cours de la rétrospective, l'équipe Scrum conclut le travail et crée des plans d'amélioration pour les futurs sprints sur la base de leur expérience des sprints passés.
Kanban est une méthode de visualisation de gestion largement utilisée dans le modèle Agile SDLC. Il permet d'améliorer et de maintenir un haut niveau de productivité au sein d'une équipe de développement. Kanban fonctionne avec des itérations courtes : si Scrum est d'environ semaines, Kanban est d'environ heures. Scrum vise à terminer le sprint, tandis que Kanban vise à terminer la tâche. Kanban est anti-multitâche.
Les pratiques clés de Kanban sont :
- Visualiser le flux de travail
- Limiter les tâches en cours
- Gestion du flux de travail
Kanban est implémenté à l'aide d'un tableau où toutes les tâches du projet sont visualisées et divisées en colonnes telles que à faire, en cours, en attente, terminé et en révision.
Kanban est également bon pour les activités moins techniques, comme les ventes, le marketing et le recrutement.
DevOps
En parlant de modèles SDLC comme moyens de faire avancer les choses, nous devons mentionner l' approche DevOps . DevOps est une combinaison d'outils, de pratiques et d'approches qui aident à fournir des produits logiciels à un rythme plus rapide. DevOps concerne la collaboration des environnements de développement et d'exploitation.
Notez que DevOps n'est pas un modèle SDLC, mais il vous aide également à faire avancer les choses.
La plupart du temps, DevOps est effectué en automatisant l'infrastructure et les flux de travail et en suivant en permanence les performances des applications. Une approche DevOps vous permet d' augmenter la fréquence des déploiements, de documenter le code et de raccourcir le temps requis pour déployer un nouveau code . C'est très bon pour éviter les erreurs de dépendance.
DevOps utilise des itérations pour améliorer, mesurer et surveiller le code dans les opérations quotidiennes. Son objectif ultime est d'avoir un environnement de production aussi efficace que possible pour offrir une meilleure expérience client.
Mais la mise en œuvre du modèle DevOps nécessite un état d'esprit spécifique de la part des équipes de développement et d'exploitation , ainsi que la volonté de développer plus rapidement et de maîtriser les outils et les compétences DevOps.
Avantages :
- Des versions plus fréquentes pour une livraison plus rapide sur le marché
- Plus d'accent sur l'amélioration du produit et plus de réactivité aux besoins de l'entreprise
- Meilleure collaboration entre les membres de l'équipe
- Meilleure qualité du produit final et clients plus satisfaits
Désavantages:
- DevOps est nouveau, ce qui signifie qu'il n'est pas si bien étudié
- Pas la meilleure solution pour les projets critiques
- Nécessite un effort supplémentaire de la part de l'équipe pour organiser
- Forte possibilité d'erreurs aux premiers stades du développement
- Besoin de choisir entre se concentrer sur la sécurité ou la vitesse de développement
Conclusion
L'activité de développement de logiciels évolue constamment et rapidement. Il change plus vite que les gens ne créent des moyens établis pour le gérer. Il se peut qu'il n'y ait pas de SDLC spécifique qui corresponde parfaitement à votre entreprise. Mais les modèles de cycle de vie de développement logiciel existants peuvent au moins vous guider dans la bonne direction et vous aider à harmoniser vos processus métier.
Si vous souhaitez mieux comprendre ce que SDLC conviendra le mieux à votre projet - ou si vous avez besoin d'une équipe Agile de premier ordre pour développer votre application ou votre produit Web - envoyez-nous un message via notre page de contact.