통합 개발 환경
🔸 IDE(Integrated Development Environment)
C++
, Java
등의 언어를 이용한 소프트웨어 개발 단계에서 패키지 인크루딩, 소스 코드 편집, 컴파일, 디버깅, 바이너리 배포 등 모든 작업을 통합 지원한다.
- 편집기, 컴파일러, 디버거 등의 다양한 도구를 하나의 인터페이스로 통합하여 제공한다.
🔸 IDE 도구의 기능
- 개발 환경 지원
- 컴파일
- 디버깅
- 외부 연계
- DB 연동
- Deployment
빌드 자동화 도구
- 소스 코드 컴파일 후 다수의 연관된 모듈을 묶어 실행 파일로 만든다.
- 소프트웨어 개발자가 반복 작업해야 하는 코딩을 잘 짜여진 프로세스를 통해 자동으로 실행하여, 신뢰성 있는 결과물을 생산해 낼 수 있는 작업 방식 및 방법
🔸 기능
- 코드 컴파일
- 컴포넌트 패키징
- 파일 조작
- 개발 테스트 실행
- 버전 관리 도구 통합
- 문서 생성
- 배포 기능
- 코드 품질 분석
🔸 프로세스
컴파일 -> 패키징 -> 단위 테스트 -> 정적 분석 -> 리포팅 -> 배포 -> 최종 빌드
🔸 종류
Ant
자바의 공식적인 빌드 도구
- 아파치 소프트웨어 재단에서 개발
- XML 기반 빌드 스크립트를 사용
- 정해진 규칙이 없고, 절차적
- 생명주기를 갖지 않아 각 Target에 대한 의존관계와 작업을 정의해주어야 한다.
- 유연성이 높으나 프로젝트가 복잡해지는 경우 Build 과정의 이해가 어려워진다.
- XML, Remote Repository를 가져올 수 없고 스크립트의 재사용이 어렵다
Maven
- 프로젝트에 필요한 모든 종속성을 관리
- 사용성이 좋지만 맞춤화된 로직 실행이 어렵다.
- XML, Repository를 가져올 수 있지만 라이브러리가 서로 종속할 경우 XML이 복잡해진다.
- 'Jar', 'Class Path'를 선언만 하면 직접 다운로드할 필요가 없이 Repository에서 계층적인 데이터를 표현하기에는 좋지만, 플로우나 조건부 상황을 표현하기 어렵다
Gradle
JVM 기반의 빌드 도구
- Ant와 Maven의 단점을 보완한 오픈소스 기반의 Build 자동화 도구로 프로젝트 시작 시 설정에 드는 시간을 절약할 수 있다.
- 한스도커를 중심으로 6인의 개발자가 공동 개발하였다.
- Maven처럼 종속성을 활용하여 Groovy 기반 스크립트를 사용한다.
- 안드로이드 앱 개발 환경에서 사용된다.
- if, else, for 등의 로직 구현이 가능하다.
- xml을 사용하지 않아 간결하고 빠른 성능을 제공한다.
- 유연성과 확장성을 제공하며 하나의 Repository 내에 멀티 프로젝트를 구성할 수 있다.
Jenkins
Java 기반의 오픈소스 형태의 빌드 자동화 도구
- 서버 기반의 도구로서 클라이언트 요청을 처리하기 위해 서버에서 실행되는 서블릿 실행과 생명주기를 관리하는 서블릿 컨테이너에서 실행된다.
- Web UI를 지원하고, SVN, Git 등의 대부분 형상 관리 도구와 연동 가능하다.