- 相關推薦
軟件的復用技術及開發方法
軟件的復用技術及開發方法
2.1軟件的復用技術
軟件復用是指在開發新的軟件系統時,對已有的軟件或軟件模塊重新使用,該軟件可以是己經存在的軟件,也可以是專門的可復用組件〔8〕。軟件可復用性的高低影響到生產效率的高低、軟件質量的好壞和系統可維護性的好壞。在軟件工程中面臨的問題不是缺乏復用,而是缺乏廣泛的、系統的復用。軟件復用包括構造可復用軟件和用可復用軟件進行構造。構造可復用軟件,一方面可以從現存的軟件系統中抽取,另一方面通過改寫或重新設計來實施。
Jones將軟件復用的對象分為4種數據復用、體系結構復用、設計復用和程序復用。這樣,軟件復用可在實現層、設計層和體系結構層三個層次上實現。實現層軟件復用是指對己有的程序代碼進行復用,它包括源代碼組件形式。設計層軟件復用是指對已有的軟件系統的設計信息進行復用。而體系結構層軟件復用是最有效的軟件復用,它主要是軟件體系結構形式化的復用,即將軟件的框架組織,全局結構設計作為復用對象?蓮陀玫能浖w系結構則通常是顯式地復用軟件體系結構,并通過集成其他軟件體系結構,建立新的更高層次的體系結構。
面向對象的軟件復用機制主要有兩種:繼承和對象組合。
(1)繼承
繼承是指子類可以從父類中直接獲得某些特征和行為的能力,繼承可作為代碼復用和概念復用的手段。作為代碼復用的手段是指:子類通過繼承父類的行為,一些代碼就不必重寫;作為概念復用的手段是指:子類共享父類的方法定義。作為代碼復用和概念復用手段的繼承機制,在面向對象技術中,通過面向對象技術的一些主要機制來實現對“支持可維護性的可復用性”的支持。這些面向對象的主要機制是:數據的抽象化、封裝和多態性。通過運用這些機制,繼承可以在高層次上提供(相對于傳統的低層次復用)可復用性:數據的抽象化和繼承關系使得概念或定義可以復用;多態性使得實現和應用可以復用;而抽象化和封裝可以保持和促進系統的可維護性。這樣一來,復用的焦點不再集中在函數和算法等具體實現細節上,而是集中在最重要的含有宏觀商業邏輯的抽象層次上。換言之,復用的焦點發生了“倒轉”。發生復用焦點的倒轉并不是因為實現細節的復用并不重要,而是因為這些細節上的復用己經做的很好了,并且這種復用在提高復用性的同時提高了軟件的可維護性。由于繼承關系直接繼承的是接口,同時也繼承實現,因而實際上父類的內部實現對子類而言是可見的,屬于白盒復用方式。
(2)對象的組合
對象組合是指新的復雜功能可以通過組裝或組合對象來獲得。這種復雜的功能由對象組合來獲得的設計思想與過程化程序設計思想是相似的,在過程化程序設計中,一個復雜的功能模塊可以分解為更細小的和更簡單的功能模塊,整體功能是各個局部功能的聚集。在面向對象系統中,系統是由對象構成,因此復雜的功能或者說能完成更復雜功能的對象,可以通過功能較簡單的對象的組裝或組合來實現。對象組合方式是從整體與局部的角度來考慮軟件復用思想的。
對象組合要求對象具有良好的接口定義,使用對象的接口來使用對象的功能,并往往運用賦值多態來獲得具體對象,對象的內部功能是不可見的,對象只以“黑盒”的形式出現,屬于黑盒復用方式。
面向對象的軟件復用過程有以下步驟:
①抽象:對軟件制品進行抽象,抽象層次越高,復用的機會就越大;
②選擇:一般通過分類和編目方案組織和檢索可復用的軟件制品;
③特殊化:即將上步選定了的一個一般化的軟件制品進行特殊化,以滿足特定領域的要求;
④集成:集成需要在軟件體系結構或框架的指導下,將選定的、特殊化了的模塊集合組成一個完整的軟件系統。要有效地將可復用制品集成為一個軟件系統,使用者必須清楚地理解該模塊的接口。
而從復用的使用角度上看,軟件復用的使用行為可能發生在三個維上。
①平臺維:以某平臺上的軟件為基礎,修改它與運行平臺相關的部分,使其能夠運行在新的平臺,即軟件移植;
②時間維:使用以前的軟件版本作為新版本的基礎,加入新功能,適應新需求,即軟件維護;
③應用維:將某軟件或其中構件用于其他系統中,新系統具有不同功能和用途,即真正的軟件復用。
這三種行為中都重復使用了現有的軟件,但是真正意義的軟件復用指的是應用維上的軟件復用,即“使用為復用而開發的軟件”來更快更好地開發新的應用系統。通過軟件復用,消除了許多重復勞動,降低了軟件開發的時間。同時,復用高質量的己有開發成果,避免了重新開發可能引入的錯誤,從而提高了軟件的質量。
2.2軟件的開發方法
2.2.1結構化開發方法
結構化方法是把現實世界描繪為數據在信息系統中的流動,以及在數據流動的過程中數據向信息的轉化。其基本思想為:基于功能分解設計系統結構,通過把復雜的問題逐層分解,進行簡化(即自頂向下,逐層細化),將整個程序結構劃分成若干個功能相對獨立的子模塊直至最簡,并且每個模塊最終都可使用順序、選擇、循環三種基本結構來實現,它是從系統內部功能上模擬客觀世界。
結構化方法強調系統開發過程的整體性和全局性,強調在整體優化的前提下來考慮具體的分析設計問題。結構化方法嚴格地區分開發階段,強調一步一步地嚴格地進行系統分析與設計,每一步工作都及時地總結、發現問題,從而避免了開發過程的混亂狀態。
結構化方法是目前被廣泛采用的系統開發方法之一,但是結構化方法也存在的許多問題,其局限性有以下幾點:
(1)難以解決軟件重用問題。結構化方法從功能抽象出發進行模塊劃分,所劃分出的模塊千差萬別,模塊共用的程度不高。
(2)結構化方法在需求分析中對問題域的認識和描述不是以問題域中固有的事物作為基本單位,而是打破了各項事物之間的界限,在全局范圍內以數據流為中心進行分析,所以分析結果不能直接反映問題域。同時,當系統較復雜時,很難檢驗分析的正確性。因此,結構化分析方法容易隱藏一些對問題域的理解偏差,與后繼開發階段的銜接也比較困難。
(3)結構化方法對需求變化的適應能力比較弱,軟件系統結構對功能的變化十分敏感,功能的變化會引起相關聯的許多數據流的修改,同時設計出的軟件難以重用,延緩了開發的過程。
(4)結構化方法中設計文檔很難與分析文檔對應,因為二者的表示體系不一致。結構化方法的結果-數據流圖(DFD)和結構化設計結果-模塊結構圖(MSD)是兩種不同的表示體系,從分析到設計的“轉換”使得設計文檔與問題域的本來面貌相差甚遠。
2.2.2面向對象開發方法
面向對象的開發方法采用從特殊到一般的歸納方法,它是對現實世界中的實體進行分類,然后區分對象及其屬性,整理對象及其組成部分,并劃分成不同的對象類,從而得到現實系統中對象及其關系,進而分析并掌握系統運行的規律。OOA的重點是使用面向對象的觀點解決現實世界模型的建立問題,是利用從問題域中抽象出的類和對象來研究系統實際需求的一種分析方法。
這種方法是以對象作為分析問題、解決問題的核心,對問題空間進行直接映射,使計算機實現的對象與真實世界具有一一對應關系,所以自然符合人類認識規律,有效地解決了需求分析模型和軟件設計模型的不匹配現象,它同時也易于適應系統的變化處理。面向對象的系統設計基本過程一般包括:問題域分析、發現和定義對象類、識別對象的外部聯系、建立系統的靜態模型、以及建立系統的動態行為模型。
(1)問題域分析:分析應用領域的業務范圍、業務規則和業務處理過程,確定系統的責任、范圍和邊界,確定系統的需求;
(2)發現和定義對象類:識別對象和類,確定它們的內部特征:屬性和服務操作;
(3)識別對象的外部聯系:在發現和定義對象與類的過程中,需要同時識別對象與對象、類與類之間的各種外部聯系,包括結構性的靜態聯系和行為性的動態聯系;
(4)建立系統的靜態結構模型:分析系統的靜態結構,建立系統的靜態結構模型,并且把它們用圖形和文字說明表達出來;
(5)建立系統的動態行為模型:分析系統的行為,建立系統的動態行為模型,并且把它們用圖形和文字說明表達出來。
面向對象模型比以往的模型有了很大的進步,但仍有不足。首先面向對象方法中對象的確定有時會因客觀邊界模糊而難以確定,這樣很難保證軟件描述的正確性。其次面向對象方法在描述問題域方面存在不足。在問題域中,面向對象方法把具體或抽象的問題現象直接表述為對象,同時把現象類型直接表述為類。大多數OOA方法支持多視角模型,即對同一問題域現象,不同的主體可以將它表述為同一對象或類型。但系統的描述在應用面向對象方法進行建模時常遇到這樣的困惑,描述者力圖通過面向對象的表述對存在的問題現象達成一致,然而結果得到的對象或類并不適合于某個描述者對對象的獨自表述,即在面向對象模型中,很難把不同描述者對現象的描述正確的統一起來。
2.2.3基于設計模式的開發方法
設計面向對象軟件比較困難,而設計可復用的面向對象軟件就更加困難。設計應該對手頭的問題有針對性,同時對將來的問題和需求也要有足夠的通用性。希望避免重復設計或盡可能少做重復設計。而模式是針對一個反復出現的問題優秀的解決方案,它的方法就是發現變化、封裝變化〔2‘,。模式本身已經充分考慮了變化的情況,并且采用了一種特殊的對待變化的方法,它不是預先考慮會如何變化,而是考慮哪里可能會變化,然后隔離,所以當變化發生時不會帶來全局性的破壞。
有經驗的面向對象設計者能做出良好的設計,他們知道:不是解決任何問題都要從頭做起。他們更愿意復用以前用過的好的解決方案。這些經驗是他們成為內行的部分原因。實際上,在許多面向對象的系統中,都存在諸多的類和相互通信的對象的重復模式。這些模式幫助設計者將新的設計建立在以往工作的基礎上,復用以往成功的設計方案。一個熟悉這些模式的設計者不需要再去發現它們,就能夠立即將它們應用于設計問題中。使得面向對象設計更靈活、優雅,最終復用性更好。
模式可以在軟件開發的各個階段被使用,既可以創建一個解決單一問題的模式或者針對某一用例應用的模式,也可以同時使用多個模式來解決復雜的問題。模式的設計類型可以包括結構化的、行為化的和條件化的解決方案,因此,模式的應用范圍是非常廣闊和靈活的。一旦‘懂得了模式,許多設計決策自然而然就產生了。在人們充分認識到模式的重要性后,逐漸將面向對象軟件的設計經驗作為設計模式記錄下來。每一個設計模式系統地命名、解釋和評價了面向對象系統中一個重要的、重復出現的設計,能夠被人們有效的利用。
模式和系統架構有很大的相似性,都是處理一些抽象概念間的關系,但是二者還是有很大的不同,模式是領域無關的,它是解決一些抽象問題的,但是系統架構是針對所要解決的實際問題的,是領域相關的。模式在應用時可以
通過下述步驟進行設計:
(1)對問題領域進行分析、分解,結合模式的適用條件找到和待解決的問題匹配的模式,對該模式進行定制應用到具體系統中來。
(2)和模式結合在一起構建起整個系統架構。比如:MVC(Model-View-Controller),它是專門針對交互系統提出的,如果要構建一個交互系統,那么就可以直接應用MVC模式,然后在該模式所搭建的場景啟發下去發現Model、View以及Controller,在大的場景的指導下根據其它的需求(模式)構建一些小的場景對系統進行有效的分化。
2.3 設計模式的優點
大多數設計模式還能使軟件更容易修改和維護。因為它們都是久經考驗的解決方案。它們的結構也都是經過長期發展形成的,比新構思的解決方案更善于應對變化。而且,這些模式所用代碼往往更易于理解——從而使代碼更易維護。
設計模式對優秀面向對象設計的策略提出了一些建議,其中包括按接口編程、盡量用聚合、找出變化并封裝。這些策略在大多數設計模式中都遵循和使用著。所以用不著學習太多設計模式,只學幾個就能使你理解這些策略的重要性。這種理解將會成為將策略應用于實際設計問題的一種能力,即使你并不直接使用設計模式。
設計模式還有一個好處是,可以在不使用巨型繼承層次結構的情況下,為復雜問題創建出設計方案。同樣,即使并不直接使用設計模式,不使用巨型繼承層次結構也會使設計質量提高。
【軟件的復用技術及開發方法】相關文章:
淺議軟件開發框架技術12-02
給排水專業CAD軟件開發方法探討03-18
MIS開發中軟件工程方法的運用03-18
關于計算機軟件復用探討03-17
WDM光網絡模擬軟件中復用器/解復用器的研究與實現11-22
正交頻分復用技術及其應用03-18
關于軟件技術專業教學方法探討03-02
系統軟件開發過程中的軟件工程技術11-19