# Kit de desarrollo de software

Un kit de desarrollo de software (en inglés: software development kit o SDK) es generalmente un conjunto de herramientas de desarrollo de software que permite a los programadores crear una aplicación informática para un sistema concreto, por ejemplo ciertos paquetes de software, entornos de trabajo, plataformas de hardware, computadoras, videoconsolas, sistemas operativos, etcétera.
Es algo tan sencillo como una interfaz de programación de aplicaciones o API (del inglés application programing interface) creada para permitir el uso de cierto lenguaje de programación, o puede, también, incluir hardware sofisticado para comunicarse con un determinado sistema embebido. Las herramientas de desarrollo de software más comunes incluyen soporte para la detección de errores de programación como un entorno de desarrollo integrado (IDE, por sus siglas en inglés) y otras utilidades. Los SDK frecuentemente también incluyen códigos de ejemplo y notas técnicas de soporte u otra documentación de soporte para ayudar a clarificar ciertos puntos del material de referencia primario.

## Incompatibilidad de licencias

Los SDK pueden incluir licencia de software que los hacen incompatibles para crear software que se pretenda hacer para una licencia no compatible. Por ejemplo: un SDK propietario probablemente será incompatible para el desarrollo de software libre. Y un SDK bajo la licencia GPL posiblemente será incompatible con el desarrollo de software propietario. Sin embargo, los bajo la licencia LGPL suelen ser seguros para el desarrollo de software propietario.

## SDK para complementos

Un SDK para un complemento (add-on en inglés) de un determinado sistema operativo (p. ej. QuickTime para Mac OS) puede incluir también el software añadido en sí para ser usado para el desarrollo pero no necesariamente para la redistribución. Una situación interesante surge aquí entre plataformas donde es posible desarrollar aplicaciones que pueden iniciar la configuración de un sistema sin que esté instalado el complemento, y usar una rutina de petición de entorno de tipo Gestalt (de Mac OS) para determinar si dicho complemento está instalado, y otros donde la aplicación simplemente fallará al iniciarse. En otras palabras, es posible construir un único binario que funcione en configuraciones donde el complemento esté presente o no, con una funcionalidad reducida en este último caso.

## Componentes físicos

Si bien la mayoría de SDKs consisten exclusivamente de texto (los programas, sus licencias, instrucciones, etc.), en ciertas ocasiones han también incluido hardware, especialmente cuando este no se encuentra ampliamente difundido. El primer SDK para comunicaciones de campo cercano (NFC), y que fue publicado por AirTag en 2008, por ejemplo, incluyó las ambas mitades que son físicamente necesarias para transmitir y recibir.

## Términos más específicos

Los proveedores de SDK para ciertos sistemas o subsistemas pueden utilizar un término más específico que el de "software". Por ejemplo, tanto Microsoft como Apple proveen kits de desarrollo de controladores (DDK, del inglés driver development kit) para crear controladores para sus dispositivos, y PalmSource distribuye su propio kit de desarrollo como el Palm OS Development Kit (PDK).

## Ejemplos

* El SDK de Virtual Earth de Microsoft.
* El SDK de DirectX de Microsoft, en el que se basan, por ejemplo, la mayoría de juegos para Windows actuales.
* EL .Net Framework de Microsoft, en el que se basan muchas aplicaciones basadas en formularios.
* El 'SDK Java de Sun Microsystems.
* Los kits de herramientas de Widgets, en los que se basan muchas utilidades desarrolladas con lenguajes de programación orientados a objetos.
* Turbo Pascal.
* Clipper.
* Delphi.
* El Source SDK, una herramienta diseñada por Valve en el que se puede diseñar mods y mapas para juegos del motor Source. Disponible en Steam al comprar un juego que use el motor Source.
* El SDK de Android, elaborado por Google para su sistema homónimo.
* El SDK de Ubuntu.