软体(按照特定顺序组织的计算机数据和指令的集合)详细资料大全
软体(中国大陆及香港用语,台湾称作软体,英文:Sofare)是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软体被划分为系统软体、套用软体和介于这两者之间的中间件。软体并不只是包括可以在计算机(这里的计算机是指广义的计算机)上运行的电脑程式,与这些电脑程式相关的文档一般也被认为是软体的一部分。简单的说软体就是程式加文档的集合体。另也泛指社会结构中的管理系统、思想意识形态、思想政治觉悟、法律法规等等。
基本介绍 中文名 :软体 外文名 :Sofare 套用类别 :系统软体、套用软体等 开发语言 :Java、C/C++、Basic等 定义,特点,分类,套用类别,授权类别,相关概念,开发流程,软体工程师,法律保护,著作权归属,载体,使用许可,生命周期,软体生命周期模型,常见的软体生命周期模型,开发语言,O语言,Java语言,易语言(E语言),C/C++语言,习语言,Basic,php,Perl,Python,C#,Javascript,Ruby,Fortran,objective c,Pascal,Swift, 定义 软体,拼音为Ruǎnjiàn,国标中对软体的定义为:与计算机系统操作有关的电脑程式、规程、规则,以及可能有的档案、文档及数据。 其它定义: 1.运行时,能够提供所要求功能和性能的指令或电脑程式集合。 2.程式能够满意地处理信息的数据结构。 3.描述程式功能需求以及程式如何操作和使用所要求的文档。 以开发语言作为描述语言,可以认为:软体=程式+数据+文档 特点 1、无形的,没有物理形态,只能通过运行状况来了解功能、特性、和质量 2、软体渗透了大量的脑力劳动,人的逻辑思维、智慧型活动和技术水平是软体产品的关键 3、软体不会像硬体一样老化磨损,但存在缺陷维护和技术更新 4、软体的开发和运行必须依赖于特定的计算机系统环境,对于硬体有依赖性,为了减少依赖,开发中提出了软体的可移植性 5、软体具有可复用性,软体开发出来很容易被复制,从而形成多个副本 分类 套用类别 按套用范围划分,一般来讲软体被划分为系统软体、套用软体和介于这两者之间的中间件。 系统软体 系统软体为计算机使用提供最基本的功能,可分为作业系统和系统软体,其中作业系统是最基本的软体。 系统软体是负责管理计算机系统中各种独立的硬体,使得它们可以协调工作。系统软体使得计算机使用者和其他软体将计算机当作一个整体而不需要顾及到底层每个硬体是如何工作的。 1.作业系统是一管理计算机硬体与软体资源的程式,同时也是计算机系统的核心与基石。作业系统身负诸如管理与配置记忆体、决定系统资源供需的优先次序、控制输入与输出设备、操作网路与管理档案系统等基本事务。作业系统也提供一个让使用者与系统互动的操作接口。 2.支撑软体是支撑各种软体的开发与维护的软体,又称为软体开发环境(SDE)。它主要包括环境资料库、各种接口软体和工具组。著名的软体开发环境有IBM公司的Web Sphere,微软公司的等。 包括一系列基本的工具(比如编译器、资料库管理、存储器格式化、档案系统管理、用户身份验证、驱动管理、网路连线等方面的工具)。 套用软体 系统软体并不针对某一特定套用领域,而套用软体则相反,不同的套用软体根据用户和所服务的领域提供不同的功能。 套用软体是为了某种特定的用途而被开发的软体。它可以是一个特定的程式,比如一个图像浏览器。也可以是一组功能联系紧密,可以互相协作的程式的集合,比如微软的Office软体。也可以是一个由众多独立程式组成的庞大的软体系统,比如资料库管理系统。 如今智慧型手机得到了极大的普及,运行在手机上的套用软体简称手机软体。所谓手机软体就是可以安装在手机上的软体,完善原始系统的不足与个性化。随着科技的发展,手机的功能也越来越多,越来越强大。不是像过去的那么简单死板,发展到了可以和掌上电脑相媲美。手机软体与电脑一样,下载手机软体时还要考虑你购买这一款手机所安装的系统来决定要下相对应的软体。手机主流系统有以下:Windows Phone、Symbian、iOS、Android。 授权类别 不同的软体一般都有对应的软体授权,软体的用户必须在同意所使用软体的许可证的情况下才能够合法的使用软体。从另一方面来讲,特定软体的许可条款也不能够与法律相违背。 依据许可方式的不同,大致可将软体区分为几类: 专属软体 :此类授权通常不允许用户随意的复制、研究、修改或散布该软体。违反此类授权通常会有严重的法律责任。传统的商业软体公司会采用此类授权,例如微软的Windows和办公软体。专属软体的源码通常被公司视为私有财产而予以严密的保护。 自由软体 :此类授权正好与专属软体相反,赋予用户复制、研究、修改和散布该软体的权利,并提供源码供用户自由使用,仅给予些许的其它限制。以Linux、Firefox 和OpenOffice 可做为此类软体的代表。 ***享软体 :通常可免费的取得并使用其试用版,但在功能或使用期间上受到限制。开发者会鼓励用户付费以取得功能完整的商业版本。根据***享软体作者的授权,用户可以从各种渠道免费得到它的拷贝,也可以自由传播它。 免费软体 :可免费取得和转载,但并不提供源码,也无法修改。 公***软体 :原作者已放弃权利,著作权过期,或作者已经不可考究的软体。使用上无任何限制。 相关概念 开发流程 软体开发是根据用户要求建造出软体系统或者系统中的软体部分的过程。软体开发是一项包括需求捕捉,需求分析,设计,实现和测试的系统工程。软体一般是用某种程式设计语言来实现的。通常采用软体开发工具可以进行开发。 软体开发流程 即 Sofare development process 。 软体设计思路和方法的一般过程,包括设计软体的功能和实现的算法和方法、软体的总体结构设计和模组设计、编程和调试、程式联调和测试以及编写、提交程式。 1 相关系统分析员和用户初步了解需求,然后列出要开发的系统的大功能模组,每个大功能模组有哪些小功能模组,对于有些需求比较明确相关的界面时,在这一步里面可以初步定义好少量的界面。 2 系统分析员深入了解和分析需求,根据自己的经验和需求做出一份文档系统的功能需求文档。这次的文档会清楚例用系统大致的大功能模组,大功能模组有哪些小功能模组,并且还例出相关的界面和界面功能。 3 系统分析员和用户再次确认需求。 4 系统分析员根据确认的需求文档所例用的界面和功能需求,用叠代的方式对每个界面或功能做系统的概要设计。 5 系统分析员把写好的概要设计文档给程式设计师,程式设计师根据所例出的功能一个一个的编写。 6 测试编写好的系统。交给用户使用,用户使用后一个一个的确认每个功能,然后验收。 软体工程师 一般指从事软体开发职业的人。软体工程师10余年来一直占据高薪职业排行榜的前列,作为高科技行业的代表,技术含量很高,职位的争夺也异常激烈。软体开发是一个系统的过程,需要经过市场需求分析、软体代码编写、软体测试、软体维护等程式。软体开发工程师在整个过程中扮演着非常重要的角色,主要从事根据需求开发项目软体工作。 法律保护 计算机软体作为一种知识产品,其要获得法律保护,必须具备以下必要条件: (一)原创性。 即软体应该是开发者独立设计、独立编制的编码组合。 (二)可感知性。 受保护的软体须固定在某种有形物体上,通过客观手段表达出来并为人们所知悉。 (三)可再现性 。即把软体转载在有形物体上的可能性。 著作权归属 根据《计算机软体保护条例》第10条的规定,计算机软体著作权归属软体开发者。因此,确定计算机著作权归属的一般原则是“谁开发谁享有著作权”。软体开发者指实际组织进行开发工作,提供工作条件完成软体开发,并对软体承担责任的法人或者非法人单位,以及依靠自己具有的条件完成软体开发,并对软体承担责任的公民。 载体 软体的载体可以是硬碟、光碟、随身碟、软碟等数据存储设备。 使用许可 不同的软体一般都有对应的软体授权,软体的使用者必须在同意所使用软体的许可证的情况下才能够合法的使用软体。 依据许可方式的不同,大致可将软体区分为几类: 专属软体、自由软体、***享软体、免费软体、公***软体。 生命周期 软体生命周期是指从软体定义、开发、使用、维护到报废为止的整个过程,一般包括问题定义、可行性分析、需求分析、总体设计、详细设计、编码、测试和维护。 问题定义就是确定开发任务到底“要解决的问题是什么”,系统分析员通过对用户的访问调查,最后得出一份双方都满意的关于问题性质、工程目标和规模的书面报告。 可行性分析就是分析上一个阶段所确定的问题到底“可行吗”,系统分析员对系统要进行更进一步的分析,更准确、更具体地确定工程规模与目标,论证在经济上和技术上是否可行,从而在理解工作范围和代价的基础上,做出软体计画。 需求分析即使对用户要求进行具体分析,明确“目标系统要做什么”,把用户对软体系统的全部要求以需求说明书的形式表达出来。 总体设计就是把软体的功能转化为所需要的体系结构,也就是决定系统的模组结构,并给出模组的相互调用关系、模组间传达的数据及每个模组的功能说明。 详细设计就是决定模组内部的算法与数据结构,也是明确“怎么样具体实现这个系统”。 编码就是选取适合的程式设计语言对每个模板进行编码,并进行模组调试。 测试就是通过各种类型的测试使软体达到预定的要求。 维护就是软体交付给用户使用后,对软体不断查错、纠错和修改,使系统持久地满足用户的需求。 软体的生命周期也可以分为3个大的阶段,分别是计画阶段、开发阶段和维护阶段。 软体生命周期模型 软体生命周期模型也称为软体过程模型,反映软体生存周期各个阶段的工作如何组织、衔接,常用的有瀑布模型、原型模型、螺旋模型、增量模型、喷泉模型,还有建造-修补模型、MSF过程模型、快速原型模型。 常见的软体生命周期模型 瀑布模型 有时也称为V模型,它是一种线型顺序模型,是项目自始至终按照一定顺序的步骤从需求分析进展到系统测试直到提交用户使用,它提供了一种结构化的、自顶向下的软体开发方法,每阶段主要工作成果从一个阶段传递到下一个阶段,必须经过严格的评审或测试,以判定是否可以开始下一阶段工作,各阶段相互独立、不重叠。瀑布模型是所有软体生命周期模型的基础。 原型+瀑布模型 原型模型本身是一个叠代的模型,是为了解决在产品开发的早期阶段存在的不确定性、二义性和不完整性等问题,通过建立原型使开发者进一步确定其应开发的产品,使开发者的想像更具体化,也更易于被客户所理解。原型只是真实系统的一部分或一个模型,完全可能不完成任何有用的事情,通常包括抛弃型和进化型两种,抛弃型指原型建立、分析之后要扔掉,整个系统重新分析和设计;进化型则是对需求的定义较清楚的情形,原型建立之后要保留,作为系逐渐增加的基础,采用进化型一定要重视软体设计的系统性和完整性,并且在质量要求方面没有捷径,因此,对于描述相同的功能,建立进化型原型比建立抛弃型原型所花的时间要多。原型建立确认需求之后采用瀑布模型的方式完成项目开发。 增量模型 与建造大厦相同,软体也是一步一步建造起来的。在增量模型中,软体被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模组所形成的提供特定功能的代码片段构成。增量模型在各个阶段并不交付一个可运行的完整产品,而是交付满足客户需求的一个子集的可运行产品。整个产品被分解成若干个构件,开发人员逐个构件地交付产品,这样做的好处是软体开发可以较好地适应变化,客户可以不断地看到所开发的软体,从而降低开发风险。 一些大型系统往往需要很多年才能完成或者客户急于实现系统,各子系统往往采用增量开发的模式,先实现核心的产品,即实现基本的需求,但很多补充的特性(其中一些是已知的,另外一些是未知的)在下一期发布。增量模型强调每一个增量均发布一个可操作产品,每个增量构建仍然遵循设计-编码-测试的瀑布模型。 叠代模型 早在20世纪50年代末期,软体领域中就出现了叠代模型。最早的叠代过程可能被描述为“分段模型”。叠代,包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。所以,在某种程度上,开发叠代是一次完整地经过所有工作流程的过程:(至少包括)需求工作流程、分析设计工作流程、实施工作流程和测试工作流程。 实质上,它类似小型的瀑布式项目。所有的阶段(需求及其它)都可以细分为叠代。每一次的叠代都会产生一个可以发布的产品,这个产品是最终产品的一个子集。 开发语言 O语言 O语言是一款中文计算机语言(或称套装:O汇编语言、O中间语言、O高级语言) Java语言 作为跨平台的语言,可以运行在Windows和Unix/Linux下面,长期成为用户的首选。自JDK6.0以来,整体性能得到了极大的提高,市场使用率超过20%。可能已经达到了其鼎盛时期了,不知道后面能维持多长时间。 易语言(E语言) 易语言是一个自主开发,适合国情,不同层次不同专业的人员易学易用的汉语程式语言。易语言降低了广大电脑用户编程的门槛,尤其是根本不懂英文或者英文了解很少的用户,可以通过使用本语言极其快速地进入Windows程式编写的大门。 C/C++语言 以上2个作为传统的语言,一直在效率第一的领域发挥着极大的影响力。像Java这类的语言,其核心都是用C/C++写的。在高并发和实时处理,工控等领域更是首选。 习语言 习语言即中文版的C语言 Basic 美国计算机科学家约翰·凯梅尼和托马斯·库尔茨于1959年研制的一种“初学者通用符号指令代码”,简称BASIC。由于BASIC语言易学易用,它很快就成为流行的计算机语言之一。 php 同样是跨平台的脚本语言,在网站编程上成为了大家的首选,支持PHP的主机非常便宜,PHP+Linux+MySQL+Apache的组合简单有效。 Perl 脚本语言的先驱,其优秀的文本处理能力,特别是正则表达式,成为了以后许多基于网站开发语言(比如php,java,C#)的这方面的基础。 Python 是一种面向对象的解释性的电脑程式设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常套用。 这种语言具有非常简捷而清晰的语法特点,适合完成各种高层任务,几乎可以在所有的作业系统中运行。 基于这种语言的相关技术正在飞速的发展,用户数量急剧扩大,相关的资源非常多。 C# 是微软公司发布的一种面向对象的、运行于NET Framework之上的高级程式设计语言,并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejl *** erg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、界面,与Java几乎同样的语法,和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NETwindows网路框架的主角。 Javascript Javascript是一种由Netscape的LiveScript发展而来的脚本语言,主要目的是为了解决伺服器终端语言,比如Perl,遗留的速度问题。当时服务端需要对数据进行验证,由于网路速度相当缓慢,只有28.8kbps,验证步骤浪费的时间太多。于是Netscape的浏览器Navigator加入了Javascript,提供了数据验证的基本功能。 Ruby 一种为简单快捷面向对象编程(面向对象程式设计)而创的脚本语言,由日本人松本行弘(まつもとゆきひろ,英译:Yukihiro Matsumoto,外号matz)开发,遵守GPL协定和Ruby License。Ruby的作者认为Ruby > (Smalltalk + Perl) / 2,表示Ruby是一个语法像Smalltalk一样完全面向对象、脚本执行、又有Perl强大的文字处理功能的程式语言。 Fortran 在科学计算软体领域,Fortran曾经是最主要的程式语言。比较有代表性的有Fortran 77、Watcom Fortran、NDP Fortran等。 objective c 这是一种运行在苹果公司的mac os x,iOS作业系统上的语言。这两种作业系统的上层图形环境,应用程式编程框架都是使用该语言实现的。随着iPhone,iPad的流行,这种语言也开始在全世界流行。 Pascal Pascal是一种计算机通用的高级程式设计语言。Pascal的取名是为了纪念十七世纪法国著名哲学家和数学家Blaise Pascal。它由瑞士Niklaus Wirth教授于六十年代末设计并创立。Pascal语言语法严谨,层次分明,程式易写,具有很强的可读性,是第一个结构化的程式语言。 Swift Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C****同运行于Mac OS和iOS平台,用于搭建基于苹果平台的应用程式。