當前位置:首頁 > 百科知識 > 工控 > 正文

軟件

軟件(中國大陸及香港用語,臺灣稱作軟體,英文:Software)是一系列按照特定順序組織的計算機數(shù)據(jù)和指令的集合。一般來講軟件被劃分為系統(tǒng)軟件、應用軟件和介于這兩者之間的中間件。軟件并不只是包括可以在計算機(這里的計算機是指廣義的計算機)上運行的電腦程序,與這些電腦程序相關的文檔一般也被認為是軟件的一部分。簡單的說軟件就是程序加文檔的集合體。另也泛指社會結(jié)構(gòu)中的管理系統(tǒng)、思想意識形態(tài)、思想政治覺悟、法律法規(guī)等等。

  定義

  軟件,拼音為Ruǎnjiàn,國標中對軟件的定義為:與計算機系統(tǒng)操作有關的計算機程序、規(guī)程、規(guī)則,以及可能有的文件、文檔及數(shù)據(jù)。

  其它定義:

  1.運行時,能夠提供所要求功能和性能的指令或計算機程序集合。

  2.程序能夠滿意地處理信息的數(shù)據(jù)結(jié)構(gòu)。

  3.描述程序功能需求以及程序如何操作和使用所要求的文檔。

  以開發(fā)語言作為描述語言,可以認為:軟件=程序+數(shù)據(jù)+文檔

  特點

  1、無形的,沒有物理形態(tài),只能通過運行狀況來了解功能、特性、和質(zhì)量

  2、軟件滲透了大量的腦力勞動,人的邏輯思維、智能活動和技術(shù)水平是軟件產(chǎn)品的關鍵

  3、軟件不會像硬件一樣老化磨損,但存在缺陷維護和技術(shù)更新

  4、軟件的開發(fā)和運行必須依賴于特定的計算機系統(tǒng)環(huán)境,對于硬件有依賴性,為了減少依賴,開發(fā)中提出了軟件的可移植性

  5、軟件具有可復用性,軟件開發(fā)出來很容易被復制,從而形成多個副本

  分類

  應用類別

  按應用范圍劃分,一般來講軟件被劃分為系統(tǒng)軟件、應用軟件和介于這兩者之間的中間件。

  系統(tǒng)軟件

  系統(tǒng)軟件為計算機使用提供最基本的功能,可分為操作系統(tǒng)和系統(tǒng)軟件,其中操作系統(tǒng)是最基本的軟件。

  系統(tǒng)軟件是負責管理計算機系統(tǒng)中各種獨立的硬件,使得它們可以協(xié)調(diào)工作。系統(tǒng)軟件使得計算機使用者和其他軟件將計算機當作一個整體而不需要顧及到底層每個硬件是如何工作的。

  1.操作系統(tǒng)是一管理計算機硬件與軟件資源的程序,同時也是計算機系統(tǒng)的內(nèi)核與基石。操作系統(tǒng)身負諸如管理與配置內(nèi)存、決定系統(tǒng)資源供需的優(yōu)先次序、控制輸入與輸出設備、操作網(wǎng)絡與管理文件系統(tǒng)等基本事務。操作系統(tǒng)也提供一個讓使用者與系統(tǒng)交互的操作接口。

  2.支撐軟件是支撐各種軟件的開發(fā)與維護的軟件,又稱為軟件開發(fā)環(huán)境(SDE)。它主要包括環(huán)境數(shù)據(jù)庫、各種接口軟件和工具組。著名的軟件開發(fā)環(huán)境有IBM公司的WebSphere,微軟公司的等。

  包括一系列基本的工具(比如編譯器、數(shù)據(jù)庫管理、存儲器格式化、文件系統(tǒng)管理、用戶身份驗證、驅(qū)動管理、網(wǎng)絡連接等方面的工具)。

  應用軟件

  系統(tǒng)軟件并不針對某一特定應用領域,而應用軟件則相反,不同的應用軟件根據(jù)用戶和所服務的領域提供不同的功能。

  應用軟件是為了某種特定的用途而被開發(fā)的軟件。它可以是一個特定的程序,比如一個圖像瀏覽器。也可以是一組功能聯(lián)系緊密,可以互相協(xié)作的程序的集合,比如微軟的Office軟件。也可以是一個由眾多獨立程序組成的龐大的軟件系統(tǒng),比如數(shù)據(jù)庫管理系統(tǒng)。

  如今智能手機得到了極大的普及,運行在手機上的應用軟件簡稱手機軟件。所謂手機軟件就是可以安裝在手機上的軟件,完善原始系統(tǒng)的不足與個性化。隨著科技的發(fā)展,手機的功能也越來越多,越來越強大。不是像過去的那么簡單死板,發(fā)展到了可以和掌上電腦相媲美。手機軟件與電腦一樣,下載手機軟件時還要考慮你購買這一款手機所安裝的系統(tǒng)來決定要下相對應的軟件。手機主流系統(tǒng)有以下:WindowsPhone、Symbian、iOS、Android。

  授權(quán)類別

  不同的軟件一般都有對應的軟件授權(quán),軟件的用戶必須在同意所使用軟件的許可證的情況下才能夠合法的使用軟件。從另一方面來講,特定軟件的許可條款也不能夠與法律相違背。

  依據(jù)許可方式的不同,大致可將軟件區(qū)分為幾類:

  專屬軟件:此類授權(quán)通常不允許用戶隨意的復制、研究、修改或散布該軟件。違反此類授權(quán)通常會有嚴重的法律責任。傳統(tǒng)的商業(yè)軟件公司會采用此類授權(quán),例如微軟的Windows和辦公軟件。專屬軟件的源碼通常被公司視為私有財產(chǎn)而予以嚴密的保護。

  自由軟件:此類授權(quán)正好與專屬軟件相反,賦予用戶復制、研究、修改和散布該軟件的權(quán)利,并提供源碼供用戶自由使用,僅給予些許的其它限制。以Linux、Firefox和OpenOffice可做為此類軟件的代表。

  共享軟件:通??擅赓M的取得并使用其試用版,但在功能或使用期間上受到限制。開發(fā)者會鼓勵用戶付費以取得功能完整的商業(yè)版本。根據(jù)共享軟件作者的授權(quán),用戶可以從各種渠道免費得到它的拷貝,也可以自由傳播它。

  免費軟件:可免費取得和轉(zhuǎn)載,但并不提供源碼,也無法修改。

  公共軟件:原作者已放棄權(quán)利,著作權(quán)過期,或作者已經(jīng)不可考究的軟件。使用上無任何限制。

  相關概念

  開發(fā)流程

  軟件開發(fā)是根據(jù)用戶要求建造出軟件系統(tǒng)或者系統(tǒng)中的軟件部分的過程。軟件開發(fā)是一項包括需求捕捉,需求分析,設計,實現(xiàn)和測試的系統(tǒng)工程。軟件一般是用某種程序設計語言來實現(xiàn)的。通常采用軟件開發(fā)工具可以進行開發(fā)。

  軟件開發(fā)流程即Softwaredevelopmentprocess。

  軟件設計思路和方法的一般過程,包括設計軟件的功能和實現(xiàn)的算法和方法、軟件的總體結(jié)構(gòu)設計和模塊設計、編程和調(diào)試、程序聯(lián)調(diào)和測試以及編寫、提交程序。

  1相關系統(tǒng)分析員和用戶初步了解需求,然后列出要開發(fā)的系統(tǒng)的大功能模塊,每個大功能模塊有哪些小功能模塊,對于有些需求比較明確相關的界面時,在這一步里面可以初步定義好少量的界面。

  2系統(tǒng)分析員深入了解和分析需求,根據(jù)自己的經(jīng)驗和需求做出一份文檔系統(tǒng)的功能需求文檔。這次的文檔會清楚例用系統(tǒng)大致的大功能模塊,大功能模塊有哪些小功能模塊,并且還例出相關的界面和界面功能。

  3系統(tǒng)分析員和用戶再次確認需求。

  4系統(tǒng)分析員根據(jù)確認的需求文檔所例用的界面和功能需求,用迭代的方式對每個界面或功能做系統(tǒng)的概要設計。

  5系統(tǒng)分析員把寫好的概要設計文檔給程序員,程序員根據(jù)所例出的功能一個一個的編寫。

  6測試編寫好的系統(tǒng)。交給用戶使用,用戶使用后一個一個的確認每個功能,然后驗收。

  軟件工程師

  一般指從事軟件開發(fā)職業(yè)的人。軟件工程師10余年來一直占據(jù)高薪職業(yè)排行榜的前列,作為高科技行業(yè)的代表,技術(shù)含量很高,職位的爭奪也異常激烈。軟件開發(fā)是一個系統(tǒng)的過程,需要經(jīng)過市場需求分析、軟件代碼編寫、軟件測試、軟件維護等程序。軟件開發(fā)工程師在整個過程中扮演著非常重要的角色,主要從事根據(jù)需求開發(fā)項目軟件工作。

  法律保護

  計算機軟件作為一種知識產(chǎn)品,其要獲得法律保護,必須具備以下必要條件:

 ?。ㄒ唬┰瓌?chuàng)性。即軟件應該是開發(fā)者獨立設計、獨立編制的編碼組合。

 ?。ǘ┛筛兄?。受保護的軟件須固定在某種有形物體上,通過客觀手段表達出來并為人們所知悉。

 ?。ㄈ┛稍佻F(xiàn)性。即把軟件轉(zhuǎn)載在有形物體上的可能性。

  著作權(quán)歸屬

  根據(jù)《計算機軟件保護條例》第10條的規(guī)定,計算機軟件著作權(quán)歸屬軟件開發(fā)者。因此,確定計算機著作權(quán)歸屬的一般原則是“誰開發(fā)誰享有著作權(quán)”。軟件開發(fā)者指實際組織進行開發(fā)工作,提供工作條件完成軟件開發(fā),并對軟件承擔責任的法人或者非法人單位,以及依靠自己具有的條件完成軟件開發(fā),并對軟件承擔責任的公民。

  載體

  軟件的載體可以是硬盤、光盤、U盤、軟盤等數(shù)據(jù)存儲設備。

  使用許可

  不同的軟件一般都有對應的軟件授權(quán),軟件的使用者必須在同意所使用軟件的許可證的情況下才能夠合法的使用軟件。

  依據(jù)許可方式的不同,大致可將軟件區(qū)分為幾類:

  專屬軟件、自由軟件、共享軟件、免費軟件、公共軟件。

  生命周期

  軟件生命周期是指從軟件定義、開發(fā)、使用、維護到報廢為止的整個過程,一般包括問題定義、可行性分析、需求分析、總體設計、詳細設計、編碼、測試和維護。

  問題定義就是確定開發(fā)任務到底“要解決的問題是什么”,系統(tǒng)分析員通過對用戶的訪問調(diào)查,最后得出一份雙方都滿意的關于問題性質(zhì)、工程目標和規(guī)模的書面報告。

  可行性分析就是分析上一個階段所確定的問題到底“可行嗎”,系統(tǒng)分析員對系統(tǒng)要進行更進一步的分析,更準確、更具體地確定工程規(guī)模與目標,論證在經(jīng)濟上和技術(shù)上是否可行,從而在理解工作范圍和代價的基礎上,做出軟件計劃。

  需求分析即使對用戶要求進行具體分析,明確“目標系統(tǒng)要做什么”,把用戶對軟件系統(tǒng)的全部要求以需求說明書的形式表達出來。

  總體設計就是把軟件的功能轉(zhuǎn)化為所需要的體系結(jié)構(gòu),也就是決定系統(tǒng)的模塊結(jié)構(gòu),并給出模塊的相互調(diào)用關系、模塊間傳達的數(shù)據(jù)及每個模塊的功能說明。

  詳細設計就是決定模塊內(nèi)部的算法與數(shù)據(jù)結(jié)構(gòu),也是明確“怎么樣具體實現(xiàn)這個系統(tǒng)”。

  編碼就是選取適合的程序設計語言對每個模板進行編碼,并進行模塊調(diào)試。

  測試就是通過各種類型的測試使軟件達到預定的要求。

  維護就是軟件交付給用戶使用后,對軟件不斷查錯、糾錯和修改,使系統(tǒng)持久地滿足用戶的需求。

  軟件的生命周期也可以分為3個大的階段,分別是計劃階段、開發(fā)階段和維護階段。

  軟件生命周期模型

  軟件生命周期模型也稱為軟件過程模型,反映軟件生存周期各個階段的工作如何組織、銜接,常用的有瀑布模型、原型模型、螺旋模型、增量模型、噴泉模型,還有建造-修補模型、MSF過程模型、快速原型模型。[1]

  常見的軟件生命周期模型

  瀑布模型

  有時也稱為V模型,它是一種線型順序模型,是項目自始至終按照一定順序的步驟從需求分析進展到系統(tǒng)測試直到提交用戶使用,它提供了一種結(jié)構(gòu)化的、自頂向下的軟件開發(fā)方法,每階段主要工作成果從一個階段傳遞到下一個階段,必須經(jīng)過嚴格的評審或測試,以判定是否可以開始下一階段工作,各階段相互獨立、不重疊。瀑布模型是所有軟件生命周期模型的基礎。[1]

  原型+瀑布模型

  原型模型本身是一個迭代的模型,是為了解決在產(chǎn)品開發(fā)的早期階段存在的不確定性、二義性和不完整性等問題,通過建立原型使開發(fā)者進一步確定其應開發(fā)的產(chǎn)品,使開發(fā)者的想象更具體化,也更易于被客戶所理解。原型只是真實系統(tǒng)的一部分或一個模型,完全可能不完成任何有用的事情,通常包括拋棄型和進化型兩種,拋棄型指原型建立、分析之后要扔掉,整個系統(tǒng)重新分析和設計;進化型則是對需求的定義較清楚的情形,原型建立之后要保留,作為系逐漸增加的基礎,采用進化型一定要重視軟件設計的系統(tǒng)性和完整性,并且在質(zhì)量要求方面沒有捷徑,因此,對于描述相同的功能,建立進化型原型比建立拋棄型原型所花的時間要多。原型建立確認需求之后采用瀑布模型的方式完成項目開發(fā)。[1]

  增量模型

  與建造大廈相同,軟件也是一步一步建造起來的。在增量模型中,軟件被作為一系列的增量構(gòu)件來設計、實現(xiàn)、集成和測試,每一個構(gòu)件是由多種相互作用的模塊所形成的提供特定功能的代碼片段構(gòu)成。增量模型在各個階段并不交付一個可運行的完整產(chǎn)品,而是交付滿足客戶需求的一個子集的可運行產(chǎn)品。整個產(chǎn)品被分解成若干個構(gòu)件,開發(fā)人員逐個構(gòu)件地交付產(chǎn)品,這樣做的好處是軟件開發(fā)可以較好地適應變化,客戶可以不斷地看到所開發(fā)的軟件,從而降低開發(fā)風險。

  一些大型系統(tǒng)往往需要很多年才能完成或者客戶急于實現(xiàn)系統(tǒng),各子系統(tǒng)往往采用增量開發(fā)的模式,先實現(xiàn)核心的產(chǎn)品,即實現(xiàn)基本的需求,但很多補充的特性(其中一些是已知的,另外一些是未知的)在下一期發(fā)布。增量模型強調(diào)每一個增量均發(fā)布一個可操作產(chǎn)品,每個增量構(gòu)建仍然遵循設計-編碼-測試的瀑布模型。[1]

  迭代模型

  早在20世紀50年代末期,軟件領域中就出現(xiàn)了迭代模型。最早的迭代過程可能被描述為“分段模型”。迭代,包括產(chǎn)生產(chǎn)品發(fā)布(穩(wěn)定、可執(zhí)行的產(chǎn)品版本)的全部開發(fā)活動和要使用該發(fā)布必需的所有其他外圍元素。所以,在某種程度上,開發(fā)迭代是一次完整地經(jīng)過所有工作流程的過程:(至少包括)需求工作流程、分析設計工作流程、實施工作流程和測試工作流程。

  實質(zhì)上,它類似小型的瀑布式項目。所有的階段(需求及其它)都可以細分為迭代。每一次的迭代都會產(chǎn)生一個可以發(fā)布的產(chǎn)品,這個產(chǎn)品是最終產(chǎn)品的一個子集。[1]

  開發(fā)語言

  O語言

  O語言是一款中文計算機語言(或稱套裝:O匯編語言、O中間語言、O高級語言)

  Java語言

  作為跨平臺的語言,可以運行在Windows和Unix/Linux下面,長期成為用戶的首選。自JDK6.0以來,整體性能得到了極大的提高,市場使用率超過20%??赡芤呀?jīng)達到了其鼎盛時期了,不知道后面能維持多長時間。

  易語言(E語言)

  易語言是一個自主開發(fā),適合國情,不同層次不同專業(yè)的人員易學易用的漢語編程語言。易語言降低了廣大電腦用戶編程的門檻,尤其是根本不懂英文或者英文了解很少的用戶,可以通過使用本語言極其快速地進入Windows程序編寫的大門。[2]

  C/C++語言

  以上2個作為傳統(tǒng)的語言,一直在效率第一的領域發(fā)揮著極大的影響力。像Java這類的語言,其核心都是用C/C++寫的。在高并發(fā)和實時處理,工控等領域更是首選。

  習語言

  習語言即中文版的C語言

  Basic

  美國計算機科學家約翰·凱梅尼和托馬斯·庫爾茨于1959年研制的一種“初學者通用符號指令代碼”,簡稱BASIC。由于BASIC語言易學易用,它很快就成為流行的計算機語言之一。

  php

  同樣是跨平臺的腳本語言,在網(wǎng)站編程上成為了大家的首選,支持PHP的主機非常便宜,PHP+Linux+MySQL+Apache的組合簡單有效。

  Perl

  腳本語言的先驅(qū),其優(yōu)秀的文本處理能力,特別是正則表達式,成為了以后許多基于網(wǎng)站開發(fā)語言(比如php,java,C#)的這方面的基礎。

  Python

  是一種面向?qū)ο蟮慕忉屝缘挠嬎銠C程序設計語言,也是一種功能強大而完善的通用型語言,已經(jīng)具有十多年的發(fā)展歷史,成熟且穩(wěn)定。Python具有腳本語言中最豐富和強大的類庫,足以支持絕大多數(shù)日常應用。

  這種語言具有非常簡捷而清晰的語法特點,適合完成各種高層任務,幾乎可以在所有的操作系統(tǒng)中運行。

  基于這種語言的相關技術(shù)正在飛速的發(fā)展,用戶數(shù)量急劇擴大,相關的資源非常多。

  C#

  是微軟公司發(fā)布的一種面向?qū)ο蟮摹⑦\行于NETFramework之上的高級程序設計語言,并定于在微軟職業(yè)開發(fā)者論壇(PDC)上登臺亮相。C#是微軟公司研究員AndersHejlsberg的最新成果。C#看起來與Java有著驚人的相似;它包括了諸如單一繼承、界面,與Java幾乎同樣的語法,和編譯成中間代碼再運行的過程。但是C#與Java有著明顯的不同,它借鑒了Delphi的一個特點,與COM(組件對象模型)是直接集成的,而且它是微軟公司.NETwindows網(wǎng)絡框架的主角。

  Javascript

  Javascript是一種由Netscape的LiveScript發(fā)展而來的腳本語言,主要目的是為了解決服務器終端語言,比如Perl,遺留的速度問題。當時服務端需要對數(shù)據(jù)進行驗證,由于網(wǎng)絡速度相當緩慢,只有28.8kbps,驗證步驟浪費的時間太多。于是Netscape的瀏覽器Navigator加入了Javascript,提供了數(shù)據(jù)驗證的基本功能。

  Ruby

  一種為簡單快捷面向?qū)ο缶幊蹋嫦驅(qū)ο蟪绦蛟O計)而創(chuàng)的腳本語言,由日本人松本行弘(まつもとゆきひろ,英譯:YukihiroMatsumoto,外號matz)開發(fā),遵守GPL協(xié)議和RubyLicense。Ruby的作者認為Ruby>(Smalltalk+Perl)/2,表示Ruby是一個語法像Smalltalk一樣完全面向?qū)ο?、腳本執(zhí)行、又有Perl強大的文字處理功能的編程語言。

  Fortran

  在科學計算軟件領域,F(xiàn)ortran曾經(jīng)是最主要的編程語言。比較有代表性的有Fortran77、WatcomFortran、NDPFortran等。

  objectivec

  這是一種運行在蘋果公司的macosx,iOS操作系統(tǒng)上的語言。這兩種操作系統(tǒng)的上層圖形環(huán)境,應用程序編程框架都是使用該語言實現(xiàn)的。隨著iPhone,iPad的流行,這種語言也開始在全世界流行。

  Pascal

  Pascal是一種計算機通用的高級程序設計語言。Pascal的取名是為了紀念十七世紀法國著名哲學家和數(shù)學家BlaisePascal。它由瑞士NiklausWirth教授于六十年代末設計并創(chuàng)立。Pascal語言語法嚴謹,層次分明,程序易寫,具有很強的可讀性,是第一個結(jié)構(gòu)化的編程語言。

  Swift

  Swift,蘋果于2014年WWDC(蘋果開發(fā)者大會)發(fā)布的新開發(fā)語言,可與Objective-C*共同運行于MacOS和iOS平臺,用于搭建基于蘋果平臺的應用程序。


內(nèi)容來自百科網(wǎng)