소프트웨어 개발 도구

내위키

Software Development Kit.

줄여서 SDK라고 쓰며, 주로 이 이름으로 많이 쓰인다.

소프트웨어 개발에 필요한 컴파일러[1] 또는 인터프리터, 라이브러리, 디버거와 같이 소프트웨어 개발에 필요한 각종 소프트웨어와 문서 자료를 한데 묶어서 한꺼번에 설치할 수 있도록 한 것. 소프트웨어를 실행시키기 위해 가상머신과 같은 런타임 플랫폼을 필요로 하는 경우에는 이것도 포함된다. 개발 환경과 실행 환경이 다를 경우에는 두 환경을 연결하는 드라이버나 에뮬레이터도 제공한다. 예를 들어 모바일 기기용 SDK는 앱 개발은 데스크톱 컴퓨터에서 하지만 개발한 소프트웨어는 모바일 기기에서 돌려야 하므로 디버깅이나 테스트를 하려며 컴퓨터에 기기를 연결해서 실행시키거나 에뮬레이터를 띄워서 실행시켜야 한다. 그밖에도 다음과 같은 도구들도 포함될 수 있다.[2]

만약 완전한 소프트웨어를 개발할 수 있는 라이브러리나 문서는 들어 있지만 실행이나 빌드 도구는 없다면 이는 SDK보다는 프레임워크에 가깝다. 예를 들어 스프링 프레임워크는 자바 컴파일러를 포함하고 있지 않으며 장고 프레임워크파이썬 인터프리터를 포함하고 있지 않다.[3][4]

API하고도 비교되는데, API는 응용소프트웨어 개발에 필요한 프로그래밍의 인터페이스만을 제공한다. 예를 들어 윈도우 API라면 윈도우 운영체제에서 굴러가는 응용프로그램을 만들기 위한 인터페이스, 즉 윈도우가 제공하는 어떤 기능을 불러다 쓰려면 어떤 함수를 불러야 하고 전달해야 할 매개변수는 뭐고 반환값이나 오류값은 무엇인지를 정해 놓은 일종의 규약이라 할 수 있다. 실제로 소프트웨어를 개발할 때에는 덜렁 API만 있으면 부족하고 소프트웨어 빌드에 필요한 도구를 포함한 SDK를 제공하는 게 보통이다. 다만 REST와 같은 웹 API라면 규약을 정의하는 문서만 있으면 땡.

따라서 SDK는 API 또는 프레임워크, 아니면 둘 다 포함하고 있다. 어떤 운영체제나 플랫폼 위에서 돌아가는, 혹은 어떤 서비스를 이용하는 소프트웨어를 개발하기 위해서는 적어도 둘 중 하나는 필요하기 때문.

각주

  1. 컴파일러로 중간 파일을 만드는 경우에는 링커가 추가로 필요하다.
  2. "SDK란?", Red Hat, 2020년 6월 10일.
  3. 장고 프레임워크파이썬과 함께 제공되는 패키지 관리 프로그램인 pip으로 설치한다.
  4. 웹 프레임워크는 대부분은 빌드 도구를 포함하고 있지 않으므로 SDK가 아닌 프레임워크로 제공된다. Flutter 웹 프레임워크처럼 개발은 Dart 언어로 하고 이를 컴파일해서 HTML+CSS+자바스크립트로 변환해야 하는 경우라면 SDK로 제공한다.