www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 公眾號精選 > 可靠性雜壇
[導(dǎo)讀]軟件(Software)是一系列按照特定順序組織的計算機數(shù)據(jù)和指令的集合。軟件一般被劃分為系統(tǒng)軟件、應(yīng)用軟件和介于這兩者之間的中間件軟件。軟件并不是只包括可以在計算機(這里的計算機是指廣義的計算機)上運行的程序,與這些程序相關(guān)的文檔、數(shù)據(jù)等元素一般


軟件(Software)是一系列按照特定順序組織的計算機數(shù)據(jù)和指令的集合。軟件一般被劃分為系統(tǒng)軟件、應(yīng)用軟件和介于這兩者之間的中間件軟件。軟件并不是只包括可以在計算機(這里的計算機是指廣義的計算機)上運行的程序,與這些程序相關(guān)的文檔、數(shù)據(jù)等元素一般也被認(rèn)為是軟件的一部分。

隨著計算機技術(shù)的迅速發(fā)展和廣泛應(yīng)用,軟件從最初的計算機硬件的附屬品,僅僅作為計算機硬件的運行和做一些簡單的計算與數(shù)據(jù)處理的程序,發(fā)展到今天大規(guī)模的封閉或開放式的系統(tǒng)軟件和應(yīng)用軟件。有的軟件的源代碼甚至超過千萬行。例如,美國阿波羅計劃的軟件長達1000萬行,航天飛機計劃的軟件更是長達4000萬行,桌面操作系統(tǒng)為千萬級量級規(guī)模。

軟件是抽象的,是人類邏輯思維的產(chǎn)物,它不受物質(zhì)材料的限制,也不受物理定律或加工過程的制約,這一特性使軟件工程得以簡化,因為軟件的潛能不受物理因素的限制;另外一方面,由于缺乏自然約束,軟件系統(tǒng)的實現(xiàn)在實施過程中,容易變得極為復(fù)雜,理解它會很困難、改變它付出的代價更加高昂。軟件規(guī)模的增長,使其復(fù)雜度也隨之大大增加,而高復(fù)雜度和高可靠性的不相容性,使得軟件可靠性隨著其規(guī)模的增長而降低,質(zhì)量難以保證,維護愈加困難,投資預(yù)算很難控制,傳統(tǒng)的軟件研制開發(fā)方法已無法適應(yīng)大規(guī)模軟件的開發(fā)需求。

為了解決在軟件開發(fā)和維護過程中遇到的一系列軟件危機的嚴(yán)重問題,1968年,北大西洋公約組織(NATO)的科學(xué)家和官員們在原德意志聯(lián)邦共和國召開的國際會議上討論并首次提出了軟件開發(fā)要工程化。當(dāng)時,單個的程序開發(fā)技術(shù)已經(jīng)不能擴展并應(yīng)用到大型的、復(fù)雜的軟件系統(tǒng)中。軟件項目有時甚至要推遲幾年才能完成,不僅比預(yù)計的費用高且難以維護。軟件工作者開始認(rèn)真研究消除軟件危機的途徑,從而逐漸形成了一門新興的工程學(xué)科——計算機軟件工程學(xué)(Software Engineering),簡稱軟件工程。軟件工程是一門工程學(xué)科,涉及軟件生產(chǎn)過程中的各個方面,從最初的問題提出一直到投入使用后的系統(tǒng)維護,都屬于其學(xué)科研究范疇。

一、軟件危機

1.摩爾定律和超越摩爾

1965年,Intel聯(lián)合創(chuàng)始人戈登·摩爾提出了著名的理論:半導(dǎo)體芯片上可集成的元器件的數(shù)目每18個月便會增加一倍。也就是說,同樣規(guī)格的芯片的成本,每18個月便會降低一半。1965年每個芯片可以容納50個晶體管,摩爾預(yù)測到1970年,每個芯片將能夠容納1000個元器件,每個晶體管的價格會降低90%。

經(jīng)過簡化,這個發(fā)現(xiàn)被歸納為“摩爾定律”:每個芯片上晶體管的數(shù)目每12個月將會增加一倍。戈登·摩爾的發(fā)現(xiàn)不基于任何特定的科學(xué)或工程理論,只是真實情況的映射總結(jié)。硅芯片行業(yè)注意到了這個定律,沒有簡單地把它當(dāng)作一個描述的、預(yù)言性質(zhì)的觀察,而是作為一個說明性的、重要的規(guī)則、整個行業(yè)努力的目標(biāo)。

