軟件包是一組程序,它們捆綁在一起以達到共同的目的。通常,一個軟件包還包括構建可執行程序的源代碼以及程序本身的各種文檔。有些軟件包還將包括示例文件,這些文件可以進一步說明軟件包的其他組件也可以工作。 一個軟件...
軟件包是一組程序,它們捆綁在一起以達到共同的目的。通常,一個軟件包還包括構建可執行程序的源代碼以及程序本身的各種文檔。有些軟件包還將包括示例文件,這些文件可以進一步說明軟件包的其他組件也可以工作。

一個軟件包的組件可以做顯著不同的事情,但軟件包的所有組件都是統一的整體。有些軟件包有一個主程序,封裝所有較小的程序,而另一些軟件包則采用更為零碎的方法,并有多個用于不同目的的小型專用可執行文件。每種方法都有其優缺點,以及從中受益的特定受眾。
將所有功能封裝到一個大型程序中的軟件包對大多數計算機用戶都很有用。它們通常易于安裝,相對容易理解,而且運行起來也相當容易。有時,用戶可以為他們下載附加組件,但這一切都是在幕后完成的,用戶只需進行最少的交互和努力。像這樣的多功能一體軟件包可用于多種用途,從文檔管理到3D建模和圖像渲染。
一個使其功能更加分散的軟件包通常面向更懂計算機的用戶。這些軟件包通常具有命令行工具,以及廣泛的文檔和高度靈活的功能。對這些包的更改通常必須通過操作原始目錄結構或完全下載包的新版本來完成。加載項對于這些包類型并不常見像這樣的分組軟件包通常面向學術界和工程師,用于分析生物數據和創建新的軟件程序。
有些軟件包包含完全唯一的代碼,而另一些程序則將現有程序合并為現有算法的功能。這兩種方法之間的爭論仍在繼續。一些程序員喜歡為所有事情編寫自己的代碼,而另一些程序員則喜歡將多個現有程序鏈接在一起。許多包都使用每種類型的框架,任何一種方法都可以用來創建一個成功的軟件套件。
隨著開源軟件運動的擴展,越來越多的程序、算法和軟件包可以在新軟件中免費使用,而不必擔心許可問題。例如,在科學領域,許多新的算法和程序被出版,期望它們不僅可以用于分析,還可以用于構建新的程序。一個新的軟件包可以很容易地在舊軟件包的基礎上構建或建模,這種知識共享已經成為軟件開發的工具。