計算機軟體是指計算機系統中的程式及其文檔。程式是計算任務的的處理對象和處理規則的描述。任何以計算機為處理工具的任務都是計算任務。處理對象是資料(如數字、文字、圖形、聲音、視訊等,它們隻是表示而無含義)或資訊(資料及有關的含義)。處理規則一般指處理的動作和步驟。文檔是為了便于了解程式所需的闡述性資料。
按照軟體的應用領域,可以将計算機軟體分為十大類:
1、系統軟體
系統軟體是一整套服務于其他程式的程式。某些系統軟體處理複雜但确定的資訊結構。另一些系統應用程式(如作業系統構件、驅動程式等)主要處理的是不确定的資料。無論何種情況,系統軟體基本上都具有以下特點:和計算機硬體大量互動;多使用者大量使用;需要排程、資源共享和複雜程序管理的同步操作;複雜的資料結構以及多種外部接口。
2、應用軟體
應用軟體是解決特定業務需要的獨立應用程式。這類應用軟體處理商務或技術資料,以協助業務操作和管理或技術決策。
3、工程/科學軟體
這類軟體通常帶有“數值計算”算法的特征。工程/科學軟體涵蓋了廣泛的應用領域,從天文學到火山學、從自動應力分析到航天飛機軌道動力學、從分子生物學到自動制造業等等。
4、嵌入式軟體
嵌入式軟體存在于某個産品或系統中,可實作和控制面向最終使用者和系統本身的特性和功能。嵌入式軟體可以執行有限但難于實作的功能,例如微波爐的按鍵控制等。
5、産品線軟體
産品為多個不同使用者的使用提供特定功能。産品線軟體關注有限的特定專業市場,例如庫存控制産品或大衆消費品市場如文字處理等。
6、Web應用
Web應用(WebApp)是一類以網絡為中心的軟體,其概念涵蓋了寬泛的應用程式産品。絕大多數webapp具備網絡密集性、并發性、無法預知的負載量、性能、可用性和資料驅動屬性。
7、人工智能軟體
人工智能軟體利用非數值算法解決計算和直接分析無法解決的複雜問題。這個領域的應用包括機器人、專家系統、人工神經網絡等。
8、開放計算
無線網絡的快速發展将促使真正的普适計算、分布式計算的實作。軟體工程師所面臨的挑戰是如何開發系統和應用軟體,以使移動裝置、個人電腦和企業應用可以通過大量的網絡設施進行通信。
9、網絡資源
現在網際網路已經快速發展為一個計算引擎和内容提供平台。軟體工程師面臨的新任務是建構一個簡單而智能的應用程式,為全世界的最終使用者市場提供服務。