软件 :一系列执行特定任务的指令、数据或程序

更新时间:2023-09-03 10:01

软件(Software),是指一系列用于操作计算机并执行特定任务的指令、数据或程序,与硬件(Hardware)相对,硬件用于描述计算机的物理组件,而软件使用户能够与计算机及其硬件进行交互或执行任务。

一般来说,软件可分为系统软件和应用软件。系统软件用于运行计算机硬件,为应用程序提供平台,应用软件用于用户执行任务。每种类型的软件都有不同的功能和用途,以满足用户和开发人员的需求。

软件的生命周期可以用来描述软件从创建到报废的整个过程,一般包括问题定义、可行性分析(需求分析)、总体设计、编码、测试、运行和维护升级到废弃等阶段,其开发语言可以有Python、Java、JavaScript、HTML/层叠样式表、C/C++SQLRubyPHPSwift和Go等语言。

定义

软件是相对于硬件而言的,以解释性的定义为主。

1982年美国软件工程专家罗杰·普雷斯曼(Roger S.Pressman)对软件的解释为:当计算机执行时能提供所需功能和性能的程序,能使程序有效处理信息的数据结构以及描述操作和使用程序的文档,简单地说就是软件由程序、数据和文档组成。

1983年 IEEE(电气和电子工程师协会)定义软件为计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必需的数据。

2011年英国软件工程专家兰·萨默维尔(Ian Sommerville)将软件定义为一个系统,通常由若干程序、用于建立这些程序的配置文件、描述系统结构的系统文档、解释如何使用系统的用户文档以及供用户下载最新产品信息的Web站点组成。

软件可以被视为知识的载体,其涵盖的内容和范围相当广泛。一般来说,计算机程序以及与之相关的文档、数据、影视资料、方法、规则、网页及其链接等都可以被视为软件。

发展历程

1842年至1843年,世界上第一位程序员阿达·勒芙蕾丝(Ada Lovelace)为查尔斯·巴贝奇(Charles Babbage)的分析引擎开发算法,这被认为是第一个计算机程序的提出。

1936年,艾伦·图灵(Alan Turing)提出了图灵机的概念,其关键思想是将计算过程抽象化,这被认为是计算机科学的开创性理论之一,并成为计算机科学中许多理论和算法的基础。

1947年,凯瑟琳·布斯(Kathleen Booth)与其丈夫安德鲁·布斯(Andrew Booth)在去往美国时认识了约翰·冯·诺依曼(John von Neumann),之后凯瑟琳设计了第一台ARC计算机汇编语言和汇编器,为后来的计算机编程奠定了基础。

1948年6月21日,英国曼彻斯特大学的汤姆·基尔伯恩(Tom Kilburn)为曼彻斯特Baby计算机编写了世界上的第一个软件。

20世纪50年代初,通用汽车公司为IBM 701电子数据处理机创建了第一个操作系统,称为通用汽车操作系统(GM OS,General Motors Operating System)。

1952年,格雷斯·霍珀(Grace Hopper)团队创造了第一个计算机语言编译器,它是面向过程的高级程序设计语言(COBOL)的前身。

1958年,统计学家约翰·图基(John Tukey)在一篇关于计算机编程的文章中首次提出了“软件”一词。

20世纪60年代末,软盘被引入并在80年代和90年代被用于分发软件。

1971年11月3日,AT\u0026T发布了unix操作系统的第一个版本。自从推出以来,Unix 操作系统及其分支对计算机产生了深远的影响,提供了跨各种异构环境和设备类型的可移植性、稳定性和互操作性

1977年,苹果公司发布了Apple II,消费类软件开始蓬勃发展。Apple II的成功推动了个人计算机的普及,并为普通用户提供了友好的界面和丰富的应用程序。消费类软件的发展包括各种娱乐、教育、创作和生产力工具,为个人计算机的用户提供了全新的体验和功能。

1979年,VisiCorp为Apple II发布了第一个个人电脑电子表格软件VisiCalc。