除此之外,還有一個與摩爾定律相對的洛克定律(Rock's law),強調(diào)了生產(chǎn)中的成本因素。通過觀察可知,芯片制造廠商的成本每4年便會增加一倍。技術(shù)的進步以不斷為芯片上晶體管數(shù)量的增加鋪平道路,但是芯片生產(chǎn)設(shè)施的建造會十分昂貴,而更小、更便宜的處理器的使用還在不斷增加。

硬件技術(shù)在不斷發(fā)展,但現(xiàn)在,這種發(fā)展軌跡要告一段落了。由于同樣小的空間里集成越來越多的硅電路,產(chǎn)生的熱量也越來越大,這種原本兩年處理能力加倍的速度已經(jīng)慢慢下滑,原本的摩爾定律在逐步失效。目前,行業(yè)研究規(guī)劃藍圖新的戰(zhàn)略是“超越摩爾”(More than Moore):與以往首先改善芯片、軟件隨后跟上的發(fā)展趨勢不同,以后半導(dǎo)體行業(yè)的發(fā)展將首先看軟件——從手機到超級計算機再到云端的數(shù)據(jù)中心——然后反過來看要支持軟件和應(yīng)用的運行需要什么處理能力的芯片來支持。

這種局勢的轉(zhuǎn)變使得人們更加強調(diào)軟件的重要性。計算機的應(yīng)用日益廣泛、深入,然而硬件的進步只是為計算機系統(tǒng)提供了潛在的能力,如果沒有軟件來駕馭和開發(fā)這種能力,人類并不能有效地使用計算機,因此,軟件已成為限制計算機系統(tǒng)發(fā)展的關(guān)鍵因素。

計算機軟件是一個邏輯的而非物理的系統(tǒng),它具有與硬件顯著的不同特點。它的主要工作集中在定義、開發(fā)、維護等純智力活動方面。隨著軟件需求的劇增,軟件規(guī)模不斷增大,軟件數(shù)量急劇膨脹。在程序運行時發(fā)現(xiàn)的錯誤必須設(shè)法改正;用戶有了新的需求時必須相應(yīng)地修改程序;硬件或操作系統(tǒng)更新時,通常需要修改程序以適應(yīng)新的環(huán)境。上述種種軟件維護工作,以令人吃驚的比例耗費資源。更嚴(yán)重的是,許多程序的個體化特性使得它們最終成為不可維護的。軟件危機就這樣開始出現(xiàn)。

2.軟件危機的概念

軟件危機(Software Crisis)是指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴(yán)重的問題,也可以指落后的軟件生產(chǎn)方式無法滿足迅速增長的計算機軟件需求,從而導(dǎo)致軟件開發(fā)與維護過程中出現(xiàn)一系列嚴(yán)重問題的現(xiàn)象。

廣義上講,所謂軟件危機包含兩方面問題:如何開發(fā)軟件,以滿足對軟件日益增長的需求;如何維護數(shù)量不斷膨脹的已有軟件。

狹義上講,所謂軟件危機主要有以下一些典型表現(xiàn):

(1)對軟件開發(fā)成本和進度的估計常常很不準(zhǔn)確。實際成本比估計成本有可能高出一個數(shù)量級,實際進度比預(yù)期進度拖延幾個月甚至幾年的現(xiàn)象并不罕見,這種現(xiàn)象降低了軟件開發(fā)組織的信譽。而為了趕進度和節(jié)約成本所采取的一些權(quán)宜之計又往往降低了軟件產(chǎn)品的質(zhì)量,從而不可避免地會引起用戶的不滿。

(2)開發(fā)人員和用戶之間很難溝通,矛盾很難統(tǒng)一。往往是軟件開發(fā)人員不能真正了解用戶的需求,而用戶又不了解計算機求解問題的模式和能力,雙方無法用共同熟悉的語言進行交流和描述。在雙方互不充分了解的情況下,就倉促上陣設(shè)計系統(tǒng)、匆忙著手編寫程序,這種“閉門造車”的開發(fā)方式必然導(dǎo)致最終的產(chǎn)品不符合用戶的實際需要。

(3)大型軟件項目需要組織一定的研發(fā)人力共同完成。軟件項目管理人員缺乏開發(fā)大型軟件系統(tǒng)的經(jīng)驗及軟件開發(fā)各類人員的信息交流不及時、不準(zhǔn)確,有時還會產(chǎn)生誤解,這些都會導(dǎo)致軟件質(zhì)量無法得到保證。

(4)軟件系統(tǒng)中的錯誤難以消除。軟件是邏輯產(chǎn)品,質(zhì)量問題很難以統(tǒng)一的標(biāo)準(zhǔn)度量,因而造成質(zhì)量控制困難。軟件產(chǎn)品并不是沒有錯誤,而是盲目檢測很難發(fā)現(xiàn)錯誤,而隱藏下來的錯誤往往是造成重大事故的隱患,這些都會導(dǎo)致軟件產(chǎn)品出現(xiàn)質(zhì)量問題。

(5)軟件常常是不可維護的。很多程序中的錯誤是非常難改正的,實際上不可能使這些程序適應(yīng)新的硬件環(huán)境,也不能根據(jù)用戶的需求在原有程序中增加一些新的功能?!翱芍赜玫能浖边€是一個沒有完全做到的、正在努力追求的目標(biāo),人們?nèi)匀辉谥貜?fù)開發(fā)類似的或基本類似的軟件。

