软件是一系列按照特定顺序组织的计算机数据和指令的集合。计算机软件被划分为编程语言、系统软件、应用软件和介于这两者之间的中间件。其中系统软件为计算机使用提供最基本的功能,但是并不针对某一特定应用领域。而应用软件则恰好相反,不同的应用软件根据用户和所服务的领域提供不同的功能。软件包括操作系统和一系列基本的工具,比如编译器,数据库管理,存储器格式化,文件系统管理,用户身份验证,驱动管理,网络连接等方面的工具,不同功能的软件所需要的基本工具不完全相同。