軟體
| 中文名 | 軟體 |
|---|---|
| 外文名 | Software |
| 定義 | 計算機系統中與硬體相對應的邏輯部件,由程序、數據及相關文檔構成 |
| 主要分類 | 系統軟體、應用軟體、中間件 |
| 開發流程 | 需求分析、設計、編碼、測試、維護 |
| 相關概念 | 硬體、固件、程式語言 |
軟體(英語:Software)是一系列按照特定順序組織的計算機數據和指令的集合[1]。廣義上,軟體是計算機系統中與硬體相對應的組成部分,由程序代碼、運行規則及配套文檔構成,用於執行特定任務或實現功能需求。軟體並不限於計算機上運行的程序,與之相關的文檔通常也被視為軟體的一部分。「軟體」一詞是為了與計算機的物理部件——「硬體」相區分而創造的。
根據電氣與電子工程師協會(IEEE)在1983年的定義,軟體是程序、數據及相關文檔的完整集合,是計算機系統中的邏輯部件而非物理部件[1]。中國國家標準中對軟體的定義為:與計算機系統操作有關的電腦程式、規程、規則,以及可能有的文件、文檔及數據[2]。從運行層面來看,軟體是運行時能夠提供所要求功能和性能的指令或電腦程式集合[1]。簡而言之,軟體是程序加文檔的集合體。
軟體的常見分類方式是根據其功能進行劃分。
系統軟體負責控制和管理計算機硬體資源,並為應用軟體提供運行平台。其核心是作業系統(Operating System),此外還包括設備驅動程序、實用程序等。
應用軟體是為解決特定應用問題而設計的程序,直接面向終端用戶。它根據用戶的指令處理數據,常見的例子包括文字處理器、電子表格、資料庫管理系統、工業軟體等。
中間件是介於系統軟體與應用軟體之間的軟體,旨在為應用軟體提供跨平台的數據交互和支持服務。
此外,根據用途和性質的不同,軟體還可被劃分為編程語言、網絡軟體、惡意軟體等類別。
軟體的歷史與計算機的發展緊密相連。一般認為,軟體伴隨著第一台電子計算機的問世而誕生。
- 早期(1940s-1950s)
- 最早的軟體通常是專門為特定硬體編寫的。世界上第一個程式設計師被認為是阿達·洛夫萊斯(Ada Lovelace),與查爾斯·巴貝奇(Charles Babbage)合作,為分析機設計了算法[3]。第一批獨立的專業軟體公司出現在1949年至1959年間,主要為客戶定製軟體和解決方案[4]。
- 程序系統時代(1960s-1970s)
- 隨著軟體複雜性的增加,「軟體危機」概念被提出,指許多大型軟體項目在預算和工期上出現嚴重問題[5]。1968年,在北大西洋公約組織(NATO)的計算機科學家會議上,「軟體工程」一詞被首次提出,旨在借鑑工程學的方法來系統化地開發和維護軟體[5]。
- 個人計算機時代(1980s-1990s)
- IBM個人計算機(PC)的問世極大地推動了軟體產業的發展。微軟(Microsoft)在此時期崛起,其MS-DOS和Windows作業系統成為個人計算機的主流[4]。
- 網際網路與移動時代(1990s至今)
- 網際網路的普及催生了全新的軟體應用和服務模式,如雲計算、移動應用和軟體即服務(SaaS)。軟體技術進入了以網絡化、服務化和智能化為特徵的新發展時期。
軟體開發是根據用戶需求構建軟體系統或其中部分的過程。一個典型的軟體生命周期通常包括以下階段:
- 軟體計劃
- 確定軟體開發的目標和範圍。
- 需求分析
- 捕捉和分析用戶的具體需求。
- 設計
- 包括軟體的總體結構設計和模塊的詳細設計。
- 編碼
- 使用特定的程序設計語言實現軟體的設計。
- 測試
- 對軟體進行測試以發現並修復缺陷。
- 部署與維護
- 將軟體交付用戶使用,並在後續進行維護、升級和更新。
軟體的使用和分發通常受軟體許可證的約束,這是一種規定用戶在何種條件下可以使用、修改或分發軟體的法律協議[6]。常見的許可模式包括:
- 專有軟體
- 用戶獲得使用權,但原始碼通常不公開,修改和再分發受到嚴格限制。
- 開源軟體
- 原始碼對公眾開放,允許用戶自由使用、修改和分發,但必須遵守相應的開源許可證(如GPL、MIT License等)[6]。
- 免費軟體
- 用戶可以免費使用,但原始碼不一定開放,且使用可能受到其他限制。
- ↑ 1.0 1.1 1.2 ISO/IEC/IEEE 24765:2017 Systems and software engineering — Vocabulary
- ↑ GB/T 11457-2006 信息技術 軟體工程術語
- ↑ Ada Lovelace | Biography, Computer, & Facts | Britannica
- ↑ 4.0 4.1 Computer History Museum - Timeline of Computer History
- ↑ 5.0 5.1 Naur, P., & Randell, B. (Eds.). (1969). Software Engineering: Report of a conference sponsored by the NATO Science Committee
- ↑ 6.0 6.1 The Open Source Definition | Open Source Initiative