復用,軟件減壓直通車

發表于:2008-02-20來源:作者:點擊數: 標簽:復用
編程非常有趣,在于它不僅滿足了我們內心深處進行創造的渴望,而且愉悅了每個人的內在情感。 但它也是一個許多人痛苦掙扎的焦油坑以及一種樂趣和苦惱共存的創造性活動,對許多人而言,其中樂趣遠大于苦惱。 An ———— FREDERICK P . BOORKS 《人月神話》 摘
編程非常有趣,在于它不僅滿足了我們內心深處進行創造的渴望,而且愉悅了每個人的內在情感。

    但它也是一個許多人痛苦掙扎的焦油坑以及一種樂趣和苦惱共存的創造性活動,對許多人而言,其中樂趣遠大于苦惱。

An

———— FREDERICK P . BOORKS 《人月神話》

摘要:

復用即軟件復用,是今年來被越來越多程序員重視的技術。本文通過對軟件復用技術的分析,介紹了復用技術在提高軟件效率、減輕軟件開發壓力方面的作用。

軟件復用的定義

軟件復用(或軟件重用)是指充分利用過去軟件開發中積累的成果、知識和經驗,去開發新的軟件系統,使人們在新系統的開發中著重于解決出現的新問題、滿足新需求,從而避免或減少軟件開發中的重復勞動。

軟件復用可分為產品式復用和生成式復用。產品式復用是指對軟件開發中中間制品(程序代碼,各階段中的文檔或模型,測試用例等)的復用,其實現途徑關鍵是將可復用的程序代碼組裝(或集成)而生成軟件應用系統,因此產品式復用亦稱組裝式復用;生成式復用主要是將軟件的需求進行規約化(或形式化)描述,然后利用可復用的應用程序生成器自動或半自動地生成所需的軟件系統。目前組裝式復用是軟件復用的主流方式。

在目前主流復用技術中,有一個關鍵性的名詞:軟件構件,復用技術中的代碼復用過程主要是依賴軟件構件來實現復用的。 軟件構件(也稱軟件組件)是軟件系統內可標識的、符合某種標準要求的構成成分,類似于傳統工業中的零部件。廣義上講,構件可以是需求分析、設計、代碼、測試用例、文檔或軟件開發過程中的其它產品。狹義來說,一般指對外提供一組規約化接口的、符合一定標準的、可替換的軟件系統的程序模塊。通常情況下是指后者。

軟件構件可分為可復用構件和不可復用構件。剖析一個應用軟件系統,可以發現其中有三類構成成分:①通用的基本構件,如,數據結構,用戶界面元素等等②領域共性構件,指僅在該應用軟件所屬領域內經常出現的構件③應用專有構件,指僅在該應用軟件中出現的特定構件??蓮陀脴嫾盖皟烧?,通常情況下軟件構件指可復用構件。

軟件復用的優點

復用技術所帶來的最大優點正是由 可復用構件來實現的,其優點主要體現在以下幾個方面:

一、軟件實現過程的效率提高

在軟件實現過程中,無論采用什么模式下的開發方法,都要對設計過程中定義的各個模塊進行代碼級的實現。如果此時擁有可復用的構件越多,就可以節約大量時間,只需修改構件接口或再加一個轉換用的中間接口,本來需要從頭開始的工作就這樣事半功倍了。注重構件積累的程序員都有這樣的體會,當一個系統開發完畢,總會形成一些功能獨立的模塊。當然可以置之不理,可一旦把他們分類收集,經過不斷抽象和封裝,在以后的開發過程中你會發現,又如此之多的工作你以前已經完成。構建對于軟件實現還有一個潛在的推動作用,不斷抽象與優化的構件,有助于程序員把復雜的軟件系統化整為零,從而提高整個軟件系統開發工作的效率。當我們面對龐大的系統設計任務時,除了選擇合適的設計模式之外,如果不能使用構件、創造構件,那么這次軟件開發過程仍然無法高效率地進行。

