최근 수정 시각 : 2025-04-13 03:05:52

개발환경


1. 개요2. 상세3. 재현성4. 통합 개발 환경5. 관련 문서
5.1. 개별 솔루션, 관리자5.2. 툴체인, 콜렉션 패키지5.3. 별도 문서가 있는 분야별 개발환경

1. 개요

development environment

주어진 요구사항에 맞게 만들고자 하는 소프트웨어를 작성, 빌드, 테스트, 실행, 배포할 수 있도록 구성된 환경. 여기서의 환경(environment)이라 함은 구체적으로는 운영체제, 컴파일러, SDK, 패키지 매니저, 시스템 소프트웨어, 통합 개발 환경부터 시작해서 추상적으로는 개발자가 임의의 원하는 행동을 막힘없이(without hassle) 할 수 있도록 갖춰진 최적의 상태 자체를 말한다.

2. 상세

어떤 프로그래밍 언어, 게임 엔진, 프레임워크냐 등 각 분야에 따라 개발환경 구축 방법과 방향이 천차만별로 달라진다. 분야가 다르다면 겹치는 내용은 거의 없으나 전반적으로 운영체제, 시스템 패키지 매니저, 컴파일러, 버전 관리 시스템, 애플리케이션 패키지 매니저, IDE 등 단계적인 레이어로 분리할 수는 있다. 특히나 크로스 플랫폼 툴들이 보편화 되면서 이러한 추상화가 더욱 쉬워졌다.

에디터의 단축키나 문법 강조 테마, 알록달록한 터미널 프롬프트까지 사소하고 자잘한 것까지 커스터마이징하는 개발자들도 많다. 흔히 UNIX 계열 운영체제에서 ricing이라고 부르는 행위들로, 이러한 유형의 개발자들에게는 자신의 개발환경 셋업이 그야말로 자아 정체성에 가깝다. 그만큼 취향을 많이 타는 것.

불필요해 보일 수 있으나 개발자도 사람인 만큼 자신만의 철학, 습관, 경로의존성을 가지고 있고 그만큼 자신에게 익숙해져 있는 환경일수록 개발자 경험(DX)이 향상되어 결과적으로는 제품 개발의 생산성에도 영향을 미친다. 다만 이런 차별화, 개인화가 팀 협업에서는 항상 긍정적인 것만은 아니다. 예를 들어 자기가 vim이랑 Linux가 좋다고 개발환경을 전부 rice해버리면 이런 것에 익숙하지 않은 일반적인 팀원과 페어 프로그래밍 등을 하기가 다소 번거로울 것이다.

3. 재현성

개발환경의 상당 부분이 개발자의 취향에 기반하지만 그렇다고 팀원끼리 상이하게 다른 환경에서 작업된 결과물이 결코 같다고 보장하기 힘들다. 크게는 운영체제의 계열부터 시작해 사용하는 컴파일러의 버전 차이로 빌드가 실패하는 일도 있고, 어떤 종속성은 특정 아키텍처나 운영체제에서 아예 지원되지 않기도 한다. 특히 배포(deploy)시에 이런 문제가 가장 부각되는데, 애써 로컬에서 개발한 제품이 납품한 고객의 컴퓨터나 서버 환경에서 환경이 달라 작동하지 않는다면 이는 심각한 문제다.

때문에 개발환경 구축의 많은 요소에는 버전 관리 또는 재현성 레이어가 높은 확률로 들어가게 된다.

4. 통합 개발 환경

상술한 개발환경의 요소들 중 컴파일러, 디버거 등 핵심적인 요소들을 한번에 내장한 형태의 응용 프로그램. 싱글보드 컴퓨터 개발이나 모바일 애플리케이션 개발, GUI 개발, 게임 개발 등 분야에서 다양한 그래픽 요소들과 배포를 간편화하기 위해 대부분의 기능을 내장한 채로 해당 프로그램만 설치하면 추가적인 개발환경 구축을 고민할 필요가 없도록 설계된 경우가 많으며, 일반적인 프로그래밍에서도 매우 보편적으로 사용된다.
파일:상세 내용 아이콘.svg   자세한 내용은 통합 개발 환경 문서
#!if (문단 == null) == (앵커 == null)
를
#!if 문단 != null & 앵커 == null
의 [[통합 개발 환경#s-|]]번 문단을
#!if 문단 == null & 앵커 != null
의 [[통합 개발 환경#|]][[통합 개발 환경#|]] 부분을
참고하십시오.

5. 관련 문서

5.1. 개별 솔루션, 관리자

5.2. 툴체인, 콜렉션 패키지

5.3. 별도 문서가 있는 분야별 개발환경