二級(jí)共公基礎(chǔ)知識(shí)教程第3章上

字號(hào):

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