Programinės įrangos paketas yra programų, kurios yra sujungtos į bendrą tikslą, grupė. Dažnai programinės įrangos paketas taip pat apima šaltinio kodą, kuris sukūrė vykdomąsias programas, taip pat įvairius pačių programų dokumentus. Kai kuriuose programinės įrangos paketuose taip pat bus failų pavyzdžiai, kurie gali dar labiau parodyti, kaip veikia kiti paketo komponentai.
Programinės įrangos paketo komponentai gali atlikti labai skirtingus dalykus, tačiau visi paketo komponentai sujungiami į vieningą visumą. Kai kuriuose programinės įrangos paketuose yra viena pagrindinė programa, apimanti visas mažesnes programas, o kiti yra labiau fragmentiški ir turi keletą nedidelių specializuotų vykdomųjų failų, skirtų skirtingiems tikslams. Kiekvienas metodas turi privalumų ir trūkumų, taip pat konkrečios auditorijos, kurioms kiekvienas iš jų turi naudos.
Paketai, sujungiantys visas savo funkcijas į vieną didelę programą, yra naudingi daugumai kompiuterių vartotojų. Paprastai juos lengva įdiegti, palyginti lengva suprasti ir gana lengva paleisti. Kartais vartotojas gali atsisiųsti jiems skirtus priedus, tačiau visa tai daroma užkulisiuose su minimaliu to vartotojo sąveika ir pastangomis. Tokie „viskas viename“ programinės įrangos paketai yra prieinami daugeliui tikslų – nuo dokumentų valdymo iki 3D modeliavimo ir vaizdų atvaizdavimo.
Programinės įrangos paketas, kurio funkcionalumas yra labiau suskaidytas, dažnai yra skirtas labiau kompiuteriu išmanantiems vartotojams. Šie paketai dažnai turės komandinės eilutės įrankius, išsamią dokumentaciją ir labai lanksčias galimybes. Šių paketų pakeitimai paprastai turi būti atliekami manipuliuojant neapdorotomis katalogų struktūromis arba visiškai atsisiunčiant naują paketo versiją. Šiems paketų tipams priedai nėra tokie įprasti. Tokie sugrupuoti programinės įrangos paketai kaip šie dažnai yra skirti akademikams ir inžinieriams, tokiems tikslams kaip biologinių duomenų analizė ir naujų programinės įrangos programų kūrimas.
Kai kuriuose programinės įrangos paketuose yra visiškai unikalus kodas, o kituose yra esamos programos, kad būtų galima sujungti esamų algoritmų funkcijas. Diskusija tarp šių dviejų metodikų tebevyksta. Kai kurie programuotojai nori rašyti savo kodą viskam, o kiti nori susieti kelias esamas programas. Yra daug paketų, kuriuose naudojami kiekvieno tipo sistemos, ir kuriant sėkmingą programinės įrangos rinkinį galima naudoti bet kurią metodiką.
Plečiantis atvirojo kodo programinės įrangos judėjimui, vis daugiau programų, algoritmų ir programinės įrangos paketų tapo nemokami naudoti naujoje programinėje įrangoje be licencijų. Pavyzdžiui, mokslo srityse skelbiama daug naujų algoritmų ir programų, tikintis, kad jie bus laisvai naudojami ne tik analizei, bet ir naujų programų kūrimui. Naujas programinės įrangos paketas gali būti lengvai sukurtas pagal seną arba modeliuojamas pagal seną, ir toks dalijimasis žiniomis tapo svarbiu programinės įrangos kūrimo priemone.