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


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

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

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

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

一、軟件危機

1.摩爾定律和超越摩爾

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

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

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

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

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

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

2.軟件危機的概念

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

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

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

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

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

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

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

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

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

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

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

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

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

3.產生軟件危機的原因

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

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

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

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

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

4.消除軟件危機的途徑

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

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

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

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

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

此外,人工智能與軟件工程的結合成為20世紀80年代末期活躍的研究領域。基于程序變換、自動生成和可重用軟件等軟件新技術研究也已取得一定的進展,把程序設計自動化的進程向前推進一步。軟件標準化與可重用性得到了工業(yè)界的高度重視,在避免重用勞動、緩解軟件危機方面起到了重要作用。

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

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

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

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

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

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

1.軟件工程的定義

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

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

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

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

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

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

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

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

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

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

2.軟件工程的基本原理

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

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

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

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

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

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

2)堅持進行階段評審

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

3)實行嚴格的產品控制

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

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

從20世紀六七十年代的結構化軟件開發(fā)技術,到最近的面向對象技術,從第一、第二代語言,到第四代語言,人們已經充分認識到:方法大于氣力。采用先進的技術既可以提高軟件開發(fā)的效率,又可以減少軟件維護的成本。

5)結果應能清楚地審查

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

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

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

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

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

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

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

1)程序設計階段

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

2)軟件設計階段

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

3)軟件工程階段

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

4)未來

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

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

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

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

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




長按二維碼識別關注我們


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

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

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

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

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

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

關鍵字: 汽車 人工智能 智能驅動 BSP

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

關鍵字: 亞馬遜 解密 控制平面 BSP

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

關鍵字: 騰訊 編碼器 CPU

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

關鍵字: 華為 12nm EDA 半導體

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

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

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

關鍵字: 通信 BSP 電信運營商 數(shù)字經濟

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

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

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

關鍵字: BSP 信息技術
關閉
關閉