소프트웨어 개발 도구
Software Development Kit.
줄여서 SDK라고 쓰며, 주로 이 이름으로 많이 쓰인다.
소프트웨어 개발에 필요한 컴파일러[1] 또는 인터프리터, 라이브러리, 디버거와 같이 소프트웨어 개발에 필요한 각종 소프트웨어와 문서 자료를 한데 묶어서 한꺼번에 설치할 수 있도록 한 것. 소프트웨어를 실행시키기 위해 가상머신과 같은 런타임 플랫폼을 필요로 하는 경우에는 이것도 포함된다. 개발 환경과 실행 환경이 다를 경우에는 두 환경을 연결하는 드라이버나 에뮬레이터도 제공한다. 예를 들어 모바일 기기용 SDK는 앱 개발은 데스크톱 컴퓨터에서 하지만 개발한 소프트웨어는 모바일 기기에서 돌려야 하므로 디버깅이나 테스트를 하려며 컴퓨터에 기기를 연결해서 실행시키거나 에뮬레이터를 띄워서 실행시켜야 한다. 그밖에도 다음과 같은 도구들도 포함될 수 있다.[2]
만약 완전한 소프트웨어를 개발할 수 있는 라이브러리나 문서는 들어 있지만 실행이나 빌드 도구는 없다면 이는 SDK보다는 프레임워크에 가깝다. 예를 들어 스프링 프레임워크는 자바 컴파일러를 포함하고 있지 않으며 장고 프레임워크는 파이썬 인터프리터를 포함하고 있지 않다.[3][4]
API하고도 비교되는데, API는 응용소프트웨어 개발에 필요한 프로그래밍의 인터페이스만을 제공한다. 예를 들어 윈도우 API라면 윈도우 운영체제에서 굴러가는 응용프로그램을 만들기 위한 인터페이스, 즉 윈도우가 제공하는 어떤 기능을 불러다 쓰려면 어떤 함수를 불러야 하고 전달해야 할 매개변수는 뭐고 반환값이나 오류값은 무엇인지를 정해 놓은 일종의 규약이라 할 수 있다. 실제로 소프트웨어를 개발할 때에는 덜렁 API만 있으면 부족하고 소프트웨어 빌드에 필요한 도구를 포함한 SDK를 제공하는 게 보통이다. 다만 REST와 같은 웹 API라면 규약을 정의하는 문서만 있으면 땡.
따라서 SDK는 API 또는 프레임워크, 아니면 둘 다 포함하고 있다. 어떤 운영체제나 플랫폼 위에서 돌아가는, 혹은 어떤 서비스를 이용하는 소프트웨어를 개발하기 위해서는 적어도 둘 중 하나는 필요하기 때문.