소프트웨어 개발 도구: 두 판 사이의 차이
(새 문서: Software Development Kit. 줄여서 SDK라고 쓰며, 주로 이 이름으로 많이 쓰인다. 소프트웨어 개발에 필요한 컴파일러<ref>컴파일러로 중간 파일을 만드는 경우에는 링커가 추가로 필요하다.</ref> 또는 인터프리터, 라이브러리, 디버거와 같이 소프트웨어 개발에 필요한 각종 소프트웨어와 문서 자료를 한데 묶어서 제공하는 것. 소프트웨어를 실행시키기 위해 가상...) |
편집 요약 없음 |
||
(같은 사용자의 중간 판 6개는 보이지 않습니다) | |||
3번째 줄: | 3번째 줄: | ||
줄여서 SDK라고 쓰며, 주로 이 이름으로 많이 쓰인다. | 줄여서 SDK라고 쓰며, 주로 이 이름으로 많이 쓰인다. | ||
소프트웨어 개발에 필요한 [[컴파일러]]<ref>[[컴파일러]]로 중간 파일을 만드는 경우에는 링커가 추가로 필요하다.</ref> 또는 [[인터프리터]], 라이브러리, | 소프트웨어 개발에 필요한 [[컴파일러]]<ref>[[컴파일러]]로 중간 파일을 만드는 경우에는 링커가 추가로 필요하다.</ref> 또는 [[인터프리터]], 라이브러리, [[디버거]]와 같이 소프트웨어 개발에 필요한 각종 소프트웨어와 문서 자료를 한데 묶어서 한꺼번에 설치할 수 있도록 한 것. 소프트웨어를 실행시키기 위해 가상머신과 같은 런타임 플랫폼을 필요로 하는 경우에는 이것도 포함된다. 개발 환경과 실행 환경이 다를 경우에는 두 환경을 연결하는 드라이버나 에뮬레이터도 제공한다. 예를 들어 모바일 기기용 SDK는 앱 개발은 데스크톱 컴퓨터에서 하지만 개발한 소프트웨어는 모바일 기기에서 돌려야 하므로 디버깅이나 테스트를 하려며 컴퓨터에 기기를 연결해서 실행시키거나 에뮬레이터를 띄워서 실행시켜야 한다. 그밖에도 다음과 같은 도구들도 포함될 수 있다.<ref>[https://www.redhat.com/ko/topics/cloud-native-apps/what-is-SDK "SDK란?"], Red Hat, 2020년 6월 10일.</ref> | ||
* 설명서 | |||
* 테스트 및 분석 도구 | |||
* 편집기 (또는 [[통합 개발 환경]]) | |||
* 네트워크 프로토콜 | |||
* [[프레임워크]] | |||
[[API]]하고도 비교되는데, [[API]]는 응용소프트웨어 개발에 필요한 프로그래밍의 인터페이스만을 제공한다. 예를 들어 윈도우 [[API]]라면 윈도우 운영체제에서 굴러가는 응용프로그램을 만들기 위한 인터페이스, 즉 윈도우가 제공하는 어떤 기능을 불러다 쓰려면 어떤 함수를 불러야 하고 전달해야 할 매개변수는 뭐고 반환값이나 오류값은 무엇인지를 정해 놓은 일종의 규약이라 할 수 있다. 실제로 소프트웨어를 개발할 때에는 덜렁 [[API]]만 있으면 부족하고 소프트웨어 빌드에 필요한 도구를 포함한 SDK를 제공하는 게 보통이다. | 만약 완전한 소프트웨어를 개발할 수 있는 라이브러리나 문서는 들어 있지만 실행이나 빌드 도구는 없다면 이는 SDK보다는 [[프레임워크]]에 가깝다. 예를 들어 스프링 프레임워크는 [[자바]] [[컴파일러]]를 포함하고 있지 않으며 [[장고 프레임워크]]는 [[파이썬]] [[인터프리터]]를 포함하고 있지 않다.<ref>[[장고 프레임워크]]는 [[파이썬]]과 함께 제공되는 패키지 관리 프로그램인 pip으로 설치한다.</ref><ref>웹 프레임워크는 대부분은 빌드 도구를 포함하고 있지 않으므로 SDK가 아닌 [[프레임워크]]로 제공된다. [[Flutter]] 웹 프레임워크처럼 개발은 [[Dart]] 언어로 하고 이를 컴파일해서 [[HTML]]+[[CSS]]+[[자바스크립트]]로 변환해야 하는 경우라면 SDK로 제공한다.</ref> | ||
[[API]]하고도 비교되는데, [[API]]는 응용소프트웨어 개발에 필요한 프로그래밍의 인터페이스만을 제공한다. 예를 들어 [[윈도우]] [[API]]라면 [[윈도우]] 운영체제에서 굴러가는 응용프로그램을 만들기 위한 [[인터페이스]], 즉 윈도우가 제공하는 어떤 기능을 불러다 쓰려면 어떤 함수를 불러야 하고 전달해야 할 매개변수는 뭐고 반환값이나 오류값은 무엇인지를 정해 놓은 일종의 규약이라 할 수 있다. 실제로 소프트웨어를 개발할 때에는 덜렁 [[API]]만 있으면 부족하고 소프트웨어 빌드에 필요한 도구를 포함한 SDK를 제공하는 게 보통이다. 다만 [[REST]]와 같은 웹 [[API]]라면 규약을 정의하는 문서만 있으면 땡. | |||
따라서 SDK는 [[API]] 또는 [[프레임워크]], 아니면 둘 다 포함하고 있다. 어떤 운영체제나 플랫폼 위에서 돌아가는, 혹은 어떤 서비스를 이용하는 소프트웨어를 개발하기 위해서는 적어도 둘 중 하나는 필요하기 때문. | |||
{{각주}} |
2022년 2월 2일 (수) 08:01 기준 최신판
Software Development Kit.
줄여서 SDK라고 쓰며, 주로 이 이름으로 많이 쓰인다.
소프트웨어 개발에 필요한 컴파일러[1] 또는 인터프리터, 라이브러리, 디버거와 같이 소프트웨어 개발에 필요한 각종 소프트웨어와 문서 자료를 한데 묶어서 한꺼번에 설치할 수 있도록 한 것. 소프트웨어를 실행시키기 위해 가상머신과 같은 런타임 플랫폼을 필요로 하는 경우에는 이것도 포함된다. 개발 환경과 실행 환경이 다를 경우에는 두 환경을 연결하는 드라이버나 에뮬레이터도 제공한다. 예를 들어 모바일 기기용 SDK는 앱 개발은 데스크톱 컴퓨터에서 하지만 개발한 소프트웨어는 모바일 기기에서 돌려야 하므로 디버깅이나 테스트를 하려며 컴퓨터에 기기를 연결해서 실행시키거나 에뮬레이터를 띄워서 실행시켜야 한다. 그밖에도 다음과 같은 도구들도 포함될 수 있다.[2]
만약 완전한 소프트웨어를 개발할 수 있는 라이브러리나 문서는 들어 있지만 실행이나 빌드 도구는 없다면 이는 SDK보다는 프레임워크에 가깝다. 예를 들어 스프링 프레임워크는 자바 컴파일러를 포함하고 있지 않으며 장고 프레임워크는 파이썬 인터프리터를 포함하고 있지 않다.[3][4]
API하고도 비교되는데, API는 응용소프트웨어 개발에 필요한 프로그래밍의 인터페이스만을 제공한다. 예를 들어 윈도우 API라면 윈도우 운영체제에서 굴러가는 응용프로그램을 만들기 위한 인터페이스, 즉 윈도우가 제공하는 어떤 기능을 불러다 쓰려면 어떤 함수를 불러야 하고 전달해야 할 매개변수는 뭐고 반환값이나 오류값은 무엇인지를 정해 놓은 일종의 규약이라 할 수 있다. 실제로 소프트웨어를 개발할 때에는 덜렁 API만 있으면 부족하고 소프트웨어 빌드에 필요한 도구를 포함한 SDK를 제공하는 게 보통이다. 다만 REST와 같은 웹 API라면 규약을 정의하는 문서만 있으면 땡.
따라서 SDK는 API 또는 프레임워크, 아니면 둘 다 포함하고 있다. 어떤 운영체제나 플랫폼 위에서 돌아가는, 혹은 어떤 서비스를 이용하는 소프트웨어를 개발하기 위해서는 적어도 둘 중 하나는 필요하기 때문.