二級共公基礎知識教程第3章上

字號:

第3章 軟件工程基礎
    3.1軟件工程基本概念
    一、軟件定義與軟件特點
    計算機軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)及相關文檔的完整集合?;?,程序是軟件開發(fā)人員根據(jù)用戶需求開發(fā)的用程序設計語言描述的、適合計算機執(zhí)行的指令(語句)序列。數(shù)據(jù)是使程序能正常操縱信息的數(shù)據(jù)結構。文檔是與程序開發(fā)、
    維護和使用有關的圖文資料??梢娷浖蓛刹糠纸M成:一是機器可執(zhí)行的程序和數(shù)據(jù);二是機器不可執(zhí)行的,與軟件開發(fā)、運行、維護、使用等有關的文檔。
    國標(GB)中對計算機軟件的定義為:與計算機系統(tǒng)的操作有關的計算機程序、規(guī)程、規(guī)則,以及可能有的文件、文檔及數(shù)據(jù)。
    軟件在開發(fā)、生產(chǎn)、維護和使用等方面與計算機硬件相比存在明顯的差異。深入理解軟件的定義需要了解軟件的特點:
    (1) 軟件是一種邏輯實體,而不是物理實體具有抽象性。
    (2) 軟件的生產(chǎn)與硬件不同,它沒有明顯的制作過程。一旦研制開發(fā)成功,可以大量拷貝同一內容的副本。所以對軟件的控制,必須著重在軟件開發(fā)方面下功夫。
    (3) 軟件在運行、使用期間不存在磨損、老化問題。
    (4) 軟件的開發(fā)運行對計算機系統(tǒng)具有依賴性,受計算機系統(tǒng)的限制這導致了軟件移植的問題。
    (5) 軟件復雜性高,成本昂貴。
    (6) 軟件開發(fā)涉及諸多的社會因素。
    軟件按功能可以分為:應用軟件、系統(tǒng)軟件、支撐軟件(或工具軟件)。應用軟件是為解決特定領域的應用而開發(fā)的軟件。系統(tǒng)軟件是計算機管理自身資源,提高計算機使用效率并為計算機用戶提供各種服務的軟件。支撐軟件是介于系統(tǒng)軟件和應用軟件之間,協(xié)助用戶開發(fā)軟件的工具性軟件,包括輔助和支持開發(fā)和維護應用軟件的工具軟件。
    二、軟件危機與軟件工程
    軟件工程概念的出現(xiàn)源自軟件危機。
    所謂有軟件危機四伏是泛指在計算機軟件開發(fā)和維護過程中所遇到的嚴重問題。實際上,幾科所有的軟件都不同程度地存在這些問題。
    隨著計算機技術的發(fā)展和應用領域的擴大,計算機硬件性能/價格比和質量穩(wěn)步提高,軟件規(guī)模越來越大,復雜程度不斷增加,軟件成本逐年上升,質量沒有可靠的保證,軟件已成為計算機科學發(fā)展的“瓶頸”。
    具體地說,在軟件開發(fā)和維護過程中,軟件危機主要表現(xiàn)在:
    (1) 軟件需求的增長得不到滿足。用戶對系統(tǒng)不滿意的情況經(jīng)常發(fā)生。
    (2) 軟件開發(fā)成本和進度無法控制。開發(fā)成本超出預算,開發(fā)周期大大超過規(guī)定日期的情況經(jīng)常發(fā)生。
    (3) 軟件質量難以保證。
    (4) 軟件不可維護或護程度非常低。
    (5) 軟件的成本不斷提高。
    (6) 軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和應用需求的增長。
    總之,可以將軟件危機歸結為成本、質量、生產(chǎn)率等問題。
    軟件工程就是試圖用工程、科學和數(shù)學的大批量與方法研制、維護計算機軟件的有關技術及管理方法。
    關于軟件工程的定義,國標(GB)中指出,軟件工程是應用于計算機軟件的定義、開發(fā)和維護的一整套方法、工具文檔、實踐標準的工序。
    1993年IEEE(Institute of Electrical &Electronic Engineers ,電氣和電子工程師學會)給出了一個更加綜合的定義:“將系統(tǒng)化的、規(guī)范的、可度量的方法應用于軟件的開發(fā)、運行和維護的過程,即將工程化應用于軟件中”。
    軟件工程包括3個要素:即方法、工具和過程。方法是完成軟件工程項目的技術手段;工具支持軟件的開發(fā)、管理、文檔生成;過程支持軟件開發(fā)的各個環(huán)節(jié)的控制、管理。
    軟件工程的核心思想是把軟件產(chǎn)品看作是一個工程產(chǎn)品來處理。
    開發(fā)軟件不能只考慮開發(fā)期間的費用,而且應考慮軟件生命周期內的全部費用。因此,軟件生命周期的概念就變得特別重要。在考慮軟件費用時,不僅僅要降低開發(fā)成本,更要降低整個軟件生命周期的總成本。
    三、軟件工程過程與軟件生命周期
    1、軟件工程過程(Software Engineering Process)
    ISO9000定義:軟件工程過程是把輸入轉化為輸出的一組彼此相關的資源和活動。
    定義支持了軟件工程過程的兩方面內涵。其一,軟件工程過程是指為獲得軟件產(chǎn)品,在軟件工具支持下由軟件工程師完成的一系列軟件工程活動?;谶@個方面,軟件工程過程通常包含4種基本活動:
    (1) P(plan)——軟件規(guī)格說明。規(guī)定軟件的功能及其運行時的限制。
    (2) D(do)——軟件開發(fā)。產(chǎn)生滿足規(guī)格說明的軟件。
    (3) C(check)——軟件確認。確認軟件能夠滿足客戶提出的要求。
    (4) A (action)——軟件演進。為滿足客戶的變更要求,軟件必須在使用的過程中演進。
    通常把用戶的要求轉變成軟件產(chǎn)品的過程也叫做軟件開發(fā)過程。此過程包括對用戶的要求進行分析,解釋成軟件需求,把需求變換成設計,把設計用代碼來實現(xiàn)并進行代碼測試,有些軟件還需要進行代碼安裝和交付運行。
    其二,從軟件開發(fā)的觀點看,它就是使用適當?shù)馁Y源(包括人員、硬軟件工具、時間等),為開發(fā)軟件進行的一組開發(fā)活動,在過程結束時將輸入(用戶要求)轉化為輸出(軟件產(chǎn)品)。