통합 개발 환경

thumb|260px|데스크톱 운영 체제에서 실행되는 통합 개발 환경

**통합 개발 환경**(統合開發環境, )은 소프트웨어 개발을 위한 포괄적인 기능을 제공하는 소프트웨어 애플리케이션이다. IDE는 일반적으로 적어도 소스 코드 편집기, 빌드 자동화 도구 및 디버거로 구성된다. IntelliJ IDEA, 이클립스, 라자루스와 같은 일부 IDE는 필요한 컴파일러, 인터프리터 또는 둘 다를 포함한다. SharpDevelop 및 NetBeans와 같은 다른 IDE는 포함하지 않는다.

IDE와 광범위한 소프트웨어 개발 환경의 다른 부분 사이의 경계는 잘 정의되어 있지 않다. 때로는 버전 관리 시스템 또는 그래픽 사용자 인터페이스(GUI) 구축을 단순화하는 다양한 도구가 통합되기도 한다. 많은 최신 IDE에는 객체 지향 프로그래밍에서 사용되는 클래스 브라우저, 객체 브라우저 및 클래스 계층 다이어그램도 있다.

## 개요
thumb|외부 플러그인을 통해 자동 완성 및 린팅이 통합된 Vim
통합 개발 환경은 유사한 사용자 인터페이스를 가진 긴밀한 구성 요소를 제공하여 프로그래머의 생산성을 극대화하도록 설계되었다. IDE는 모든 개발이 이루어지는 단일 프로그램을 제공한다. 이 프로그램은 일반적으로 소프트웨어 작성, 수정, 컴파일, 배포 및 디버깅을 위한 많은 기능을 제공한다. 이는 vi, GDB, GNU 컴파일러 모음, make와 같은 관련 없는 도구를 사용하는 소프트웨어 개발과는 대조적이다.

IDE의 한 가지 목표는 여러 개발 유틸리티를 한데 모으는 데 필요한 구성을 줄이는 것이다. 대신, 동일한 기능 세트를 하나의 응집력 있는 단위로 제공한다. 설정 시간을 줄이면 개발자 생산성을 높일 수 있으며, 특히 IDE를 배우는 것이 개별 도구를 수동으로 통합하고 배우는 것보다 빠른 경우에 더욱 그렇다. 모든 개발 작업을 더욱 긴밀하게 통합하면 설정 작업을 돕는 것 이상으로 전반적인 생산성을 향상시킬 수 있다. 예를 들어, 코드는 편집하는 동안 지속적으로 파싱되어 구문 오류가 발생할 때 즉각적인 피드백을 제공하므로 개발자는 IDE를 사용하여 코드를 훨씬 빠르고 쉽게 디버깅할 수 있다.

일부 IDE는 특정 프로그래밍 언어에 전념하여 해당 언어의 프로그래밍 패러다임과 가장 밀접하게 일치하는 기능 세트를 허용한다. 그러나 많은 다중 언어 IDE가 있다.

대부분의 최신 IDE가 그래픽 기반인 반면, 마이크로소프트 윈도우 및 X 윈도 시스템 (X11)과 같은 창 시스템이 나오기 전에는 터보 파스칼과 같은 텍스트 기반 IDE가 널리 사용되었다. 이들은 일반적으로 기능 키 또는 핫키를 사용하여 자주 사용하는 명령이나 매크로를 실행한다.

## 역사
[thumb|[유닉스 계열 시스템에서 IDE로 흔히 사용되는 확장 가능한 편집기인 GNU 이맥스]]

IDE는 처음에는 시스템 콘솔 또는 단말기를 통한 개발이 가능해지면서 등장했다. 초기 시스템은 프로그램이 천공 카드, 천공 테이프 등을 통해 컴파일러 또는 어셈블러에 제출되었기 때문에 IDE를 지원할 수 없었다. 다트머스 베이직은 IDE와 함께 만들어진 최초의 언어였으며 (또한 콘솔이나 터미널 앞에 앉아서 사용하도록 설계된 최초의 언어이기도 했다). 다트머스 베이직의 IDE(다트머스 시분할 시스템의 일부)는 명령 기반이었기 때문에 그래픽 사용자 인터페이스의 등장 이후 인기를 얻은 메뉴 방식의 그래픽 IDE와는 별로 닮지 않았다. 그러나 현대적인 IDE와 일관된 방식으로 편집, 파일 관리, 컴파일, 디버깅 및 실행을 통합했다.

소프트랩 뮌헨(Softlab Munich)의 제품인 Maestro I는 소프트웨어 개발을 위한 세계 최초의 통합 개발 환경이었다. Maestro I는 전 세계 22,000명의 프로그래머에게 설치되었다. 1989년까지 서독에 6,000대가 설치되었다. Maestro는 1970년대와 1980년대에 이 분야에서 세계 최고였다. 오늘날 마지막 Maestro I 중 하나는 텍사스 알링턴의 정보 기술 박물관에서 찾을 수 있다.