1981年,微软发布了MS-DOS操作系统,许多早期的IBM计算机都在这个操作系统上运行。同时IBM开始销售软件,商业软件开始面向普通消费者。

20世纪80年代,HDD成为计算机的标配,IBM等计算机制造商开始将软件捆绑在计算机中,并与早期的OEM厂商合作销售软件。这种软硬件捆绑销售的模式为消费者提供了一站式的解决方案,简化了购买和安装软件的流程,同时也促进了软件产业的发展,催生了更多的软件开发商和应用程序的出现。

1983年,理查德·斯托曼(Richard M.Stallman)的GNU Linux项目推动了自由软件运动,旨在创建一个类Unix操作系统,其源代码可以自由复制、修改和分发。

1984年,Mac OS发布,驱动了苹果公司麦金塔系列。

20世纪80年代中期,一些重要的软件应用程序诸如欧特克AutoCAD、Microsoft Word和Microsoft Excel等相继发布。

1985年,微软发布了Windows 1.0,这将个人计算机推向主流。Windows 1.0引入了图形用户界面(GUI),为个人计算机用户提供了更直观、易用的操作环境。这标志着个人计算机进入了图形化时代,为后续的Windows操作系统的发展奠定了基础。

1989年,CD-ROM成为标准媒介,它们能够存储比软盘更多的数据,使得大型软件程序可以快速、方便、相对廉价地分发。

1991年,开源操作系统Linux的内核发布。

1997年,DVD引入,它能够存储比CD更多的数据,使得软件套件(如Microsoft Office套件)放在一个光盘上成为可能。

1999年,赛富时公司利用云计算首创了通过互联网交付软件的模式。

2000年,"software as a service"(Software as a Service,SaaS)这个术语被提出。

2007年,苹果公司推出了IPhone,标志着移动技术的新时代的开始。iPhone的特点是其创新的触摸屏界面和丰富的移动应用程序生态系统,它引领了智能手机的潮流,改变了人们使用手持移动设备和应用软件的方式。移动技术的快速发展和移动应用的兴起催生了新兴的移动软件行业,如移动游戏、社交媒体、移动支付等,成为当代软件发展中的重要方向和趋势。

从2010年开始至今,软件的分发和访问方式发生了重大变化。DVD和物理介质逐渐不受欢迎,用户现在更倾向于直接从互联网或云端购买和下载软件。这一转变得益于高速互联网的普及以及数字分发的便利性。

工作方式

软件是由一系列指令和数据组成的程序,旨在执行特定的任务和满足用户的需求,其工作原理基于计算机的处理能力和指令执行机制。

软件按功能类别可以分为应用软件和系统软件两种类型,它们在工作方式上有着明显的区别。

系统软件的工作方式

系统软件位于计算机硬件和应用软件之间,用于协调系统的硬件和软件,使用户能够运行高级应用软件并执行特定操作。用户不能直接与系统软件进行交互,因为它在后台运行并处理计算机的基本功能。系统软件在计算机系统启动时执行,并在系统开启期间一直运行。

应用软件的工作方式

应用软件是为用户执行特定功能的程序,如撰写报告和浏览网站等。应用程序也可以为其他应用程序执行任务,但它们需要计算机的操作系统和其他支持系统软件程序的支持才能工作,不能单独运行。

桌面应用程序安装在用户的计算机上,利用计算机内存执行任务。它们占用计算机HDD上的空间,不需要互联网连接就能工作。另外,桌面应用程序必须符合它们运行的硬件设备的要求。

而Web应用程序不依赖于硬件和系统软件运行,只需要互联网访问就能工作。用户可以从任何配有Web浏览器的设备上启动Web应用程序。由于负责应用功能的组件位于服务器上,因此用户可以从Windows麦金塔Linux或其他任何操作系统启动应用程序。

分类

按软件功能分类,软件可分为系统软件、应用软件,其中系统软件包括操作系统和支撑软件(包括语言与编译系统和数据库管理软件),应用软件包括通用应用软件和专用软件。

