軟件工程的歷史及發展趨勢

 1軟件工程的出現
1.1軟件危機
20世紀中期,計算機剛被從軍用領域轉向民用領域使用,那時編寫程序的工做被視同爲藝術家的創做。當時的計算機硬件很是昂貴,編程人員追求的是如何在有限的處理器能力和存儲器空間約束下,編寫出執行速度快、體積小的程序。程序中充滿了各類各樣讓人迷惑的技巧。這時的軟件生產很是依賴於開發人員的聰明才智。
到了20世紀60年代,計算機的應用範圍獲得較大擴展,對軟件系統的需求和軟件自身的複雜度急劇上升,傳統的開發方法沒法適應用戶在質量、效率等方面對軟件的需求。這就是所謂的「軟件危機」。
 爲解決這個問題,1968年NATO會議上首次提出「軟件工程」(SotfwraeEngineeirng)的概念,提出把軟件開發從「藝術」和「個體行爲」向「工程」和「羣體協同工做」轉化。其基本思想是應用計算機科學理論和技術以及工程管理原則和方法,按照預算和進度,實現滿用戶要求的軟件產品的定義、開發、發佈和維護的工程。今後也誕生了一門新的學科——軟件工程。
迄今爲之,爲了達到最初設定的目標,軟件工程界已經提出了一系列的理論、方法、語言和工具,解決了軟件開發過程當中的若干問題。可是,因爲軟件固有的複雜性、易變性和不可見性,軟件開發週期長、代價高和質量低的問題依然存在。IEEE在2002年發表的報告指出,即便是IT產業最發達的美國,在2001年美國本土公司開發的軟件產品中平均每1000行代碼中有0.37個錯誤,對於美國以外的其餘國家,這個比例更高。
 1.2軟件與其餘產品的差別
軟件是一種特殊的產品,人們一般看到的是它的載體,而真正具備意義的是載體上的計算機或信息。
軟件既不一樣於一般的精神產品,也不一樣於常見的物質產品。做家的做品是一種精神產品,它沒有使用價值卻能夠供人閱讀欣賞。若把軟件也當作是一種做品,卻發現其價值在於供人們使用,無人喜歡讀它的源代碼。
 軟件也與傳統的工業產品不一樣。工業產品在設計好以後,主要的成本是原材料成本、生產過程的開銷等,但生產任何軟件的主要成本是設計、實現軟件時的成本,以及軟件投入使用後的維護成本,在生產線上製造軟件的成本很是低。用戶購買某種商品後,就擁有了該商品的全部權和使用權。但是用戶買來的軟件卻只擁有它的有限「使用權」。工業產品會隨着使用而磨損、報廢,但軟件在使用過程不會有任何磨損,在相同的硬件條件下用戶1年前使用的軟件和5年後使用該軟件無任何差異。傳統的工業產品在車間裏生產,生產過程可見、可觸摸,也容易衡量生產過程當中的消耗和進展。但是軟件的開發過程在人的大腦裏,很難度量其進度。
 所謂的「軟件工程」就是要這種過程「可視化」、「定量化」,把看不見的思惟活動變成看得見的「文檔」或者其餘看得見的東西。
2軟件工程方法和技術
30多年來,軟件工程的研究和實踐取得了長足的進展,儘管目前離完全解決「軟件危機」
還有至關的差距(對是否能完全解決目前也存在爭議),但軟件工程的方法對軟件產業的發展仍是起到了很大的推進做用。從20世紀60年代以來,陸續出現告終構化程序設計技術、計算機輔助軟件工程(CASE)、面嚮對象語言和方法、軟件過程及軟件過程改善研究等一系列成果,並應用到實踐中。目前軟件工程中主要使用的方法和技術能夠分紅技術和管理兩類。
2.1技術的角度
主要包括:軟件開發範型、軟件設計方法。軟件開發範型關注軟件工程的方向,即如何纔是正確的編寫知足需求的軟件;軟件設計方法關注軟件工程的「途徑」,即研究怎樣完成從高層概念模型到低層概念模型的映射。
軟件工程理論在實踐中應用時重點放在軟件複用上。參考目前成熟的工業產品的開發模式,軟件複用能夠在軟件開發中避免重複勞動,它以已有的成果爲基礎,充分利用過去開發應用系統中積累的知識和經驗,將開發的重點集中於新應用的特有構成成分上。經過使用軟件複用技術,開發應用系統時能夠充分利用已有的開發成果,消除軟件生命週期中的許多重複勞動,提升軟件開發的效率。同時,複用高質量的已有成果,能夠避免從新開發時引入的錯誤,從而提升軟件質量。
實現軟件複用的關鍵技術包括軟件構件技術(softwarecomponenttechnology)、領域工程(domainen—gineering)、軟件體系結構(softwarearchitecture)等。
 軟件構件是指應用系統中能夠明確辨識的構成成分,可複用構件是指具備相對獨立功能和可複用價值的構件。目前,構件的概念即包括源代碼,也包括需求、需求規約、系統和軟件的體系結構、文檔、測試計劃、測試用例和數據以及其餘對開發活動有用的信息,這些信息均可以稱爲可複用軟件構件。軟件構件技術是支持軟件複用的核心技術,其主要研究內容包括:如何有目的的進行構件生產和從已有系統中挖掘提取構件;構件的本質特徵及構件間的關係是什麼樣的;如何描述構件;如何對構件進行分類、組織及檢索等。
