软件

software」的各地常用译名
中国大陆 软件
台湾 软体
香港 软件

软体(英语:software)是一系列按照特定顺序组织的电脑资料和指令,是电脑中的非有形部分。电脑中的有形部分称为硬体,由电脑的外壳及各零件及电路所组成。电脑软体需有硬体才能运作,反之亦然,软体和硬体都无法在不互相配合的情形下进行实际的运作。

一般来说,电脑软体划分为程式语言系统软体应用软体和介于这两者之间的中介软体。其中系统软体为电脑使用提供最基本的功能,但是并不针对某一特定应用领域。而应用软体则恰好相反,不同的应用软体根据使用者和所服务的领域提供不同的功能。

软体套件括所有在电脑执行的程式,和其架构无关,例如执行档函式库手稿语言都属于软体。软体不分架构,有其共通的特性,在执行后可以让硬体执行依设计时要求的机能。软体储存在记忆体中,软体不是可以碰触到的实体,可以碰触到的都只是储存软体的零件(记忆体)或是媒介(光碟磁片等)。

软体并不一定只包括可以在电脑上执行的电脑程式,有些定义中,与电脑程式相关的文件,一般也被认为是软体的一部分。简单的说软体就是程式加文件的集合体。软体被应用于世界的各个领域,对人们的生活和工作都产生了深远的影响。

程式语言

以最低阶的角度来看,执行档中包括了针对特定微处理器(一般会是CPU)的机器码,机器码包括了一连串二进位的数值,使处理器从目前的状态变换到下一个状态。例如指令可能会修改电脑内一特定位置中的数值,其效果是使用者无法直接观测到的,指令也可能让萤幕上显示特定资料,这种状态变换是使用者可以看到的。处理器会依照顺序处理收到的指令,不过处理器的处理也可能受到中断,或是因为流程控制指令而改变其要处理的指令。

机器码是许多二进位的数值,不方便工程师阅读及开发程式,因此有组合语言,将机器码转换为人可以看懂的助忆码。不过现在多半的软体是用高阶语言撰写,比较类似自然语言,对人类而言比机器码或组合语言要简单,方便人类使用[1]。高阶语言一般会用直译或编译的方式,将软体的原始码转换为机器码。

原始码是指以程式语言所撰写的一系列人类可阅读的电脑指令,以实作出软体的行为和功能。

软体分类

一个说明电脑中作业系统应用软体层次的示意图,图中的箭头表示资讯流动方向。

软体的分类方式有很多种,可以依软体的目的分为以下几种:

系统软体

系统软体负责管理电脑系统中各种独立的硬体,使得它们可以协调工作,提供基本的功能,并为正在运行的应用软体提供平台[2]。系统软体使得电脑使用者和其他软体将电脑当作一个整体而不需要顾及到底层每个硬体是如何工作的。而各个硬体工作的细节则由驱动程式处理。

一般来说,系统软体套件括作业系统(例如BSDDOSLinuxmacOSiOSOS/2QNXUnixWindows等)和一系列基本的工具(比如编译器,资料库管理,记忆体格式化,档案系统管理,作业系统管理,使用者身分验证,驱动管理,网路连接等方面的工具)。

应用软体

应用软体是为了某种特定的用途而被开发的软体。它可以是一个特定的程式,比如一个图片检视器。也可以是一组功能联络紧密,可以互相协同运作的程式的集合,比如微软Office软体。也可以是一个由众多独立程式组成的庞大的软体系统,比如资料库管理系统。

较常见的有:

  1. 文书处理软体Microsoft OfficeGNOME OfficeKOfficeLibreOfficeGoogle DocsWPS Office
  2. 关联式资料库Oracle Database资料库、SQL Server资料库
  3. 电脑辅助设计CATIAAutoCADFreeCAD
  4. 电脑程式设计C/C++组合语言BASICSwiftJavaScriptJava
  5. P2P软体BitTorrentµTorrentFoxy比特精灵VuzeFree Download Manager
  6. 影像处理软体PhotoshopCorelDRAWCorel painterGIMPMAYASoftimage3ds MaxBlenderxsilightwaveCinema 4DHoudiniKrita
  7. 动态图形视觉特效After Effectsshake
  8. 网页浏览软体Internet ExplorerEdgeFirefoxChromeSafariOperaKonqueror
  9. 网路通讯软体LineICQWindows Live MessengerUUcallSkypeYahoo! MessengerQQAOL Instant Messenger
  10. 媒体播放器MPC-HCMPlayerRealPlayerGOMVLCWMP暴风影音、风雷影音、WinampFoobar2000
  11. 下载管理软体Free Download ManagerIDM
  12. 电子邮件Outlook.comWindows Live MailOutlook ExpressFoxmailThunderBirdDreammailKMail
  13. 资讯安全软体ESET360安全卫士德国小红伞卡巴斯基PC-cillin诺顿防毒BitDefender瑞星防毒金山毒霸
  14. 虚拟机器VMwareVirtualBoxMicrosoft Virtual PCBochs
  15. 输入法软体如新酷音输入法Google拼音输入法
  16. 实时控制系统
  17. 教育软体