系统软件

系统软件是用于运行计算机硬件并为应用软件提供平台的软件,为计算机的使用提供最基本的功能。

系统软件可分为操作系统、数据库管理系统、系统实用程序和程序设计语言与编译系统等。

操作系统

操作系统是用于管理计算机硬件与软件资源的程序,同时也是计算机系统的核心。操作系统的主要功能包括管理与配置内存、决定系统资源的分配顺序、控制输入与输出设备、管理网络和文件系统等基本事务。常见的操作系统包括WindowsunixLinux、Mac OS和OS/2等。

数据库管理系统

数据库管理系统是用于管理和操作数据库的系统。作为用户和数据库之间的接口,它提供给用户一套管理数据库的创建、修改、检索、统计和排序等功能的命令。关系型数据库管理系统是最常见的类型,包括Visual FoxPro、SQL Server、Oracle数据库sybase、DB2和INFORMIX等。

系统实用程序

系统实用程序是一些工具性的服务程序,便于用户使用和维护计算机。主要的实用程序包括语言处理程序、编辑程序、连接装配程序、打印管理程序、测试程序和诊断程序等。

程序涉及语言与编译系统

程序设计语言和编译系统是用于编写和执行计算机程序的工具。常用的高级语言包括C、BASIC、PASCAL、FortranCOBOL等。

编译系统则负责将程序设计语言转换为计算机可以执行的机器语言。

应用软件

应用软件在系统软件的基础上开发,用于解决特定领域问题。既有用于电信、金融、电力、公安、交通管理、招生、考试、录取等领域的专用软件,又有用于企事业单位生产、工作、管理、服务的各种事务类软件,还有用于监视、分析和控制现实世界事件的各种实时软件、各类科学和工程软件,以及用于工业、民用或军事上的各种功能的与设备融为一体的嵌入式软件,个人计算机软件,手机上的实用软件,基于Web的软件,儿童玩具中的软件,人工智能软件等。

通用应用软件

通用应用软件是一种具有通用信息处理功能的商品化软件。它的通用性使其适用于有多个类似应用需求的用户。通用应用软件可以通过选择、设置和调整来满足用户的特定需求。一些典型的通用软件包括文字处理软件、表格处理软件、数值统计分析软件和财务核算软件等。

专用应用软件

专用应用软件是为满足用户特定需求而开发的软件。在某些情况下,由于用户对数据处理功能的需求存在较大的差异性,通用软件无法满足要求,因此需要专业人士采用单独开发的方法,为用户开发具备特定要求的专门应用软件。一些典型的专用软件包括特定的业务处理系统、电子设备的控制系统、空中交通管制系统等。

功能特点

软件生命周期

软件生命周期(Systems Development Life Cycle, SDLC)是指软件从创建到报废的整个过程,一般包括问题定义、可行性分析(需求分析)、总体设计、编码、测试、运行和维护升级到废弃等阶段。

软件许可证

软件许可证(Software License)是一份法律文件,它为软件的使用和分发提供了具有法律约束力的准则和规定。

不同的软件一般都有对应的软件授权,软件的用户必须在同意所使用软件的许可证的情况下才能够合法的使用软件。根据软件许可证的不同,软件被分为自由软件专有软件、公共软件、免费软件、共享软件、私有软件和商业软件

自由软件

自由软件(Free software)是指可自由使用、复制、分发、修改的软件,并提供源码给用户自由使用。自由软件的重点在于软件的自由性,而不是价格。

Linux、GCC编辑器等软件都是被广泛应用的自由软件。

而开源软件(Open source software)的概念与自由软件类似,这类软件有一些限制条款,但只有少数情况下自由软件不是开源软件。就表达方式上,自由软件涵盖的范围比开源软件更广。

著作权保护软件(Copylefted software)也是一种自由软件,它是指采用Copyleft协议的软件。Copyleft协议是一种使程序能够自由获得, 同时要求此程序的衍生版本也同样能够自由获得的协议。通过著作权保护软件,软件开发者可以确保其作品一直保持为自由软件,避免被私有化和封闭源代码的可能性。这使得用户能够自由地使用、学习、改进和分享软件,同时保留原始作者为其作品赋予的自由。

