Los de­sa­rro­lla­do­res de software se enfrentan a desafíos a diario. Además de la tarea de pro­gra­ma­ción en sí, han de diseñar conceptos y pro­to­ti­pos para nuevas apli­ca­cio­nes, pla­ni­fi­car las fases de de­sa­rro­llo, analizar los re­su­l­ta­dos in­te­r­me­dios y so­lu­cio­nar fallos o puntos débiles de los sistemas. A esto se añade la creciente co­m­ple­ji­dad del software, que no pone las cosas fáciles. Por eso, he­rra­mie­n­tas como los fra­me­wo­r­ks (es­tru­c­tu­ras de base para programar listas para usar) se han co­n­ve­r­ti­do en algo esencial en el día a día de los pro­gra­ma­do­res.

Otra he­rra­mie­n­ta in­di­s­pe­n­sa­ble son los llamados software de­ve­lo­p­me­nt kits (SDK) o kits de de­sa­rro­llo de software, un elemento clave en el trabajo con lenguajes de pro­gra­ma­ción y en el de­sa­rro­llo y creación de programas para pla­ta­fo­r­mas es­pe­cí­fi­cas.

¿En qué consiste un SDK?

Un software de­ve­lo­p­me­nt kit, abreviado SDK, es un paquete de he­rra­mie­n­tas y datos que facilita e incluso permite a los pro­gra­ma­do­res de­sa­rro­llar programas en un lenguaje concreto o para una pla­ta­fo­r­ma o apli­ca­ción es­pe­cí­fi­ca. De la co­m­po­si­ción y di­s­tri­bu­ción de un SDK se encarga el de­sa­rro­lla­dor original del lenguaje o del hardware o software en cuestión, que está in­te­re­sa­do en que el software de terceros esté di­s­po­ni­ble en el mercado para su propio producto o en el lenguaje de pro­gra­ma­ción en cuestión. En la mayoría de casos, por lo tanto, los SDK son de uso gratuito, si bien su fa­bri­ca­n­te los puede limitar con ciertas reglas y licencias.

De­fi­ni­ción: software de­ve­lo­p­me­nt kit

Un software de­ve­lo­p­me­nt kit (SDK) es un conjunto de he­rra­mie­n­tas que ayudan a de­sa­rro­llar apli­ca­cio­nes para hardware o software es­pe­cí­fi­cos o en un lenguaje de pro­gra­ma­ción concretos. En algunos lenguajes in­te­r­pre­ta­dos, el SDK puede ser idéntico al sistema en tiempo de ejecución.

¿Qué contiene un software de­ve­lo­p­me­nt kit?

La co­m­po­si­ción de un SDK varía según el fa­bri­ca­n­te y depende también de si está pensado para un lenguaje de pro­gra­ma­ción, para un sistema operativo o para hardware concreto. Un co­m­po­ne­n­te estándar que incluyen casi todos los kits de de­sa­rro­llo de software es la API (también me­n­cio­na­da a menudo en plural), a través de la cual los proyectos de software se pueden enlazar a nivel de código fuente. El su­mi­ni­s­tro de esta interfaz de pro­gra­ma­ción elemental suele ir aco­m­pa­ña­do de una extensa do­cu­me­n­ta­ción que incluye in­s­tru­c­cio­nes sobre cómo usarla, así como otra in­fo­r­ma­ción de interés. Gracias a ella, los de­sa­rro­lla­do­res in­te­re­sa­dos pueden hacerse una idea rá­pi­da­me­n­te de si su proyecto es viable y de cómo rea­li­zar­lo.

Nota

Algunos fa­bri­ca­n­tes utilizan de­no­mi­na­cio­nes al­te­r­na­ti­vas para sus paquetes de software en lugar de SDK. Oracle, por ejemplo, llama JDK (Java (SE) De­ve­lo­p­me­nt Kit) a su paquete para el lenguaje de pro­gra­ma­ción que di­s­tri­bu­ye, Java.