(6)軟件通常沒有適當(dāng)?shù)奈臋n資料。錯誤的觀點經(jīng)常認(rèn)為:軟件就是程序。程序代碼寫完軟件也就設(shè)計完了。實際上軟件不僅僅是程序,還應(yīng)該有一整套文檔資料。這些文檔資料應(yīng)該是軟件開發(fā)過程中產(chǎn)生出來的,而且應(yīng)該是和程序代碼完全一致的。軟件開發(fā)過程中,基線是軟件文檔和源代碼的一個穩(wěn)定版本,它是進一步開發(fā)的基礎(chǔ)。軟件開發(fā)組織的管理人員可以使用這些文檔資料作為“里程碑”,來管理和評價軟件開發(fā)工程的進展?fàn)顩r;軟件開發(fā)人員可以利用它們作為通信工具,在軟件開發(fā)過程中準(zhǔn)確地交流信息;對于軟件維護人員而言,這些文檔資料更是必不可少的。缺乏必要的文檔資料或者文檔資料不合格,必然給軟件開發(fā)和維護帶來許多嚴(yán)重的困難和問題。

(7)軟件成本在計算機系統(tǒng)成本中所占的比例逐年上升。隨著互聯(lián)網(wǎng)時代的到來,電子商務(wù)、移動互聯(lián)網(wǎng)興起,軟件經(jīng)濟已經(jīng)影響到社會經(jīng)濟生活中的方方面面。硬件成本逐年下降,然而軟件開發(fā)需要大量人力,軟件成本隨著軟件規(guī)模和數(shù)量的不斷擴大而持續(xù)上升。

(8)軟件開發(fā)生產(chǎn)率跟不上計算機應(yīng)用系統(tǒng)迅速普及深入的速度。軟件開發(fā)是一種高強度的腦力勞動,理論性和實踐性都很強,軟件開發(fā)人員的生產(chǎn)效率也對開發(fā)的周期和質(zhì)量有很大影響。特別是軟件工程,對軟件開發(fā)的成功(按質(zhì)按量,按期完成)有決定性作用。

