# Environnement de développement

En programmation informatique, un environnement de développement est un ensemble d'outils qui permet d'augmenter la productivité des programmeurs qui développent des logiciels. Il comporte un éditeur de texte destiné à la programmation, des fonctions qui permettent, par pression sur un bouton, de démarrer le compilateur ou l'éditeur de liens ainsi qu'un débogueur en ligne, qui permet d'exécuter ligne par ligne le programme en cours de construction.
Certains environnements sont dédiés à un langage de programmation en particulier.
Dans un environnement de développement « intégré » (abrégé EDI en français ou IDE en anglais, pour integrated development environment), les outils sont prévus pour être utilisés ensemble (le produit d'un outil peut servir de matière première pour un autre outil). Les outils peuvent être intégrés dès le départ, c'est-à-dire qu'ils sont construits dans le but d'être utilisés ensemble. Il peut aussi s'agir d'un ensemble d'outils développés sans lien entre eux et intégrés a posteriori.
L'objectif d'un environnement de développement est d'augmenter la productivité des programmeurs en automatisant une partie des activités et en simplifiant les opérations. Les environnements de développement visent également à améliorer la qualité de la documentation en rapport avec le logiciel en construction. Certains environnements de développement offrent également la possibilité de créer des prototypes, de planifier les travaux et de gérer des projets.
Depuis 1980, le développement et la maintenance de logiciels sont partiellement automatisés à l'aide d'un lot d'outils — l'environnement de développement. Les outils des environnements de développement sont un sujet d'étude en génie logiciel — le savoir-faire en ingénierie du logiciel.

## Fonctionnalités

L'expression environnement de développement est apparue dans les années 1980, pour désigner un ensemble d'outils et de procédés destinés à assister et formaliser le travail de création de logiciels. L'objectif visé était de créer des outils qui assistent les développeurs dans toutes les étapes de la réalisation du logiciel: définition, conception, programmation, test et maintenance. Ces outils tiennent également compte des différents rôles au sein d'une équipe de programmation: programmeur, manager et responsable qualité.
Les premiers outils couvraient les étapes de programmation et de tests, tandis que sont apparus plus tard des outils couvrant également les étapes de définition et de conception. Cette nouvelle génération d'outils de développement, qui couvrent également les étapes préliminaires à la programmation et orientent le développeur vers les bonnes pratiques de génie logiciel a été appelée Computer Aided Software Engineering (abr. CASE), en français ingénierie logicielle assistée par ordinateur.
Un environnement de développement comporte typiquement les outils nécessaires pour analyser, écrire, et déboguer un programme. Dans les modèles intégrés, les différents outils ont un look and feel identique et peuvent être interconnectés. Par exemple il peut être possible d'ouvrir l'éditeur de texte ou le compilateur à partir du débogueur voire de modifier le code source en cours de débogage directement depuis le débogueur.
Un environnement de développement comporte toujours un éditeur de texte incorporé, avec souvent la possibilité de le remplacer par un autre éditeur. L'éditeur comporte typiquement des fonctions de mise en évidence alignées avec le langage de programmation: indentation automatique des blocs de code, marquage des délimiteurs (parenthèses ou accolades), et mise en évidence des mots clés du langage par de la couleur ou des caractères gras.
Un environnement de développement peut également comporter les outils suivants :
* Un outil de création d'interface graphique. Un tel outil permet au programmeur de gagner un temps significatif dans la construction de l'interface graphique de son programme. Jusqu'à l'arrivée de la technologie Java, de tels outils ciblaient toujours un système d'exploitation en particulier.
* Un outil pour réaliser automatiquement des tests.
* Des outils d'analyse du code source. Par exemple un générateur de graphique qui permet d'obtenir le diagramme en arbre de l'utilisation d'une fonction du programme.
* Un moteur de recherche qui tient compte du langage de programmation: il permet par exemple de rechercher le nom d'une fonction en évitant les commentaires et les expressions littérales, et en se limitant au cadre d'un module ou d'une classe.
* Des outils destinés à assister aux opérations préliminaires à la programmation, par exemple des outils de modélisation, ou d'analyse des exigences.
* Un outil de contrôle de versions. Un tel outil permet à plusieurs programmeurs de travailler simultanément sur les fichiers de code source du programme.
Les environnements de développement intégré sont parfois issus d'outils qui offrent une seule et unique fonction et que leurs auteurs ont ensuite enrichis et fusionnés avec d'autres outils. Il peut s'agir d'outil de création d'interface graphique ou de manipulation de base de données.

## Historique

Beaucoup d'anciens langages n'ont pas eu d'EDI associé, car les développements étaient fait via des organigrammes, des formulaires de codification et des cartes perforées soumises à l'ordinateur. Les EDI sont donc apparus avec les développements « sur console ».
Le premier langage créé — et livré — avec un EDI fut ainsi le Dartmouth BASIC (en) en 1964, premier langage conçu pour être utilisé devant un terminal d'ordinateur. Son EDI était basé sur des commandes saisies « en ligne » : Pour de tels langages, les EDI consistaient en une interface graphique sommaire, assortie à un système de construction (compilation et édition de liens) de programme « par makefile » : les makefiles permettent de décrire les options de compilation et d'édition voulues pour la construction du programme. La syntaxe de plus en plus évoluée de ces makefiles a abouti à des pseudo-langages de plus en plus complexes et rébarbatifs, tant leurs possibilités se sont étendues (ils permettent par exemple d'ajouter des structures de contrôles aux instructions de compilations ou d'édition de liens), conduisant à la mise en place de fichiers de configuration pour décrire et rendre persistantes ces options, et automatiser leur enchaînement.
Les EDI récents sont conçus pour des interfaces plus évoluées : menus, boutons, utilisation combinée clavier/souris, etc. Ils masquent et contrôlent les commandes techniques sous-jacentes depuis des IHM graphiques, évitant ainsi aux programmeurs débutants d'être confrontés à la rugueuse et exigeante syntaxe du makefile.

## Environnements de développement intégré

Un environnement de développement intégré est un ensemble d'outils destinés à programmer dans un langage donné, qui sont distribués ensemble. Il permet de manipuler les outils de programmation depuis une interface graphique simplifiée. Il existe au moins autant d'environnements de développement intégré qu'il existe de langages de programmation et les IDE sont souvent dédiés à un langage donné. Un IDE comporte typiquement une interface graphique pour lancer les différents outils, un éditeur pour le code source, un compilateur, un débogueur, ainsi que, souvent, un outil permettant de construire les interfaces graphiques des logiciels. L'éditeur offre les fonctionnalités ordinaires d'un éditeur de texte, le compilateur permet au programmeur de vérifier les erreurs de syntaxe du code source, et le débogueur permet de vérifier les erreurs de code.
Visual Studio, Eclipse et IntelliJ IDEA sont des environnements de développement populaires. Il existe également des éditeurs en ligne tels que Cloud9 IDE (en).
Eclipse permet notamment d'écrire, de compiler, d'exécuter et de déboguer des applications. Le débogueur permet d'exécuter le programme ligne par ligne et vérifier l'état des variables. Eclipse permet, à partir d'une fenêtre principale Workbench (espace de travail) d'accéder à différentes perspectives à partir desquelles le code source du programme peut être consulté et modifié. Il peut être utilisé avec de nombreux langages de programmation, le plus couramment utilisé étant Java. Il comporte des fonctions destinées à assister la création de constructions courantes du langage Java (packages, classes, etc.) ainsi qu'une fonction pour générer de la documentation.
Visual Studio, commercialisé par Microsoft, permet de créer des programmes, de les compiler et de les déboguer. Depuis 2002 il est destiné à la création de programmes pour la plateforme Microsoft .NET dans les langages Visual Basic, C#, C++ et F#. Il permet de créer des applications Web. En plus du code source du programme, les pages web, ainsi que les feuilles de style et les documents XML peuvent être modifiés depuis Visual Studio. Il permet également de créer des interfaces graphiques et comporte un outil de contrôle de versions.