恶意软体

恶意软体是发展到危害和破坏计算机的计算机软体,因此,恶意软体是不受欢迎的。恶意软体与计算机相关的犯罪相关联,尽管一些恶意程式可能被设计为用于恶作剧。

软体相关主题

软体架构

使用者常会看到一些程式设计者不会注意的事物。使用现代通用型电脑(相对于嵌入式系统类比电脑超级电脑)的使用者常会用以下三层的软体架构来进行不同的任务:系统平台、应用程式及使用者软体。

  • 应用软体:应用软体也就是大部分使用者认为的软体,常见的例子包括办公室套件及游戏等。应用软体一般会和硬体分开来贩售,偶尔会和硬体一起贩售。应用软体多半是独立于系统平台的软体,只是在设计时仍会针对某些特定的系统平台开发,有些人则将像编辑器、资料库等「系统软体」也视为是应用软体。
  • 使用者撰写的软体:终端使用者开发目的是让软体符合使用者等特定的需求,一般包括试算表及文字处理器的范本或巨集,甚至连邮件的过滤器也可以视为是一种使用者撰写的软体。依照使用者撰写的软体整合到预设应用软体的程度不同,其他使用者可能不会知道哪些是应用软体原有的机能,哪些是使用者扩充的机能。

软体执行

软体在载入到电脑的数据存贮器(例如硬碟记忆体)后,电脑就可以执行该软体。「执行」指的是将指令集由软体移到电脑硬体中,硬体会处理指令集对应的机器码。每一个指令都会让电脑执行特定的动作,包括搬移资料、执行运算或是改变控制流程

资料搬移一般会由记忆体的一个位置移到另一个位置,有时资料搬移会用到中央处理器中允许较快速资料处理的暂存器。大量的资料搬移会用去不少的系统资源,因此有时会用「指标」来处理资料。执行运算的范围很广,简单的可以包括将某位置的资料加一,复杂的可能包括许多资料及对应的处理。

软体的执行多半是一个指令接一个指令的循序进行,但有时会需要改变软体中指令执行的顺序,例如有可以使某一段程式执行数次的回圈,或是依特定条件执行两段程式中的一段的分支指令,甚至是可以执行子程式,执行完成后再回到原来程式,而有些语言也支援无条件的跳跃指令。

软体可以以许多不同的方式运作,包括执行档原始码指令码电脑组态

品质及可靠度

软体的品质有一定的重要性,尤其在像Microsoft OfficeMicrosoft WindowsLinux等商用软体或系统软体更是如此。若软体无法正确执行,可能会删除使用者工作的成果,使电脑当机或是出现其他无预期的情形,这类情形称为程式错误,俗称bug。软体也会受到软体退化的影响,也就是因为许多未发现的程式错误造成的效能退化。借由软体测试可以找出并消除许多的程式错误,不过软体测试很少可以完全消除程式错误。很多大型的软体公司,例如微软、Novell及升阳电脑等,会有专门的软体测试部门,其主要工作就是测试软体。软体可以用单元测试回归测试及其他方式进行测试。测试可能用人工进行,若是大型的程式,更常见的是用电脑自动测试。像NASA就针对其作业系统及其通讯程式有特别严谨的测试流程。

使用许可

不同的软体一般都有对应的软体授权,软体的使用者必须在同意所使用软体的许可证的情况下才能够合法的使用软体。从另一方面来讲,特定软体的许可条款也不能够与法律相抵触。

依据许可方式的不同,大致可将软体区分为几类:

  • 专有软体:此类授权通常不允许使用者随意的复制、研究、修改或散布该软体。违反此类授权通常会有严重的法律责任。传统的商业软体公司会采用此类授权,例如微软Windows和办公软体。专属软体的原始码通常被公司视为私有财产而予以严密的保护。
  • 自由软体:此类授权正好与专属软体相反,赋予使用者复制、研究、修改和散布该软体的权利,并提供原始码供使用者自由使用,仅给予些许的其它限制。以LinuxFirefoxOpenOffice可做为此类软体的代表。
  • 共享软体:通常可免费的取得并使用其试用版,但在功能或使用期间上受到限制。开发者会鼓励使用者付费以取得功能完整的商业版本。
  • 免费软体:可免费的取得和散布,但并不提供原始码,也无法修改。
  • 公共软体:原作者已放弃权利,著作权过期,或作者已不可考的软体。使用上无任何限制。

