软件
软件(英语:Software)是一系列按照特定顺序组织的计算机数据和指令的集合[1]。广义上,软件是计算机系统中与硬件相对应的组成部分,由程序代码、运行规则及配套文档构成,用于执行特定任务或实现功能需求。软件并不限于计算机上运行的程序,与之相关的文档通常也被视为软件的一部分。“软件”一词是为了与计算机的物理部件——“硬件”相区分而创造的。
| 中文名 | 软件 |
|---|---|
| 外文名 | Software |
| 定义 | 计算机系统中与硬件相对应的逻辑部件,由程序、数据及相关文档构成 |
| 主要分类 | 系统软件、应用软件、中间件 |
| 开发流程 | 需求分析、设计、编码、测试、维护 |
| 相关概念 | 硬件、固件、编程语言 |
定义
编辑根据电气与电子工程师协会(IEEE)在1983年的定义,软件是程序、数据及相关文档的完整集合,是计算机系统中的逻辑部件而非物理部件[1]。中国国家标准中对软件的定义为:与计算机系统操作有关的计算机程序、规程、规则,以及可能有的文件、文档及数据[2]。从运行层面来看,软件是运行时能够提供所要求功能和性能的指令或计算机程序集合[1]。简而言之,软件是程序加文档的集合体。
分类
编辑软件的常见分类方式是根据其功能进行划分。
系统软件
编辑系统软件负责控制和管理计算机硬件资源,并为应用软件提供运行平台。其核心是操作系统(Operating System),此外还包括设备驱动程序、实用程序等。
应用软件
编辑应用软件是为解决特定应用问题而设计的程序,直接面向终端用户。它根据用户的指令处理数据,常见的例子包括文字处理器、电子表格、数据库管理系统、工业软件等。
中间件
编辑中间件是介于系统软件与应用软件之间的软件,旨在为应用软件提供跨平台的数据交互和支持服务。
此外,根据用途和性质的不同,软件还可被划分为编程语言、网络软件、恶意软件等类别。
历史
编辑软件的历史与计算机的发展紧密相连。一般认为,软件伴随着第一台电子计算机的问世而诞生。
- 早期(1940s-1950s)
- 最早的软件通常是专门为特定硬件编写的。世界上第一个程序员被认为是阿达·洛夫莱斯(Ada Lovelace),与查尔斯·巴贝奇(Charles Babbage)合作,为分析机设计了算法[3]。第一批独立的专业软件公司出现在1949年至1959年间,主要为客户定制软件和解决方案[4]。
- 程序系统时代(1960s-1970s)
- 随着软件复杂性的增加,“软件危机”概念被提出,指许多大型软件项目在预算和工期上出现严重问题[5]。1968年,在北大西洋公约组织(NATO)的计算机科学家会议上,“软件工程”一词被首次提出,旨在借鉴工程学的方法来系统化地开发和维护软件[5]。
- 个人计算机时代(1980s-1990s)
- IBM个人计算机(PC)的问世极大地推动了软件产业的发展。微软(Microsoft)在此时期崛起,其MS-DOS和Windows操作系统成为个人计算机的主流[4]。
- 互联网与移动时代(1990s至今)
- 互联网的普及催生了全新的软件应用和服务模式,如云计算、移动应用和软件即服务(SaaS)。软件技术进入了以网络化、服务化和智能化为特征的新发展时期。
开发过程
编辑软件开发是根据用户需求构建软件系统或其中部分的过程。一个典型的软件生命周期通常包括以下阶段:
- 软件计划
- 确定软件开发的目标和范围。
- 需求分析
- 捕捉和分析用户的具体需求。
- 设计
- 包括软件的总体结构设计和模块的详细设计。
- 编码
- 使用特定的程序设计语言实现软件的设计。
- 测试
- 对软件进行测试以发现并修复缺陷。
- 部署与维护
- 将软件交付用户使用,并在后续进行维护、升级和更新。
许可模式
编辑软件的使用和分发通常受软件许可证的约束,这是一种规定用户在何种条件下可以使用、修改或分发软件的法律协议[6]。常见的许可模式包括:
参考文献
编辑- ↑ 1.0 1.1 1.2 ISO/IEC/IEEE 24765:2017 Systems and software engineering — Vocabulary
- ↑ GB/T 11457-2006 信息技术 软件工程术语
- ↑ Ada Lovelace | Biography, Computer, & Facts | Britannica
- ↑ 4.0 4.1 Computer History Museum - Timeline of Computer History
- ↑ 5.0 5.1 Naur, P., & Randell, B. (Eds.). (1969). Software Engineering: Report of a conference sponsored by the NATO Science Committee
- ↑ 6.0 6.1 The Open Source Definition | Open Source Initiative