非著作权保护自由软件(Noncopylefted free software)是指作者允许软件的再次分发和修改,但同时也可能加入额外的限制。这类软件未受著作权保护,因此软件副本或修改后的版本并不一定能一直保有自由。软件公司可以编译这类软件,无论有无修改,接着以专有软件产品的形式发布。

专有软件

专有软件(Nonfree software)是由某个公司或组织拥有并控制的软件,禁止用户随意的复制、修改或分发该软件。与自由软件相反,使用专有软件的用户通常需要支付授权费用才能使用。

公共软件

公共软件(Public domain software)是未受著作权保护的软件。而大多数自由软件不是公共软件,这些自由软件受到著作权法的保护,这样著作权所有者才能在法律上通过自由软件授权条款向任何人提供授权,允许他人自由使用。

免费软件

免费软件(Freeware)是指可免费使用和再次分发的软件,但并非所有免费软件都是自由软件。免费软件可能限制了对软件的修改和源代码的存取权限。

共享软件

共享软件(Shareware)是一种允许用户试用一段时间并支付授权费用后才能继续使用的软件。共享软件允许再次分发软件副本,但通常不提供修改和存取源代码的权限。

私有软件

私有软件(Private software)是为特定用户(如组织或公司)开发的软件,该用户独占软件的使用权限,但不公开发行软件的源代码。

商业软件

商业软件(Commercial software)是以商业目的开发和销售的软件,这不同于专有软件。商业软件可使用专有或自由的授权条款进行分发。商业软件也可以是自由软件,只要它符合自由软件的原则。

相关法律

世界知识产权组织(WIPO)是联合国的一个专门机构,成立于1967年,其主要职能是在全球范围内推动知识产权的保护。WIPO目前监督着26项与其核心职能相关的国际条约。1995年出台了《与贸易有关的知识产权协定》(TRIPS),旨在将世界各地的专利法规整合起来,限制贸易壁垒。然而,尽管为了统一起见采取了这样的措施,各国仍对可以或不可以获得专利的技术有不同的看法,这在软件专利方面特别凸显出来。

中国的软件专利法

在中国,《中华人民共和国计算机软件保护条例》是软件知识产权司法鉴定中的重要依据之一。该条例对计算机程序、文档、软件开发者和软件著作权进行了明确的界定。其中,对于计算机程序和文档的界定,以及“同一计算机程序的源程序和目标程序为同一作品”的规定,是软件知识产权司法鉴定的基本依据。

根据《计算机软件保护条例》,软件中华人民共和国著作权法保护的是软件的具体表达,而不包括软件的思想、处理过程、操作方法或者数学概念等。而软件著作权归属于软件的开发者。如果在软件中明确标示了自然人、法人或其他组织的身份为开发者,那么这些署名的个体或组织可以被视为该软件的开发者。

另外,软件的合法复制品的所有人享有一定的权利,包括将软件装入计算机设备、制作备份复制品以防止损坏以及对软件进行必要的修改。但在未经软件著作权人许可的情况下,修改后的软件不得提供给任何第三方使用。而如果开发的软件与已存在的软件相似,但由于可供选用的表达方式有限,不构成对已有软件的著作权侵犯。

欧洲国家的专利法

欧洲采取谨慎和保守的态度,由欧洲专利局(EPO)颁发欧洲专利,这些专利对欧洲专利公约(EPC)的所有成员国都有约束力。尽管欧洲专利对成员国具有间接的法律影响,但每个成员国仍然保留自己的专利局来遵守本地法律。因此,成员国的本地专利法在欧洲体系面前变得相对不那么重要。

