軟體[按照特定順序組織的計算機數據和指令的集合]

軟體[按照特定順序組織的計算機數據和指令的集合]
更多義項 ▼ 收起列表 ▲

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

定義

軟體,拼音為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 可做為此類軟體的代表。

共享軟體:通常可免費的取得並使用其試用版,但在功能或使用期間上受到限制。開發者會鼓勵用戶付費以取得功能完整的商業版本。根據共享軟體作者的授權,用戶可以從各種渠道免費得到它的拷貝,也可以自由傳播它。

免費軟體:可免費取得和轉載,但並不提供源碼,也無法修改。

公共軟體:原作者已放棄權利,著作權過期,或作者已經不可考究的軟體。使用上無任何限制。

相關概念

開發流程

軟體開發是根據用戶要求建造出軟體系統或者系統中的軟體部分的過程。軟體開發是一項包括需求捕捉,需求分析,設計,實現和測試的系統工程。軟體一般是用某種程式設計語言來實現的。通常採用軟體開發工具可以進行開發。

軟體開發流程Software 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 Hejlsberg的最新成果。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平台,用於搭建基於蘋果平台的應用程式。

相關詞條

相關搜尋

熱門詞條

聯絡我們