Article de reference

Développement logiciel

Organigramme du , un modèle de développement itératif Chacune des méthodologies disponibles est mieux adaptée à des types de projets spécifiques, en fonction de diverses considé...

Organigramme du itératif

Chacune des méthodologies disponibles est mieux adaptée à des types de projets spécifiques, en fonction de diverses considérations techniques, organisationnelles, de projet et d'équipe.

  • La méthode la plus simple est celle du « code et de la correction », généralement utilisée par un seul programmeur travaillant sur un petit projet. Après avoir brièvement réfléchi à l’objectif du programme, le programmeur le code et l’exécute pour vérifier son bon fonctionnement. Une fois le travail terminé, le produit est mis en production. Cette méthode est utile pour les prototypes, mais ne convient pas aux programmes plus complexes.
  • Dans le modèle en cascade descendant , les étapes de faisabilité, d'analyse, de conception , de développement, d'assurance qualité et de mise en œuvre se succèdent dans cet ordre. Ce modèle exige que chaque étape soit achevée avant de commencer la suivante, ce qui engendre des retards, et empêche toute révision des étapes précédentes, même si nécessaire.
  • Dans les processus itératifs , ces étapes s'entremêlent pour une flexibilité et une efficacité accrues, ainsi qu'une planification plus réaliste. Au lieu de réaliser le projet en une seule fois, on peut procéder étape par étape, composant par composant. Le développement itératif permet également aux développeurs de prioriser les fonctionnalités les plus importantes, et d'abandonner ultérieurement celles de moindre priorité si nécessaire. La méthode Agile , initialement conçue pour les projets de petite et moyenne envergure, vise à donner aux développeurs un meilleur contrôle sur les fonctionnalités qu'ils développent afin de réduire les risques de dépassement de délais ou de coûts. Parmi les dérivés de la méthode Agile, on trouve la programmation extrême (XP) et Scrum . Le développement de logiciels libres utilise généralement la méthodologie Agile avec une conception, un codage et des tests simultanés, en raison de son recours à un réseau distribué de contributeurs bénévoles.
  • Au-delà des méthodes agiles, certaines entreprises intègrent les opérations informatiques au développement logiciel ; on parle alors de DevOps ou de DevSecOps , incluant la sécurité informatique . Le DevOps comprend le développement continu, les tests , l’intégration du nouveau code dans le système de contrôle de version, le déploiement de ce nouveau code et, parfois, sa livraison aux clients. Cette intégration vise à fournir des services informatiques plus rapidement et plus efficacement.

Un autre axe de nombreuses méthodologies de programmation consiste à tenter de détecter les problèmes tels que les vulnérabilités de sécurité et les bogues le plus tôt possible ( tests en amont ) afin de réduire les coûts de leur suivi et de leur correction.

En 2009, on estimait que 32 % des projets logiciels étaient livrés dans les délais et le budget impartis, et avec toutes les fonctionnalités. 44 % supplémentaires étaient livrés, mais il manquait au moins une fonctionnalité. Les 24 % restants étaient annulés avant leur mise en production.

Cycle de vie

Le cycle de vie du développement logiciel décrit les phases typiques du processus de développement logiciel.

Faisabilité

Les sources d'idées de logiciels sont nombreuses. Elles peuvent provenir d'études de marché , notamment sur les données démographiques des clients potentiels, des clients existants, des prospects ayant refusé le produit, des équipes de développement interne ou encore de consultants externes. Les idées de logiciels sont généralement évaluées en premier lieu par le service marketing afin de déterminer leur faisabilité économique, leur adéquation aux canaux de distribution existants, leurs impacts potentiels sur les gammes de produits existantes, les fonctionnalités requises et leur adéquation aux objectifs marketing de l'entreprise. Lors de cette évaluation marketing, les hypothèses de coûts et de délais sont analysées. L'analyse de faisabilité estime le retour sur investissement du projet , son coût de développement et son calendrier. Sur la base de cette analyse, l'entreprise peut décider d'investir dans la poursuite du développement. Une fois la décision prise de développer le logiciel, l'entreprise s'attache à livrer le produit dans les délais et les coûts estimés, tout en garantissant un haut niveau de qualité (absence de bogues) et les fonctionnalités souhaitées. Cependant, la plupart des projets logiciels prennent du retard et il arrive que des compromis soient faits sur les fonctionnalités ou la qualité pour respecter les délais.

Analyse

L'analyse logicielle débute par une analyse des exigences afin de cerner les besoins métiers du logiciel. L'identification des besoins se heurte à la difficulté que représentent les besoins différents et incompatibles des utilisateurs actuels ou potentiels, leur méconnaissance de leurs propres besoins et leur évolution au cours du développement logiciel. L'analyse aboutit finalement à une spécification détaillée du produit, servant de base au travail des développeurs. Les analystes logiciels décomposent souvent le projet en objets plus petits, des composants réutilisables pour une meilleure rentabilité, une efficacité accrue et une fiabilité renforcée. Cette décomposition peut permettre une implémentation multithread , nettement plus rapide sur les ordinateurs multiprocesseurs .