(9)軟件產(chǎn)品的特殊性和人類智力的局限性,導(dǎo)致人類無力處理“復(fù)雜問題”?!皬?fù)雜問題”的概念是相對的,一旦人們采用先進的組織形式、開發(fā)方法和工具提高了軟件開發(fā)效率和能力,新的、更大的、更復(fù)雜的問題又?jǐn)[在人們的面前,所以“復(fù)雜問題”的解決需要諸多學(xué)科知識及技術(shù)的協(xié)同發(fā)展。

以上舉例的僅僅是軟件危機的一些典型表現(xiàn),與軟件開發(fā)和維護有關(guān)的問題遠(yuǎn)不止這些。

3.產(chǎn)生軟件危機的原因

開發(fā)軟件系統(tǒng)需要投入大量的人力和物力,但軟件系統(tǒng)的質(zhì)量卻難以保證,也就是說,開發(fā)軟件所需的高成本同產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象就是所謂的“軟件危機”。在軟件開發(fā)和維護的過程中存在這么多嚴(yán)重問題,一方面與軟件本身的特點有關(guān),而另一方面的主要原因是軟件開發(fā)和維護的方法不正確有關(guān)。

軟件開發(fā)不同于一般的加工制造業(yè)、機械工業(yè)以及一般的加工業(yè),這些行業(yè)都已經(jīng)有了上百年的歷史,產(chǎn)品的生產(chǎn)流程及工廠、車間、工種等的機構(gòu)設(shè)置和角色分工都有了成熟的模式。但是,軟件企業(yè)及軟件產(chǎn)品的生產(chǎn),歷史不長,加之軟件本身的智力勞動的特性,軟件作為產(chǎn)品的生產(chǎn)流程及其相應(yīng)的管理活動,還遠(yuǎn)遠(yuǎn)沒有一個成熟的模式。此外,軟件不同于一般程序,它的一個顯著特點是規(guī)模龐大,而程序復(fù)雜性將隨著程序規(guī)模的增加而呈指數(shù)上升。為了在預(yù)定時間內(nèi)開發(fā)出規(guī)模龐大的軟件,必須由許多人分工合作。然而,如何保證每個人完成的工作合在一起確實能夠成一個高質(zhì)量的大型軟件系統(tǒng),更是一個極端復(fù)雜困難的問題,這不僅涉及許多技術(shù)問題,如分析方法、設(shè)計方法、形式說明方法、版本控制等,更重要的是必須有嚴(yán)格而科學(xué)的管理。

與軟件開發(fā)和維護有關(guān)的許多錯誤認(rèn)識和做法的形成,可歸因于在計算機系統(tǒng)發(fā)展的早期階段軟件開發(fā)的個體化特點。錯誤的認(rèn)識和做法主要表現(xiàn)為忽視軟件需求分析的重要性,認(rèn)為軟件開發(fā)就是寫程序并設(shè)法使之運行,輕視軟件維護等。另外,軟件開發(fā)過程中如果缺乏有力的方法學(xué)和工具方面的支持會產(chǎn)生軟件危機。由于軟件開發(fā)不同于大多數(shù)其他工業(yè)產(chǎn)品,其開發(fā)過程是復(fù)雜的邏輯思維過程,其產(chǎn)品極大程度地依賴于開發(fā)人員高度的智力投入。由于過分地依靠程序設(shè)計人員在軟件開發(fā)過程中的技巧和創(chuàng)造性,加劇軟件開發(fā)產(chǎn)品的個性化,也是發(fā)生軟件開發(fā)危機的一個重要原因。

軟件項目管理(Software Project Management)的對象是軟件工程項目。它所涉及的范圍覆蓋了整個軟件工程過程。為使軟件項目開發(fā)獲得成功,關(guān)鍵問題是必須對軟件項目的工作范圍、可能風(fēng)險、需要資源(人、硬件、軟件)、要實現(xiàn)的任務(wù)、經(jīng)歷的里程碑、花費工作量(成本)、進度安排等做到心中有數(shù)。這種管理在技術(shù)工作開始之前就應(yīng)開始,在軟件從概念到實現(xiàn)的過程中繼續(xù)進行,當(dāng)軟件工程過程最后結(jié)束時才終止。

軟件項目管理是為了使軟件項目能夠按照預(yù)定的成本、進度、質(zhì)量順利完成,而對人員(People)、產(chǎn)品(Product)、過程(Process)和項目(Project)進行分析和管理的活動。軟件項目管理的根本目的是為了讓軟件項目尤其是大型項目的整個軟件生命周期(從分析、設(shè)計、編碼到測試、維護全過程)都能在管理者的控制之下,以預(yù)定成本按期、按質(zhì)地完成軟件交付用戶使用。研究軟件項目管理要從已有的成功或失敗的案例中總結(jié)出能夠指導(dǎo)今后開發(fā)的通用原則、方法,同時避免前人的失誤。軟件工程學(xué)的一個重要目標(biāo)就是結(jié)合軟件開發(fā)技術(shù)和先進管理技術(shù),以提高軟件的可維護性,減少軟件維護的代價。

4.消除軟件危機的途徑

軟件工程作為一個新興的工程學(xué)科,主要研究軟件生產(chǎn)的客觀規(guī)律性,建立與系統(tǒng)化軟件生產(chǎn)有關(guān)的概念、原則、方法、技術(shù)和工具,指導(dǎo)和支持軟件系統(tǒng)的生產(chǎn)活動,以期達到降低軟件生產(chǎn)成本、改進軟件產(chǎn)品質(zhì)量、提高軟件生產(chǎn)率水平的目標(biāo)。軟件工程學(xué)從硬件工程和其他人類工程中吸收了許多成功的經(jīng)驗,明確提出了軟件生命周期的模型,發(fā)展了許多軟件開發(fā)與維護階段適用的技術(shù)和方法,并應(yīng)用于軟件工程實踐,取得了良好的效果。

為了消除軟件危機,首先應(yīng)該對計算機軟件有一個正確的認(rèn)識。軟件設(shè)計者應(yīng)該徹底消除在計算機系統(tǒng)早期發(fā)展階段形成的“軟件就是程序”的錯誤觀念。一個軟件必須由一個完整的配置組成,事實上,軟件是程序、數(shù)據(jù)及相關(guān)文檔的完整集合。其中,程序是能夠完成預(yù)定功能和性能的可執(zhí)行的指令序列;數(shù)據(jù)是使程序能夠適當(dāng)處理信息的數(shù)據(jù)結(jié)構(gòu);文檔是開發(fā)、使用和維護程序所需要的圖文資料。1983年IEEE為軟件下的定義是:計算機程序、方法、規(guī)則、相關(guān)的文檔資料以及在計算機上運行程序時所必需的數(shù)據(jù)。

更重要的是,必須充分認(rèn)識到軟件開發(fā)不是某種個體勞動的神秘技巧,而應(yīng)該是一種組織良好、管理嚴(yán)格、各類人員協(xié)同配合、共同完成的工程項目。必須充分吸取和借鑒人類長期以來從事各種工程項目所積累的行之有效的原理、概念、技術(shù)和方法,特別要吸取幾十年來人類從事計算機硬件研究和開發(fā)的經(jīng)驗教訓(xùn)。

在軟件開發(fā)過程中人們開始研制和使用軟件工具,用以輔助進行軟件項目管理與技術(shù)生產(chǎn),人們還將軟件生命周期各階段使用的軟件工具有機地集合成為一個整體,形成能夠連續(xù)支持軟件開發(fā)與維護全過程的集成化軟件支持環(huán)境,以期從管理和技術(shù)兩方面解決軟件危機問題。應(yīng)該推廣使用在實踐中總結(jié)出來的開發(fā)軟件的成功的技術(shù)和方法,并且研究探索更好更有效的技術(shù)和方法,盡快消除在計算機系統(tǒng)早期發(fā)展階段形成的一些錯誤概念和做法。

應(yīng)該開發(fā)和使用更好的軟件工具,在軟件開發(fā)的每個階段都有許多煩瑣重復(fù)的工作需要做,在適當(dāng)?shù)能浖ぞ咻o助下,開發(fā)人員可以把這類工作做得既快又好。如果把各個階段使用的軟件工具有機地結(jié)合成一個整體,支持軟件開發(fā)的全過程,則稱為軟件工程支撐環(huán)境。

此外,人工智能與軟件工程的結(jié)合成為20世紀(jì)80年代末期活躍的研究領(lǐng)域?;诔绦蜃儞Q、自動生成和可重用軟件等軟件新技術(shù)研究也已取得一定的進展,把程序設(shè)計自動化的進程向前推進一步。軟件標(biāo)準(zhǔn)化與可重用性得到了工業(yè)界的高度重視,在避免重用勞動、緩解軟件危機方面起到了重要作用。