在欧洲,申请人被认为是发明家。欧洲制度认为,这种做法鼓励发明家在早期阶段就公开其发明,且任何人或组织都可以对专利申请提出异议,这些异议由欧洲专利局内设的一个专门办公室处理。欧洲的这种公开异议程序为任何人提供了撤销或质疑专利权利要求的机会,这为欧洲专利局授予的专利提供了更高的验证水平。

欧洲体系的一个显著特点是专利申请的自动公开。当发明家在欧盟的任何国家提交专利申请时,该发明将被公开。这确保了知识对公众的可用性。此外,根据巴黎公约,在发明家初次申请专利后的12个月内,如果在其他国家申请保护,该发明家将享有优先权。

美国的专利法

美国美国通常在软件专利方面持有相对开放的观点,使得获得软件专利更加容易,美国专利及商标局(USPTO)是专利申请的主要挑战方,可以自行提出异议,申请专利的人必须是发明家本人。

在发明家初次申请专利后且过了12个月的优先权期,如果专利被授予,它将在美国受限,除非与美国专利商标局单独递交申请。这对希望在欧洲和美国保护其发明的发明家可能会带来困难。

开发语言

Python

Python是一种具有极高灵活性和强大功能的通用编程语言,其易读性和简洁的结构使其成为初学者、中级和专业程序员的首选。

1989年,荷兰计算机程序员吉多·范罗苏姆(Guido van Rossum)实现了Python,它是开源的,拥有一个标准库,全球的程序员使用它创建网站、编写软件、实现任务自动化、数据分析和数据可视化。像IBM、美国航空航天局和Pixar这样的大公司都在使用Python。

Java

1995年,Sun Microsystems公司首次发布了Java语言和计算平台。Java语言是一种高级的面向对象编程语言,其语法类似于C和C++,但更简单,更易于学习和使用。

程序员使用Java开发web和移动应用程序、嵌入式系统和大数据技术。Java的依赖性较少,使用类来定义属性和行为,这使得Java能够从类继承属性和行为,而无需重新创建。

由于Java包含强大的安全协议,且不与特定的平台或系统绑定,它是软件开发中最常用的编程语言之一。

JavaScript

JavaScript在前端和后端开发中具有广泛的适用性,在Web应用程序开发中得到了广泛的应用。

JavaScript更像是一种脚本语言而不是编程语言,因其代码可由现有系统解释。JavaScript是最流行的软件工程语言之一,尤其是对于那些从事Web应用程序开发的人员来说。

ECMAScript的语法与C++和Java非常相似,它执行速度快,简化了升级和应用程序维护的过程。与node.js结合使用时,程序员可以在Web浏览器之外使用JavaScript,并进行服务器端开发。

HTML/CSS

HTML 和 CSS 是开发人员常常一起使用用于创建网页的语言。HTML 在 1993 年首次被编写,它是一种标记语言而非编程语言,因为它不包含内在逻辑。CSS 在 1996 年发明,是一种样式表语言,用于描述用 HTML 或任何标记语言编写的信息的呈现方式。

由于 HTML 是 Web 开发的基石之一,学习 HTML 可以更好地理解网络原理。作为网页设计的基础,CSS 允许用户根据需求设计网页的外观。

C/C++

C++是c语言的扩展,功能强大且应用广泛。C语言诞生于20世纪70年代,而C++则在1985年由本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)创建,广泛用于开发操作系统、网络浏览器、桌面应用程序和游戏。微软苹果公司奥多比等公司都在其产品中使用了 C++。

C++ 是最难学习的编程语言之一,它具备先进的语法和多范式特性,比 Java 和 Python 更加复杂。C++ 使用指针来存储内存地址,可以通过引用它们来操作内存,其优势是速度快、有丰富的模板库和接近硬件的特性。

SQL

SQL(Structured Query Language:结构化查询语言)是一种专门用于管理关系型数据库的特定编程语言。它于1986年由美国国家标准学会(American National Standards Institute)标准化,并使用由子句、表达式、谓词、查询和语句组成的语法来处理数据。

