當前位置:學問君>學習教育>畢業論文>

軟件的複用技術及開發方法

學問君 人氣:1.67W
軟件的複用技術及開發方法

2.1軟件的複用技術
軟件複用是指在開發新的軟件系統時,對已有的軟件或軟件模組重新使用,該軟件可以是己經存在的軟件,也可以是專門的可複用組件〔8〕。軟件可複用性的高低影響到生產效率的高低、軟件質量的好壞和系統可維護性的好壞。在軟件工程中面臨的問題不是缺乏複用,而是缺乏廣泛的、系統的複用。軟件複用包括構造可複用軟件和用可複用軟件進行構造。構造可複用軟件,一方面可以從現存的軟件系統中抽取,另一方面透過改寫或重新設計來實施。
Jones將軟件複用的對象分爲4種數據複用、體系結構複用、設計複用和程序複用。這樣,軟件複用可在實現層、設計層和體系結構層三個層次上實現。實現層軟件複用是指對己有的程序代碼進行復用,它包括原始碼組件形式。設計層軟件複用是指對已有的軟件系統的設計資訊進行復用。而體系結構層軟件複用是最有效的軟件複用,它主要是軟件體系結構形式化的複用,即將軟件的框架組織,全局結構設計作爲複用對象。可複用的軟件體系結構則通常是顯式地複用軟件體系結構,並透過集成其他軟件體系結構,建立新的更高層次的體系結構。   
面向對象的軟件複用機制主要有兩種:繼承和對象組合。
(1)繼承
繼承是指子類可以從父類中直接獲得某些特徵和行爲的能力,繼承可作爲代碼複用和概念複用的手段。作爲代碼複用的手段是指:子類透過繼承父類的行爲,一些代碼就不必重寫;作爲概念複用的手段是指:子類共享父類的方法定義。作爲代碼複用和概念複用手段的繼承機制,在面向對象技術中,透過面向對象技術的一些主要機制來實現對“支援可維護性的可複用性”的支援。這些面向對象的主要機制是:數據的抽象化、封裝和多態性。透過運用這些機制,繼承可以在高層次上提供(相對於傳統的低層次複用)可複用性:數據的抽象化和繼承關係使得概念或定義可以複用;多態性使得實現和應用可以複用;而抽象化和封裝可以保持和促進系統的可維護性。這樣一來,複用的焦點不再集中在函數和算法等具體實現細節上,而是集中在最重要的含有宏觀商業邏輯的抽象層次上。換言之,複用的焦點發生了“倒轉”。發生複用焦點的倒轉並不是因爲實現細節的複用並不重要,而是因爲這些細節上的複用己經做的很好了,並且這種複用在提高複用性的同時提高了軟件的可維護性。由於繼承關係直接繼承的是接口,同時也繼承實現,因而實際上父類的內部實現對子類而言是可見的,屬於白盒複用方式。
(2)對象的組合
對象組合是指新的複雜功能可以透過組裝或組合對象來獲得。這種複雜的功能由對象組合來獲得的設計思想與過程化程序設計思想是相似的,在過程化程序設計中,一個複雜的功能模組可以分解爲更細小的和更簡單的功能模組,整體功能是各個局部功能的聚集。在面向對象系統中,系統是由對象構成,因此複雜的功能或者說能完成更復雜功能的對象,可以透過功能較簡單的對象的組裝或組合來實現。對象組合方式是從整體與局部的角度來考慮軟件複用思想的。
對象組合要求對象具有良好的接口定義,使用對象的接口來使用對象的功能,並往往運用賦值多態來獲得具體對象,對象的內部功能是不可見的,對象只以“黑盒”的形式出現,屬於黑盒複用方式。
面向對象的軟件複用過程有以下步驟:
①抽象:對軟件製品進行抽象,抽象層次越高,複用的'機會就越大;
②選擇:一般透過分類和編目方案組織和檢索可複用的軟件製品;
③特殊化:即將上步選定了的一個一般化的軟件製品進行特殊化,以滿足特定領域的要求;
④集成:集成需要在軟件體系結構或框架的指導下,將選定的、特殊化了的模組集合組成一個完整的軟件系統。要有效地將可複用製品集成爲一個軟件系統,使用者必須清楚地理解該模組的接口。
而從複用的使用角度上看,軟件複用的使用行爲可能發生在三個維上。
①平臺維:以某平臺上的軟件爲基礎,修改它與執行平臺相關的部分,使其能夠執行在新的平臺,即軟件移植;
②時間維:使用以前的軟件版本作爲新版本的基礎,加入新功能,適應新需求,即軟件維護;
③應用維:將某軟件或其中構件用於其他系統中,新系統具有不同功能和用途,即真正的軟件複用。
這三種行爲中都重複使用了現有的軟件,但是真正意義的軟件複用指的是應用維上的軟件複用,即“使用爲複用而開發的軟件”來更快更好地開發新的應用系統。透過軟件複用,消除了許多重複勞動,降低了軟件開發的時間。同時,複用高質量的己有開發成果,避免了重新開發可能引入的錯誤,從而提高了軟件的質量。
2.2軟件的開發方法
2.2.1結構化開發方法
結構化方法是把現實世界描繪爲數據在資訊系統中的流動,以及在數據流動的過程中數據向資訊的轉化。其基本思想爲:基於功能分解設計系統結構,透過把複雜的問題逐層分解,進行簡化(即自頂向下,逐層細化),將整個程序結構劃分成若干個功能相對獨立的子模組直至最簡,並且每個模組最終都可使用順序、選擇、循環三種基本結構來實現,它是從系統內部功能上模擬客觀世界。
結構化方法強調系統開發過程的整體性和全局性,強調在整體優化的前提下來考慮具體的分析設計問題。結構化方法嚴格地區分開發階段,強調一步一步地嚴格地進行系統分析與設計,每一步工作都及時地總結、發現問題,從而避免了開發過程的混亂狀態。
結構化方法是目前被廣泛採用的系統開發方法之一,但是結構化方法也存在的許多問題,其侷限性有以下幾點:
(1)難以解決軟件重用問題。結構化方法從功能抽象出發進行模組劃分,所劃分出的模組千差萬別,模組共用的程度不高。
(2)結構化方法在需求分析中對問題域的認識和描述不是以問題域中固有的事物作爲基本單位,而是打破了各項事物之間的界限,在全局範圍內以數據流爲中心進行分析,所以分析結果不能直接反映問題域。同時,當系統較複雜時,很難檢驗分析的正確性。因此,結構化分析方法容易隱藏一些對問題域的理解偏差,與後繼開發階段的銜接也比較困難。
(3)結構化方法對需求變化的適應能力比較弱,軟件系統結構對功能的變化十分敏感,功能的變化會引起相關聯的許多數據流的修改,同時設計出的軟件難以重用,延緩了開發的過程。
(4)結構化方法中設計文檔很難與分析文檔對應,因爲二者的表示體系不一致。結構化方法的結果-數據流圖(DFD)和結構化設計結果-模組結構圖(MSD)是兩種不同的表示體系,從分析到設計的“轉換”使得設計文檔與問題域的本來面貌相差甚遠。