专利

有些国家可以申请软体专利,有些国家不行,而是用著作权的观点保护软体[3]。不过在软体产业中,软体专利是个争议性高的议题,各方人士有不同的立场。软体专利争议的主要争议点是在软体专利中,受保护不得复制的部分是其演算法还是其用到的技术。

软体开发

软体开发是根据使用者要求建造出软体系统或者系统中的软体部分的过程。软体开发是一项包括需求捕捉,需求分析设计,实现和测试系统工程,其中可能包括研究、新的开发工作、修改、复用、重新设计(再工程)、维护,或者任何最终获得软体产品的其他活动[4]

软体开发过程是指软体从起始到完成过程中如何进行计划、控制和监控的模型。有以下不同的几种:

  • 瀑布模型:依需求分析,设计,实现,测试 (确认), 整合,和维护这样的步骤依序进行。
  • 迭代式开发:将开发工作被组织为一系列的短小的、固定长度(如3周)的小项目,被称为一系列的叠代。在每一次叠代中进行需求分析、设计、实现与测试。
  • 敏捷软体开发:应对快速变化需求的软体开发方式,强调设计师团队与业务专家之间的协作、面对面的沟通、频繁交付软体版本、适应变化的代码编写等特点。
  • 极限编程:敏捷软体开发的一种,引入基本价值、原则、方法等概念来达到降低变更成本的目的,其主要目的是快速应用程式开发。
  • 快速应用程式开发,以最小幅度的规划并迅速地将原形完成的软体发展方法论,其软体开发的规划是和撰写软体本身交错同时进行。
  • 螺旋模型:兼顾了快速原型的迭代特征以及瀑布模型的系统化与严格监控,并且加入了其他模型不具备的风险分析,使软体在无法排除重大风险时有机会停止,以减小损失。

编程工具

软体开发工具指的是软体开发人员用来建立、除错维护或以其他方式支援的软体程式或应用程式的形式。

软体由一种或多种程式语言所写成。现在存在有很多种程式语言,并且每种都具有至少一种编写的方式,其中包括它自己的一套编程工具。这些工具包含相对独立自足的程式,如编译器除错器直译器链结器文字编辑器,可以结合共同完成一个任务,很像一个人可以使用多个手握工具来固定一个物理物件。

这套工具也有可能是一个整合开发环境(IDE),它结合了许多这种工具或它们的全部功能。无论是通过调用程式员等有关人士的工具,或通过以一种新的方式重新实现它们的功能,IDE可以做到这一点。几乎所有的程式语言为编写提供了使用单独的工具,而不是一个IDE,因为有些程式员由于各种原因不喜欢使用IDE,或是因为IDE通常需要更长的时间才能发展形成一个可接受的标准,而不是一个个人工具。事实上,新的程式语言最初通常不会提供他们​​的IDE 。

产业及组织

软体产业是由许多软体公司及程式设计者所组成的产业,其性质较类似服务业。由于其产业特性,毛利率较其他产业要高[5]。软体产业的获利相当高,像微软的创始人比尔·盖兹就因为销售Microsoft WindowsMicrosoft Office而数次成为美国首富[6]。不过随着时代的变化,软体产业的分工及专业化也越来越细。例如电子游戏产业办公室软体都属于软体产业,而两者就有不少的差异。

有许多非营利的软体组织,例如自由软体基金会GNU计划Mozilla基金会。像全球资讯网协会(W3C)及网际网路工程任务组(IETF)等组织发展许多软体标准,因此不同的软体可以借由这些标准互相沟通,这种标准包括例如XMLHTMLHTTPFTP等。

其他著名的软体公司有GoogleNovellSAPSymantecAdobe SystemsCorel,不过其中也有许多小公司有一些创新的产品。

参考文献

  1. ^ Compiler construction. [2014-05-22]. (原始内容存档于2013-11-02). 
  2. ^ 电脑软体的介绍. Content.edu.tw. [2014-05-23]. (原始内容存档于2014-05-23). 
  3. ^ 吴汉东等. 知识产权基本问题研究(分论,第二版). 北京: 中国人民大学出版社. 2009年3月: 226. ISBN 9787300102771 (中文(简体)). 
  4. ^ DRM Associates. New Product Development Glossary. 2002 [2006-10-29]. (原始内容存档于2018-07-13). 
  5. ^ 10档 上半年高毛利率股排行榜. Money.udn.com. [2014-05-24]. (原始内容存档于2014-05-25). 
  6. ^ 盖茨20度蝉联福布斯美国首富 8名华裔富豪上榜. Ccin.com.cn. [2014-05-24]. (原始内容存档于2014-05-25). 

外部连结

参见