軟體

}} 是一系列按照特定順序組織的電腦資料和指令，是電腦中的非有形部分。電腦中的有形部分稱為硬體，由電腦的外殼及各零件及電路所組成。電腦軟體需有硬體才能運作，反之亦然，軟體和硬體都無法在不互相配合的情形下進行實際的運作。

一般來說，計算機軟體劃分為程式語言、系統軟體、應用軟體和介於這兩者之間的中介軟體。其中系統軟體為計算機使用提供最基本的功能，但是並不針對某一特定應用領域。而應用軟體則恰好相反，不同的應用軟體根據使用者和所服務的領域提供不同的功能。

軟體包括所有在電腦執行的程式，和其架構無關，例如執行檔、函式庫及指令碼語言都屬於軟體。軟體不分架構，有其共通的特性，在執行後可以讓硬體執行依設計時要求的機能。軟體儲存在記憶體中，軟體不是可以碰觸到的實體，可以碰觸到的都只是儲存軟體的零件（記憶體）或是媒介（光碟或磁片等）。

軟體並不一定只包括可以在計算機上執行的電腦程式，有些定義中，與電腦程式相關的文件，一般也被認為是軟體的一部分。簡單的說軟體就是程式加文件的集合體。軟體被應用於世界的各個領域，對人們的生活和工作都產生了深遠的影響。

程式語言

以最低階的角度來看，執行檔中包括了針對特定微處理器（一般會是 CPU）的機械碼，機械碼包括了一連串二進位的數值，使處理器從目前的狀態變換到下一個狀態。例如指令可能會修改電腦內一特定位置中的數值，其效果是使用者無法直接觀測到的，指令也可能讓螢幕上顯示特定資料，這種狀態變換是使用者可以看到的。處理器會依照順序處理收到的指令，不過處理器的處理也可能受到中斷，或是因為流程控制指令而改變其要處理的指令。

機械碼是許多二進位的數值，不方便工程師閱讀及開發程式，因此有組合語言，將機械碼轉換為人可以看懂的助憶碼。不過現在多半的軟體是用高階語言撰寫，比較類似自然語言，對人類而言比機械碼或組合語言要簡單，方便人類使用。高階語言一般會用直譯或編譯的方式，將軟體的原始碼轉換為機械碼。

原始碼是指以程式語言所撰寫的一系列人類可閱讀的電腦指令，以實作出軟體的行為和功能。

分類

軟體的分類方式有很多種，可以依軟體的目的分為以下幾種：

2.1 系統軟體

系統軟體負責管理計算機系統中各種獨立的硬體，使得它們可以協調工作，提供基本的功能，並為正在執行的應用軟體提供平臺。系統軟體使得計算機使用者和其他軟體將計算機當作一個整體而不需要顧及到底層每個硬體是如何工作的。而各個硬體工作的細節則由驅動程式處理。

一般來說，系統軟體包括作業系統（例如 BSD、DOS、Linux、macOS、iOS、OS/2、QNX、Unix、Windows 等）和一系列基本的工具（比如編譯器，資料庫管理，儲存器格式化，檔案系統管理，作業系統管理，使用者身分驗證，驅動管理，網路連線等方面的工具）。

2.2 應用軟體

應用軟體是為了某種特定的用途而被開發的軟體。它可以是一個特定的程式，比如一個影像瀏覽器。也可以是一組功能聯絡緊密，可以互相協作的程式的集合，比如微軟的 Office 軟體。也可以是一個由眾多獨立程式組成的龐大的軟體系統，比如資料庫管理系統。

較常見的有：

文書處理軟體如 Microsoft Office、GNOME Office、 KOffice、LibreOffice、Google Docs、WPS Office
關聯式資料庫如 Oracle Database 資料庫、SQL Server 資料庫
電腦輔助設計如 CATIA、AutoCAD、FreeCAD
電腦程式設計如 C/C++、組合語言、BASIC 、 Swift、JavaScript、Java
P2P 軟體如 BitTorrent、 µTorrent 、Foxy、位元精靈、Vuze、 Free Download Manager
影像處理軟體如 Photoshop、CorelDRAW、Corel painter、GIMP、MAYA、Softimage、3ds Max、Blender、xsi、lightwave、Cinema 4D、Houdini、Krita
動態圖形和視覺特效如 After Effects、shake
網頁瀏覽軟體如 Internet Explorer、Edge、Firefox、Chrome、Safari、Opera、Konqueror
網路通訊軟體如 Line、ICQ、Windows Live Messenger、UUcall、Skype、Yahoo! Messenger、QQ、AOL Instant Messenger
媒體播放器如 MPC-HC、MPlayer、RealPlayer、GOM、VLC、WMP、暴風影音、風雷影音、Winamp、Foobar2000
下載管理軟體如 Free Download Manager、IDM
電子郵件如 Outlook.com、Windows Live Mail、Outlook Express、Foxmail、ThunderBird、Dreammail、KMail
資訊安全軟體如 ESET、360 安全衛士、德國小紅傘、卡巴斯基、PC-cillin、諾頓防毒、BitDefender、瑞星防毒、金山毒霸
虛擬機器如 VMware、VirtualBox、Microsoft Virtual PC、Bochs
輸入法軟體如新酷音輸入法、谷歌拼音輸入法
實時控制系統
教育軟體