軟件開發(fā)的風(fēng)險之所以大,是由于軟件過程能力低,其中最關(guān)鍵的問題在于軟件開發(fā)組織不能很好地管理其軟件過程,從而使一些好的開發(fā)方法和技術(shù)起不到預(yù)期的作用。而且項目的成功也是通過工作組的共同努力,所以僅僅建立在可得到特定人員上的成功不能為全組織的生產(chǎn)和質(zhì)量的長期提高打下基礎(chǔ),必須在建立有效的軟件如管理工程實踐和管理實踐的基礎(chǔ)設(shè)施方面,堅持不懈地努力,才能不斷改進,才能持續(xù)地成功。

軟件質(zhì)量,乃至于任何產(chǎn)品質(zhì)量,都是一個很復(fù)雜的事物性質(zhì)和行為。產(chǎn)品質(zhì)量,包括軟件質(zhì)量,是人們實踐產(chǎn)物的屬性和行為,是可以認(rèn)識、可以科學(xué)地描述的。還可以通過一些方法和人類活動,來改進質(zhì)量。針對以上問題,可以在軟件開發(fā)過程中實施能力成熟度模型來改進軟件質(zhì)量、控制軟件生產(chǎn)過程、提高軟件生產(chǎn)者組織性和軟件生產(chǎn)者個人能力和開發(fā)效率。

能力成熟度模型(Capability Maturity Model,CMM)是一種開發(fā)模型。CMM是國際公認(rèn)的對軟件公司進行成熟度等級認(rèn)證的重要標(biāo)準(zhǔn)。CMM的目標(biāo)是改善現(xiàn)有軟件開發(fā)過程,也可用于其他過程。CMM的基本思想是,因為軟件危機問題是管理軟件過程的方法引起的,所以新軟件技術(shù)的運用不會自動提高生產(chǎn)率和利潤率。CMM有助于組織建立一個有規(guī)律的、成熟的軟件過程。改進的過程將會生產(chǎn)出質(zhì)量更好的軟件,使更多的軟件項目免受時間和費用的超支之苦。軟件過程包括各種活動、技術(shù)和用來生產(chǎn)軟件的工具。因此,它實際上包括了軟件生產(chǎn)的技術(shù)方面和管理方面。CMM策略力圖改進軟件過程的管理,而在技術(shù)上的改進是其必然的結(jié)果。CMM致力于軟件開發(fā)過程的管理和工程能力的提高與評估。該模型在美國和北美地區(qū)已得到廣泛應(yīng)用,同時越來越多的歐洲和亞洲等國家的軟件公司正積極采納CMM,CMM實際上已成為軟件開發(fā)過程改進與評估事實上的工業(yè)標(biāo)準(zhǔn)。

總之,為了解決軟件危機,既要有技術(shù)措施(方法和工具),又要有先進的組織管理措施。軟件工程正是從管理和技術(shù)兩方面研究如何更好地開發(fā)和維護計算機軟件的一門新興學(xué)科。

二、軟件開發(fā)工程化

軟件作為人類純智力的勞動成果,和其他科學(xué)、技術(shù)、文學(xué)、藝術(shù)一樣是人類共享的社會財富。但與文學(xué)藝術(shù)這類純精神產(chǎn)品不同的是,它要面向社會發(fā)展的方方面面,它的研制開發(fā)工作就必須從用戶的要求和市場的需求出發(fā)。能否得到用戶的歡迎,能否取得一定的市場份額,將取決于軟件本身的功能、性能、可靠性、價格以及擴充能力等。軟件產(chǎn)品的商品化是實現(xiàn)上述目標(biāo)的必由之路。傳統(tǒng)的“藝術(shù)創(chuàng)作”式的方式,極不適應(yīng)提供低價格高品質(zhì)軟件產(chǎn)品的商品化需求。為此,人們將借鑒其他科技產(chǎn)品商品化的路子,提出軟件產(chǎn)品的研制開發(fā)與生產(chǎn)必須工程化、標(biāo)準(zhǔn)化。

1.軟件工程的定義

1968年“軟件工程”這一名稱被首次提出。軟件工程的目標(biāo)簡而言之就是要使開發(fā)的軟件產(chǎn)品具有可靠性、有效性、易維護性和可理解性。實現(xiàn)這一目標(biāo)的軟件工程原理就是:必須采用一種有效的方法和技術(shù)來降低開發(fā)活動的復(fù)雜性。

軟件工程一直以來都缺乏一個統(tǒng)一的定義,很多學(xué)者、組織機構(gòu)分別給出了自己認(rèn)可的定義:

BarryBoehm:運用現(xiàn)代科學(xué)技術(shù)知識來設(shè)計并構(gòu)造計算機程序及為開發(fā)、運行和維護這些程序所必需的相關(guān)文件資料。

IEEE在軟件工程術(shù)語匯編中的定義:①將系統(tǒng)化的、嚴(yán)格約束的、可量化的方法應(yīng)用于軟件的開發(fā)、運行和維護,即將工程化應(yīng)用于軟件;②在①中所述方法的研究。