플러그인 개념을 가진 최초의 IDE 중 하나는 Softbench였다. 1995년 컴퓨터보헤(Computerwoche)는 IDE의 사용이 개발자들에게 창의성을 가로막을 것이라며 환영받지 못했다고 논평했다.

 기준으로 구글 검색에서 가장 많이 검색된 IDE는 Visual Studio, Visual Studio Code, Eclipse였다.

## 주제

### 구문 강조

IDE 편집기는 일반적으로 구문 강조를 제공하며, 구조, 언어 키워드 및 구문 오류를 시각적으로 구별되는 색상과 글꼴 효과로 표시할 수 있다.

### 코드 자동 완성

코드 자동 완성은 프로그래밍 속도를 높이기 위한 중요한 IDE 기능이다. 최신 IDE는 지능형 코드 자동 완성 기능도 갖추고 있다.

#### 지능형 코드 자동 완성

### 리팩토링

고급 IDE는 자동 리팩토링을 지원한다.

### 버전 관리

IDE는 소스 저장소와 상호 작용하기 위해 통합 버전 관리를 제공해야 한다.

### 디버그

IDE는 통합 디버거를 사용하여 디버깅에도 사용되며, 편집기에서 중단점 설정, 단계의 시각적 렌더링 등을 지원한다.

### 코드 검색

IDE는 코드 검색을 지원할 수 있다. 코드 검색에는 두 가지 다른 의미가 있다. 첫째, 클래스 및 함수 선언, 사용, 변수 및 필드 읽기/쓰기 등을 검색하는 것을 의미한다. IDE는 코드 검색을 위해 예를 들어 폼 기반 위젯 및 자연어 기반 인터페이스와 같은 다양한 종류의 사용자 인터페이스를 사용할 수 있다.
둘째, 특정 기능의 구체적인 구현을 검색하는 것을 의미한다.
### 비주얼 프로그래밍
비주얼 프로그래밍은 IDE가 일반적으로 필요한 사용 시나리오이다. 비주얼 베이직은 사용자가 프로그래밍, 빌딩 블록 또는 코드 노드를 이동하여 플로우차트나 구조 다이어그램을 생성하고 이를 컴파일하거나 해석하여 새로운 애플리케이션을 만들 수 있게 한다. 이러한 플로우차트는 종종 통합 모델링 언어를 기반으로 한다.

이 인터페이스는 레고 마인드스톰 시스템으로 대중화되었으며, 모질라에서 발견되는 것과 같은 사용자 정의 브라우저의 힘을 활용하고자 하는 여러 회사에서 적극적으로 추구하고 있다. KTechlab은 플로우코드를 지원하며 마이크로컨트롤러용 소프트웨어 개발을 위한 인기 있는 오픈 소스 IDE 및 시뮬레이터이다. 비주얼 프로그래밍은 또한 분산 프로그래밍의 힘을 담당한다 (cf. LabVIEW 및 EICASLAB 소프트웨어). 초기 비주얼 프로그래밍 시스템인 Max는 아날로그 신시사이저 설계를 모델로 하여 1980년대부터 실시간 음악 연주 소프트웨어를 개발하는 데 사용되었다. 또 다른 초기 예는 원래 매킨토시용으로 개발된 데이터플로 프로그래밍 기반 시스템인 Prograph였다. 그래픽 프로그래밍 환경 "GRAPE"는 qfix 로봇 키트를 프로그래밍하는 데 사용된다.

이러한 접근 방식은 Openlab과 같은 전문 소프트웨어에서도 사용되는데, 최종 사용자는 기존 학습 곡선 없이 완전한 프로그래밍 언어의 유연성을 원한다.

### 언어 지원
GNU Emacs, IntelliJ IDEA, Eclipse, MyEclipse, NetBeans, MonoDevelop, JDoodle 또는 PlayCode와 같은 일부 IDE는 여러 언어를 지원한다.

대체 언어에 대한 지원은 종종 플러그인을 통해 제공되어 동일한 IDE에 동시에 설치할 수 있다. 예를 들어, 플라이체크는 39개 언어를 지원하는 GNU Emacs 24용 최신 즉석 구문 검사 확장이다. 또 다른 예는 88개 언어를 지원하는 온라인 클라우드 기반 IDE인 JDoodle이다.https://www.jdoodle.com/docs/jdoodle-apis/programming-languages-and-versions Eclipse 및 Netbeans에는 C/C++, Ada, GNAT (예: AdaGIDE), Perl, Python, Ruby, PHP용 플러그인이 있으며, 파일 확장자, 환경 또는 프로젝트 설정에 따라 자동으로 선택된다.