SQL可以在数据库管理系统中存储、检索、管理和操作数据,这在大数据分析中尤其有用。SQL被内置于诸如MySQL等数据库管理系统中,其他SQL数据库管理系统包括Oracle数据库微软 SQL Server、PostgreSQL和Microsoft Access。

Ruby

Ruby是一种开源的动态高级编程语言,旨在最大化生产力和简单性。Ruby借鉴了Perl和BASIC等前辈语言的特点,在1995年发布以来,Ruby已吸引了世界各地的忠实程序员。由于其自然的流程,Ruby的语法易于阅读和编写。

Ruby将所有东西都视为对象,因此它的多样性和可移植性适用于Web开发、自动化和数据处理等领域。它的易用性类似于Python,但 Ruby更适合商业用途而非教育用途。一些使用 Ruby 的主要公司包括GitHubAirbnb肖皮菲

PHP

PHP作为一种通用脚本语言,非常适合用于Web开发,有近80%的网站使用PHP开发。PHP于1994年创建,被认为是快速、灵活且实用的,它能与HTML层叠样式表ECMAScript和数据库良好地配合使用。

PHP是免费的,还包含许多由用户构建的免费开源库,开发者可以通过用c语言编写的扩展来为PHP扩充功能,其在编写、测试和排除故障方面特别有用。

Swift

Swift在2014年由苹果公司发布,是一种通用编程语言,用于IOS、iPad、Mac OS等类似的技术。

Swift相对容易学习和阅读,被认为是初学者的良好编程语言选择。使用Swift简单而有趣,主要是因为图形、列表和图表可以立即呈现,允许实时实验和调试。

Swift类似于C语言,以其速度而闻名,且兼容Linux。作为另一种iOS编程语言Objective-C的继任者,Swift可能很快会使其前任过时。

Go

Go(有时也被称为Golang或Go语言)简单、可靠和高效,于2009年由谷歌设计,语法类似于C,并具有与Java相当的跨平台应用程序能力。

Go编译速度快,具有简洁的功能集,并提供自动内存管理能力。Go可移植,可以与外部库和本地系统进行交互,并受到LinuxMac OSWindows的支持,非常适用于云原生应用程序、分布式网络服务和独立工具。一些使用Go语言的公司包括谷歌、优步和Dropbox。

未来发展趋势

软件行业未来的发展趋势主要包括人工智能增强现实/虚拟现实、Web 3.0、云服务、区块链、低代码/无代码开发、生物识别技术等。

人工智能(AI)是软件开发行业中快速崛起的趋势和热门话题。近年来,AI艺术生成器、AI音乐和AI辅助编码等领域的兴起,对各行业都带来了一定程度的冲击。其中,开发人员在开发过程中可以借助AI辅助编码,提升生产效率。

增强现实/虚拟现实(AR/VR)创新正应用于机器学习和人工智能领域以改进现有的产品并开发新产品。在未来几年中,将会有更多融合人工智能的改进网络技术,如WebXR、改进的AI库以及更先进的人工智能产品。

Web 3.0是对未来互联网使用方式的革命性推动,将是当前世界范围内的Web 2.0的继任者。Web 3.0仍在不断发展中,将成为一个完全去中心化的开放网络,相比Web 2.0具有更多的实用性和功能性。

而软件对云服务的需求逐年增长,存储空间不断增加,成本也将不断降低,需求呈指数级增长,硬件系统正在持久地向云端转移。新的软件开发产品应充分利用云服务的优势,确保其产品能够最大限度地受益于云服务。

区块链比特币和许多其他加密货币所依赖的点对点网络,在软件开发领域将发展出许多用途。随着对Web 3.0的推动,区块链可通过提供无需中间人的去中心化产品来改变软件开发行业。

低代码/无代码开发解决方案为非技术业务用户提供了预构建的软件解决方案,可以灵活集成到现有的业务工作流程中。尤其在2020-2021年的疫情期间,由于全球数百万家庭办公室没有自己的IT部门,低代码解决方案成为普遍工具,可以迅速重新配置业务工作流程,以适应突然变化的业务环境。

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}
友情链接: