软件包是一组程序,它们捆绑在一起以达到共同的目的。通常,一个软件包还包括构建可执行程序的源代码以及程序本身的各种文档。有些软件包还将包括示例文件,这些文件可以进一步说明软件包的其他组件也可以工作。 一个软件...
软件包是一组程序,它们捆绑在一起以达到共同的目的。通常,一个软件包还包括构建可执行程序的源代码以及程序本身的各种文档。有些软件包还将包括示例文件,这些文件可以进一步说明软件包的其他组件也可以工作。

一个软件包的组件可以做显著不同的事情,但软件包的所有组件都是统一的整体。有些软件包有一个主程序,封装所有较小的程序,而另一些软件包则采用更为零碎的方法,并有多个用于不同目的的小型专用可执行文件。每种方法都有其优缺点,以及从中受益的特定受众。
将所有功能封装到一个大型程序中的软件包对大多数计算机用户都很有用。它们通常易于安装,相对容易理解,而且运行起来也相当容易。有时,用户可以为他们下载附加组件,但这一切都是在幕后完成的,用户只需进行最少的交互和努力。像这样的多功能一体软件包可用于多种用途,从文档管理到3D建模和图像渲染。
一个使其功能更加分散的软件包通常面向更懂计算机的用户。这些软件包通常具有命令行工具,以及广泛的文档和高度灵活的功能。对这些包的更改通常必须通过操作原始目录结构或完全下载包的新版本来完成。加载项对于这些包类型并不常见像这样的分组软件包通常面向学术界和工程师,用于分析生物数据和创建新的软件程序。
有些软件包包含完全唯一的代码,而另一些程序则将现有程序合并为现有算法的功能。这两种方法之间的争论仍在继续。一些程序员喜欢为所有事情编写自己的代码,而另一些程序员则喜欢将多个现有程序链接在一起。许多包都使用每种类型的框架,任何一种方法都可以用来创建一个成功的软件套件。
随着开源软件运动的扩展,越来越多的程序、算法和软件包可以在新软件中免费使用,而不必担心许可问题。例如,在科学领域,许多新的算法和程序被出版,期望它们不仅可以用于分析,还可以用于构建新的程序。一个新的软件包可以很容易地在旧软件包的基础上构建或建模,这种知识共享已经成为软件开发的工具。