### 구현
IDE는 다양한 언어로 구현될 수 있다. 예를 들어:
* 이맥스 리스프 및 C를 사용하는 GNU 이맥스;
* Java를 사용하는 IntelliJ IDEA, Eclipse 및 NetBeans;
* C#를 사용하는 MonoDevelop 및 Rider.

### 다양한 컴퓨팅 플랫폼에서의 태도
유닉스 프로그래머는 명령줄 POSIX 도구를 완전한 개발 환경으로 결합하여 리눅스 커널 및 그 환경과 같은 대규모 프로그램을 개발할 수 있다. 이런 의미에서 전체 유닉스 시스템은 IDE 역할을 한다. 무료 소프트웨어 GNU 툴체인(GNU 컴파일러 모음 (GCC), GNU 디버거 (GDB), GNU make 포함)은 윈도우를 포함한 여러 플랫폼에서 사용할 수 있다. "모든 것이 텍스트 스트림이다"라는 유닉스의 보편적인 철학은 명령줄 지향 도구를 선호하는 개발자들이 많은 표준 유닉스 및 GNU 빌드 도구를 지원하는 편집기를 사용하여 다음과 같은 프로그램으로 IDE를 구축할 수 있게 한다.
이맥스
또는 Vim. 데이터 디스플레이 디버거는 많은 텍스트 기반 디버거 표준 도구를 위한 고급 그래픽 프런트엔드로 의도되었다. 일부 프로그래머는 완전한 IDE에 포함된 유사한 코드 빌딩 도구보다 메이크파일 및 그 파생물을 관리하는 것을 선호한다. 예를 들어, PostgreSQL 데이터베이스에 기여하는 대부분의 개발자는 새로운 기능을 개발하기 위해 make 및 GDB를 직접 사용한다. 비주얼 C++를 사용하여 마이크로소프트 윈도우용 PostgreSQL을 빌드할 때도 IDE 기능에 의존하기보다는 make를 대체하는 Perl 스크립트가 사용된다. Geany와 같은 일부 리눅스 IDE는 전통적인 빌드 작업에 그래픽 프런트엔드를 제공하려고 시도한다.

다양한 Microsoft Windows 플랫폼에서는 개발을 위한 명령줄 도구가 거의 사용되지 않는다. 따라서 많은 상업용 및 비상업용 제품이 있다. 그러나 각각 다른 디자인을 가지고 있어 일반적으로 호환성 문제를 일으킨다. 윈도우용 대부분의 주요 컴파일러 공급업체는 마이크로소프트 (Visual C++, 플랫폼 SDK, Framework SDK, nmake 유틸리티)를 포함하여 명령줄 도구의 무료 복사본을 여전히 제공한다.

IDE는 클래식 Mac OS와 macOS를 사용하는 애플 매킨토시에서 1980년대 중반의 Macintosh Programmer's Workshop, Turbo Pascal, THINK Pascal 및 THINK C 환경으로 거슬러 올라가며 항상 인기를 누렸다. 현재 macOS 프로그래머는 Xcode와 같은 네이티브 IDE와 Eclipse, Netbeans와 같은 오픈 소스 도구 중에서 선택할 수 있다. 액티브스테이트 코모도는 macOS에서 지원되는 독점 다국어 IDE이다.

## 온라인

온라인 통합 개발 환경은 웹 IDE 또는 클라우드 IDE라고도 불리며, 웹 브라우저 기반 IDE로 소프트웨어 개발 또는 웹 개발을 가능하게 한다. 온라인 IDE는 웹 브라우저에서 접근할 수 있어 휴대용 작업 환경을 제공한다. 온라인 IDE는 일반적으로 기존 데스크톱 IDE와 동일한 모든 기능을 포함하지는 않지만, 구문 강조와 같은 모든 기본적인 IDE 기능은 일반적으로 존재한다.

모바일 기반 통합 개발 환경(IDE)은 모바일 플랫폼에서 소프트웨어 개발을 위한 포괄적인 도구 모음을 제공하는 소프트웨어 애플리케이션이다. 기존 데스크톱 IDE와 달리 모바일 기반 IDE는 스마트폰과 태블릿에서 실행되도록 설계되어 개발자가 모바일 장치에서 직접 코드를 작성, 디버그 및 배포할 수 있도록 한다.

## 통합 개발 환경의 종류

## 같이 보기

* 소프트웨어 개발 키트
* 고속 개발 도구
* 유틸리티 프로그램
* 소프트웨어 공학
* 컴파일러

## 각주


분류:소프트웨어 공학