FritzBauer在NATO會議上給出的定義:建立并使用完善的工程化原則,以較經(jīng)濟的手段獲得能在實際機器上有效運行的可靠軟件的一系列方法。

此外,《計算機科學(xué)技術(shù)百科全書》中,軟件工程是應(yīng)用計算機科學(xué)、數(shù)學(xué)、邏輯學(xué)及管理科學(xué)等原理,開發(fā)軟件的工程。軟件工程借鑒傳統(tǒng)工程的原則、方法,以提高質(zhì)量、降低成本和改進算法。其中,計算機科學(xué)、數(shù)學(xué)用于構(gòu)建模型與算法,工程科學(xué)用于制定規(guī)范、設(shè)計范型、評估成本及確定權(quán)衡,管理科學(xué)用于計劃、資源、質(zhì)量、成本等管理。

ISO 9000對軟件工程過程的定義是:軟件工程過程是輸入轉(zhuǎn)化為輸出的一組彼此相關(guān)的資源和活動。

其他定義:①運行時,能夠提供所要求功能和性能的指令或計算機程序集合;②程序能夠滿意地處理信息的數(shù)據(jù)結(jié)構(gòu);③描述程序功能需求以及程序如何操作和使用所要求的文檔。以開發(fā)語言作為描述語言,可認(rèn)為軟件=程序+數(shù)據(jù)+文檔。

綜上,軟件工程可以概括為:軟件工程采用工程學(xué)的概念、原理、技術(shù)和方法來開發(fā)與維護軟件,把經(jīng)過時間考驗而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來,研究和應(yīng)用如何以系統(tǒng)性的、規(guī)范化的、可定量的過程化方法開發(fā)和維護軟件的學(xué)科。

軟件工程的目標(biāo)是:在給定成本、進度的前提下,開發(fā)出具有適用性、有效性、可修改性、可靠性、可理解性、可維護性、可重用性、可移植性、可追蹤性、可互操作性和滿足用戶需求的軟件產(chǎn)品。追求這些目標(biāo)有助于提高軟件產(chǎn)品的質(zhì)量和開發(fā)效率,減少維護的困難。

2.軟件工程的基本原理

自從1968年提出“軟件工程”這一術(shù)語以來,研究軟件工程的專家學(xué)者們陸續(xù)提出了100多條關(guān)于軟件工程的準(zhǔn)則或信條。美國著名的軟件工程專家巴利·玻姆(Barry Boehm)綜合這些專家的意見,并總結(jié)了美國天合公司(TRW)多年的開發(fā)軟件的經(jīng)驗,于1983年提出了軟件工程的七條基本原理。

玻姆認(rèn)為,這七條原理是確保軟件產(chǎn)品質(zhì)量和開發(fā)效率的原理的最小集合。它們是相互獨立的,是缺一不可的最小集合;同時,它們又是相當(dāng)完備的。人們當(dāng)然不能用數(shù)學(xué)方法嚴(yán)格證明它們是一個完備的集合,但是可以證明,在此之前已經(jīng)提出的100多條軟件工程準(zhǔn)則都可以由這七條原理的任意組合蘊含或派生。

下面是軟件工程的七條原理:

1)用分階段的生命周期計劃嚴(yán)格管理

這一條是吸取前人的教訓(xùn)而提出來的。統(tǒng)計表明,50%以上的失敗項目是由于計劃不周而造成的。在軟件開發(fā)與維護的漫長生命周期中,需要完成許多性質(zhì)各異的工作。這條原理意味著,應(yīng)該把軟件生命周期分成若干階段,并相應(yīng)制定出切實可行的計劃,然后嚴(yán)格按照計劃對軟件的開發(fā)和維護進行管理。

玻姆認(rèn)為,在整個軟件生命周期中應(yīng)指定并嚴(yán)格執(zhí)行六類計劃:項目概要計劃、里程碑計劃、項目控制計劃、產(chǎn)品控制計劃、驗證計劃、運行維護計劃。

2)堅持進行階段評審

統(tǒng)計結(jié)果顯示:大部分錯誤是在編碼之前造成的,大約占63%,錯誤發(fā)現(xiàn)得越晚,改正它要付出的代價就越大,要差2到3個數(shù)量級。因此,軟件的質(zhì)量保證工作不能等到編碼結(jié)束之后再進行,應(yīng)堅持進行嚴(yán)格的階段評審,以便盡早發(fā)現(xiàn)錯誤。

3)實行嚴(yán)格的產(chǎn)品控制

開發(fā)人員最頭疼的事情之一是改動需求。但是實踐告訴我們,需求的改動往往是不可避免的。這就要求要采用科學(xué)的產(chǎn)品控制技術(shù)來順應(yīng)這種要求。也就是要采用變動控制,又稱基準(zhǔn)配置管理。當(dāng)需求變動時,其他各個階段的文檔或代碼隨之相應(yīng)變動,以保證軟件的一致性。

4)采納現(xiàn)代程序設(shè)計技術(shù)