二、軟件測試過程的難度降低

一提到測試,很多人就認為讓用戶盡管用好了,出了問題再反饋修改不就行了。當然任何軟件在發布之后的用戶使用中免不了會出問題,但是如果一個不經測試的軟件直接發布,后果將是災難性的。會有接連不斷的問題出現在用戶面前,其中有許多必然是致命問題,如財務系統的費用丟失,金融系統的收支不平,實時系統的信息丟失,等等 …… 而這些問題正是軟件測試所要解決的任務,所以測試工作是軟件開發過程中很重要的一環。在有些大型項目中,實現測試的時間甚至超過開發的時間。

那么如何保證高效全面地測試出所有的錯誤呢?除了各種測試方法、測試用例之外,如果被測試系統中大量使用構件,測試工作就會輕松許多了。構件是已經經過檢驗合格的獨立程序,其內部應該是正確無誤的,那么只需要測試其接口(輸入輸出結果)的正確性就可以了。這樣不僅避免復雜的多路徑代碼邏輯測試,也很容易找出錯誤點。如果萬一構件的內部出現問題,不用著急,這部分的修改任務是由構件供應方提供的,當前項目程序員不用修改它。測試不僅是在軟件發布前,在之后的維護工作中,測試也很重要。當一個版本發現 BUG 或進行版本升級,只要對構件進行調試查找錯誤或對構件進行改進,然后只編譯修改過的構件,再將客戶端的構件對應的動態庫文件更新就完成了。這主要體現在軟件的網絡更新方面,正如很多人使用過的那樣,只要連上 INTERNET 再運行升級程序就可以坐在一邊喝茶了。

如果一個系統的 80% 部分是由一個個構件組裝而成,這樣一個系統將是非常完美的,無論是測試還是維護都將大大輕松。

三、程序員所擔負的壓力減輕

眾所周知,在目前國內這樣一個并不成熟的軟件發展環境下,大多數程序員的負擔是很重的。在許多中小型企業中還沒有形成團隊開發的模塊,若干個甚至單個程序員的松散合作模式十分常見,因而軟件開發過程中的需求分析、系統設計、代碼實現、測試反饋、安裝部署的繁重任務都是由幾個或一個人員承擔,沒有一個合理分工。強大的勞動強度、有限的開發時間、不合理的薪金回報,十分影響我國軟件業的快速發展。

在程序員的繁重任務中,代碼是現實最忙碌的,所以在這一環節如果能充分利用構件,將極大減輕程序員的壓力,縮短開發周期,節約人力成本。代碼實現過程的時間縮短,會給其后續的測試反饋、安裝部署、版本發布等工作帶來好處。節余的時間可以使后續的工作留有余地,若反之實現過程的時間超出預算,那么要想保證在規定的日期發布軟件,就必須壓縮其后各項工作的時間。工作時間的變化,不斷的加班滿負荷運轉,會直接影響工作人員的情緒,反而會降低工作效率。

可見,小小的構件帶來的是對整個軟件工作流的影響,不僅僅能減輕程序員的壓力,也能減輕整個軟件涉眾的壓力。

四、軟件系統性能的穩定性提高

在像證券、醫療這樣的大型企業中,軟件系統往往達到上百萬行的代碼容量,從開發到測試、維護都是一個長期的過程,而且其中的人力成本很高。而且一個長期使用的系統如果要進行大規模的升級或移植到新系統,這百萬行的代碼對于任何程序員來說都是一個頭疼的問題,甚至 成為一場不可能的任務?,F在我們可以利用復用技術,將百萬行的代碼化簡成為幾百個的構件。 而基于構件開發的系統,當一個系統由幾百個構件組成的時候,你只有幾百個地方可能出錯;而當這個系統由幾百萬個代碼組成的時候,它就有幾百萬個地方可能出錯。所以,當用構件來“組裝”軟件的時候,這個系統的性能就提高很多。