研究實踐代表,因爲某個特定領域須要的軟件具備類似的需求,所以軟件複用在特定領域內更容易得到成功,由此出現了領域工程。領域工程是爲一組類似或相近系統的應用工程創建基本能力和必備基礎的過程,它涵蓋了創建可複用軟件構件的全部活動。包括美國卡內基·梅隆大學軟件工程研究所(CMU/SEI)在內的許多研究機構已經提出了一些領域分析方法。
若是軟件複用僅停留在代碼階段,開發人員獲得的好處是有限的。軟件體系結構技術使軟件複用從代碼複用發展到設計複用和過程複用。在建築工程領域人們用體系結構表達建築的總體結構,軟件工程研究中引人體系結構這個術語,其核心內容是軟件系統的結構,它包括以下一些實體:構件、構件之間的交互關係、限制、構件和鏈接件構成的拓撲結構、設計原則與指導方針。
2.2工程管理的角度
參考其餘成熟工程領域中的作法,軟件工程也研究管理學理論在軟件工程中的應用。軟件項目管理方法拋棄了之前我的的做坊式開發方式,根據管理科學的理論,結合軟件產品開發的實際,保證工程化系統開發方法的順利實施。爲了使軟件項目可以按照預約的成本、進度、質量順利完成,軟件管理方法對成本、人員、進度、質量、風險、文檔等進行分析管理和控制。進行軟件項目管理有利於將開發人員的我的開發能力轉化成企業的開發能力,企業的軟件開發能力越高,代表這個企業的軟件生產越趨向於成熟,其開發風險也越小。軟件項目管理已是公認的軟件開發企業的核心競爭力之一。
 根據在前面提到的軟件與其餘產品的區別,軟件項目管理具備一些與其餘項目管理不一樣的特性軟件項目管理中遵循着一些原則,例如:軟件項目中須要平衡需求、資源、工期、質量這四個要素之間的關係;大規模的項目要拆分紅幾個小項目,從而減少項目的管理風險,而且使目標具體明確;依靠一套規範的過程來實時控制項目進度,並確保項目經理可以及時
發現問題、解決問題,保證項目具備很高的可見度;針對不一樣項目的特色,制訂不一樣的項目管理的方針政策;合理控制項目組的規模控制原則;有效的積累知識,作到人員的專業化培養。
目前在軟件項目管理方面有國際標準化組織專門爲軟件行業定製的ISO9003標準,它給出了衡量軟件質量的準則;美國卡內基·梅隆大學軟件工程研究所提出的CMM(CapabilityMaturityModel,能力成熟度模型)則提供了一整套較爲完善的軟件研發項目管理的方法。
 3軟件工程的新發展
20世紀末開始流行的Internet給人們提供了一種全球範圍的信息基礎設施,造成了一個資源豐富的計算平臺,將來如何在Internet平臺上進一步整合資源,造成巨型的、高效的、可信的虛擬環境,使全部資源可以高效、可信地爲全部用戶服務,成爲軟件技術的研究熱點。
Internet平臺具備一些傳統軟件平臺不具有的特徵:分佈性、節點的高度自治性、開放性、異構性、不可預測性、鏈接環境的多樣性等。這對軟件工程的發展提出了新的問題。軟件工程須要新的理論、方法和技術和平臺來應對這個問題。目前投入很大精力研究的中間件技術就是這方面的典型表明。
     綜上所述,Internet及其上應用的快速發展與普及,使計算機軟件所面臨的環境開始從靜態封閉逐步走向開放、動態和多變。軟件系統爲了適應這樣一種發展趨勢,將會逐步呈現出柔性、多目標、連續反應式的網構軟件系統的形態。面對這種新型的軟件形態,傳統的軟件理論、方法、技術和平臺面臨了一系列挑戰。從宏觀上看,這種挑戰爲咱們研究軟件理論、方法和技術提供了可貴的機遇,使咱們有可能創建一套適合於Internet開放、動態和多變環境的新型軟件理論、方法和技術體系。從微觀的角度來看,Internet的發展將使系統軟件和支撐平臺的研究重點開始從操做系統等轉向新型中間件平臺,而網構軟件的理論、方法和技術的突破必將致使在創建新型中間件平臺創新技術方面的突破
相關文章
相關標籤/搜索