Lors des phases d'analyse et de conception du développement logiciel, l'analyse structurée est souvent utilisée pour décomposer les exigences du client en éléments implémentables par les programmeurs. La logique sous-jacente du programme peut être représentée par des diagrammes de flux de données , des dictionnaires de données , du pseudocode , des diagrammes de transition d'état et/ou des diagrammes entité-association . Si le projet intègre un logiciel existant non modélisé, ce dernier peut être modélisé afin de garantir sa bonne intégration au nouveau logiciel.

Conception

L'élément central du développement logiciel est la création et la compréhension du logiciel qui implémente la fonctionnalité souhaitée. Il existe différentes stratégies pour écrire le code. Un logiciel cohésif est composé de divers éléments indépendants les uns des autres. Le couplage, qui désigne l'interrelation de différents composants logiciels, est considéré comme indésirable car il complexifie la maintenance . Souvent, les programmeurs ne suivent pas les bonnes pratiques du secteur, ce qui engendre un code inefficace, difficile à comprendre ou dont la documentation fonctionnelle est insuffisante. Ces normes sont particulièrement susceptibles de ne plus être respectées en cas de délais serrés. Par conséquent, les tests, le débogage et la révision du code deviennent beaucoup plus difficiles. La refactorisation de code est une technique qui consiste à restructurer le code existant sans en modifier le comportement externe, souvent pour améliorer sa conception, sa lisibilité ou sa maintenabilité.

Depuis la popularisation des grands modèles de langage , le développement logiciel assisté par l'IA a été utilisé pour augmenter la programmation humaine en faisant gérer la syntaxe et écrire du code par une IA.

Essai

La production est la phase au cours de laquelle le logiciel est déployé auprès de l'utilisateur final. Pendant la production, le développeur peut créer des ressources de support technique pour les utilisateurs ou un processus pour corriger les bogues et les erreurs qui n'ont pas été détectés auparavant.

Programmeur au travail

Le développement logiciel est réalisé par des développeurs , généralement au sein d'une équipe. Une communication efficace entre les membres de l'équipe est essentielle à la réussite. Ceci est facilité si l'équipe est restreinte, habituée à travailler ensemble et située à proximité les uns des autres. La communication permet également d'identifier les problèmes plus tôt dans le développement et d'éviter les efforts redondants. De nombreux projets de développement s'assurent que plusieurs personnes connaissent chaque composant afin de prévenir le risque de perte de connaissances essentielles détenues par un seul employé. Le développement logiciel fait intervenir des professionnels de divers domaines, non seulement des programmeurs , mais aussi des chefs de produit qui définissent la stratégie et la feuille de route du produit, ainsi que des spécialistes des tests, de la documentation, du graphisme , du support utilisateur, du marketing et de la levée de fonds. Si les développeurs de logiciels propriétaires sont rémunérés, la plupart des contributeurs aux logiciels libres sont bénévoles. Ils peuvent également être rémunérés par des entreprises dont le modèle économique ne repose pas sur la vente de logiciels, mais sur autre chose, comme des services ou des modifications de logiciels libres.

Modèles et outils

Ingénierie logicielle assistée par ordinateur

L’ingénierie logicielle assistée par ordinateur (CASE) est un ensemble d’outils permettant l’ automatisation partielle du développement logiciel. La CASE permet aux concepteurs d’esquisser la logique d’un programme, qu’il s’agisse d’un programme à écrire ou d’un programme existant, afin de faciliter son intégration avec un nouveau code ou de le rétroconcevoir (par exemple, pour changer le langage de programmation ).

Documentation

Une estimation précise est cruciale lors de l'étude de faisabilité et pour la livraison du produit dans les délais et le budget impartis. Le processus d'estimation est souvent délégué au chef de projet . L'estimation de l'effort étant directement liée à la taille de l'application complète, elle est fortement influencée par l'ajout de fonctionnalités aux exigences : plus les exigences sont nombreuses, plus le coût de développement est élevé. Des aspects non liés aux fonctionnalités, tels que l'expérience des développeurs et la réutilisabilité du code, sont également essentiels à prendre en compte dans l'estimation. , la plupart des outils d’estimation du temps et des ressources nécessaires au développement de logiciels ont été conçus pour des applications conventionnelles et ne sont pas applicables aux applications Web ou aux applications mobiles .

environnement de développement intégré

Anjuta , un EDI C et C++ pour l'environnement GNOME

Un environnement de développement intégré (IDE) prend en charge le développement logiciel avec des fonctionnalités améliorées par rapport à un simple éditeur de texte . Les IDE incluent souvent la compilation automatisée , la coloration syntaxique des erreurs, l'assistance au débogage, l'intégration avec le contrôle de version et la semi-automatisation des tests.

Contrôle de version

La propriété intellectuelle peut poser problème lorsque les développeurs intègrent du code ou des bibliothèques open source dans un produit propriétaire, car la plupart des licences open source utilisées pour les logiciels exigent que les modifications soient diffusées sous la même licence. En alternative, les développeurs peuvent choisir une solution propriétaire ou écrire leur propre module logiciel.

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index