Ogni giorno, gli svi­lup­pa­to­ri di software devono af­fron­ta­re molte sfide. Al di là della mera pro­gram­ma­zio­ne, devono pro­get­ta­re concetti e prototipi per nuove ap­pli­ca­zio­ni, pia­ni­fi­ca­re e or­ga­niz­za­re le fasi di sviluppo, ana­liz­za­re i risultati intermedi ed eliminare errori o punti deboli. La tendenza alla crescente com­ples­si­tà dei software non facilita cer­ta­men­te il loro lavoro, motivo per cui strumenti come i framework, ovvero im­pal­ca­tu­re di codice pronte all’uso, sono una parte in­di­spen­sa­bi­le nel lavoro quo­ti­dia­no degli svi­lup­pa­to­ri di software.

I Software De­ve­lo­p­ment Kit (SDK) rap­pre­sen­ta­no un altro strumento in­di­spen­sa­bi­le che svolge un ruolo fon­da­men­ta­le nel lavoro quo­ti­dia­no con i linguaggi di pro­gram­ma­zio­ne, nonché nello sviluppo e nel rilascio di software per piat­ta­for­me spe­ci­fi­che.

Cos’è un SDK (Software De­ve­lo­p­ment Kit)?

Un Software De­ve­lo­p­ment Kit, o SDK, è un pacchetto di strumenti e in­for­ma­zio­ni che rende possibile e facilita la pro­gram­ma­zio­ne di software in uno specifico lin­guag­gio di pro­gram­ma­zio­ne per una de­ter­mi­na­ta piat­ta­for­ma o ap­pli­ca­zio­ne. La com­pi­la­zio­ne e la pub­bli­ca­zio­ne di un SDK è re­spon­sa­bi­li­tà dello svi­lup­pa­to­re originale del ri­spet­ti­vo lin­guag­gio o dell’hardware/software. Infatti è nel suo interesse personale che software di terze parti vengano ri­la­scia­ti sul mercato per il suo prodotto o il lin­guag­gio di pro­gram­ma­zio­ne da lui creato. Nella maggior parte dei casi, i Software De­ve­lo­p­ment Kit sono quindi di­spo­ni­bi­li gra­tui­ta­men­te, anche se il pro­dut­to­re può col­le­gar­li a de­ter­mi­na­te regole e licenze.

De­fi­ni­zio­ne: Software De­ve­lo­p­ment Kit

Software De­ve­lo­p­ment Kit: un SDK (Software De­ve­lo­p­ment Kit) è un insieme di strumenti per lo sviluppo di ap­pli­ca­zio­ni per uno specifico hardware/software o in uno specifico lin­guag­gio di pro­gram­ma­zio­ne. In alcuni linguaggi, l’SDK può essere identico al­l'am­bien­te di runtime.

Cosa contiene un Software De­ve­lo­p­ment Kit?

Il contenuto di un SDK varia a seconda del pro­dut­to­re e anche in base alla sua de­sti­na­zio­ne d’uso, che può essere un lin­guag­gio, un sistema operativo o un hardware. Una com­po­nen­te standard inclusa in quasi tutti i Software De­ve­lo­p­ment Kit sono le API, che con­sen­to­no di integrare nuovi progetti software a livello di codice sorgente. La fornitura di queste in­ter­fac­ce di pro­gram­ma­zio­ne ele­men­ta­ri è so­li­ta­men­te ac­com­pa­gna­ta da un’ampia do­cu­men­ta­zio­ne, che include spie­ga­zio­ni sull’uso delle API e altre in­di­ca­zio­ni utili. Gli svi­lup­pa­to­ri in­te­res­sa­ti possono così ottenere ra­pi­da­men­te una pa­no­ra­mi­ca e de­ter­mi­na­re se e come rea­liz­za­re il loro progetto pia­ni­fi­ca­to.

N.B.

Alcuni pro­dut­to­ri usano nomi al­ter­na­ti­vi per i loro pacchetti SDK. La raccolta per il lin­guag­gio di pro­gram­ma­zio­ne Java “JDK” di Oracle, ad esempio, prende il nome di Java (SE) De­ve­lo­p­ment Kit.