從20世紀(jì)六七十年代的結(jié)構(gòu)化軟件開發(fā)技術(shù),到最近的面向?qū)ο蠹夹g(shù),從第一、第二代語言,到第四代語言,人們已經(jīng)充分認(rèn)識到:方法大于氣力。采用先進的技術(shù)既可以提高軟件開發(fā)的效率,又可以減少軟件維護的成本。

5)結(jié)果應(yīng)能清楚地審查

軟件是一種看不見、摸不著的邏輯產(chǎn)品。軟件開發(fā)小組的工作進展情況可見性差,難于評價和管理。為更好地進行管理,應(yīng)根據(jù)軟件開發(fā)的總目標(biāo)及完成期限,盡量明確地規(guī)定開發(fā)小組的責(zé)任和產(chǎn)品標(biāo)準(zhǔn),從而使所得到的標(biāo)準(zhǔn)能清楚地審查。

6)開發(fā)小組的人員應(yīng)少而精

開發(fā)人員的素質(zhì)和數(shù)量是影響軟件質(zhì)量和開發(fā)效率的重要因素,應(yīng)該少而精。這一條基于兩點原因:高素質(zhì)開發(fā)人員的效率比低素質(zhì)開發(fā)人員的效率要高幾倍到幾十倍,開發(fā)工作中犯的錯誤也要少得多;當(dāng)開發(fā)小組為N人時,可能的通信信道為N(N-1)/2,可見隨著人數(shù)N的增大,通信開銷將急劇增大。

7)承認(rèn)不斷改進軟件工程實踐的必要性

遵從上述六條基本原理,就能較好地實現(xiàn)軟件的工程化生產(chǎn)。但是,它們只是對現(xiàn)有經(jīng)驗的總結(jié)和歸納,并不能保證趕上技術(shù)不斷前進發(fā)展的步伐。因此,玻姆提出應(yīng)把承認(rèn)不斷改進軟件工程實踐的必要性作為軟件工程的第七條原理。根據(jù)這條原理,不僅要積極采納新的軟件開發(fā)技術(shù),還要注意不斷總結(jié)經(jīng)驗,收集進度和消耗等數(shù)據(jù),進行出錯類型和問題報告統(tǒng)計。這些數(shù)據(jù)既可以用來評估新的軟件技術(shù)的效果,也可以用來指明必須著重注意的問題和應(yīng)該優(yōu)先進行研究的工具和技術(shù)。

3.軟件開發(fā)的發(fā)展過程

軟件是由計算機程序和程序設(shè)計的概念發(fā)展演化而來的,是在程序和程序設(shè)計發(fā)展到一定規(guī)模并且逐步商品化的過程中形成的。軟件開發(fā)經(jīng)歷了程序設(shè)計階段、軟件設(shè)計階段和軟件工程階段的演變過程。

1)程序設(shè)計階段

程序設(shè)計階段出現(xiàn)在1946年至1955年。此階段的特點是:尚無軟件的概念,程序設(shè)計主要圍繞硬件進行開發(fā),規(guī)模很小,工具簡單,無明確分工(開發(fā)者和用戶),程序設(shè)計追求節(jié)省空間和編程技巧,無文檔資料(除程序清單外),主要用于科學(xué)計算。

2)軟件設(shè)計階段

軟件設(shè)計階段出現(xiàn)在1956年至1970年。此階段的特點是:硬件環(huán)境相對穩(wěn)定,出現(xiàn)了“軟件作坊”的開發(fā)組織形式。開始廣泛使用產(chǎn)品軟件(可購買),從而建立了軟件的概念。隨著計算機技術(shù)的發(fā)展和計算機應(yīng)用的日益普及,軟件系統(tǒng)的規(guī)模越來越龐大,高級編程語言層出不窮,應(yīng)用領(lǐng)域不斷拓寬,開發(fā)者和用戶有了明確的分工,社會對軟件的需求量劇增。但軟件開發(fā)技術(shù)沒有重大突破,軟件產(chǎn)品的質(zhì)量不高,生產(chǎn)效率低下,從而導(dǎo)致了“軟件危機”的產(chǎn)生。

3)軟件工程階段

自1970年起,軟件開發(fā)進入了軟件工程階段。由于“軟件危機”的產(chǎn)生,迫使人們不得不研究、改變軟件開發(fā)的技術(shù)手段和管理方法。從此軟件開發(fā)進入了軟件工程時代。此階段的特點是:硬件已向巨型化、微型化、網(wǎng)絡(luò)化和智能化四個方向發(fā)展,數(shù)據(jù)庫技術(shù)已成熟并廣泛應(yīng)用,第三代、第四代語言出現(xiàn);第一代軟件技術(shù)——結(jié)構(gòu)化程序設(shè)計在數(shù)值計算領(lǐng)域取得優(yōu)異成績;第二代軟件技術(shù)——軟件測試技術(shù)、方法、原理用于軟件生產(chǎn)過程;第三代軟件技術(shù)——處理需求定義技術(shù)用于軟件需求分析和描述。

4)未來

