[정보처리기사 필기] 통합 구현 - 036. 개발 지원 도구

1. 통합 개발 환경 IDE

  • 프로그램 개발과 관련된 모든 작업을 하나의 프로그램에서 처리할 수 있도록 제공하는 소프트웨어적인 개발 환경
  • 통합 개발 환경 도구 : 통합 개발 환경을 제공하는 소프트웨어
  • 통합 개발 환경 도구의 기능
    • 코딩 Coding : C, JAVA, Python 등의 프로그래밍 언어로 프로그램을 작성하는 기능
    • 컴파일 Compile : 개발자가 작성한 고급 언어로 된 프로그램을 컴퓨터가 이해할 수 있는 목적 프로그램으로 번역하여 컴퓨터에서 실행 가능한 형태로 변환하는 기능
    • 디버깅 Debugging : 소프트웨어나 하드웨어의 오류나 잘못된 동작, 버그를 찾아 수정하는 기능
    • 배포 Deployment : 소프트웨어를 사용자에게 전달하는 기능
  • 통합 개발 환경을 지원하는 도구
프로그램 개발사 플랫폼 운영체제 지원언어
이클립스 (Eclipse) Eclipse Foundation, IBM 크로스 플랫폼 (여러 종류의 시스템에서 공통으로 사용될 수 있는 소프트웨어, 멀티 플랫폼) Windows, Linux, MacOS 등 Java, C, C++, PHP, JSP, Python 등
비주얼 스튜디오 (Visual Studio) Microsoft Win32, Win64 Windows Basic, C, c++, Python 등
엑스 코드 (Xcode) Apple Mac, iPhone MacOS, iOS C, C++, C#, Java, Python, AppleScript 등
안드로이드 스튜디오 (Android Studio) Google Android Windows, Linux, MacOS Java, C, C++ 
IDEA JetBrains (이전 IntellU) 크로스 플랫폼 Windows, Linux, MacOS Java, JSP, XML, Go, Kotlin, PHP 등

2.  빌드 도구

  • 소스 코드 파일들을 컴퓨터에서 실행할 수 있는 제품 소프트웨어로 변환하는 과정 또는 결과물
  • 소스 코드를 소프트웨어로 변환하는 과정에서 필요한 전처리, 컴파일 등의 작업들을 수행하는 소프트웨어
    • 전처리 Preprocessing : 컴파일에 앞서 코드에 삽입된 주석을 제거하거나 매크로들을 처리하는 과정
  • 대표적인 빌드 도구
    • Ant (Another Neal Tool) 
      • 아파치 소프트웨어 재단에서 개발한 소프트웨어
      • 자바 프로젝트의 공식적인 빌드 도구로 사용되고 있음
      • XML 기반의 빌드 스크립트를 사용
      • 자유도와 유연성이 높아 복잡한 빌드 환경에도 대처가 가능
      • 정해진 규칙이나 표준이 없어 개발자가 모든 것을 정의
      • 스크립트의 재사용이 어려움
    • Maven
      • Ant와 동일한 아파치 소프트웨어 재단에서 개발된 것
      • Ant의 대안
      • 규칙이나 표준이 존재하여 예외 사항만 기록하면 되며, 컴파일과 빌드를 동시에 수행할 수 있음
      • 의존성을 설정하여 라이브러리를 관리
        • 의존성 Dependency : 라이브러리를 관리할 때 사용하는 명령어, 빌드 스크립트 안에 사용하고자 하는 라이브러리를 <depndency> 예약어로 등록하면 빌드 수행 시 인터넷상의 라이브러리 저장소에서 해당 라이브러리를 찾아 코드에 추가해 줌
    • Gradle
      • 기존의 Ant와 Maven을 보완하여 개발된 빌드 도구
      • 안드로이드 스튜디오의 공식 빌드 도구로 채택된 소프트웨어
      • 의존성을 활용하며, 그루비(Grooby) 기반의 빌드 스크립트 사용
        • 그루비 Grooby : 자바를 기반으로 여러 프로그래밍 언어들의 장점을 모아 만들어진 동작 객체지향 프로그래밍 언어

3. 기타 협업 도구

  • 프로젝트 및 일정 관리
    • 전체 프로젝트와 개별 업무들의 진행 상태, 일정 등을 공유하는 기능을 제공
    • 종류 : 구글 캘린더, 분더리스트, 트렐로, 지라, 플로우 등
  • 정보 공유 및 커뮤니케이션
    • 주제별로 구성원들을 지목하여 방을 개설한 후 정보를 공유하고 대화하는 것이 가능
    • 파일 관리가 간편, 의사소통이 자유로움
    • 종류 : 슬랙, 잔디, 태스크월드 등
  • 디자인
    • 디자이너가 설계한 UI나 이미지의 정보들을 코드화하여 개발자에게 전달하는 기능을 제공
    • 종류 : 스케치, 제플린 등
  • 기타
    • 아이디어 공유에 사용되는 에버노트
    • API를 문서화하여 개발자들 간 협업을 도와주는 스워거
    • 깃허브