Affinché un Software De­ve­lo­p­ment Kit possa fa­ci­li­ta­re il processo di sviluppo, dovrebbe includere anche tutti i com­po­nen­ti tecnici di base come un editor, librerie, ambienti di runtime e di sviluppo, com­pi­la­to­ri o debugger (e altri strumenti di testing/analisi, se di­spo­ni­bi­li). Rientrano in questa categoria anche driver specifici e i pro­to­col­li di rete necessari. In alcuni casi, i pro­dut­to­ri ag­giun­go­no ai SDK anche esempi o progetti di test più piccoli, che ne fa­ci­li­ta­no il primo utilizzo.

I Software De­ve­lo­p­ment Kit possono quindi essere composti da:

  • API
  • do­cu­men­ta­zio­ne
  • editori
  • librerie
  • ambienti di runtime e di sviluppo
  • com­pi­la­to­ri
  • debugger
  • driver
  • pro­to­col­li di rete
  • esempi/progetti di test

Quali regole o licenze possono essere applicate ai SDK?

Come già accennato, la maggior parte dei SDK è di­spo­ni­bi­le gra­tui­ta­men­te, so­prat­tut­to perché nuovi software per il proprio sistema o di­spo­si­ti­vo rap­pre­sen­ta­no uno dei modi più semplici di in­cre­men­ta­re il valore aggiunto per gli utenti. Ciò è par­ti­co­lar­men­te evidente nel caso di smart­pho­ne e tablet, che sarebbero pro­ba­bil­men­te molto meno popolari senza ap­pli­ca­zio­ni di terzi. Il download e l’uso di Software De­ve­lo­p­ment Kit può tuttavia essere soggetto a de­ter­mi­na­te regole.

Un pro­dut­to­re può, ad esempio, concedere l’accesso a un SDK solo se l’utente s’impegna a non divulgare alcune in­for­ma­zio­ni riservate. Un accordo di ri­ser­va­tez­za (ingl. non-di­sclo­su­re agreement) di questo tipo è par­ti­co­lar­men­te comune per i software con algoritmi segreti e per i prodotti in stato alfa o beta. Un Software De­ve­lo­p­ment Kit può, inoltre, essere associato a una licenza per garantire che il software creato non venga ri­la­scia­to sotto un’altra licenza in­com­pa­ti­bi­le. Possono essere uti­liz­za­te sia licenze pro­prie­ta­rie che libere, motivo per cui gli svi­lup­pa­to­ri do­vreb­be­ro studiare i modelli sot­to­stan­ti prima di iniziare a lavorare, come il­lu­stra­no i seguenti esempi:

  • se un SDK è associato a una licenza pro­prie­ta­ria, non è adatto allo sviluppo di software open source;
  • se si tratta di un Software De­ve­lo­p­ment Kit con licenza GPL (GNU, General Public License) non è adatto allo sviluppo di ap­pli­ca­zio­ni pro­prie­ta­rie;
  • se un SDK è concesso in licenza libera LGPL (GNU, Lesser General Public License), può essere uti­liz­za­to anche per progetti con com­po­nen­ti di codice pro­prie­ta­ri. Questi devono, tuttavia, essere sempre strut­tu­ra­ti in modo tale che gli utenti finali possano rin­trac­cia­re e mo­di­fi­ca­re in qualsiasi momento la parte open source del software.
Fatto

Le ap­pli­ca­zio­ni open source, come Li­breOf­fi­ce o Mozilla Firefox, sono in continua evo­lu­zio­ne, so­prat­tut­to grazie ai Software De­ve­lo­p­ment Kit ri­la­scia­ti: sia gli svi­lup­pa­to­ri ama­to­ria­li che i pro­fes­sio­ni­sti usano i SDK di questi programmi open source per pro­gram­ma­re nuovi progetti o esten­sio­ni fun­zio­na­li e renderli di­spo­ni­bi­li all’intera comunità.

Vai al menu prin­ci­pa­le