Programski paket je skupina programov, ki so združeni, da služijo skupnemu namenu. Pogosto programski paket vključuje tudi izvorno kodo, ki je zgradila izvedljive programe, in raznovrstno dokumentacijo za same programe. Nekateri programski paketi bodo vključevali tudi vzorčne datoteke, ki lahko dodatno ponazorijo, kako delujejo druge komponente paketa.
Komponente programskega paketa lahko naredijo bistveno različne stvari, vendar se vse komponente paketa združijo v enotno celoto. Nekateri programski paketi imajo en glavni program, ki zajema vse manjše programe, drugi pa imajo bolj razdrobljen pristop in imajo več majhnih, specializiranih izvedljivih datotek za različne namene. Vsak pristop ima prednosti in slabosti, pa tudi posebno občinstvo, ki ima koristi od vsakega.
Paketi, ki združujejo vso njihovo funkcionalnost v en velik program, so uporabni za večino uporabnikov računalnikov. Običajno so enostavni za namestitev, razmeroma enostavni za razumevanje in dokaj enostavni za uporabo. Včasih lahko uporabnik prenese dodatke zanje, vendar se vse to naredi v zakulisju z minimalno interakcijo in trudom tega uporabnika. Programski paketi vse v enem, kot so ti, so na voljo za številne namene, od upravljanja dokumentov do 3D modeliranja in upodabljanja slik.
Programski paket, ki ohranja svojo funkcionalnost bolj razdrobljen, je pogosto namenjen uporabnikom, ki so bolj računalniško podkovani. Ti paketi bodo pogosto imeli orodja ukazne vrstice, skupaj z obsežno dokumentacijo in zelo prilagodljivimi zmogljivostmi. Spremembe teh paketov je običajno treba izvesti bodisi z manipulacijo neobdelanih struktur imenikov bodisi s popolnim prenosom nove različice paketa. Dodatki niso tako pogosti za te vrste paketov. Takšni združeni programski paketi so pogosto namenjeni akademikom in inženirjem za namene, kot so analiza bioloških podatkov in ustvarjanje novih programov programske opreme.
Nekateri programski paketi vsebujejo popolnoma edinstveno kodo, drugi pa vključujejo obstoječe programe za združevanje funkcionalnosti obstoječih algoritmov. Razprava med tema dvema metodologijama je v teku. Nekateri programerji raje napišejo svojo kodo za vse, drugi pa raje povežejo več obstoječih programov. Obstaja veliko paketov, ki uporabljajo vsako vrsto ogrodja in katero koli metodologijo je mogoče uporabiti za ustvarjanje uspešnega programskega paketa.
S širitvijo gibanja odprtokodne programske opreme je vse več programov, algoritmov in programskih paketov postalo brezplačno za uporabo v novi programski opremi brez pomislekov glede licenc. Na znanstvenih področjih je na primer veliko novih algoritmov in programov objavljenih s pričakovanjem, da se bodo svobodno uporabljali ne le za analizo, ampak tudi za gradnjo novih programov. Nov programski paket je mogoče zlahka zgraditi ali zgledovati po starem, in ta izmenjava znanja je postala ključna pri razvoju programske opreme.