의견.png

통합개발환경

해시넷
theraker (토론 | 기여)님의 2021년 2월 2일 (화) 16:39 판
이동: 둘러보기, 검색

통합개발환경(Integrated Development Environment, IDE)은 코딩, 디버그, 컴파일, 배포 등 프로그램 개발에 관련된 모든 작업을 하나의 프로그램 안에서 처리하는 환경을 제공하는 소프트웨어이다.

개요

통합개발환경은 공통된 개발자 툴을 하나의 그래픽 사용자 인터페이스(Graphical User Interface, GUI)로 결합하는 애플리케이션을 구축하기 위한 소프트웨어이다. 일반적으로 통합개발환경은 다음과 같으 요소로 구성되어 있다.

  • 소스 코드 편집기 : 시각적 신호를 활용한 구문(Syntax) 강조와 같은 기능을 포함하여 소프트웨어 코드를 작성하도록 돕는 텍스트 편집기로서, 언어별 자동 완성 기능과 코드 작성 중 버그 검사를 제공한다.
  • 로컬 빌드 자동화 : 컴퓨터 소스 코드를 바이너리 코드로 컴파일링하고, 바이너리 콛를 패키징하고 자동화 테스트를 실행하는 등 간편하고 반복 가능한 태스크를 개발자가 사용하는 소프트웨어의 로컬 빌드를 생성할 대 자동화해 주는 유틸리티이다.
  • 디버거 : 원본 코드에 있는 버그 위치를 그래픽으로 표시할 수 있는 다른 프로그램을 테스트하는 프로그램이다.

통합개발환경을 사용하면 설정 프로세스의 일환으로 여러 유틸리티를 수동으로 설정하고 통합할 필요가 없으므로 개발자들이 새로운 애플리케이션 프로그래밍을 신속하게 시작할 수 있다. 개발자들은 각각의 유틸리티가 동일한 워크벤치에 나타날 때 서로 다른 툴을 사용하는 방법을 개별적으로 학습하느라 시간을 허비하지 않아도 된다. 특히, 새로운 개발자가 온보딩할 때 통합개발환경을 사용하여 팀의 표준 툴 및 워크플로우를 익힐 수 있어 유용하다. 사실상 통합개발환경의 기능 대부분은 전체 문자열을 입력하지 않아도 되는 지능형 코드 완성 및 자동화된 코드 생성과 같이 시간 절감을 위한 기능이다. 다른 일반적인 통합개발환경 기능들은 개발자들이 워크플로우를 체계화하고 문제를 해결하도록 돕기 위한 기능이다. 통합개발환경은 코드가 작성된 대로 구문 분석하여 인적 오류로 인한 버그를 실시간으로 식별할 수 있다. 유틸리티가 단일 그래픽 사용자 인터페이스로 표현되기 때문에 개발자들은 애플리케이션 간에 전환할 필요 없이 동작을 실행할 수 있다. 구문 강조 또한 대부분의 통합개발환경에서 공통된 기능으로, 시각적 신호를 사용하여 텍스트 편집기에서 문법을 구별한다. 일부 통합개발환경은 추가적으로 클래스 및 개체 브라우저는 물론 특정 언어에 대한 클래스 계층 다이어그램을 포함한다. 통합개발환경을 포함하지 않고 애플리케이션을 개발하거나, 각 개발자들이 Vim 또는 Emacs 같은 경량 텍스트 편집기를 사용하여 다양한 유틸리티를 수동으로 통합함으로써 필수적으로 각자의 통합개발환경을 구축할 수도 있다. 일부 개발자들의 경우 이러한 접근 방식을 통해 고도의 커스터마이제이션 및 제어 능력의 이점을 실현한다. 그러나 엔터프라이즈 환경에서는 현대적인 통합개발환경의 시간 절감, 환경 표준화 및 자동화 기능이 다른 고려 사항보다 우선시된다.

특징

  • 지원되는 언어의 수 : 일부 통합개발환경은 하나의 언어만 지원하여 특정 프로그래밍 패러다임에 더욱 적합하다. 그 예인 IntelliJ는 주로 자바 통합개발환경으로 알려져 있다. 다른 통합개발환경은 자바, XML, 파이썬 등을 지원하는 이클립스 통합개발환경과 같이 한 번에 광범위한 언어를 지원한다.
  • 지원되는 운영체제 : 개발자의 운영체제에 따라 실행 가능한 통합개발환경이 제한되며(클라우드 기반 통합개발환경인 경우 제외), 개발 중인 애플리케이션이 특정 운영체제를 사용하는 최종 사용자를 위한 애플리케이션인 경우 추가적인 제약을 받는다.
  • 자동화 기능 : 대부분의 통합개발환경이 텍스트 편집기, 빌드 자동화 및 디버거라는 3가지 주요 기능을 포함하지만, 많은 통합개발환경은 리팩토링, 코드 검색 및 지속적인 통합 및 지속적인 배포(CI/CD) 툴과 같은 추가 기능도 지원한다.
  • 시스템 성능에 미치는 영향 : 개발자들이 메모리 사용량이 많은 다른 애플리케이션을 동시에 실행하고자 하는 경우 통합개발환경의 메모리 공간이 중요할 수 있다.
  • 플러그인 및 확장 기능 : 일부 통합개발환경은 개발자들의 요구사항 및 선호사항에 맞춰 워크플로우를 커스터마이징하는 기능을 포함한다.

클라우드 통합개발환경

클라우드 기반 SaaS(Software-as-a-Service, 서비스로서의 소프트웨어)로 제공되는 통합개발환경은 로컬개발환경과 달리 여러 특별한 이점을 제공한다. 그 중 하나는 모든 SaaS 서비스와 마찬가지로 소프트웨어를 다운로드하고 로컬 환경 및 종속 요소를 설정할 필요가 없으므로 개발자들이 프로젝트를 신속하게 시작할 수 있다는 점이다. 이는 또한 팀원들의 환경 전반에 표준화 수준을 제공하므로 일부 시스템에서만 작동하는 문제를 완화할 수 있다. 또한 개발자 환경은 중앙 집중식으로 관리되기 때문에 어떤 코드도 개별 개발자들의 컴퓨터에 상주하지 않으므로 지적 재산 및 보안 문제를 해결해 준다. 프로세스가 로컬 시스템에 미치는 영향 또한 다양하다. 빌드 실행 및 제품군 테스팅 같은 프로세스는 일반적으로 컴퓨팅 집약적인 워크로드이므로 프로세스를 실행하는 동안에는 워크스테이션 사용이 중단될 수 있다. SaaS 통합개발환경은 로컬 시스템의 컴퓨팅 리소스를 독점하지 않고도 장기간 실행되는 작업을 디스패치할 수 있다. 또한, 클라우드 통합개발환경은 일반적으로 플랫폼에 국한되지 않아 다양한 클라우드 벤더에 대한 연결을 지원한다.

종류

나모 웹 에디터

넷빈즈

델파이

비주얼 스튜디오

어도비 드림위버

안드로이드 스튜디오

이클립스

CLion

Code::Blocks

IntelliJ IDEA

PyCharm

RStudio

xcode

각주

참고자료

같이 보기


  의견.png 이 통합개발환경 문서는 소프트웨어에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.