在Internet平臺上進一步整合資源,形成巨型的、高效的、可信的虛擬環(huán)境,使所有資源能夠高效、可信地為所有用戶服務(wù),成為軟件技術(shù)的研究熱點之一。軟件工程領(lǐng)域的主要研究熱點是軟件復(fù)用和軟件構(gòu)件技術(shù),它們被視為是解決“軟件危機”的一條現(xiàn)實可行的途徑,是軟件工業(yè)化生產(chǎn)的必由之路。而且軟件工程會朝著開放性計算的方向發(fā)展,朝著可以確定行業(yè)基礎(chǔ)框架、指導(dǎo)行業(yè)發(fā)展和技術(shù)融合的“開放計算”。

最近幾年產(chǎn)生了一種觀點——“軟件即是一種服務(wù)”,軟件不再在本地計算機上運行,而是將它放在所謂的“計算云”中。云計算(Cloud Computing)是基于互聯(lián)網(wǎng)的相關(guān)服務(wù)的增加、使用和交付模式。云計算是一種按使用量付費的模式,這種模式提供可用的、便捷的、按需的網(wǎng)絡(luò)訪問,進入可配置的計算資源共享池(資源包括網(wǎng)絡(luò)、服務(wù)器、存儲、應(yīng)用軟件、服務(wù)),這些資源能夠被快速提供,只需投入很少的管理工作,或與服務(wù)供應(yīng)商進行很少的交互。云計算是繼1980年代大型計算機到客戶端—服務(wù)器的大轉(zhuǎn)變之后的又一種巨變。云計算是分布式計算(Distributed Computing)、并行計算(Parallel Computing)、效用計算(Utility Computing)、網(wǎng)絡(luò)存儲(Network Storage Technologies)、虛擬化(Virtualization)、負(fù)載均衡(Load Balance)、熱備份冗余(High Available)等傳統(tǒng)計算機和網(wǎng)絡(luò)技術(shù)發(fā)展融合的產(chǎn)物。云計算是通過使計算分布在大量的分布式計算機上,而非本地計算機或遠(yuǎn)程服務(wù)器中,企業(yè)數(shù)據(jù)中心的運行將與互聯(lián)網(wǎng)更相似。這使得企業(yè)能夠?qū)①Y源切換到需要的應(yīng)用上,根據(jù)需求訪問計算機和存儲系統(tǒng)。

云計算背景下,傳統(tǒng)軟件工程也需要不斷創(chuàng)新發(fā)展。在傳統(tǒng)的軟件開發(fā)過程中,軟件使用者對軟件的需求確定后則按照傳統(tǒng)軟件工程開發(fā)模型進行軟件設(shè)計,需求的改變則可能會導(dǎo)致軟件架構(gòu)的改變,這種改變會對軟件設(shè)計影響巨大。而在云計算背景下,需求可能是在不斷地變化,比如剛開始預(yù)期的使用人數(shù)只有一萬人,但是當(dāng)軟件上線之后發(fā)現(xiàn)該軟件很受歡迎,使用人數(shù)達到了百萬級,大大超過了之前軟件設(shè)計容量,于是通過云計算,可以對軟件的運行環(huán)境進行動態(tài)擴充,只要對軟件稍作修改便可使軟件繼續(xù)順利運行。運用云計算的動態(tài)性,可以動態(tài)改變軟件的運行環(huán)境,盡量減少整個軟件結(jié)構(gòu)所需要的改動。同時對于在開發(fā)過程中選擇更改架構(gòu)的程序,也只需要改變本地代碼即可,對于云端服務(wù)器,只要進行簡單的設(shè)置就可順利地讓程序運行。此外,傳統(tǒng)的軟件工程開發(fā)更多的是軟件工程師采用集中開發(fā)方式,以求最大的開發(fā)效率,開發(fā)組織大部分都局限在某一個具體公司里,組織之外的人想要參與項目是很困難的,而在云計算的時代,由于服務(wù)器在云端,只需要通過遠(yuǎn)程操作云服務(wù)器就能完成軟件的開發(fā)部署工作,所以軟件工程師可以身處世界各地而共同完成同一個工程,這使得開發(fā)變得更加包容與開放,只要互相之間進行約定,每個人按時完成自己所負(fù)責(zé)的工作即可,這使得開發(fā)組織可以變得更加多元化。

現(xiàn)在,越來越多的人開始意識到云計算的好處,并且已經(jīng)開始接受并采用云計算,因為它可以改變?nèi)藗兊墓ぷ魃罘绞?,對于軟件工程行業(yè)也是如此。云計算服務(wù)器為開發(fā)人員提供了更加寬廣的開發(fā)平臺,它使得開發(fā)人員可以專注于業(yè)務(wù)的實現(xiàn)而從復(fù)雜的運行環(huán)境中抽身出來,使得軟件變得更加可靠。

此外,云計算、移動互聯(lián)網(wǎng)、大數(shù)據(jù)時代的到來,使傳統(tǒng)的軟件工程面臨新的機遇與挑戰(zhàn)。傳統(tǒng)軟件工程也正處于一個軟件工業(yè)大變革的過程中,隨著軟件資源的大量積累與有效利用,軟件生產(chǎn)的集約化與自動化程度都將迅速提高,軟件生產(chǎn)質(zhì)量與效率的大幅度改進將成為可能。




長按二維碼識別關(guān)注我們


免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