Pakiet oprogramowania to grupa programów, które są ze sobą powiązane, aby służyły wspólnemu celowi. Często pakiet oprogramowania zawiera również kod źródłowy, z którego zbudowano programy wykonywalne, a także różnorodną dokumentację do samych programów. Niektóre pakiety oprogramowania będą również zawierać przykładowe pliki, które mogą dodatkowo zilustrować działanie innych składników pakietu.
Komponenty pakietu oprogramowania mogą robić znacząco różne rzeczy, ale wszystkie komponenty pakietu łączą się w jednolitą całość. Niektóre pakiety oprogramowania mają jeden główny program, który zawiera wszystkie mniejsze programy, podczas gdy inne przyjmują bardziej fragmentaryczne podejście i zawierają wiele małych, wyspecjalizowanych plików wykonywalnych do różnych celów. Każde podejście ma zalety i wady, a także konkretni odbiorcy, którzy z niego korzystają.
Pakiety, które zawierają całą swoją funkcjonalność w jednym dużym programie, są przydatne dla większości użytkowników komputerów. Zwykle są łatwe w instalacji, stosunkowo łatwe do zrozumienia i dość łatwe w obsłudze. Czasami użytkownik może pobrać dla nich dodatki, ale wszystko to odbywa się za kulisami przy minimalnej interakcji i wysiłku ze strony tego użytkownika. Takie kompleksowe pakiety oprogramowania są dostępne do wielu celów, od zarządzania dokumentami po modelowanie 3D i renderowanie obrazów.
Pakiet oprogramowania, który zachowuje bardziej rozdrobnioną funkcjonalność, jest często skierowany do bardziej doświadczonych użytkowników komputerów. Pakiety te często zawierają narzędzia wiersza poleceń, wraz z obszerną dokumentacją i bardzo elastycznymi możliwościami. Zmiany w tych pakietach muszą być zazwyczaj dokonywane poprzez manipulację surowymi strukturami katalogów lub całkowite pobranie nowej wersji pakietu. Dodatki nie są tak powszechne dla tych typów pakietów. Zgrupowane pakiety oprogramowania, takie jak te, są często skierowane do naukowców i inżynierów w celach takich jak analiza danych biologicznych i tworzenie nowych programów.
Niektóre pakiety oprogramowania zawierają całkowicie unikalny kod, podczas gdy inne zawierają istniejące programy, aby połączyć funkcjonalność istniejących algorytmów. Debata między tymi dwiema metodologiami trwa. Niektórzy programiści wolą pisać własny kod do wszystkiego, a inni wolą łączyć ze sobą wiele istniejących programów. Istnieje wiele pakietów wykorzystujących każdy rodzaj frameworka, a do stworzenia udanego pakietu oprogramowania można użyć dowolnej metodologii.
Wraz z rozwojem ruchu oprogramowania open source, coraz więcej programów, algorytmów i pakietów oprogramowania stało się swobodnie używane w nowym oprogramowaniu bez obaw licencyjnych. Na przykład w dziedzinach naukowych publikuje się wiele nowych algorytmów i programów z oczekiwaniem, że będą one swobodnie wykorzystywane nie tylko do analizy, ale także do tworzenia nowych programów. Nowy pakiet oprogramowania można łatwo zbudować lub wzorować na starym, a dzielenie się wiedzą stało się kluczowe w tworzeniu oprogramowania.