Software development kit
# Software development kit

Un software development kit (SDK, traducibile in italiano come "pacchetto di sviluppo per applicazioni"), in informatica, indica genericamente un insieme di strumenti per lo sviluppo e la documentazione di software.

## Caratteristiche

Molti SDK sono disponibili gratuitamente e possono essere prelevati direttamente dal sito del produttore: in questo modo si cerca di invogliare i programmatori ad utilizzare un determinato linguaggio o sistema. Vi è anche un utilizzo orientato al mercato: alcuni programmi vengono venduti assieme al loro SDK permettendo ai compratori di sviluppare ulteriori parti del programma comprato.

I fornitori di SDK per specifici sistemi inoltre possono offrire delle versioni più specifiche: ad esempio sia Microsoft che Apple prevedono Driver Development Kits (DDK), per lo sviluppo di driver per componenti hardware. PalmSource offre invece il PDK, PalmOS Development Kit.

## Componenti

Gli SDK possono variare considerevolmente in quanto a dimensioni e tecnologie utilizzate, ma tutti possiedono alcuni strumenti fondamentali:

* un compilatore, per tradurre il codice sorgente in un eseguibile;
* librerie standard dotate di interfacce pubbliche dette API - Application programming interface;
* documentazione sul linguaggio di programmazione per il quale l'SDK è stato sviluppato e sugli strumenti a disposizione nell'SDK stesso;
* informazioni sulle licenze da utilizzare per distribuire programmi creati con l'SDK.

Questo corredo di base può essere esteso con strumenti di vario tipo:

* compilatori per diversi linguaggi di programmazione;
* debugger;
* programmi per la gestione delle versioni o per interfacciarsi a essi: (CVS, Visual Source Safe, ClearCase, Subversion);
* editor di sorgenti: programmi che permettono di scrivere codice più velocemente o con più accuratezza, molto spesso hanno basilari funzioni di Syntax Highlighting (evidenziazione della sintassi) o di validazione;
* IDE (Integrated development environment): editor di sorgenti con funzioni molto avanzate. Di seguito una breve lista delle funzionalità che è possibile trovare in un IDE:
   * completamento automatico del codice sorgente, creazione automatica di pezzi di codice e formattatori automatici;
   * possibilità di "disegnare" l'interfaccia grafica di un'applicazione in modo visuale;
   * strumenti per l'analisi del codice: risoluzione delle dipendenze, analisi statistica, ricerche;
   * strumenti per creare e manutenere la documentazione relativa al codice sorgente;
   * strumenti per il Refactoring.

### Esempi

Di seguito una lista di SDK di grande successo:

* iPhone SDK di Apple
* DirectX SDK e .NET SDK di Microsoft
* Widget toolkit
* Android SDK di Google

Alcuni development kit che hanno avuto molto successo negli anni passati:

* Turbo Pascal
* Clipper
* Delphi