五、軟件企業的穩定性大大增強

如今國內大多數軟件企業仍然依靠軟件開發人員的穩定性來維持公司的長久運作,而人一旦作為主要因素,其穩定性就會大大下降。當軟件復用技術和構件技術出現以后,軟件開發商不必再依賴程序員的大腦,大量技術保存在構件中,通過很好的復用達到知識的不斷延續。而且軟件開發周期也大大縮短,以 前需要 40 個人天的工作量,現在也許 20 人天就完成了。 ,這 20 個人天所具備的是他們過去所積累的構件。這時整個系統的管理、穩定性都有了很好的保障。而且也不怕因為幾個人走掉,而使公司的無形價值降低,因為公司的核心價值就體現在這些構件里面。

軟件復用中應當注意的問題

軟件復用使人們在軟件開發中不必“重新發明輪子”或“一切從零開始”,提高了軟件生產率和質量,縮短開發周期,降低開發成本。軟件的重用中沒有材料的消耗,而且軟件通過多次重用后其質量和可靠性越來越高。據統計,軟件系統的開發中若復用程度達到 50% ,則其生產率提高 40% ,開發成本降低約 40% ,軟件出錯率降低近 50% 。近十年來軟件復用已成為解決軟件危機、提高軟件生產率和質量的最有效、最具潛力的手段。

軟件復用也并非是一劑完美的良藥,在復用過程中如果不慎重分析系統間的差異,不能定義足夠抽象的接口,復用就有可能造成混亂,反而加深系統的復雜度。

建立在可復用構件基礎上的軟件開發的 思路下,簡潔表達帶來了簡潔的軟件更新 ——“ 隨需應變 ” 不再只是一句口號。面向構件的軟件體系,松散耦合的構件組裝方式,系統不同部件之間的低關聯度。重復使用經過考驗的構件,可視化的知識表達,系統復雜指數的數量級下降,也使得企業應用更為成熟更為穩定。

軟件復用有三個基本原則,一是必須有可以復用的對象;二是所復用的對象必須是有用的,三是復用者需要知道如何去使用被復用的對象。軟件復用包括兩個相關過程:可復用軟件 ( 構件 ) 的開發和基于可復用構件的應用系統構造 ( 集成和組裝 ) 。解決好這幾個方面的問題才能實現真正成功的軟件復用。

通常構件的開發應遵循以下幾條原則:

1.系統結構分層,業務與實現分離,邏輯與數據分離。

2.以接口為核心,使用開放標準。

3.構件語義的描述要形式化。

4.提煉封裝構件過程要嚴格記錄。

5.設計模式也可以重用。

6.利用構件開發工具。

總結

面向構件的趨勢正為軟件行業的預言家所看好。在《軟件成功的奧秘》一書中,麥肯錫四位資深專家 Detlev Hoch 、 Cyriac Roeding 、 Gert Purkert 、 Sandro Lindner 經過對全球一百家最成功的軟件公司、 450 位頂尖領導人物的訪談之后,認為面向構件技術是軟件行業未來前景中的核心部分,軟件行業提高生產率的主要來源。引用軟件專家 Brad Cox 的話說,面向構件的技術是軟件行業的銀彈!

可復用的構件技術,已經成為大多數程序員不斷使用的技術,也出現了專門以提供構件服務的供應商,它已經不再是一種單一的技術,而成為軟件產業中的重要生產力、推動力,它不僅減輕了軟件開發的重負,也開辟了軟件產業鏈中的新方向。軟件復用這輛減壓直通車搭載的不止是技術的,更有對軟件開發過程的全面提升。作為程序員在不斷創造、不斷將所想變成實現、在獲得編程所帶來的愉悅同時,要不斷提高編程技術,但通過無數程序員不斷的努力,總有一天“軟件危機”會被縮小到可以被控制的范圍。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97