官术网_书友最值得收藏!

1.1 軟件

本節講述軟件的概念、特點,以及軟件的分類。

1.1.1 軟件的概念及特點

人們通常把各種不同功能的程序,包括系統程序、應用程序、用戶自己編寫的程序等統稱為軟件。然而,當計算機的應用日益普及,軟件日益復雜,軟件規模日益增大,人們意識到軟件并不僅僅等同于程序。程序是人們為了完成特定的功能而編制的一組指令集,它由計算機語言描述,并且能在計算機系統上執行。而軟件不僅包括程序,還包括程序的處理對象——數據,以及與程序開發、維護和使用有關的圖文資料(文檔)。例如,用戶購買的Windows 10操作系統這個軟件,它不僅包含可執行的程序,還包含一些支持的數據(都放在光盤中),并且還包含紙質的用戶手冊等文檔。Roger S.Pressman對軟件給出了這樣的定義:計算機軟件是由專業人員開發并長期維護的軟件產品。完整的軟件產品包括了在各種不同容量和體系結構計算機上的可執行的程序、運行過程中產生的各種結果,以及以硬拷貝和電子表格等多種方式存在的軟件文檔。

軟件具有以下幾個特點。

1)軟件是一種邏輯實體,而不是具體的物理實體,因而具有抽象性。

2)軟件的生產與硬件不同,它沒有明顯的制造過程。要提高軟件的質量,必須在軟件開發方面下功夫。

3)在軟件的運行和使用期間,不會出現硬件中所出現的機械磨損、老化等問題。然而它卻存在退化問題,必須要對其進行多次修改與維護,直至其“退役”。如早期的DOS操作系統,就是進行了多次修改與維護,實在難以與Windows操作系統匹敵而“退役”了。圖1-1和圖1-2分別展示了硬件的失效率和時間的關系以及軟件的失效率和時間的關系。

圖1-1 硬件失效曲線圖

圖1-2軟件失效曲線圖

4)計算機的開發與運行常常會受到計算機系統的制約,它對計算機系統有著不同程度的依賴性。例如,有專門針對安裝Windows操作系統的計算機的游戲,也有針對安裝macOS操作系統的計算機的游戲。為了解除這種依賴性,在軟件開發中提出了軟件移植的問題。

5)軟件的開發至今尚未完全擺脫人工的開發方式。

6)軟件本身是復雜的。軟件的復雜性可能來自它所反映的實際問題的復雜性,也可能來自程序邏輯結構的復雜性。

7)軟件成本相當昂貴。軟件的研制工作需要投入大量的、復雜的、高強度的腦力勞動,它的成本是比較高的。

8)相當多的軟件工作涉及社會因素。許多軟件的開發和運行涉及機構、體制及管理方式等問題,它們直接決定項目的成敗。

1.1.2 軟件的分類

隨著計算機軟件復雜性的增加,在某種程度上人們很難對軟件給出一個通用的分類,但是人們可以按照不同的角度對軟件進行分類。按照功能的不同,軟件可以分為系統軟件、支撐軟件和應用軟件三類。系統軟件是計算機系統中最靠近硬件的,為其他程序提供最底層的系統服務,它與具體的應用領域無關,如編譯程序和操作系統等。支撐軟件以系統軟件為基礎,以提高系統性能為主要目標,支撐應用軟件的開發與運行,主要包括環境數據庫、各種接口軟件和工具組。應用軟件是提供特定應用服務的軟件,如字處理程序等。系統軟件、支撐軟件和應用軟件之間既有分工又有合作,是不可以分開的。

基于規模的不同,軟件可以劃分為微型、小型、中型、大型和超大型軟件。一般情況下,微型軟件只需要一名開發人員,在4周以內完成開發,并且代碼量不超過500行,這類軟件一般僅供個人專用,沒有嚴格的分析、設計和測試資料,例如,某個學生為完成軟件工程課程的一個作業而編制的程序,就屬于微型軟件,小型軟件的開發周期可以持續到半年,代碼量一般控制在5000行以內,這類軟件通常沒有預留與其他軟件的接口,但是需要遵循一定的標準,附有正規的文檔資料,例如,某個學生團隊為完成軟件工程課程的大作業(學期項目)而編制的程序,就屬于小型軟件;中型軟件的開發人員控制在10人以內,要求在兩年以內開發5000~50000行代碼,這種軟件的開發不僅需要完整的計劃、文檔及審查,還需要開發人員之間、開發人員和用戶之間有交流與合作,例如,某個軟件公司為某個客戶開發的辦公自動化系統(OA)而編制的程序,就屬于中型軟件;大型軟件是10~100名開發人員在1~3年的時間內開發的,具有50000~100000行(甚至上百萬行)代碼的軟件產品,在這種規模的軟件開發中,統一的標準、嚴格的審查制度及有效的項目管理都是必需的,例如,某個軟件公司開發的某款多人在線網絡游戲,就屬于大型軟件;超大型軟件往往涉及上百名甚至上千名成員以上的開發團隊,開發周期可以持續到3年以上,甚至5年,這種大規模的軟件項目通常被劃分為若干個小的子項目,由不同的團隊開發,如微軟公司開發的Windows 10操作系統,就屬于超大型軟件。

根據軟件服務對象的不同,軟件還可以分為通用軟件和定制軟件。通用軟件是由特定的軟件開發機構開發,面向市場公開銷售的獨立運行的軟件系統,如操作系統、文檔處理系統和圖片處理系統等;定制軟件通常是面向特定的用戶需求,由軟件開發機構在合同的約束下開發的軟件,如為企業定制的辦公系統、交通管理系統和飛機導航系統等。

按照工作方式的不同,計算機軟件還可以劃分為實時軟件、分時軟件、交互式軟件和批處理軟件。

軟件的分類示意圖如圖1-3所示。

圖1-3 軟件的分類

主站蜘蛛池模板: 大足县| 凌云县| 拉孜县| 明溪县| 玉溪市| 延寿县| 十堰市| 岗巴县| 增城市| 贵港市| 美姑县| 巢湖市| 蒙城县| 石城县| 凤翔县| 林芝县| 应城市| 江源县| 共和县| 小金县| 凤台县| 花莲市| 泗水县| 天气| 周口市| 巴彦县| 竹溪县| 绥中县| 安龙县| 玛沁县| 宁武县| 汕尾市| 太原市| 团风县| 九寨沟县| 缙云县| 永昌县| 林甸县| 绥芬河市| 雅安市| 疏勒县|