2.3 惡意軟體

惡意軟體是發展到危害和破壞計算機的計算機軟體，因此，惡意軟體是不受歡迎的。惡意軟體與計算機相關的犯罪相關聯，儘管一些惡意程式可能被設計為用於惡作劇。

開發

軟體開發是根據使用者要求建造出軟體系統或者系統中的軟體部分的過程。軟體開發是一項包括需求捕捉，需求分析，設計，實現和測試的系統工程，其中可能包括研究、新的開發工作、修改、複用、重新設計（再工程）、維護，或者任何最終獲得軟體產品的其他活動。

軟體開發過程是指軟體從起始到完成過程中如何進行計劃、控制和監控的模型。有以下不同的幾種：

瀑布模型：依需求分析，設計，實現，測試 (確認)， 整合，和維護這樣的步驟依序進行。
迭代式開發：將開發工作被組織為一系列的短小的、固定長度（如 3 周）的小專案，被稱為一系列的疊代。在每一次疊代中進行需求分析、設計、實現與測試。
敏捷軟體開發：應對快速變化需求的軟體開發方式，強調設計師團隊與業務專家之間的協作、面對面的溝通、頻繁交付軟體版本、適應變化的程式碼編寫等特點。
極限程式設計：敏捷軟體開發的一種，引入基本價值、原則、方法等概念來達到降低變更成本的目的，其主要目的是快速應用程式開發。
快速應用程式開發，以最小幅度的規劃並迅速地將原形完成的軟體發展方法論，其軟體開發的規劃是和撰寫軟體本身交錯同時進行。
螺旋模型：兼顧了快速原型的迭代特徵以及瀑布模型的系統化與嚴格監控，並且加入了其他模型不具備的，使軟體在無法排除重大風險時有機會停止，以減小損失。

程式設計工具

軟體開發工具指的是軟體開發人員用來建立、除錯、維護或以其他方式支援的軟體程式或應用程式的形式。

軟體由一種或多種程式語言所寫成。現在存在有很多種程式語言，並且每種都具有至少一種編寫的方式，其中包括它自己的一套程式設計工具。這些工具包含相對獨立自足的程式，如編譯器，偵錯程式，直譯器，連結器和文字編輯器，可以結合共同完成一個任務，很像一個人可以使用多個手握工具來固定一個物理物件。

這套工具也有可能是一個整合開發環境（IDE），它結合了許多這種工具或它們的全部功能。無論是透過呼叫程式設計師等有關人士的工具，或透過以一種新的方式重新實現它們的功能，IDE 可以做到這一點。幾乎所有的程式語言為編寫提供了使用單獨的工具，而不是一個 IDE，因為有些程式設計師由於各種原因不喜歡使用 IDE，或是因為 IDE 通常需要更長的時間才能發展形成一個可接受的標準，而不是一個個人工具。事實上，新的程式語言最初通常不會提供他們​​的 IDE 。

產業及組織

軟體產業是由許多軟體公司及程式設計者所組成的產業，其性質較類似服務業。由於其產業特性，毛利率較其他產業要高。軟體產業的獲利相當高，像微軟的創始人比爾・蓋茨就因為銷售 Microsoft Windows 及 Microsoft Office 而數次成為美國首富。不過隨著時代的變化，軟體產業的分工及專業化也越來越細。例如電子遊戲產業及辦公室軟體都屬於軟體產業，而兩者就有不少的差異。

有許多非營利的軟體組織，例如自由軟體基金會、GNU 計劃及 Mozilla 基金會。像全球資訊網協會（W3C）及網際網路工程任務組（IETF）等組織發展許多軟體標準，因此不同的軟體可以藉由這些標準互相溝通，這種標準包括例如 XML、HTML、HTTP 及 FTP 等。