# Ambiente de desenvolvimento integrado

O Ambiente de Desenvolvimento Integrado (do inglês Integrated Development Environment, mais conhecido pela sigla IDE) é um programa de computador que reúne características e ferramentas de apoio ao desenvolvimento de software com o objetivo de agilizar este processo; facilitando a técnica de Desenvolvimento Rápido de Aplicações (do ingles Rapid Application Development - RAD), tornando o programador mais produtivo com os recursos de: edição de código, transformação em executável ​​e, depuração.

## Características gerais

As características e ferramentas mais comuns encontradas nos IDEs são:
* Interface Gráfica de Usuário (GUI): a principal diferença entre o IDE e o editor de código, pois o editor não possui a GUI;
* Editor - edita o código-fonte do programa escrito na(s) linguagem(ns) suportada(s) pela IDE;
* Destaca a sintaxe da linguagem de programação no editor (syntax color highlighting) e completa o código no editor (auto-completion code);
* Depurador (debugger) - auxilia no processo de encontrar e corrigir defeitos no código-fonte do programa, na tentativa de aprimorar a qualidade de software;
* Compilador (compiler) - compila o código-fonte do programa, editado em uma linguagem específica e a transforma em linguagem de máquina;
* Linker - liga (linka) os vários "pedaços" de código-fonte que estão na linguagem de máquina, em um programa executável, para ser usado no dispositivo computacional, como por exemplo o computador;
* Modelagem de dados (modeling) - criação do modelo de classes, objetos, interfaces, associações e interações dos artefatos envolvidos no software com o objetivo de solucionar as necessidades-alvo do software final;
* Geração de código - característica mais explorada em Ferramentas CASE, a geração de código também é encontrada em IDEs, contudo com um escopo mais direcionado a templates de código comumente utilizados para solucionar problemas rotineiros. Todavia, em conjunto com ferramentas de modelagem, a geração pode gerar praticamente todo o código-fonte do programa com base no modelo proposto, tornando muito mais rápido o processo de desenvolvimento e distribuição do software;
* Distribuição (deploy) - auxilia no processo de criação do instalador do software, ou outra forma de distribuição, seja discos ou via internet;
* Testes Automatizados (automated tests) - realiza testes no software de forma automatizada, com base em scripts ou programas de testes previamente especificados, gerando um relatório, assim auxiliando na análise do impacto das alterações no código-fonte. Ferramentas deste tipo mais comuns no mercado são chamadas robôs de testes;
* Refatoração (refactoring) - consiste na melhoria constante do código-fonte do software, seja na construção de código mais otimizado, mais limpo e/ou com melhor entendimento pelos envolvidos no desenvolvimento do software. A refatoração, em conjunto com os testes automatizados, é uma poderosa ferramenta no processo de erradicação de "bugs", tendo em vista que os testes "garantem" o mesmo comportamento externo do software ou da característica sendo reconstruída.
* Criação de arquivo executável.

## Benefícios

Usar uma IDE pode trazer diversos benefícios para as pessoas envolvidas no projeto, como os Stakeholders, programadores, empresas e clientes. O uso de uma IDE adequada pode aumentar a produtividade, diminuindo gastos e aumentando o desempenho. Com ela é possível medir resultados, fazer a verificação e correção de erros e integrar tecnologias.

## Exemplos

* Intellij IDEA- IDE da JetBrains para desenvolvimento em diversas linguagens, principalmente JAVA. Também fornece recursos para produtividade de desenvolvimento em tecnologias web como HTML5, AngularJS, NodeJS, GWT entre outros;
* Android Studio - IDE oficial da Google para desenvolvimento na plataforma Android;
* Arduino - IDE para microcontroladores linguagem wiring com bibliotecas em C.
* Softwell Maker - Multi-linguagem e multi-banco, gerando aplicativos, documentação e funciona integrando BPM;
* HB++ (Handheld-Basic) - Desenvolve projetos Palm OS;
* Boa Constructor - Gera código Python;
* CodeLobster IDE- Gera código HTML, PHP, JavaScript, CSS, Perl, Python etc.;
* Delphi - Trabalha originalmente com a linguagem Object Pascal / Pascal, agregando na suite Delphi Studio 2005, a linguagem C# e a extensão da Object Pascal para .NET;
* Lazarus- Uma alternativa gratuita e de código livre (open source) para o Delphi, que também trabalha originalmente com Pascal e Object Pascal, é baseado no compilador Free Pascal, sua interface é semelhante a do Delphi até sua versão 7 (antes do Delphi mudar para o estilo visual das ferramentas da Microsoft);
* Eclipse - Gera código Java (através de plugins, o Eclipse suporta muitas outras linguagens como Python e C / C++);
* Netbeans - Gera código Java (e suporta muitas outras linguagens como PHP, Python e C / C++);
* Sun Studio- Linguagens C, C++ e Fortran;
* BlueJ - Gera código Java;
* Komodo IDE / Komodo Edit - Gera código Tcl;
* Genexus - Ferramenta baseada em conhecimento, gera em diversas linguagens de programação e bancos de dados;
* Genio - Plataforma de Geração Automática de Código;
* PHP Storm - Ferramenta da Jet Brains, gera código PHP;
* Visual Basic - Gera código Basic;
* Visual Studio - Gera código para Framework.NET, suportando linguagens como Visual Basic.NET, C#, C++, J# e outras compatíveis com.NET;
* SharpDevelop - Gera código C#;
* MonoDevelop / Xamarin Studio - Baseado no SharpDevelop, para ambiente multi-plataforma;
* DEV-C++, Code::Blocks, Turbo C - Geram código para C e C++;
* Anjuta - Gera código para C e C++;
* Anubis - Gera código PHP-GTK;
* Zend Studio - Gera código PHP;
* WOL - Gera código Pascal (também é biblioteca);
* Xcode - Gera código Objective-C e Swift;
* IAR Embedded Workbench - Gera códigos em C e Assembly para programação de microcontroladores;
* Source Insight - Suporta: C, C++, VHDL, para Ambiente Windows
* Force (IDE) - Gera código Fortran, para Ambiente Windows
* OutSystems- OutSystems Platform;
* Access (IDE) - Gera código VBA - Visual Basic for Aplications, para Ambiente Windows