Si es necesario o de gran ayuda para el proceso de de­sa­rro­llo, un buen software de­ve­lo­p­me­nt kit debe incluir co­m­pi­la­do­res o de­pu­ra­do­res (debugger) y otras he­rra­mie­n­tas de prueba y análisis que estén di­s­po­ni­bles, además de todos los co­m­po­ne­n­tes técnicos básicos como editores, bi­blio­te­cas, sistemas de tiempo en ejecución y entornos de de­sa­rro­llo. Lo mismo se puede decir de los co­n­tro­la­do­res es­pe­cia­les y pro­to­co­los de red que sean ne­ce­sa­rios. En algunos casos, los fa­bri­ca­n­tes también añaden ejemplos o pequeños proyectos de prueba a los SDK, fa­ci­li­ta­n­do así en gran medida su uso.

Estos son los co­m­po­ne­n­tes que puede contener un kit de de­sa­rro­llo de software:

  • API
  • Do­cu­me­n­ta­ción
  • Editores
  • Bi­blio­te­cas
  • Sistemas de tiempo en ejecución y entornos de de­sa­rro­llo
  • Co­m­pi­la­do­res
  • Debuggers o de­pu­ra­do­res
  • Co­n­tro­la­do­res
  • Pro­to­co­los de red
  • Ejemplos / proyectos de prueba

¿Qué no­r­ma­ti­vas o licencias pueden aplicarse a los SDK?

Como ya se ha me­n­cio­na­do, la mayoría de SDK son gratuitos, pri­n­ci­pa­l­me­n­te porque el software nuevo es una de las opo­r­tu­ni­da­des más sencillas que tienen los fa­bri­ca­n­tes para aumentar el valor de sus sistemas o di­s­po­si­ti­vos de cara al usuario. Esto se hace patente sobre todo en los sma­r­t­pho­nes y tablets, que perderían gran parte de su valor si no contasen con las apli­ca­cio­nes de terceros. A la descarga y al uso de un software de­ve­lo­p­me­nt kit, sin embargo, sí pueden aplicarse ciertas reglas.

Así, por ejemplo, un fa­bri­ca­n­te puede permitir el acceso a un SDK solo a los usuarios que se co­m­pro­me­tan a no revelar cierta in­fo­r­ma­ción co­n­fi­de­n­cial. Este tipo de acuerdo de co­n­fi­de­n­cia­li­dad (en inglés, non-di­s­clo­su­re agreement) suele aplicarse, sobre todo, a productos con al­go­ri­t­mos secretos o con estatus alfa o beta. Para asegurar que el software creado no se di­s­tri­bu­ya bajo otra licencia in­co­m­pa­ti­ble, un software de­ve­lo­p­me­nt kit también puede incluir una licencia, ya sea de propiedad o libre. Por ello, los de­sa­rro­lla­do­res deberían fa­mi­lia­ri­zar­se, antes de empezar con el trabajo, con los tipos básicos de licencia, como muestran los si­guie­n­tes ejemplos:

  • Si un SDK tiene una licencia de propiedad, no será apropiado para el de­sa­rro­llo de software de código abierto.
  • Si un kit de de­sa­rro­llo tiene una licencia tipo GPL (GNU General Public License), no será apropiado para el de­sa­rro­llo de apli­ca­cio­nes de propiedad.
  • Si un SDK tiene una licencia tipo LGPL (GNU Lesser General Public License), puede usarse también para proyectos con partes de código de propiedad. Dichos proyectos, sin embargo, deben estar siempre es­tru­c­tu­ra­dos de manera que el usuario final pueda entender y modificar la parte de código abierto en cualquier momento.
Hecho

Las apli­ca­cio­nes de código abierto como Li­breO­f­fi­ce o Mozilla Firefox se de­sa­rro­llan co­n­ti­nua­me­n­te sobre todo gracias a estos kits de de­sa­rro­llo: tanto los pro­gra­ma­do­res afi­cio­na­dos, como los pro­fe­sio­na­les, utilizan los SDK de estos programas libres para programar nuevos diseños o fu­n­cio­na­li­da­des y ponerlos a di­s­po­si­ción de todo el mundo.

Ir al menú principal